|
@@ -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>
|