P0 HOTFIX: Admin login redirect loop #322

Closed
opened 2026-06-29 14:09:23 +02:00 by kincses · 3 comments
Owner

Mérföldkő: Epic 10 - Admin UI

Cél: Javítani a bejelentkezési hibát

Root Cause

A index.vue onMounted hívása ('/api/v1/admin/users/stats') Authorization header nélkül. Backend OAuth2PasswordBearer csak Authorization: Bearer header-ből olvassa a JWT-t.

Láncreakció

  1. Bejelentkezés OK → access_token cookie beállítva
  2. Dashboard onMounted → Authorization header NÉLKÜL
  3. Backend 401 (nincs Bearer token)
  4. plugins/api.ts 401 interceptor elkapja → logout() → törli cookie-t
  5. Hard redirect /login
  6. Felhasználó visszakerül a login oldalra

Javítás

hívásba Authorization: Bearer header átadása

**Mérföldkő:** Epic 10 - Admin UI **Cél:** Javítani a bejelentkezési hibát ### Root Cause A index.vue onMounted hívása ('/api/v1/admin/users/stats') Authorization header nélkül. Backend OAuth2PasswordBearer csak Authorization: Bearer header-ből olvassa a JWT-t. ### Láncreakció 1. Bejelentkezés OK → access_token cookie beállítva 2. Dashboard onMounted → Authorization header NÉLKÜL 3. Backend 401 (nincs Bearer token) 4. plugins/api.ts 401 interceptor elkapja → logout() → törli cookie-t 5. Hard redirect /login 6. Felhasználó visszakerül a login oldalra ### Javítás hívásba Authorization: Bearer header átadása
kincses added the Scope: FrontendType: BugStatus: In Progress labels 2026-06-29 14:09:29 +02:00
kincses started working 2026-06-29 14:09:29 +02:00
Author
Owner

▶️ Munka megkezdve: 2026-06-29 14:09:29

▶️ **Munka megkezdve:** 2026-06-29 14:09:29
kincses added Status: Done and removed Status: In Progress labels 2026-06-29 14:10:55 +02:00
kincses worked for 1 minute 2026-06-29 14:10:55 +02:00
Author
Owner

Munka befejezve: 2026-06-29 14:10:55

Technikai Összefoglaló:
P0 HOTFIX: Admin login redirect loop javítva. Root cause: index.vue onMounted ('/api/v1/admin/users/stats') hívás Authorization header nélkül történt, ami 401-et váltott ki a backendből. A plugins/api.ts 401 interceptor (globalThis.fetch override) elkapva logout + hard redirect /login. Javítás: hívásba useCookie('access_token')-ból kiolvasott Bearer token header hozzáadva.

⏱️ Az idő rögzítve.

✅ **Munka befejezve:** 2026-06-29 14:10:55 **Technikai Összefoglaló:** P0 HOTFIX: Admin login redirect loop javítva. Root cause: index.vue onMounted ('/api/v1/admin/users/stats') hívás Authorization header nélkül történt, ami 401-et váltott ki a backendből. A plugins/api.ts 401 interceptor (globalThis.fetch override) elkapva logout + hard redirect /login. Javítás: hívásba useCookie('access_token')-ból kiolvasott Bearer token header hozzáadva. ⏱️ *Az idő rögzítve.*
Author
Owner

Admin Login Redirect Loop - Javítás Kész

🔍 Root Cause

A 318-as kártya (Dashboard statisztika kártyák dinamikus adatokkal) implementációja során az index.vue onMounted hook-ja $fetch('/api/v1/admin/users/stats') hívást végzett Authorization header nélkül.

Láncreakció:

  1. Bejelentkezés sikeres → access_token cookie beállítva → fetchUser() sikeres (Bearer header-t használ)
  2. Dashboard betölt → onMounted$fetch('/api/v1/admin/users/stats') ⚠️ AUTHORIZATION HEADER NÉLKÜL
  3. Backend OAuth2PasswordBearer 401-et ad (nem talál Bearer tokent a header-ben)
  4. plugins/api.ts 401 interceptor (globalThis.fetch override) elkapja a 401-et
  5. authStore.logout() → törli az access_token cookie-t
  6. window.location.href = '/login' → kemény redirect vissza a login oldalra

🛠️ Javítás

Egyetlen sor változás az index.vue onMounted blokkjában:

  • useCookie('access_token')-ból kiolvassuk a tokent
  • Átadjuk Authorization: Bearer <token> header-ben a $fetch hívásnak

Eredmény

  • A dashboard API hívás most már hitelesített
  • A 401 interceptor nem kapja el a hívást
  • A bejelentkezési flow helyreállt
  • Frontend konténer újraindítva
  • #322-es Gitea kártya létrehozva, elindítva, dokumentálva és lezárva
## ✅ Admin Login Redirect Loop - Javítás Kész ### 🔍 Root Cause A 318-as kártya (`Dashboard statisztika kártyák dinamikus adatokkal`) implementációja során az [`index.vue`](frontend_admin/pages/index.vue:254) `onMounted` hook-ja `$fetch('/api/v1/admin/users/stats')` hívást végzett **Authorization header nélkül**. **Láncreakció:** 1. Bejelentkezés sikeres → `access_token` cookie beállítva → `fetchUser()` sikeres (Bearer header-t használ) 2. Dashboard betölt → `onMounted` → `$fetch('/api/v1/admin/users/stats')` ⚠️ **AUTHORIZATION HEADER NÉLKÜL** 3. Backend [`OAuth2PasswordBearer`](backend/app/api/deps.py:27) 401-et ad (nem talál Bearer tokent a header-ben) 4. [`plugins/api.ts`](frontend_admin/plugins/api.ts:26) 401 interceptor (`globalThis.fetch` override) elkapja a 401-et 5. `authStore.logout()` → törli az `access_token` cookie-t ❌ 6. `window.location.href = '/login'` → kemény redirect vissza a login oldalra ### 🛠️ Javítás Egyetlen sor változás az [`index.vue`](frontend_admin/pages/index.vue:254-261) `onMounted` blokkjában: - `useCookie('access_token')`-ból kiolvassuk a tokent - Átadjuk `Authorization: Bearer <token>` header-ben a `$fetch` hívásnak ### ✅ Eredmény - A dashboard API hívás most már hitelesített - A 401 interceptor nem kapja el a hívást - A bejelentkezési flow helyreállt - Frontend konténer újraindítva - #322-es Gitea kártya létrehozva, elindítva, dokumentálva és lezárva
Sign in to join this conversation.