Merge pull request #2 from PEDZEO/PEDZ

Refactor authentication flow to check admin status before updating lo…
This commit is contained in:
PEDZEO
2026-01-18 23:04:02 +03:00
committed by GitHub

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({