2022-01-03 22:20:10 +08:00
|
|
|
import { ref, computed, reactive } from 'vue';
|
|
|
|
import type { Ref, ComputedRef } from 'vue';
|
2021-08-13 14:22:35 +08:00
|
|
|
import { defineStore } from 'pinia';
|
2022-01-03 22:20:10 +08:00
|
|
|
import { getUserInfo, getToken } from '@/utils';
|
2021-05-29 03:02:15 +08:00
|
|
|
|
2022-01-03 22:20:10 +08:00
|
|
|
interface AuthStore {
|
2021-08-13 14:22:35 +08:00
|
|
|
/** 用户信息 */
|
2022-01-03 22:20:10 +08:00
|
|
|
userInfo: Auth.UserInfo;
|
|
|
|
/** 用户token */
|
|
|
|
token: Ref<string>;
|
|
|
|
/** 是否登录 */
|
|
|
|
isLogin: ComputedRef<boolean>;
|
|
|
|
/** 用户角色 */
|
|
|
|
role: Ref<Auth.RoleType>;
|
2021-05-29 03:02:15 +08:00
|
|
|
}
|
|
|
|
|
2022-01-03 22:20:10 +08:00
|
|
|
export const useAuthStore = defineStore('auth-store', () => {
|
|
|
|
const userInfo: Auth.UserInfo = reactive(getUserInfo());
|
|
|
|
const token = ref(getToken());
|
|
|
|
const isLogin = computed(() => Boolean(token.value));
|
|
|
|
const role = ref<Auth.RoleType>('super');
|
2021-05-29 03:02:15 +08:00
|
|
|
|
2022-01-03 22:20:10 +08:00
|
|
|
const authStore: AuthStore = {
|
|
|
|
userInfo,
|
|
|
|
token,
|
|
|
|
isLogin,
|
|
|
|
role
|
|
|
|
};
|
|
|
|
|
|
|
|
return authStore;
|
|
|
|
});
|