9.9 KiB
🔐 Jogosultságkezelés Audit Jelentés (2026-06-18)
Teljes Rendszerkép a Jogosultsági Szintekről
1. Adatbázis Réteg (Database Schema)
1.1 identity.users - Felhasználói Jogosultságok
| Mező | Típus | Leírás |
|---|---|---|
role |
identity.userrole enum |
Rendszerszintű szerepkör |
scope_level |
VARCHAR(30) |
Hatókör szint (pl. "individual") |
scope_id |
VARCHAR(50) |
Hatókör azonosító (pl. org ID vagy user ID) |
custom_permissions |
JSON |
Egyedi jogosultságok ({"capabilities": [...]}) |
userrole enum értékei (Python UserRole osztály, backend/app/models/identity/identity.py:24):
superadmin, admin, region_admin, country_admin, moderator,
sales_agent, user, service_owner, fleet_manager, driver
⚠️ Probléma: Az adatbázis enum duplikált értékeket tartalmaz (pl. "admin" és "ADMIN" is létezik, "user" kétszer szerepel). Ez az enum korábbi migrációk során keletkezett.
1.2 fleet.org_roles - Szervezeti Szerepkör Definíciók
🔴 KRITIKUS: A tábla ÜRES!
A modell (backend/app/models/marketplace/organization.py:34) definiál egy dinamikus szerepkör rendszert (OrgRole modell), de seed-elés nem történt meg. A OrgUserRole enum (backend/app/models/marketplace/organization.py:27) az alábbi értékeket tartja számon:
OWNER, ADMIN, MANAGER, MEMBER, AGENT
1.3 fleet.organization_members - Tagságok és Jogosultságok
| Mező | Típus | Leírás |
|---|---|---|
role |
VARCHAR(50) |
Szerepkör a szervezetben (OWNER/ADMIN/MANAGER/MEMBER/AGENT) |
permissions |
JSON |
Egyedi JSON jogosultságok |
is_permanent |
BOOLEAN |
Állandó tagság |
is_verified |
BOOLEAN |
Megerősített tagság |
status |
VARCHAR(20) |
Státusz (active/inactive) |
1.4 system.system_parameters - Hierarchikus Paraméterezés
| Mező | Típus | Leírás |
|---|---|---|
key |
VARCHAR |
Paraméter kulcs |
value |
JSONB |
Paraméter érték |
scope_level |
parameter_scope enum |
Hatókör: GLOBAL, COUNTRY, REGION, USER, ORGANIZATION |
scope_id |
VARCHAR |
Hatókör azonosító |
parameter_scope enum értékei (backend/app/models/system/system.py:12):
GLOBAL, COUNTRY, REGION, ORGANIZATION, USER
⚠️ Probléma: Minden meglévő paraméter
globalscope_level-lel rendelkezik. A hierarchikus scope (country, region, organization, user) nincs használatban gyakorlatban.
1.5 system.pending_actions - Dual Control (Négy Szem Elv)
| Mező | Típus | Leírás |
|---|---|---|
requester_id |
INTEGER |
Kérelem indítója |
approver_id |
INTEGER |
Jóváhagyó (nullable) |
status |
action_status enum |
pending/approved/rejected |
action_type |
VARCHAR |
CHANGE_ROLE, SET_VIP, WALLET_ADJUST, SOFT_DELETE_USER, ORGANIZATION_TRANSFER |
payload |
JSONB |
Művelet adatok |
1.6 system.subscription_tiers - Előfizetési Csomagok
| Mező | Típus | Leírás |
|---|---|---|
name |
VARCHAR |
Csomag neve (FREE, PREMIUM, VIP, stb.) |
rules |
JSONB |
Szabályok (pl. {"max_vehicles": 5}) |
2. Backend Kód Réteg
2.1 Rang Rendszer - DEFAULT_RANK_MAP
Definiálva: backend/app/core/security.py:56
| Rang | Érték | Van UserRole enum-ban? |
|---|---|---|
| SUPERADMIN | 100 | ✅ Igen |
| ADMIN | 90 | ✅ Igen |
| REGION_ADMIN | 85 | ✅ Igen |
| COUNTRY_ADMIN | 80 | ✅ Igen |
| MODERATOR | 75 | ✅ Igen |
| AUDITOR | 70 | ❌ Nincs |
| ORGANIZATION_OWNER | 65 | ❌ Nincs |
| ORGANIZATION_MANAGER | 60 | ❌ Nincs |
| ORGANIZATION_MEMBER | 50 | ❌ Nincs |
| SERVICE_PROVIDER | 40 | ❌ Nincs |
| SALES_AGENT | 30 | ✅ Igen |
| FLEET_MANAGER | 25 | ✅ Igen |
| PREMIUM_USER | 20 | ❌ Nincs |
| USER | 10 | ✅ Igen |
| DRIVER | 5 | ✅ Igen |
| GUEST | 0 | ❌ Nincs |
🔴 KRITIKUS: 16 rang van definiálva, de a
UserRoleenum csak 10 értéket tartalmaz. A hiányzók (AUDITOR, ORGANIZATION_OWNER/MANAGER/MEMBER, SERVICE_PROVIDER, PREMIUM_USER, GUEST) sosem kerülnek kiosztásra!
2.2 RBAC Osztály - 3 Szintű Ellenőrzés
Forrás: backend/app/core/rbac.py
1. Superadmin check → mindent átenged
2. Rang ellenőrzés → DEFAULT_RANK_MAP alapján
3. Custom permissions → capabilities lista ellenőrzése
2.3 API Deps - get_current_admin
Forrás: backend/app/api/deps.py:158
Engedélyezett admin szerepkörök:
allowed_roles = {superadmin, admin, region_admin, country_admin, moderator}
2.4 Scoped RBAC - check_resource_access
Forrás: backend/app/api/deps.py:106
- Superadmin → mindenhez hozzáfér
- Saját ID vagy scope_id egyezés → hozzáfér
- Egyéb → 403 Forbidden
2.5 Dual Control - SecurityService
Forrás: backend/app/services/security_service.py
| Típus | Leírás |
|---|---|
CHANGE_ROLE |
Szerepkör módosítás |
SET_VIP |
VIP státusz |
WALLET_ADJUST |
Pénztárca módosítás |
SOFT_DELETE_USER |
Felhasználó törlés |
ORGANIZATION_TRANSFER |
Szervezet átadás |
2.6 JWT Token Felépítése
Forrás: backend/app/api/v1/endpoints/auth.py:108
{
"sub": "user_id",
"role": "superadmin",
"rank": 100,
"scope_level": "individual",
"scope_id": "user_id_vagy_org_id"
}
3. Frontend Réteg
3.1 Frontend Auth Store
Forrás: frontend/src/stores/authStore.ts:4
export type UserRole = 'guest' | 'user' | 'manager' | 'admin' | 'superadmin'
⚠️ Probléma: A frontend
UserRoletípus NEM egyezik a backendUserRoleenum-jával! Hiányzik:region_admin,country_admin,moderator,sales_agent,service_owner,fleet_manager,driver.
3.2 Router Admin Guard
Forrás: frontend/src/router/index.ts:133
const adminRoles = ['superadmin', 'admin', 'region_admin', 'country_admin', 'moderator']
Ez a lista egyezik a backend get_current_admin függvényével.
4. Problémák és Hiányosságok
🔴 KRITIKUS Problémák
| # | Probléma | Hely | Hatás |
|---|---|---|---|
| P1 | fleet.org_roles tábla ÜRES |
OrgRole modell | Dinamikus szerepkör rendszer nem működik |
| P2 | Rank map inkonzisztens a UserRole enum-mal | DEFAULT_RANK_MAP vs UserRole | 6 rang sosem kerül kiosztásra |
| P3 | Enum duplikáció (kis/nagybetű) | userrole és orgtype adatbázis enumok | Migrációs hiba, karbantartási nehézség |
| P4 | Frontend/backend UserRole eltérés | authStore.ts | Frontend hibás role-okat kezel |
| P5 | parameter_scope enum 3 sémában | public, system | Inkonzisztens definíciók |
🟡 FIGYELMEZTETÉS
| # | Probléma | Hely | Hatás |
|---|---|---|---|
| W1 | Csak global scope használatban |
system_parameters | Hierarchikus paraméterezés nem kihasznált |
| W2 | Minden user individual scope_level |
users tábla | Többszintű scope nincs implementálva |
| W3 | Nincs explicit "deny" mechanizmus | RBAC rendszer | Csak elégtelen rangot jelez, explicit tiltás nincs |
| W4 | custom_permissions nincs validálva | User modell | Bármilyen JSON elfogadott |
5. Összefüggés Diagram
graph TB
subgraph Frontend
FS[authStore.ts<br/>UserRole: guest/user/manager/admin/superadmin]
RG[Router Guard<br/>adminRoles: superadmin, admin,<br/>region_admin, country_admin, moderator]
end
subgraph API_Layer
JWT[JWT Token payload<br/>sub + role + rank + scope_level + scope_id]
DC[Dual Control SecurityService<br/>5 művelettípus]
end
subgraph Backend
UR[UserRole enum<br/>10 érték]
RM[DEFAULT_RANK_MAP<br/>16 rang - csak 10 használható]
RBAC[RBAC osztály<br/>3 szint: superadmin + rank + capabilities]
GR[get_current_admin<br/>5 engedélyezett szerepkör]
end
subgraph Database
U[identity.users<br/>role + scope_level + scope_id + custom_permissions]
OM[fleet.organization_members<br/>role + permissions JSON]
OR[fleet.org_roles<br/>🔴 ÜRES! Nincs seed data]
SP[system.system_parameters<br/>scope_level + scope_id - csak global használva]
PA[system.pending_actions<br/>Dual Control tároló]
end
FS -- eltérő role halmaz --> UR
JWT -- kiolvassa --> U
RBAC -- ellenőrzi --> RM
GR -- engedélyezi --> UR
DC -- naplóz --> PA
OR -- üres, nem használható --> OM
6. Azonosított Problémák Részletesen
P1: fleet.org_roles tábla üres
- A dinamikus szerepkör rendszer teljesen kiépített (OrgRole modell, OrgUserRole enum)
- De a
fleet.org_rolestáblában egyetlen rekord sincs - Következmény: a
organization_members.rolemező validálatlan string-ként működik
P2: DEFAULT_RANK_MAP inkonzisztencia
- A
DEFAULT_RANK_MAPtartalmaz olyan rangokat (AUDITOR, ORGANIZATION_OWNER, PREMIUM_USER, GUEST), amelyek nem szerepelnek aUserRoleenum-ban - Ezek a rangok soha nem kerülnek kiosztásra
- Megoldás: vagy bővíteni a
UserRoleenumot, vagy törölni a felesleges rangokat
P3: Enum duplikáció
- A
userroleenum minden értéke kétszer szerepel (kis és NAGY betűs változat) - Az
orgtypeenum értékei szintén duplikáltak (business/BUSINESS, stb.) - Ez a korábbi migrációk során keletkezett
P4: Frontend-Backend eltérés
- A frontend auth store 5 role-t definiál: guest, user, manager, admin, superadmin
- A backend 10 role-t: superadmin, admin, region_admin, country_admin, moderator, sales_agent, user, service_owner, fleet_manager, driver
- A
managerfrontend role nem létezik a backendben, aregion_adminéscountry_adminésmoderatorhiányzik a frontendből
P5: Hierarchikus scope nem kihasznált
- A
ParameterScopeenum (GLOBAL, COUNTRY, REGION, ORGANIZATION, USER) teljesen kiépített - De minden
system_parameterglobalscope_level-lel rendelkezik - A hierarchikus paraméterezés (ország → régió → szervezet → felhasználó) nincs implementálva