¶Ô±ÈÐÂÎļþ |
| | |
| | | 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( |
| | | 'accessInfo', |
| | | () => { |
| | | 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, |
| | | }, |
| | | ) |