Просмотр исходного кода

feat: 增加 sso 系统参数,在登录时候做判断

yanglzh 1 год назад
Родитель
Сommit
c263fe97c0
4 измененных файлов с 27 добавлено и 17 удалено
  1. 4 3
      src/App.vue
  2. 2 2
      src/router/index.ts
  3. 12 8
      src/views/login/component/account.vue
  4. 9 4
      src/views/login/index.vue

+ 4 - 3
src/App.vue

@@ -28,14 +28,15 @@ export default defineComponent({
 	async created() {
 		api.sysinfo().then((res: any) => {
 			localStorage.setItem('sysinfo', JSON.stringify(res));
-			// 使用的事base64加密的,解决之后的值  sysPasswordChangePeriod + "|" + isSecurityControlEnabled + "|" + isRsaEnabled
+			// 使用的事base64加密的,解决之后的值  sysPasswordChangePeriod + "|" + isSecurityControlEnabled + "|" + isRsaEnabled+ "|" + _tag+ "|" + isSSOEnabled
 			// 顺序是,密码变更周期,是否启动安全控制,是否启用rsa,中间你需要根据 | 切割一下
-			const [sysPasswordChangePeriod, isSecurityControlEnabled, isRsaEnabled] = window.atob(res.target).split('|')
+			const [sysPasswordChangePeriod, isSecurityControlEnabled, isRsaEnabled, _tag, isSSOEnabled] = window.atob(res.target).split('|')
 
 			// 安全开关是否开启 按钮权限,列表权限,rsa权限在开启安全权限下才使用
 			sessionStorage.setItem('isSecurityControlEnabled', Number(isSecurityControlEnabled) ? '1' : '');
 			sessionStorage.setItem('isRsaEnabled', (Number(isSecurityControlEnabled) && Number(isRsaEnabled)) ? '1' : '');
 			sessionStorage.setItem('sysPasswordChangePeriod', sysPasswordChangePeriod);
+			sessionStorage.setItem('isSSOEnabled', Number(isSSOEnabled) ? '1' : '');
 		});
 	},
 	setup() {
@@ -43,7 +44,7 @@ export default defineComponent({
 		window.onresize = _.debounce(() => {
 			store.commit('global/setResize')
 		}, 200)
-		
+
 		const { proxy } = <any>getCurrentInstance();
 		const setingsRef = ref();
 		const route = useRoute();

+ 2 - 2
src/router/index.ts

@@ -1,4 +1,4 @@
-import { createRouter, createWebHashHistory, RouteRecordRaw } from 'vue-router';
+import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router';
 import NProgress from 'nprogress';
 import 'nprogress/nprogress.css';
 import { store } from '/@/store/index';
@@ -17,7 +17,7 @@ const whiteList = ['/login', '/ssoBack']
  * @link 参考:https://next.router.vuejs.org/zh/api/#createrouter
  */
 const router = createRouter({
-	history: createWebHashHistory(),
+	history: createWebHistory(),
 	routes: staticRoutes,
 });
 

+ 12 - 8
src/views/login/component/account.vue

@@ -44,17 +44,17 @@
 				<span>{{ $t('message.account.accountBtnText') }}</span>
 			</el-button>
 		</el-form-item>
-		<!-- <el-form-item class="login-animation4" v-if="from !== 'sso'">
+		<el-form-item class="login-animation4" v-if="from !== 'sso' && showSSO">
 			<div class="ssolist">
 				<img class="ssologo" :src="item.logo" v-for="item in ssoList" :key="item.name" @click="authLogin(item.name)">
 			</div>
-		</el-form-item> -->
+		</el-form-item>
 		<changePwd ref="changePwdRef"></changePwd>
 	</el-form>
 </template>
 
 <script lang="ts">
-import { ref, toRefs, reactive, defineComponent, computed, onMounted, getCurrentInstance } from 'vue';
+import { ref, watch, toRefs, reactive, defineComponent, computed, onMounted, getCurrentInstance, h } from 'vue';
 import { useRoute, useRouter } from 'vue-router';
 import changePwd from './changePwd.vue';
 import { ElMessage } from 'element-plus';
@@ -81,10 +81,17 @@ export default defineComponent({
 		// sso 登录来源
 		from: String,
 		ssoInfo: Object,
+		showSSO: Boolean,
 	},
 	setup(props) {
-		console.log(props.from)
-		console.log(props.ssoInfo)
+		watch(() => props.showSSO, (showSSO) => {
+			if (showSSO) {
+				api.sso.list().then((res: any) => {
+					state.ssoList = res.providers
+				})
+			}
+		}, { immediate: true })
+
 		const changePwdRef = ref();
 		const { t } = useI18n();
 		const store = useStore();
@@ -111,9 +118,6 @@ export default defineComponent({
 			captchaSrc: '',
 		});
 
-		api.sso.list().then((res: any) => {
-			state.ssoList = res.providers
-		})
 
 		onMounted(() => {
 			getCaptcha();

+ 9 - 4
src/views/login/index.vue

@@ -15,7 +15,7 @@
 		</div>
 		<div class="part">
 			<div class="title">登录</div>
-			<Account />
+			<Account :showSSO="showSSO" />
 		</div>
 	</div>
 </template>
@@ -47,6 +47,7 @@ export default defineComponent({
 			Moon,
 			dayjs,
 			showImg: false,
+			showSSO: false,
 			sysinfo: {
 				buildVersion: '',
 				systemName: '',
@@ -60,8 +61,12 @@ export default defineComponent({
 	mounted() {
 		api.sysinfo().then((res: any) => {
 			this.sysinfo = res
+			const isSSOEnabled = window.atob(res.target).split('|')[4]
+			if (isSSOEnabled == '1') {
+				this.showSSO = true
+			}
 		}).finally(() => this.showImg = true)
-		
+
 	},
 	setup() {
 		const store = useStore();
@@ -75,8 +80,8 @@ export default defineComponent({
 		});
 
 		const versionInfo = reactive({
-			version:'',
-			updateTime:'',
+			version: '',
+			updateTime: '',
 		})
 		// 加载版本信息
 		axios.get('/versionInfo.json').then(res => {