Dev #11

Merged
serega404 merged 87 commits from dev into main 2026-05-25 03:22:55 +03:00
Showing only changes of commit a0ca50a718 - Show all commits
+15 -4
View File
@@ -7,11 +7,20 @@ import type { AuthResponse } from '@/api/types'
import type { User } from '@/types'
const TOKEN_STORAGE_KEY = 'universe.accessToken'
const ACTIVE_ROLE_STORAGE_KEY = 'universe.activeRole'
function restoreStoredActiveRole(mappedUser: User) {
const storedRole = localStorage.getItem(ACTIVE_ROLE_STORAGE_KEY) as User['activeRole'] | null
if (!storedRole || !mappedUser.roles.includes(storedRole)) return mappedUser
return { ...mappedUser, activeRole: storedRole }
}
function applyAuthResponse(response: AuthResponse) {
localStorage.setItem(TOKEN_STORAGE_KEY, response.accessToken)
setApiAccessToken(response.accessToken)
return mapApiUser(response.user)
return restoreStoredActiveRole(mapApiUser(response.user))
}
function getAuthReturnUrl() {
@@ -48,13 +57,13 @@ export const useAuthStore = defineStore('auth', () => {
const refreshed = await authApi.refresh()
await hydrateFromResponse(refreshed)
const me = await authApi.me()
user.value = mapApiUser(me)
user.value = restoreStoredActiveRole(mapApiUser(me))
return true
} catch (refreshError) {
if (accessToken.value) {
try {
const me = await authApi.me()
user.value = mapApiUser(me)
user.value = restoreStoredActiveRole(mapApiUser(me))
return true
} catch {
// Fall through to local cleanup below.
@@ -100,7 +109,7 @@ export const useAuthStore = defineStore('auth', () => {
localStorage.setItem(TOKEN_STORAGE_KEY, token)
setApiAccessToken(token)
const me = await authApi.me()
user.value = mapApiUser(me)
user.value = restoreStoredActiveRole(mapApiUser(me))
initialized.value = true
return true
} catch (err) {
@@ -129,6 +138,7 @@ export const useAuthStore = defineStore('auth', () => {
user.value = null
accessToken.value = null
localStorage.removeItem(TOKEN_STORAGE_KEY)
localStorage.removeItem(ACTIVE_ROLE_STORAGE_KEY)
setApiAccessToken(null)
}
@@ -138,6 +148,7 @@ export const useAuthStore = defineStore('auth', () => {
function setActiveRole(role: User['activeRole']) {
if (!user.value || !user.value.roles.includes(role)) return false
localStorage.setItem(ACTIVE_ROLE_STORAGE_KEY, role)
user.value = { ...user.value, activeRole: role }
return true
}