123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- import { loginApi, logoutApi } from "@/api/auth";
- import { getUserInfoApi } from "@/api/user";
- import { resetRouter } from "@/router";
- import { store } from "@/store";
- import { LoginData } from "@/api/auth/types";
- import { UserInfo } from "@/api/user/types";
- export const useUserStore = defineStore(
- "user",
- () => {
- const user = ref<UserInfo>({
- roles: [],
- perms: [],
- });
- const isGetAuth = ref(false); //是否已经请求过auth接口活的role和menus了
- /**
- * 登录
- *
- * @param {LoginData}
- * @returns
- */
- function login(loginData: LoginData) {
- return new Promise<void>((resolve, reject) => {
- loginApi(loginData)
- .then(async (response) => {
- await getUserInfo();
- // const { tokenType, accessToken } = response.data;
- // localStorage.setItem("token", tokenType + " " + accessToken); // Bearer eyJhbGciOiJIUzI1NiJ9.xxx.xxx
- localStorage.setItem("token", response.data + "");
- resolve();
- })
- .catch((error) => {
- reject(error);
- });
- });
- }
- // 获取信息(用户昵称、头像、角色集合、权限集合)
- function getUserInfo() {
- return new Promise<any>((resolve, reject) => {
- getUserInfoApi()
- .then(({ data }) => {
- if (!data) {
- reject("Verification failed, please Login again.");
- return;
- }
- user.value.avatar =
- import.meta.env.VITE_APP_UPLOAD_URL + data.avatar;
- user.value.userId = data.id;
- user.value.username = data.userName;
- user.value.roles = data.roles;
- user.value.deptId = data.deptId;
- user.value.stationType = data.stationType;
- isGetAuth.value = true;
- user.value.perms = data.permissions ?? [];
- resolve(data);
- })
- .catch((error) => {
- reject(error);
- });
- });
- }
- // user logout
- function logout() {
- return new Promise<void>((resolve, reject) => {
- logoutApi()
- .then(() => {
- localStorage.setItem("token", "");
- location.reload(); // 清空路由
- user.value = { roles: [], perms: [] };
- resolve();
- })
- .catch((error) => {
- reject(error);
- });
- });
- }
- // remove token
- function resetToken() {
- console.log("resetToken");
- return new Promise<void>((resolve) => {
- localStorage.setItem("token", "");
- resetRouter();
- resolve();
- });
- }
- return {
- user,
- login,
- getUserInfo,
- logout,
- resetToken,
- isGetAuth,
- };
- },
- { persist: true }
- );
- // 非setup
- export function useUserStoreHook() {
- return useUserStore(store);
- }
|