瀏覽代碼

feat: 用户登录使用mock api, 可以使用test用户登录 (#233)

* feat: 用户登录使用mock api, 可以使用test用户登录

* Update permission.ts
tomoat 3 年之前
父節點
當前提交
0becf0b4bc
共有 5 個文件被更改,包括 48 次插入14 次删除
  1. 23 0
      mock/user.ts
  2. 2 2
      src/layout/hooks/nav.ts
  3. 4 1
      src/store/modules/permission.ts
  4. 5 5
      src/store/modules/user.ts
  5. 14 6
      src/views/login.vue

+ 23 - 0
mock/user.ts

@@ -0,0 +1,23 @@
+import { MockMethod } from "vite-plugin-mock";
+
+export default [
+  {
+    url: "/login",
+    method: "post",
+    response: ({ body }) => {
+      if (body.username === "admin") {
+        return {
+          username: "admin",
+          expires: 24 * 60 * 60,
+          accessToken: "eyJhbGciOiJIUzUxMiJ9.admin"
+        };
+      } else {
+        return {
+          username: "test",
+          expires: 24 * 60 * 60,
+          accessToken: "eyJhbGciOiJIUzUxMiJ9.test"
+        };
+      }
+    }
+  }
+] as MockMethod[];

+ 2 - 2
src/layout/hooks/nav.ts

@@ -8,6 +8,7 @@ import { transformI18n } from "/@/plugins/i18n";
 import { storageSession } from "/@/utils/storage";
 import { useAppStoreHook } from "/@/store/modules/app";
 import { useEpThemeStoreHook } from "/@/store/modules/epTheme";
+import { useUserStoreHook } from "/@/store/modules/user";
 
 export function useNav() {
   const pureApp = useAppStoreHook();
@@ -38,8 +39,7 @@ export function useNav() {
 
   // 退出登录
   function logout() {
-    storageSession.removeItem("info");
-    router.push("/login");
+    useUserStoreHook().logOut();
   }
 
   function backHome() {

+ 4 - 1
src/store/modules/permission.ts

@@ -61,8 +61,11 @@ export const usePermissionStore = defineStore({
           break;
       }
     },
-    // 清空缓存页面
+    // 清空缓存
     clearAllCachePage() {
+      this.wholeMenus = [];
+      this.menusTree = [];
+      this.buttonAuth = [];
       this.cachePageList = [];
     }
   }

+ 5 - 5
src/store/modules/user.ts

@@ -33,12 +33,12 @@ export const useUserStore = defineStore({
     },
     // 登入
     async loginByUsername(data) {
-      return new Promise<void>((resolve, reject) => {
+      return new Promise((resolve, reject) => {
         getLogin(data)
-          .then(data => {
-            if (data) {
-              setToken(data);
-              resolve();
+          .then(res => {
+            if (res) {
+              setToken(res);
+              resolve(res);
             }
           })
           .catch(error => {

+ 14 - 6
src/views/login.vue

@@ -14,6 +14,9 @@ import illustration4 from "/@/assets/login/illustration4.svg?component";
 import illustration5 from "/@/assets/login/illustration5.svg?component";
 import illustration6 from "/@/assets/login/illustration6.svg?component";
 
+import { useUserStoreHook } from "/@/store/modules/user";
+import { usePermissionStoreHook } from "/@/store/modules/permission";
+
 const router = useRouter();
 
 // eslint-disable-next-line vue/return-in-computed-property
@@ -42,12 +45,17 @@ let user = ref("admin");
 let pwd = ref("123456");
 
 const onLogin = (): void => {
-  storageSession.setItem("info", {
-    username: "admin",
-    accessToken: "eyJhbGciOiJIUzUxMiJ9.test"
-  });
-  initRouter("admin").then(() => {});
-  router.push("/");
+  useUserStoreHook()
+    .loginByUsername({ username: user.value, password: pwd.value })
+    .then(async (res: any) => {
+      storageSession.setItem("info", {
+        username: res.username,
+        accessToken: res.accessToken
+      });
+      usePermissionStoreHook().clearAllCachePage();
+      initRouter(res.username);
+      router.push("/");
+    });
 };
 
 function onUserFocus() {