1
1
import type { LoginAndRegisterParams } from '@vben/common-ui' ;
2
- import type { MenuRecordRaw , UserInfo } from '@vben/types' ;
3
- import type { RouteRecordRaw } from 'vue-router' ;
2
+ import type { UserInfo } from '@vben/types' ;
4
3
5
- import { computed , ref } from 'vue' ;
4
+ import { ref } from 'vue' ;
6
5
import { useRouter } from 'vue-router' ;
7
6
8
7
import { DEFAULT_HOME_PATH , LOGIN_PATH } from '@vben/constants' ;
9
- import { resetAllStores , useCoreAccessStore } from '@vben/stores' ;
8
+ import { resetAllStores , useAccessStore , useUserStore } from '@vben/stores' ;
10
9
11
10
import { notification } from 'ant-design-vue' ;
12
11
import { defineStore } from 'pinia' ;
13
12
14
13
import { getAccessCodes , getUserInfo , login } from '#/api' ;
15
14
import { $t } from '#/locales' ;
16
15
17
- export const useAccessStore = defineStore ( 'access' , ( ) => {
18
- const coreStoreAccess = useCoreAccessStore ( ) ;
16
+ export const useAuthStore = defineStore ( 'auth' , ( ) => {
17
+ const accessStore = useAccessStore ( ) ;
18
+ const userStore = useUserStore ( ) ;
19
19
const router = useRouter ( ) ;
20
20
21
- const loading = ref ( false ) ;
22
-
23
- const openLoginExpiredModal = ref ( false ) ;
24
-
25
- const accessToken = computed ( ( ) => coreStoreAccess . accessToken ) ;
26
- const refreshToken = computed ( ( ) => coreStoreAccess . refreshToken ) ;
27
- const userRoles = computed ( ( ) => coreStoreAccess . userRoles ) ;
28
- const userInfo = computed ( ( ) => coreStoreAccess . userInfo ) ;
29
- const accessRoutes = computed ( ( ) => coreStoreAccess . accessRoutes ) ;
30
-
31
- function setAccessMenus ( menus : MenuRecordRaw [ ] ) {
32
- coreStoreAccess . setAccessMenus ( menus ) ;
33
- }
34
-
35
- function setAccessToken ( token : null | string ) {
36
- coreStoreAccess . setAccessToken ( token ) ;
37
- }
38
-
39
- function setAccessRoutes ( routes : RouteRecordRaw [ ] ) {
40
- coreStoreAccess . setAccessRoutes ( routes ) ;
41
- }
21
+ const loginLoading = ref ( false ) ;
42
22
43
23
/**
44
24
* 异步处理登录操作
@@ -52,31 +32,28 @@ export const useAccessStore = defineStore('access', () => {
52
32
// 异步处理用户登录操作并获取 accessToken
53
33
let userInfo : null | UserInfo = null ;
54
34
try {
55
- loading . value = true ;
35
+ loginLoading . value = true ;
56
36
const { accessToken, refreshToken } = await login ( params ) ;
57
37
58
38
// 如果成功获取到 accessToken
59
- // If accessToken is successfully obtained
60
39
if ( accessToken ) {
61
40
// 将 accessToken 存储到 accessStore 中
62
- // Store the accessToken in accessStore
63
- coreStoreAccess . setAccessToken ( accessToken ) ;
64
- coreStoreAccess . setRefreshToken ( refreshToken ) ;
41
+ accessStore . setAccessToken ( accessToken ) ;
42
+ accessStore . setRefreshToken ( refreshToken ) ;
65
43
66
44
// 获取用户信息并存储到 accessStore 中
67
- // Get user information and store it in accessStore
68
45
const [ fetchUserInfoResult , accessCodes ] = await Promise . all ( [
69
46
fetchUserInfo ( ) ,
70
47
getAccessCodes ( ) ,
71
48
] ) ;
72
49
73
50
userInfo = fetchUserInfoResult ;
74
51
75
- coreStoreAccess . setUserInfo ( userInfo ) ;
76
- coreStoreAccess . setAccessCodes ( accessCodes ) ;
52
+ userStore . setUserInfo ( userInfo ) ;
53
+ accessStore . setAccessCodes ( accessCodes ) ;
77
54
78
- if ( openLoginExpiredModal . value ) {
79
- openLoginExpiredModal . value = false ;
55
+ if ( accessStore . loginExpired ) {
56
+ accessStore . setLoginExpired ( false ) ;
80
57
} else {
81
58
onSuccess
82
59
? await onSuccess ?.( )
@@ -92,18 +69,17 @@ export const useAccessStore = defineStore('access', () => {
92
69
}
93
70
}
94
71
} finally {
95
- loading . value = false ;
72
+ loginLoading . value = false ;
96
73
}
97
74
98
75
return {
99
- accessToken,
100
76
userInfo,
101
77
} ;
102
78
}
103
79
104
80
async function logout ( ) {
105
81
resetAllStores ( ) ;
106
- openLoginExpiredModal . value = false ;
82
+ accessStore . setLoginExpired ( false ) ;
107
83
108
84
// 回登陆页带上当前路由地址
109
85
await router . replace ( {
@@ -117,29 +93,19 @@ export const useAccessStore = defineStore('access', () => {
117
93
async function fetchUserInfo ( ) {
118
94
let userInfo : null | UserInfo = null ;
119
95
userInfo = await getUserInfo ( ) ;
120
- coreStoreAccess . setUserInfo ( userInfo ) ;
96
+ userStore . setUserInfo ( userInfo ) ;
121
97
return userInfo ;
122
98
}
123
99
124
100
function $reset ( ) {
125
- loading . value = false ;
126
- openLoginExpiredModal . value = false ;
101
+ loginLoading . value = false ;
127
102
}
128
103
129
104
return {
130
105
$reset,
131
- accessRoutes,
132
- accessToken,
133
106
authLogin,
134
107
fetchUserInfo,
135
- loading ,
108
+ loginLoading ,
136
109
logout,
137
- openLoginExpiredModal,
138
- refreshToken,
139
- setAccessMenus,
140
- setAccessRoutes,
141
- setAccessToken,
142
- userInfo,
143
- userRoles,
144
110
} ;
145
111
} ) ;
0 commit comments