af-mobile-client-vue3 1.3.99 → 1.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,362 +1,362 @@
1
- import type { UserType } from '@af-mobile-client-vue3/types/auth'
2
- import type { RouteRecordRaw } from 'vue-router'
3
- import { doLogout, login, OALogin } from '@af-mobile-client-vue3/api/user'
4
- import router from '@af-mobile-client-vue3/router/index'
5
- import { useSettingStore } from '@af-mobile-client-vue3/stores/modules/setting'
6
- import {
7
- ACCESS_TOKEN,
8
- APP_LOGIN_KEY,
9
- APP_PERMISSIONS_KEY,
10
- APP_ROLES_KEY,
11
- APP_ROUTES_KEY,
12
- APP_WEB_CONFIG_KEY,
13
- CURRENT_USER,
14
- EXTERNAL_USER_INFO,
15
- PLATFORM_TYPE,
16
- USER_TYPE,
17
- } from '@af-mobile-client-vue3/stores/mutation-type'
18
- import { getPlatformRoutePrefix } from '@af-mobile-client-vue3/types/platform'
19
- import crypto from '@af-mobile-client-vue3/utils/crypto'
20
- import { indexedDB } from '@af-mobile-client-vue3/utils/indexedDB'
21
- import { createStorage } from '@af-mobile-client-vue3/utils/Storage'
22
- import { defineStore } from 'pinia'
23
- import { ref } from 'vue'
24
-
25
- const Storage = createStorage({ storage: localStorage })
26
-
27
- export interface UserInfo {
28
- id: number
29
- username: string
30
- password: string
31
- name: string
32
- avatar: string
33
- functions: Array<any>
34
- rolestr: string
35
- f_operator: string
36
- f_operatorid: string
37
- f_orgid: string
38
- f_orgname: string
39
- f_depid: string
40
- f_depname: string
41
- }
42
-
43
- interface IUserState {
44
- token?: string
45
- userInfo: any
46
- lastUpdateTime: number
47
- permissions: string[]
48
- roles: [{ id: string, operation: string[] }]
49
- routesConfig: Array<any>
50
- single: Array<ExtraRouteRecordRaw>
51
- login: any
52
- tenantName: string
53
- // 用户类型相关字段
54
- userType?: UserType | null
55
- platformType?: string | null
56
- }
57
-
58
- type ExtraRouteRecordRaw = RouteRecordRaw & {
59
- delete: boolean
60
- fullPath: string
61
- }
62
-
63
- interface LoginParams {
64
- username: string
65
- password: string
66
- resourceName: string
67
- }
68
-
69
- interface WxParams {
70
- unifiedCode: string
71
- tenantName: string
72
- loginMode: string
73
- resourceName: string
74
- }
75
-
76
- interface ExternalLoginParams {
77
- platformType: string
78
- platformUserId: string
79
- tenantName: string
80
- resourceName?: string
81
- isMobile?: boolean
82
- }
83
-
84
- export const useUserStore = defineStore('app-user', () => {
85
- const userState = ref<IUserState>({
86
- userInfo: null,
87
- token: undefined,
88
- lastUpdateTime: 0,
89
- // 旧营收产品$login对象
90
- login: undefined,
91
- permissions: null,
92
- roles: null,
93
- routesConfig: null,
94
- single: [],
95
- tenantName: '',
96
- // 用户类型相关字段
97
- userType: null,
98
- platformType: null,
99
- } as IUserState)
100
- const getUserInfo = () => {
101
- return userState.value.userInfo || Storage.get(CURRENT_USER, {}) || {}
102
- }
103
- const getLogin = () => {
104
- return userState.value.login || Storage.get(APP_LOGIN_KEY, []) || {}
105
- }
106
- const getPermissions = () => {
107
- return userState.value.permissions || Storage.get(APP_PERMISSIONS_KEY, []) || []
108
- }
109
- const getRoles = () => {
110
- return userState.value.roles || Storage.get(APP_ROLES_KEY, []) || []
111
- }
112
- const getRoutesConfig = () => {
113
- return userState.value.routesConfig || Storage.get(APP_ROUTES_KEY, []) || []
114
- }
115
- const getToken = () => {
116
- return userState.value.token || Storage.get(ACCESS_TOKEN, '') as string
117
- }
118
- const getLastUpdateTime = () => {
119
- return userState.value.lastUpdateTime
120
- }
121
- const setToken = (token: string | undefined) => {
122
- Storage.set(ACCESS_TOKEN, token)
123
- }
124
- const setUserInfo = (info: any | null) => {
125
- userState.value.userInfo = info
126
- userState.value.lastUpdateTime = new Date().getTime()
127
- Storage.set(CURRENT_USER, info)
128
- }
129
- const setLogin = (login: any) => {
130
- userState.value.login = login
131
- Storage.set(APP_LOGIN_KEY, login)
132
- }
133
-
134
- const setTenantName = (tenantName: string) => {
135
- userState.value.tenantName = tenantName
136
- }
137
- const getTenantName = () => {
138
- return userState.value.tenantName
139
- }
140
-
141
- // 用户类型相关方法
142
- const getUserType = (): UserType | null => {
143
- return userState.value.userType || Storage.get(USER_TYPE, null)
144
- }
145
-
146
- const setUserType = (userType: UserType | null) => {
147
- userState.value.userType = userType
148
- Storage.set(USER_TYPE, userType)
149
- }
150
-
151
- const isSystemUser = (): boolean => {
152
- const userType = getUserType()
153
- return userType === 'SYSTEM' || userType === null // null 默认为系统用户
154
- }
155
-
156
- const isExternalUser = (): boolean => {
157
- return getUserType() === 'EXTERNAL'
158
- }
159
-
160
- // 平台类型相关方法
161
- const getPlatformType = (): string | null => {
162
- return userState.value.platformType || Storage.get(PLATFORM_TYPE, null)
163
- }
164
-
165
- const setPlatformType = (platformType: string | null) => {
166
- userState.value.platformType = platformType
167
- Storage.set(PLATFORM_TYPE, platformType)
168
- }
169
-
170
- const getDefaultRoute = (): string => {
171
- if (isExternalUser()) {
172
- const platformType = getPlatformType()
173
- return getPlatformRoutePrefix(platformType)
174
- }
175
- return '/'
176
- }
177
-
178
- const setSingle = (page: ExtraRouteRecordRaw) => {
179
- if (page.path && page.delete) {
180
- // 删除
181
- userState.value.single = userState.value.single.filter(item => item.fullPath !== page.path)
182
- }
183
- else if (userState.value.single.filter(item => item.meta.singlePage === page.meta.singlePage).length === 0) {
184
- // 添加
185
- userState.value.single.push(page)
186
- }
187
- }
188
- const setPermissions = (permissions: []) => {
189
- userState.value.permissions = permissions
190
- Storage.set(APP_PERMISSIONS_KEY, permissions)
191
- }
192
- const setRoles = (roles: [{ id: string, operation: string[] }]) => {
193
- userState.value.roles = roles
194
- Storage.set(APP_ROLES_KEY, roles)
195
- }
196
- const setRoutesConfig = (routesConfig: Array<any>) => {
197
- userState.value.routesConfig = routesConfig
198
- Storage.set(APP_ROUTES_KEY, routesConfig)
199
- }
200
- const Login = async (params: LoginParams) => {
201
- try {
202
- let data: any
203
- const compatible = import.meta.env.VITE_APP_COMPATIBLE
204
- if (compatible === 'OA') {
205
- data = await OALogin(params)
206
- // save token
207
- setToken(params.password)
208
- }
209
- else {
210
- data = await login(params)
211
- // save token
212
- setToken(data.access_token)
213
- // 第三方教培系统鉴权兼容
214
- const LoginTicket = crypto.AESEncrypt(JSON.stringify(params), '3KMKqvgwR8ULbR8Z')
215
- Storage.set('LoginTicket', LoginTicket)
216
- }
217
- return Promise.resolve(data)
218
- }
219
- catch (error) {
220
- return Promise.reject(error)
221
- }
222
- }
223
- const loginUnified = async (params: WxParams) => {
224
- try {
225
- const data: any = await login(params)
226
- setToken(data.access_token)
227
- const LoginTicket = crypto.AESEncrypt(JSON.stringify(params), '3KMKqvgwR8ULbR8Z')
228
- Storage.set('LoginTicket', LoginTicket)
229
- return Promise.resolve(data)
230
- }
231
- catch (error) {
232
- return Promise.reject(error)
233
- }
234
- }
235
-
236
- const loginExternal = async (params: ExternalLoginParams) => {
237
- try {
238
- const data: any = await login(params)
239
-
240
- // 设置Token
241
- setToken(data.access_token)
242
-
243
- // 加密存储登录票据
244
- const LoginTicket = crypto.AESEncrypt(JSON.stringify(params), '3KMKqvgwR8ULbR8Z')
245
- Storage.set('LoginTicket', LoginTicket)
246
-
247
- return Promise.resolve(data)
248
- }
249
- catch (error) {
250
- return Promise.reject(error)
251
- }
252
- }
253
- const loginExternalMini = async (data: any) => {
254
- try {
255
- // 设置Token
256
- setToken(data.access_token)
257
-
258
- // 加密存储登录票据
259
- const LoginTicket = crypto.AESEncrypt(JSON.stringify(data), '3KMKqvgwR8ULbR8Z')
260
- Storage.set('LoginTicket', LoginTicket)
261
-
262
- return Promise.resolve(data)
263
- }
264
- catch (error) {
265
- return Promise.reject(error)
266
- }
267
- }
268
-
269
- const logout = async () => {
270
- if (getToken()) {
271
- try {
272
- await doLogout()
273
- }
274
- catch {
275
- console.error('注销Token失败')
276
- }
277
- }
278
- setToken(undefined)
279
- setUserInfo(null)
280
- setUserType(null)
281
- setPlatformType(null)
282
- Storage.remove(CURRENT_USER)
283
- Storage.remove(ACCESS_TOKEN)
284
- Storage.remove(APP_LOGIN_KEY)
285
- Storage.remove(APP_PERMISSIONS_KEY)
286
- Storage.remove(APP_ROLES_KEY)
287
- Storage.remove(APP_ROUTES_KEY)
288
- Storage.remove(APP_WEB_CONFIG_KEY)
289
- Storage.remove(USER_TYPE)
290
- Storage.remove(PLATFORM_TYPE)
291
- Storage.remove(EXTERNAL_USER_INFO)
292
- Storage.remove('LoginTicket')
293
- await indexedDB.clearDB()
294
- await useSettingStore().init()
295
- try {
296
- // 添加页面刷新
297
- await router.replace('/login')
298
- window.location.reload()
299
- }
300
- catch (e) {
301
- console.error(e)
302
- }
303
- }
304
- const registerClean = async () => {
305
- setToken(undefined)
306
- setUserInfo(null)
307
- setUserType(null)
308
- setPlatformType(null)
309
- Storage.remove(CURRENT_USER)
310
- Storage.remove(ACCESS_TOKEN)
311
- Storage.remove(APP_LOGIN_KEY)
312
- Storage.remove(APP_PERMISSIONS_KEY)
313
- Storage.remove(APP_ROLES_KEY)
314
- Storage.remove(APP_ROUTES_KEY)
315
- Storage.remove(APP_WEB_CONFIG_KEY)
316
- Storage.remove(USER_TYPE)
317
- Storage.remove(PLATFORM_TYPE)
318
- Storage.remove(EXTERNAL_USER_INFO)
319
- Storage.remove('LoginTicket')
320
- await indexedDB.clearDB()
321
- await useSettingStore().init()
322
- }
323
- const getCode = (tenantName: string) => {
324
- window.location.replace(`api/af-system/user/getcode?state=${tenantName}`)
325
- }
326
-
327
- return {
328
- Login,
329
- loginUnified,
330
- loginExternal,
331
- loginExternalMini,
332
- getToken,
333
- getLastUpdateTime,
334
- logout,
335
- registerClean,
336
- setUserInfo,
337
- getUserInfo,
338
- getLogin,
339
- getPermissions,
340
- getRoles,
341
- getRoutesConfig,
342
- setLogin,
343
- setSingle,
344
- setPermissions,
345
- setRoles,
346
- setRoutesConfig,
347
- setTenantName,
348
- getTenantName,
349
- getCode,
350
- // 用户类型相关方法
351
- getUserType,
352
- setUserType,
353
- isSystemUser,
354
- isExternalUser,
355
- getDefaultRoute,
356
- // 平台类型相关方法
357
- getPlatformType,
358
- setPlatformType,
359
- }
360
- })
361
-
362
- export default useUserStore
1
+ import type { UserType } from '@af-mobile-client-vue3/types/auth'
2
+ import type { RouteRecordRaw } from 'vue-router'
3
+ import { doLogout, login, OALogin } from '@af-mobile-client-vue3/api/user'
4
+ import router from '@af-mobile-client-vue3/router/index'
5
+ import { useSettingStore } from '@af-mobile-client-vue3/stores/modules/setting'
6
+ import {
7
+ ACCESS_TOKEN,
8
+ APP_LOGIN_KEY,
9
+ APP_PERMISSIONS_KEY,
10
+ APP_ROLES_KEY,
11
+ APP_ROUTES_KEY,
12
+ APP_WEB_CONFIG_KEY,
13
+ CURRENT_USER,
14
+ EXTERNAL_USER_INFO,
15
+ PLATFORM_TYPE,
16
+ USER_TYPE,
17
+ } from '@af-mobile-client-vue3/stores/mutation-type'
18
+ import { getPlatformRoutePrefix } from '@af-mobile-client-vue3/types/platform'
19
+ import crypto from '@af-mobile-client-vue3/utils/crypto'
20
+ import { indexedDB } from '@af-mobile-client-vue3/utils/indexedDB'
21
+ import { createStorage } from '@af-mobile-client-vue3/utils/Storage'
22
+ import { defineStore } from 'pinia'
23
+ import { ref } from 'vue'
24
+
25
+ const Storage = createStorage({ storage: localStorage })
26
+
27
+ export interface UserInfo {
28
+ id: number
29
+ username: string
30
+ password: string
31
+ name: string
32
+ avatar: string
33
+ functions: Array<any>
34
+ rolestr: string
35
+ f_operator: string
36
+ f_operatorid: string
37
+ f_orgid: string
38
+ f_orgname: string
39
+ f_depid: string
40
+ f_depname: string
41
+ }
42
+
43
+ interface IUserState {
44
+ token?: string
45
+ userInfo: any
46
+ lastUpdateTime: number
47
+ permissions: string[]
48
+ roles: [{ id: string, operation: string[] }]
49
+ routesConfig: Array<any>
50
+ single: Array<ExtraRouteRecordRaw>
51
+ login: any
52
+ tenantName: string
53
+ // 用户类型相关字段
54
+ userType?: UserType | null
55
+ platformType?: string | null
56
+ }
57
+
58
+ type ExtraRouteRecordRaw = RouteRecordRaw & {
59
+ delete: boolean
60
+ fullPath: string
61
+ }
62
+
63
+ interface LoginParams {
64
+ username: string
65
+ password: string
66
+ resourceName: string
67
+ }
68
+
69
+ interface WxParams {
70
+ unifiedCode: string
71
+ tenantName: string
72
+ loginMode: string
73
+ resourceName: string
74
+ }
75
+
76
+ interface ExternalLoginParams {
77
+ platformType: string
78
+ platformUserId: string
79
+ tenantName: string
80
+ resourceName?: string
81
+ isMobile?: boolean
82
+ }
83
+
84
+ export const useUserStore = defineStore('app-user', () => {
85
+ const userState = ref<IUserState>({
86
+ userInfo: null,
87
+ token: undefined,
88
+ lastUpdateTime: 0,
89
+ // 旧营收产品$login对象
90
+ login: undefined,
91
+ permissions: null,
92
+ roles: null,
93
+ routesConfig: null,
94
+ single: [],
95
+ tenantName: '',
96
+ // 用户类型相关字段
97
+ userType: null,
98
+ platformType: null,
99
+ } as IUserState)
100
+ const getUserInfo = () => {
101
+ return userState.value.userInfo || Storage.get(CURRENT_USER, {}) || {}
102
+ }
103
+ const getLogin = () => {
104
+ return userState.value.login || Storage.get(APP_LOGIN_KEY, []) || {}
105
+ }
106
+ const getPermissions = () => {
107
+ return userState.value.permissions || Storage.get(APP_PERMISSIONS_KEY, []) || []
108
+ }
109
+ const getRoles = () => {
110
+ return userState.value.roles || Storage.get(APP_ROLES_KEY, []) || []
111
+ }
112
+ const getRoutesConfig = () => {
113
+ return userState.value.routesConfig || Storage.get(APP_ROUTES_KEY, []) || []
114
+ }
115
+ const getToken = () => {
116
+ return userState.value.token || Storage.get(ACCESS_TOKEN, '') as string
117
+ }
118
+ const getLastUpdateTime = () => {
119
+ return userState.value.lastUpdateTime
120
+ }
121
+ const setToken = (token: string | undefined) => {
122
+ Storage.set(ACCESS_TOKEN, token)
123
+ }
124
+ const setUserInfo = (info: any | null) => {
125
+ userState.value.userInfo = info
126
+ userState.value.lastUpdateTime = new Date().getTime()
127
+ Storage.set(CURRENT_USER, info)
128
+ }
129
+ const setLogin = (login: any) => {
130
+ userState.value.login = login
131
+ Storage.set(APP_LOGIN_KEY, login)
132
+ }
133
+
134
+ const setTenantName = (tenantName: string) => {
135
+ userState.value.tenantName = tenantName
136
+ }
137
+ const getTenantName = () => {
138
+ return userState.value.tenantName
139
+ }
140
+
141
+ // 用户类型相关方法
142
+ const getUserType = (): UserType | null => {
143
+ return userState.value.userType || Storage.get(USER_TYPE, null)
144
+ }
145
+
146
+ const setUserType = (userType: UserType | null) => {
147
+ userState.value.userType = userType
148
+ Storage.set(USER_TYPE, userType)
149
+ }
150
+
151
+ const isSystemUser = (): boolean => {
152
+ const userType = getUserType()
153
+ return userType === 'SYSTEM' || userType === null // null 默认为系统用户
154
+ }
155
+
156
+ const isExternalUser = (): boolean => {
157
+ return getUserType() === 'EXTERNAL'
158
+ }
159
+
160
+ // 平台类型相关方法
161
+ const getPlatformType = (): string | null => {
162
+ return userState.value.platformType || Storage.get(PLATFORM_TYPE, null)
163
+ }
164
+
165
+ const setPlatformType = (platformType: string | null) => {
166
+ userState.value.platformType = platformType
167
+ Storage.set(PLATFORM_TYPE, platformType)
168
+ }
169
+
170
+ const getDefaultRoute = (): string => {
171
+ if (isExternalUser()) {
172
+ const platformType = getPlatformType()
173
+ return getPlatformRoutePrefix(platformType)
174
+ }
175
+ return '/'
176
+ }
177
+
178
+ const setSingle = (page: ExtraRouteRecordRaw) => {
179
+ if (page.path && page.delete) {
180
+ // 删除
181
+ userState.value.single = userState.value.single.filter(item => item.fullPath !== page.path)
182
+ }
183
+ else if (userState.value.single.filter(item => item.meta.singlePage === page.meta.singlePage).length === 0) {
184
+ // 添加
185
+ userState.value.single.push(page)
186
+ }
187
+ }
188
+ const setPermissions = (permissions: []) => {
189
+ userState.value.permissions = permissions
190
+ Storage.set(APP_PERMISSIONS_KEY, permissions)
191
+ }
192
+ const setRoles = (roles: [{ id: string, operation: string[] }]) => {
193
+ userState.value.roles = roles
194
+ Storage.set(APP_ROLES_KEY, roles)
195
+ }
196
+ const setRoutesConfig = (routesConfig: Array<any>) => {
197
+ userState.value.routesConfig = routesConfig
198
+ Storage.set(APP_ROUTES_KEY, routesConfig)
199
+ }
200
+ const Login = async (params: LoginParams) => {
201
+ try {
202
+ let data: any
203
+ const compatible = import.meta.env.VITE_APP_COMPATIBLE
204
+ if (compatible === 'OA') {
205
+ data = await OALogin(params)
206
+ // save token
207
+ setToken(params.password)
208
+ }
209
+ else {
210
+ data = await login(params)
211
+ // save token
212
+ setToken(data.access_token)
213
+ // 第三方教培系统鉴权兼容
214
+ const LoginTicket = crypto.AESEncrypt(JSON.stringify(params), '3KMKqvgwR8ULbR8Z')
215
+ Storage.set('LoginTicket', LoginTicket)
216
+ }
217
+ return Promise.resolve(data)
218
+ }
219
+ catch (error) {
220
+ return Promise.reject(error)
221
+ }
222
+ }
223
+ const loginUnified = async (params: WxParams) => {
224
+ try {
225
+ const data: any = await login(params)
226
+ setToken(data.access_token)
227
+ const LoginTicket = crypto.AESEncrypt(JSON.stringify(params), '3KMKqvgwR8ULbR8Z')
228
+ Storage.set('LoginTicket', LoginTicket)
229
+ return Promise.resolve(data)
230
+ }
231
+ catch (error) {
232
+ return Promise.reject(error)
233
+ }
234
+ }
235
+
236
+ const loginExternal = async (params: ExternalLoginParams) => {
237
+ try {
238
+ const data: any = await login(params)
239
+
240
+ // 设置Token
241
+ setToken(data.access_token)
242
+
243
+ // 加密存储登录票据
244
+ const LoginTicket = crypto.AESEncrypt(JSON.stringify(params), '3KMKqvgwR8ULbR8Z')
245
+ Storage.set('LoginTicket', LoginTicket)
246
+
247
+ return Promise.resolve(data)
248
+ }
249
+ catch (error) {
250
+ return Promise.reject(error)
251
+ }
252
+ }
253
+ const loginExternalMini = async (data: any) => {
254
+ try {
255
+ // 设置Token
256
+ setToken(data.access_token)
257
+
258
+ // 加密存储登录票据
259
+ const LoginTicket = crypto.AESEncrypt(JSON.stringify(data), '3KMKqvgwR8ULbR8Z')
260
+ Storage.set('LoginTicket', LoginTicket)
261
+
262
+ return Promise.resolve(data)
263
+ }
264
+ catch (error) {
265
+ return Promise.reject(error)
266
+ }
267
+ }
268
+
269
+ const logout = async () => {
270
+ if (getToken()) {
271
+ try {
272
+ await doLogout()
273
+ }
274
+ catch {
275
+ console.error('注销Token失败')
276
+ }
277
+ }
278
+ setToken(undefined)
279
+ setUserInfo(null)
280
+ setUserType(null)
281
+ setPlatformType(null)
282
+ Storage.remove(CURRENT_USER)
283
+ Storage.remove(ACCESS_TOKEN)
284
+ Storage.remove(APP_LOGIN_KEY)
285
+ Storage.remove(APP_PERMISSIONS_KEY)
286
+ Storage.remove(APP_ROLES_KEY)
287
+ Storage.remove(APP_ROUTES_KEY)
288
+ Storage.remove(APP_WEB_CONFIG_KEY)
289
+ Storage.remove(USER_TYPE)
290
+ Storage.remove(PLATFORM_TYPE)
291
+ Storage.remove(EXTERNAL_USER_INFO)
292
+ Storage.remove('LoginTicket')
293
+ await indexedDB.clearDB()
294
+ await useSettingStore().init()
295
+ try {
296
+ // 添加页面刷新
297
+ await router.replace('/login')
298
+ window.location.reload()
299
+ }
300
+ catch (e) {
301
+ console.error(e)
302
+ }
303
+ }
304
+ const registerClean = async () => {
305
+ setToken(undefined)
306
+ setUserInfo(null)
307
+ setUserType(null)
308
+ setPlatformType(null)
309
+ Storage.remove(CURRENT_USER)
310
+ Storage.remove(ACCESS_TOKEN)
311
+ Storage.remove(APP_LOGIN_KEY)
312
+ Storage.remove(APP_PERMISSIONS_KEY)
313
+ Storage.remove(APP_ROLES_KEY)
314
+ Storage.remove(APP_ROUTES_KEY)
315
+ Storage.remove(APP_WEB_CONFIG_KEY)
316
+ Storage.remove(USER_TYPE)
317
+ Storage.remove(PLATFORM_TYPE)
318
+ Storage.remove(EXTERNAL_USER_INFO)
319
+ Storage.remove('LoginTicket')
320
+ await indexedDB.clearDB()
321
+ await useSettingStore().init()
322
+ }
323
+ const getCode = (tenantName: string) => {
324
+ window.location.replace(`api/af-system/user/getcode?state=${tenantName}`)
325
+ }
326
+
327
+ return {
328
+ Login,
329
+ loginUnified,
330
+ loginExternal,
331
+ loginExternalMini,
332
+ getToken,
333
+ getLastUpdateTime,
334
+ logout,
335
+ registerClean,
336
+ setUserInfo,
337
+ getUserInfo,
338
+ getLogin,
339
+ getPermissions,
340
+ getRoles,
341
+ getRoutesConfig,
342
+ setLogin,
343
+ setSingle,
344
+ setPermissions,
345
+ setRoles,
346
+ setRoutesConfig,
347
+ setTenantName,
348
+ getTenantName,
349
+ getCode,
350
+ // 用户类型相关方法
351
+ getUserType,
352
+ setUserType,
353
+ isSystemUser,
354
+ isExternalUser,
355
+ getDefaultRoute,
356
+ // 平台类型相关方法
357
+ getPlatformType,
358
+ setPlatformType,
359
+ }
360
+ })
361
+
362
+ export default useUserStore