libushang vor 6 Monaten
Ursprung
Commit
c29c8fbaab
3 geänderte Dateien mit 40 neuen und 89 gelöschten Zeilen
  1. 2 0
      README.md
  2. 1 1
      src/api/login.ts
  3. 37 88
      src/components/YzyCallback/index.vue

+ 2 - 0
README.md

@@ -15,3 +15,5 @@ pnpm run dev
 
 ## 构建生产环境
 pnpm run build
+
+pnpm run build-only

+ 1 - 1
src/api/login.ts

@@ -50,7 +50,7 @@ export function callback(data): AxiosPromise<any> {
     grantType: 'social'
   };
   return request({
-    url: '/api/auth/yzy/callback',
+    url: '/auth/yzy/callback',
     headers: {
       isToken: false,
       isEncrypt: true,

+ 37 - 88
src/components/YzyCallback/index.vue

@@ -5,103 +5,52 @@
 <script setup lang="ts">
 import { ref, onMounted, nextTick } from 'vue';
 import { useRoute, useRouter } from 'vue-router';
-import { login, callback } from '@/api/login';
+import { callback, getInfo } from '@/api/login';
 import { setToken, getToken } from '@/utils/auth';
-import { LoginData } from '@/api/types';
-import { showSuccessToast, showFailToast, Loading } from "vant";
+import useUserStore from "@/store/modules/user";
 
 const route = useRoute();
-const loading = ref(true);
-
 const router = useRouter();
-const a = route.query;
-console.log('a:', a);
-/**
- * 接收Route传递的参数
- * @param {Object} route.query.
- */
-const code = route.query.code as string;
-const state = route.query.state as string;
-const source = route.query.source as string;
-// const stateJson = JSON.parse(atob(state));
-// const tenantId = (stateJson.tenantId as string) ? (stateJson.tenantId as string) : '000000';
-// const domain = stateJson.domain as string;
-debugger;     
-
-console.log('code:', code);
-
-const processResponse = async (res: any) => {
-  if (res.code !== 200) {
-    throw new Error(res.msg);
-  }
-  if (res.data !== null) {
-    setToken(res.data.access_token);
-  }
-  // showSuccessToast(res.msg);
-  setTimeout(() => {
-    location.href = res.data.redirect_url;
-  }, 2000);
-};
-
-const handleError = (error: any) => {
-  showFailToast(error.message);
-  //setTimeout(() => {
-  //  location.href = '/index';
-  //}, 2000);
-};
-
-const callbackByCode = async (data) => {
-  try {
-    const res = await callback(data);
-    await processResponse(res);
-    loading.value = false;
-  } catch (error) {
-    handleError(error);
-  }
-};
-
-const loginByCode = async (data: LoginData) => {
-  try {
-    const res = await login(data);
-    await processResponse(res);
-    loading.value = false;
-  } catch (error) {
-    handleError(error);
-  }
-};
-
-const init = async () => {
-  // 如果域名不相等 则重定向处理
-  /*
-  let host = window.location.host;
-  if (domain !== host) {
-    let urlFull = new URL(window.location.href);
-    urlFull.host = domain;
-    window.location.href = urlFull.toString();
-    return;
-  }
-
-  const data: LoginData = {
-    socialCode: code,
-    socialState: state,
-    tenantId: tenantId,
-    source: source,
-    clientId: import.meta.env.VITE_APP_CLIENT_ID,
-    grantType: 'social'
-  };
+const useUser = useUserStore();
+const loading = ref(true);
 
-  if (!getToken()) {
-    await loginByCode(data);
-  } else {
-    await callbackByCode(data);
-  }
-  */
-  await callbackByCode({code, state});
+const do_callback = () => {
+  const code = route.query.code as string;
+  const state = route.query.state as string;
+  callback({code, state}).then((res)=>{
+      loading.value = false;
+      var access_token = res.data.access_token;
+      var redirect_url = res.data.redirect_url;
+      setToken(access_token);
+      
+      console.log('redirect_url:', redirect_url);
+      setTimeout(function() {
+        getUserInfo(redirect_url)
+      }, 500);
+  })
+}
+
+const getUserInfo = (redirect_url) => {
+  getInfo().then((res)=>{
+    const roles = res.data.roles;
+    console.log('roles', roles);
+    if(roles.includes("superadmin")) {
+      useUser.setRoles("leader");
+    }
+    if(roles.includes("super_ld")) {
+      useUser.setRoles("leader");
+    }
+    if(roles.includes("super_worker")) {
+      useUser.setRoles("worker");
+    }
+    
+    router.push(redirect_url);
+  })
 };
 
 onMounted(() => {
   nextTick(() => {
-    init();
+    do_callback();
   });
 });
 </script>