| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import { defineStore } from 'pinia';
- import { fetchLogin, fetchUserInfo } from '@/api/user';
- import { IAuth, IRole, IUser } from '@/interface';
- import cache from '@/utils/cache';
- type UserRootState = {
- userInfo?: IUser;
- token?: string | null;
- roles?: IRole[];
- auths?: IAuth[];
- };
- export const useUserStore = defineStore('user', {
- state: (): UserRootState => {
- return {
- token: cache.getStorageExp('token'),
- roles: undefined,
- userInfo: undefined,
- auths: undefined,
- };
- },
- actions: {
- setUserInfo(res: UserRootState['userInfo']) {
- this.userInfo = res;
- },
- setToken(res: UserRootState['token'], exp: number) {
- cache.setStorageExp('token', res, exp);
- this.token = res;
- },
- setRoles(res: UserRootState['roles']) {
- this.roles = res;
- },
- setAuths(res: UserRootState['auths']) {
- this.auths = res;
- },
- logout() {
- cache.clearStorage('token');
- this.token = undefined;
- this.userInfo = undefined;
- this.roles = undefined;
- },
- async pwdLogin({ id, password }) {
- try {
- const { data: token } = await fetchLogin({
- id,
- password,
- });
- this.setToken(token, 24);
- return token;
- } catch (error: any) {
- // 错误返回401,全局的响应拦截会打印报错信息
- return null;
- }
- },
- async getUserInfo() {
- try {
- const { code, data } = await fetchUserInfo();
- this.setUserInfo(data);
- this.setRoles(data.roles);
- this.setAuths(data.auths);
- return { code, data };
- } catch (error) {
- return error;
- }
- },
- },
- });
|