| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- import { defineStore } from 'pinia';
- import {
- login as userLogin,
- logout as userLogout,
- getUserInfo,
- LoginData,
- Data,
- } from '@/api/user';
- import useAuth from '@/utils/auth';
- import { removeRouteListener } from '@/utils/route-listener';
- import { UserState } from './types';
- import useAppStore from '../app';
- const { setToken, clearToken } = useAuth();
- const useUserStore = defineStore('user', {
- state: (): UserState => ({
- name: undefined,
- avatar: undefined,
- organization: undefined,
- email: undefined,
- personalWebsite: undefined,
- jobName: undefined,
- organizationName: undefined,
- phone: undefined,
- registrationDate: undefined,
- accountId: undefined,
- certification: undefined,
- role: '',
- }),
- getters: {
- userInfo(state: UserState): UserState {
- return { ...state };
- },
- },
- actions: {
- switchRoles() {
- return new Promise(resolve => {
- this.role = this.role === 'user' ? 'admin' : 'user';
- resolve(this.role);
- });
- },
- // Set user's information
- setInfo(partial: Partial<UserState>) {
- this.$patch(partial);
- },
- // Reset user's information
- resetInfo() {
- this.$reset();
- },
- // Get user's information
- async info(data: Data) {
- // const res = await getUserInfo();
- const { name } = data;
- this.setInfo({ name: name, role: 'admin' });
- },
- // Login
- async login(loginForm: LoginData) {
- try {
- const params = {
- name: loginForm.username,
- password: loginForm.password,
- };
- const res = await userLogin(params);
- setToken(res.data.token, res.data.refreshToken);
- console.log('aaaddd', res.data);
- this.info(res.data);
- return res;
- } catch (err) {
- clearToken();
- throw err;
- }
- },
- logoutCallBack() {
- const appStore = useAppStore();
- this.resetInfo();
- clearToken();
- removeRouteListener();
- appStore.clearServerMenu();
- },
- // Logout
- async logout() {
- try {
- // await userLogout();
- } finally {
- this.logoutCallBack();
- }
- },
- },
- });
- export default useUserStore;
|