Refactor authentication flow to check admin status before updating loading state

This commit is contained in:
PEDZEO
2026-01-18 23:03:38 +03:00
parent f3f56c1749
commit 6751f41859

View File

@@ -145,6 +145,8 @@ export const useAuthStore = create<AuthState>()(
const newToken = await tokenRefreshManager.refreshAccessToken() const newToken = await tokenRefreshManager.refreshAccessToken()
if (newToken) { if (newToken) {
const user = await authApi.getMe() const user = await authApi.getMe()
// Сначала проверяем admin статус, потом снимаем isLoading
await get().checkAdminStatus()
set({ set({
accessToken: newToken, accessToken: newToken,
refreshToken, refreshToken,
@@ -152,7 +154,6 @@ export const useAuthStore = create<AuthState>()(
isAuthenticated: true, isAuthenticated: true,
isLoading: false, isLoading: false,
}) })
get().checkAdminStatus()
} else { } else {
tokenStorage.clearTokens() tokenStorage.clearTokens()
set({ set({
@@ -168,6 +169,8 @@ export const useAuthStore = create<AuthState>()(
try { try {
const user = await authApi.getMe() const user = await authApi.getMe()
// Сначала проверяем admin статус, потом снимаем isLoading
await get().checkAdminStatus()
set({ set({
accessToken, accessToken,
refreshToken, refreshToken,
@@ -175,13 +178,14 @@ export const useAuthStore = create<AuthState>()(
isAuthenticated: true, isAuthenticated: true,
isLoading: false, isLoading: false,
}) })
get().checkAdminStatus()
} catch { } catch {
// Token might be invalid on server, try to refresh // Token might be invalid on server, try to refresh
const newToken = await tokenRefreshManager.refreshAccessToken() const newToken = await tokenRefreshManager.refreshAccessToken()
if (newToken) { if (newToken) {
try { try {
const user = await authApi.getMe() const user = await authApi.getMe()
// Сначала проверяем admin статус, потом снимаем isLoading
await get().checkAdminStatus()
set({ set({
accessToken: newToken, accessToken: newToken,
refreshToken, refreshToken,
@@ -189,7 +193,6 @@ export const useAuthStore = create<AuthState>()(
isAuthenticated: true, isAuthenticated: true,
isLoading: false, isLoading: false,
}) })
get().checkAdminStatus()
} catch { } catch {
tokenStorage.clearTokens() tokenStorage.clearTokens()
set({ set({