1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
| import { defineStore } from 'pinia'
| import { ref } from 'vue'
|
| type AccessToken = null | string
| const initState = {
| access_codes: [],
| access_menus: [],
| access_routes: [],
| access_token: null,
| is_access_checked: false,
| login_expired: false,
| refresh_token: null,
| }
|
| interface AccessInfo {
| /**
| * 权限码
| */
| access_codes: string[]
| /**
| * 可访问的菜单列表
| */
| access_menus: string[]
| /**
| * 可访问的路由列表
| */
| access_routes: string[]
| /**
| * 登录 accessToken
| */
| access_token: AccessToken
| /**
| * 是否已经检查过权限
| */
| is_access_checked: boolean
| /**
| * 登录是否过期
| */
| login_expired: boolean
| /**
| * 登录 accessToken
| */
| refresh_token: AccessToken
| }
|
| export const useAccessStore = defineStore(
| 'access',
| () => {
| const accessInfo = ref<AccessInfo>({ ...initState })
|
| const setAccessInfo = (val: AccessInfo) => {
| accessInfo.value = val
| }
| const setAccessToken = (val: AccessToken) => {
| accessInfo.value.access_token = val
| }
|
| const clearAccessInfo = () => {
| accessInfo.value = { ...initState }
| }
| // 一般没有reset需求,不需要的可以删除
| const reset = () => {
| accessInfo.value = { ...initState }
| }
| const isLogined = computed(() => !!accessInfo.value.access_token)
|
| return {
| accessInfo,
| setAccessInfo,
| setAccessToken,
| clearAccessInfo,
| isLogined,
| reset,
| }
| },
| {
| persist: true,
| },
| )
|
|