| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- import { defineStore } from 'pinia';
- import { login, QueyrUserInfo, QueyrRoutesList } from '../../apis/login';
- import { kuky_Authorization, localST_UserInfo, localST_RoutesList } from '../storage';
- /**
- * 当前登录的用户信息
- */
- export const useCurrentUserStore = defineStore('current_user', {
- persist: {
- enabled: true,
- // 可选:自定义存储的 key 和要持久化的路径
- strategies: [
- {
- key: 'info',
- storage: localStorage,
- paths: ['username'] // 只持久化 username 属性
- }
- ]
- },
- state: () => {
- return {
- name: 'Jack',
- token_type: '',
- token: kuky_Authorization.get(),
- username: '',
- nickname: '',
- dept: [],
- roles: [],
- permissions: [],
- user: {}
- };
- },
- actions: {
- updateName(name) {
- this.name = name;
- },
- toLogin(data) {
- const { username, password } = data;
- return new Promise((resolve, reject) => {
- login({ username, password })
- .then((res) => {
- if (res.code == 200 && res.data.access_token.length) {
- this.token = res.data.access_token;
- this.token_type = res.data.token_type;
- this.username = res.data.username;
- this.nickname = res.data.nickname;
- kuky_Authorization.set(res.data.access_token);
- resolve(res.msg);
- /**
- * 获取用户信息
- * 暂时先在这里去调用,后续可以考虑放在路由拦截中去调用
- */
- this.getInfo();
- } else {
- reject(res.msg);
- }
- })
- .catch((err) => {
- reject(err);
- });
- });
- },
- // 获取并且存储用户路由列表
- async getRoutesList() {
- const {
- code,
- data: { routers }
- } = await QueyrRoutesList();
- if (code === 200) {
- // 将 setItem 包装在一个 Promise 中并等待完成
- return new Promise((resolve, reject) => {
- try {
- localST_RoutesList.setItem(JSON.stringify(routers));
- resolve();
- } catch (error) {
- reject(error);
- }
- });
- }
- },
- // 获取并且存储用户信息
- async getUserInfo() {
- const {
- code,
- data: { permissions, dept, roles }
- } = await QueyrUserInfo();
- if (code === 200) {
- return new Promise((resolve, reject) => {
- try {
- localST_UserInfo.setItem(JSON.stringify({ permissions, dept, roles }));
- resolve();
- } catch (error) {
- reject(error);
- }
- });
- }
- }
- }
- });
|