|
@@ -10,11 +10,12 @@ import { ROLES_KEY, TOKEN_KEY, USER_INFO_KEY } from '/@/enums/cacheEnum'
|
|
|
import { getAuthCache, setAuthCache, getToken, removeAuthCache } from '/@/utils/auth'
|
|
|
import {
|
|
|
GetUserInfoByUserIdModel,
|
|
|
+ GetUserInfoModel,
|
|
|
// GetUserInfoByUserIdParams,
|
|
|
LoginParams
|
|
|
} from '/@/api/sys/model/userModel'
|
|
|
|
|
|
-import { loginApi, getXsrfToken, logoutApi, getAccountGroupList } from '/@/api/sys/user'
|
|
|
+import { loginApi, getXsrfToken, logoutApi, getAccountGroupList, getUserInfo } from '/@/api/sys/user'
|
|
|
|
|
|
import { useI18n } from '/@/hooks/web/useI18n'
|
|
|
import { useMessage } from '/@/hooks/web/useMessage'
|
|
@@ -23,7 +24,7 @@ import { PermGroupItem } from '/@/api/sys/model/managerModel'
|
|
|
import { getPermGroupList } from '/@/api/sys/manager'
|
|
|
|
|
|
interface UserState {
|
|
|
- userInfo: Nullable<UserInfo>
|
|
|
+ userInfo: Nullable<GetUserInfoModel>
|
|
|
token?: string
|
|
|
roleList: RoleEnum[]
|
|
|
accountGroups: string[]
|
|
@@ -38,9 +39,11 @@ export const useUserStore = defineStore({
|
|
|
// token
|
|
|
token: undefined,
|
|
|
// roleList
|
|
|
- roleList: [],
|
|
|
+ rolesList: [],
|
|
|
accountGroups: [],
|
|
|
- permGroups: []
|
|
|
+ permGroups: [],
|
|
|
+ // Whether the login expired
|
|
|
+ sessionTimeout: false
|
|
|
}),
|
|
|
getters: {
|
|
|
getUserInfo(): UserInfo {
|
|
@@ -50,13 +53,16 @@ export const useUserStore = defineStore({
|
|
|
return this.token || getAuthCache<string>(TOKEN_KEY)
|
|
|
},
|
|
|
getRoleList(): RoleEnum[] {
|
|
|
- return this.roleList.length > 0 ? this.roleList : getAuthCache<RoleEnum[]>(ROLES_KEY)
|
|
|
+ return this.rolesList.length ? this.rolesList : getAuthCache<RoleEnum[]>(ROLES_KEY)
|
|
|
},
|
|
|
getGroupList(): string[] {
|
|
|
return this.accountGroups
|
|
|
},
|
|
|
getPermGroupList(): PermGroupItem[] {
|
|
|
return this.permGroups
|
|
|
+ },
|
|
|
+ getSessionTimeout(): boolean {
|
|
|
+ return !!this.sessionTimeout
|
|
|
}
|
|
|
},
|
|
|
actions: {
|
|
@@ -65,7 +71,9 @@ export const useUserStore = defineStore({
|
|
|
setAuthCache(TOKEN_KEY, info)
|
|
|
},
|
|
|
setRoleList(roleList: RoleEnum[]) {
|
|
|
- this.roleList = roleList
|
|
|
+ console.log('roleList', roleList)
|
|
|
+
|
|
|
+ this.rolesList = roleList
|
|
|
setAuthCache(ROLES_KEY, roleList)
|
|
|
},
|
|
|
setUserInfo(info: UserInfo) {
|
|
@@ -78,10 +86,14 @@ export const useUserStore = defineStore({
|
|
|
setPermGroupList(permList: PermGroupItem[]) {
|
|
|
this.permGroups = permList
|
|
|
},
|
|
|
+ setSessionTimeout(flag: boolean) {
|
|
|
+ this.sessionTimeout = flag
|
|
|
+ },
|
|
|
resetState() {
|
|
|
this.userInfo = null
|
|
|
this.token = ''
|
|
|
- this.roleList = []
|
|
|
+ this.rolesList = []
|
|
|
+ this.sessionTimeout = false
|
|
|
},
|
|
|
/**
|
|
|
* @description: login
|
|
@@ -95,22 +107,31 @@ export const useUserStore = defineStore({
|
|
|
try {
|
|
|
const { goHome = true, mode, ...loginParams } = params
|
|
|
|
|
|
- const userInfo = await loginApi(loginParams, mode)
|
|
|
+ await loginApi(loginParams, mode)
|
|
|
// get user info
|
|
|
- // const userInfo = await this.getUserInfoAction({ userId })
|
|
|
- this.setRoleList([RoleEnum.SUPER])
|
|
|
- // if (isAdmin) {
|
|
|
- // }
|
|
|
-
|
|
|
+ const userInfo = await this.getUserInfoAction()
|
|
|
// const roleList = roles.map(item => item.value) as RoleEnum[]
|
|
|
- this.setUserInfo({ ...userInfo })
|
|
|
- goHome && (await router.replace(PageEnum.BASE_HOME))
|
|
|
+ const sessionTimeout = this.sessionTimeout
|
|
|
+ sessionTimeout && this.setSessionTimeout(false)
|
|
|
+ !sessionTimeout && goHome && (await router.replace(PageEnum.BASE_HOME))
|
|
|
return userInfo
|
|
|
+ return true
|
|
|
} catch (error) {
|
|
|
- return null
|
|
|
+ return Promise.reject(error)
|
|
|
}
|
|
|
},
|
|
|
|
|
|
+ async getUserInfoAction() {
|
|
|
+ const userInfo = await getUserInfo()
|
|
|
+ this.setUserInfo({ ...userInfo })
|
|
|
+ if (userInfo?.isAdmin) {
|
|
|
+ this.setRoleList([RoleEnum.ADMIN])
|
|
|
+ } else {
|
|
|
+ this.setRoleList(userInfo.roles)
|
|
|
+ }
|
|
|
+
|
|
|
+ return userInfo
|
|
|
+ },
|
|
|
async fetchGroupList() {
|
|
|
try {
|
|
|
const data = await getAccountGroupList()
|