diff --git a/src/store/user.ts b/src/store/user.ts index 9f7f951..e6f3fb1 100644 --- a/src/store/user.ts +++ b/src/store/user.ts @@ -60,6 +60,25 @@ const store = reactive({ const teachers_loading = ref(false) +function parseCurrentOrgIdFromToken(token: string | null): string | undefined { + if (!token) return undefined; + try { + const tokenParts = token.split('.'); + if (tokenParts.length < 2) return undefined; + const payloadRaw = tokenParts[1].replace(/-/g, '+').replace(/_/g, '/'); + const payloadJson = decodeURIComponent( + atob(payloadRaw) + .split('') + .map((char) => `%${(`00${char.charCodeAt(0).toString(16)}`).slice(-2)}`) + .join('') + ); + const payload = JSON.parse(payloadJson); + return payload.current_org_id || undefined; + } catch (_error) { + return undefined; + } +} + export default function useUser(router?: Router) { const { load_start, load_done } = useLoading(); @@ -364,7 +383,13 @@ export default function useUser(router?: Router) { // @ts-ignore let userApp = user.infos[0] as HtyUserApp; setCurrentUser(user, userApp); - await sudo2(userApp.id); + const authToken = window.localStorage.getItem(HtyAuthToken); + const currentOrgId = parseCurrentOrgIdFromToken(authToken); + if (currentOrgId) { + window.localStorage.setItem(HtySudoToken, authToken as string); + } else { + await sudo2(userApp.id); + } await getTags(); await getMyTeachers(); await getSupervisor();