From af7a81e3f08af64d605b47dde6b244ca915494d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E4=B8=AD=E5=A5=87?= Date: Tue, 5 Sep 2023 22:42:08 +0800 Subject: [PATCH] =?UTF-8?q?pref:=E4=BC=98=E5=8C=96=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E6=97=B6=E8=8E=B7=E5=8F=96=E4=B8=8D=E5=88=B0=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E6=97=A0=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/store/modules/user.ts | 4 ++++ src/views/login.vue | 22 +++++++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 2593d1a..613cf0d 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -36,6 +36,10 @@ export const useUserStore = defineStore('user', () => { if (res) { const data = res.data; const user = data.user; + // 对用户进行校验,防止为空时卡死在登录页 + if (user === null) { + return Promise.reject('用户不存在,请联系相关人员'); + } const profile = user.avatar == '' || user.avatar == null ? defAva : user.avatar; if (data.roles && data.roles.length > 0) { diff --git a/src/views/login.vue b/src/views/login.vue index 85e3857..1045841 100644 --- a/src/views/login.vue +++ b/src/views/login.vue @@ -65,6 +65,8 @@ import { useUserStore } from '@/store/modules/user'; import { LoginData, TenantVO } from '@/api/types'; import { to } from 'await-to-js'; import { HttpStatus } from "@/enums/RespEnum"; +import usePermissionStore from "@/store/modules/permission"; +import { isHttp } from "@/utils/validate"; const userStore = useUserStore(); const router = useRouter(); @@ -123,9 +125,27 @@ const handleLogin = () => { } // 调用action的登录方法 const [err] = await to(userStore.login(loginForm.value)); - if (!err) { + + // 获取用户信息 + const [getUserInfoError] = await to(useUserStore().getInfo()); + + if (!err && !getUserInfoError) { + // 组装路由信息 + const accessRoutes = await usePermissionStore().generateRoutes(); + // 根据roles权限生成可访问的路由表 + accessRoutes.forEach((route) => { + if (!isHttp(route.path)) { + router.addRoute(route); // 动态添加可访问路由表 + } + }); await router.push({ path: redirect.value || '/' }); } else { + if(err){ + ElMessage.error(err); + } + if(getUserInfoError){ + ElMessage.error(getUserInfoError); + } loading.value = false; // 重新获取验证码 if (captchaEnabled.value) {