Browse Source

fix:conflict-SSO

ananzhusen 5 months ago
parent
commit
e846fcc675

+ 1 - 0
package.json

@@ -27,6 +27,7 @@
     "fast-xml-parser": "^4.0.1",
     "fast-xml-parser": "^4.0.1",
     "file-saver": "^2.0.5",
     "file-saver": "^2.0.5",
     "jszip": "^3.10.0",
     "jszip": "^3.10.0",
+    "@le5le/auth-token": "^1.0.5",
     "localforage": "^1.10.0",
     "localforage": "^1.10.0",
     "monaco-editor": "^0.38.0",
     "monaco-editor": "^0.38.0",
     "qrcode": "^1.5.3",
     "qrcode": "^1.5.3",

+ 2 - 0
src/global.d.ts

@@ -20,3 +20,5 @@ declare interface Window {
 declare interface localStorage {
 declare interface localStorage {
   company: string;
   company: string;
 }
 }
+
+declare module '@le5le/auth-token'

+ 12 - 9
src/http.ts

@@ -4,22 +4,25 @@ import { getCookie } from '@/services/cookie';
 import router from './router';
 import router from './router';
 import i18n from './i18n';
 import i18n from './i18n';
 const $t = i18n.global.t;
 const $t = i18n.global.t;
+import { axiosRequest, axiosResponse} from '@le5le/auth-token';
+
 // axios 配置
 // axios 配置
 axios.defaults.timeout = 60000;
 axios.defaults.timeout = 60000;
 axios.defaults.withCredentials = false;
 axios.defaults.withCredentials = false;
-
+axiosRequest(axios);
 // http request 拦截器
 // http request 拦截器
-axios.interceptors.request.use(
-  (config: any) => {
-    config.headers.Authorization =
-      'Bearer ' + ( getCookie('token') || new URLSearchParams(location.search).get('token') || '');
+// axios.interceptors.request.use(
+//   (config: any) => {
+//     config.headers.Authorization =
+//       'Bearer ' + ( getCookie('token') || new URLSearchParams(location.search).get('token') || '');
 
 
-    return config;
-  },
-  (err: any) => Promise.reject(err)
-);
+//     return config;
+//   },
+//   (err: any) => Promise.reject(err)
+// );
 
 
 // http response 拦截器
 // http response 拦截器
+axiosResponse(axios);
 axios.interceptors.response.use(
 axios.interceptors.response.use(
   (response: any) => {
   (response: any) => {
     if (response && response.data && response.data.error) {
     if (response && response.data && response.data.error) {

+ 26 - 24
src/services/user.ts

@@ -6,7 +6,7 @@ import dayjs from 'dayjs';
 import { updateObject } from '@/services/object';
 import { updateObject } from '@/services/object';
 import router from '@/router';
 import router from '@/router';
 import { deleteCookie, setCookie } from '@/services/cookie';
 import { deleteCookie, setCookie } from '@/services/cookie';
-
+import { getProfile, deleteToken,_setToken} from '@le5le/auth-token';
 export interface IUser {
 export interface IUser {
   id?: string;
   id?: string;
   account?: string;
   account?: string;
@@ -78,15 +78,16 @@ export const getDomain = () => {
 
 
 export const useUser = () => {
 export const useUser = () => {
   const getUser = async (token?: boolean) => {
   const getUser = async (token?: boolean) => {
-    const params: any = {};
-    if (token) {
-      if (localStorage.getItem('remember')) {
-        params.token = 'r';
-      } else {
-        params.token = '1';
-      }
-    }
-    const ret: IUser = await axios.get('/api/account/profile', { params });
+    // const params: any = {};
+    // if (token) {
+    //   if (localStorage.getItem('remember')) {
+    //     params.token = 'r';
+    //   } else {
+    //     params.token = '1';
+    //   }
+    // }
+    // const ret: IUser = await axios.get('/api/account/profile', { params });
+    const ret: IUser = await getProfile(axios);
     const statistics: any = await axios.post('/api/account/statistics');
     const statistics: any = await axios.post('/api/account/statistics');
     if (!ret) {
     if (!ret) {
       return;
       return;
@@ -153,13 +154,13 @@ export const useUser = () => {
     //   }
     //   }
     //   delete data.token;
     //   delete data.token;
     // }
     // }
-    if (data.token) {
-      setCookie('token', data.token, {
-        path: '/',
-        domain: getDomain(),
-      });
-      delete data.token;
-    }
+    // if (data.token) {
+    //   setCookie('token', data.token, {
+    //     path: '/',
+    //     domain: getDomain(),
+    //   });
+    //   delete data.token;
+    // }
     if (!data.amount) {
     if (!data.amount) {
       data.amount = 0.0;
       data.amount = 0.0;
     }
     }
@@ -168,14 +169,15 @@ export const useUser = () => {
 
 
   const signout = () => {
   const signout = () => {
     updateObject(user, {});
     updateObject(user, {});
+    deleteToken();
     // localStorage.removeItem('token');
     // localStorage.removeItem('token');
-    const domain = getDomain();
-    if (domain) {
-      deleteCookie('token', {
-        path: '/',
-        domain: domain, //'le5le.com',
-      });
-    }
+    // const domain = getDomain();
+    // if (domain) {
+    //   deleteCookie('token', {
+    //     path: '/',
+    //     domain: domain, //'le5le.com',
+    //   });
+    // }
     // router.replace({ path: '/login', query: router.currentRoute.value.query });
     // router.replace({ path: '/login', query: router.currentRoute.value.query });
   };
   };
 
 

+ 3 - 2
src/views/components/FileProps.vue

@@ -196,7 +196,7 @@
 <script lang="ts" setup>
 <script lang="ts" setup>
 import { onMounted, reactive, onUnmounted, getCurrentInstance } from 'vue';
 import { onMounted, reactive, onUnmounted, getCurrentInstance } from 'vue';
 import { useUser } from '@/services/user';
 import { useUser } from '@/services/user';
-import { getCookie } from '@/services/cookie';
+// import { getCookie } from '@/services/cookie';
 // import ElementTree from './ElementTree.vue';
 // import ElementTree from './ElementTree.vue';
 import CodeEditor from '@/views/components/common/CodeEditor.vue';
 import CodeEditor from '@/views/components/common/CodeEditor.vue';
 import { autoSave, inTreePanel, useAssets } from '@/services/common';
 import { autoSave, inTreePanel, useAssets } from '@/services/common';
@@ -208,6 +208,7 @@ import { MoreIcon, CloseIcon, EllipsisIcon} from 'tdesign-icons-vue-next';
 import { useMeta2dData,useExtendData } from '@/services/common';
 import { useMeta2dData,useExtendData } from '@/services/common';
 import { lineCross,clearLineCross,handleLineCross } from '@meta2d/utils';
 import { lineCross,clearLineCross,handleLineCross } from '@meta2d/utils';
 import GlobalStates from './GlobalStates.vue';
 import GlobalStates from './GlobalStates.vue';
+import { getToken  } from '@le5le/auth-token';
 
 
 const { getEnterprise } = useEnterprise();
 const { getEnterprise } = useEnterprise();
 const { meta2dData, setMeta2dData } = useMeta2dData();
 const { meta2dData, setMeta2dData } = useMeta2dData();
@@ -215,7 +216,7 @@ const { extendData, setExtendData } = useExtendData();
 const { proxy } = getCurrentInstance();
 const { proxy } = getCurrentInstance();
 const $t = proxy.$t
 const $t = proxy.$t
 const headers = {
 const headers = {
-  Authorization: 'Bearer ' + (getCookie('token') || ''),
+  Authorization: 'Bearer ' + (getToken() || ''),
 };
 };
 const updataData = { directory: '/大屏/图片/默认' };
 const updataData = { directory: '/大屏/图片/默认' };
 
 

+ 3 - 2
src/views/components/Graphics.vue

@@ -412,7 +412,7 @@ import { isGif } from '@/services/utils';
 import { autoSave, delAttrs, blank, useFolder, chargeDialogShow } from '@/services/common';
 import { autoSave, delAttrs, blank, useFolder, chargeDialogShow } from '@/services/common';
 import { debounce, throttle } from '@/services/debouce';
 import { debounce, throttle } from '@/services/debouce';
 import { searchObjectPinyin } from '@/services/pinyin';
 import { searchObjectPinyin } from '@/services/pinyin';
-import { getCookie } from '@/services/cookie';
+// import { getCookie } from '@/services/cookie';
 import { parseSvg } from '@meta2d/svg';
 import { parseSvg } from '@meta2d/svg';
 import Pay from './Pay.vue';
 import Pay from './Pay.vue';
 import { filename } from '@/services/file';
 import { filename } from '@/services/file';
@@ -446,6 +446,7 @@ import { getNetJsDiagram } from '@/services/material';
 import Data from './Data.vue';
 import Data from './Data.vue';
 import Structure from './Structure.vue';
 import Structure from './Structure.vue';
 import { useDot } from '@/services/common';
 import { useDot } from '@/services/common';
+import { getToken  } from '@le5le/auth-token';
 
 
 const { dot } = useDot();
 const { dot } = useDot();
 const { user } = useUser();
 const { user } = useUser();
@@ -612,7 +613,7 @@ const search = ref('');
 const loading = ref(false);
 const loading = ref(false);
 
 
 const headers = {
 const headers = {
-  Authorization: 'Bearer ' + (getCookie('token') || ''),
+  Authorization: 'Bearer ' + (getToken() || ''),
 };
 };
 const updataData = { directory: '/大屏/默认' };
 const updataData = { directory: '/大屏/默认' };
 let lastName = '方案';
 let lastName = '方案';

+ 3 - 2
src/views/components/PenProps.vue

@@ -1212,7 +1212,7 @@ import PenStatus from './PenStatus.vue';
 import Custom from './Custom.vue';
 import Custom from './Custom.vue';
 // import ElementTree from './ElementTree.vue';
 // import ElementTree from './ElementTree.vue';
 
 
-import { getCookie } from '@/services/cookie';
+// import { getCookie } from '@/services/cookie';
 import { useSelection } from '@/services/selections';
 import { useSelection } from '@/services/selections';
 import { autoSave, fonts, inTreePanel } from '@/services/common';
 import { autoSave, fonts, inTreePanel } from '@/services/common';
 import { updatePen } from './pen';
 import { updatePen } from './pen';
@@ -1223,10 +1223,11 @@ import { defaultGradientColor, defaultPureColor, fromArrows, toArrows } from '@/
 import { getLe5le3d, getLe5leV, getLe5le2d } from '@/services/api';
 import { getLe5le3d, getLe5leV, getLe5le2d } from '@/services/api';
 import { s8 } from '@/services/random';
 import { s8 } from '@/services/random';
 import { EllipsisIcon, LinkIcon, LinkUnlinkIcon, ChevronDownIcon, FormatVerticalAlignLeftIcon, FormatHorizontalAlignCenterIcon, FormatVerticalAlignCenterIcon, FormatVerticalAlignRightIcon, FormatHorizontalAlignTopIcon, FormatHorizontalAlignBottomIcon  } from 'tdesign-icons-vue-next';
 import { EllipsisIcon, LinkIcon, LinkUnlinkIcon, ChevronDownIcon, FormatVerticalAlignLeftIcon, FormatHorizontalAlignCenterIcon, FormatVerticalAlignCenterIcon, FormatVerticalAlignRightIcon, FormatHorizontalAlignTopIcon, FormatHorizontalAlignBottomIcon  } from 'tdesign-icons-vue-next';
+import { getToken  } from '@le5le/auth-token';
 
 
 const { user } = useUser();
 const { user } = useUser();
 const headers = {
 const headers = {
-  Authorization: 'Bearer ' + (getCookie('token') || ''),
+  Authorization: 'Bearer ' + (getToken() || ''),
 };
 };
 const updataData = { 
 const updataData = { 
   directory: '/大屏/图片/默认' ,
   directory: '/大屏/图片/默认' ,

+ 9 - 5
src/views/components/View.vue

@@ -908,6 +908,7 @@ import { importExcel, saveAsExcel } from '@/services/excel';
 import { typeOptions } from '@/services/common';
 import { typeOptions } from '@/services/common';
 import { upload } from '@/services/file';
 import { upload } from '@/services/file';
 import { getCollectionList } from '@/services/api';
 import { getCollectionList } from '@/services/api';
+import { parseSearchToken } from '@le5le/auth-token';
 
 
 const router = useRouter();
 const router = useRouter();
 const route = useRoute();
 const route = useRoute();
@@ -1029,14 +1030,17 @@ const watcher = watch(
 );
 );
 //TODO 打开图纸
 //TODO 打开图纸
 const open = async (flag: boolean = false) => {
 const open = async (flag: boolean = false) => {
-  if (route.query.token) {
-    setCookie('token', route.query.token + '', {
-      path: '/',
-      domain: getDomain(),
-    });
+  if(route.query.token||route.query['x-token']){
+    parseSearchToken();
+    
+    // setCookie('token', route.query.token + '', {
+    //   path: '/',
+    //   domain: getDomain(),
+    // });
     getUser();
     getUser();
     const newQuery = { ...route.query };
     const newQuery = { ...route.query };
     delete newQuery.token;
     delete newQuery.token;
+    delete newQuery['x-token'];
     router.replace({
     router.replace({
       path: '/',
       path: '/',
       query: newQuery,
       query: newQuery,

+ 1 - 0
tsconfig.json

@@ -16,6 +16,7 @@
       // "@meta2d/*": ["../meta2d.js/packages/*"],
       // "@meta2d/*": ["../meta2d.js/packages/*"],
       // "@2d-components/*": ["../2d-components/packages/*"],
       // "@2d-components/*": ["../2d-components/packages/*"],
       // "@meta3d/*": ["../meta3d.js/*"],
       // "@meta3d/*": ["../meta3d.js/*"],
+      // "@le5le/auth-token":["../auth-token"],
     },
     },
   },
   },
   "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"],
   "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"],

+ 1 - 0
vite.config.ts

@@ -30,6 +30,7 @@ export default defineConfig({
       // '@meta2d': path.resolve(__dirname, '../meta2d.js/packages'),
       // '@meta2d': path.resolve(__dirname, '../meta2d.js/packages'),
       // '@2d-components': path.resolve(__dirname, '../2d-components/packages'),
       // '@2d-components': path.resolve(__dirname, '../2d-components/packages'),
       // '@meta3d': path.resolve(__dirname, '../meta3d.js'),
       // '@meta3d': path.resolve(__dirname, '../meta3d.js'),
+      // "@le5le/auth-token":path.resolve(__dirname, '../auth-token'),
     },
     },
   },
   },
   build: {
   build: {