Files
service-finder/docs/permission_system_audit_2026-06-18.md

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 global scope_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 UserRole enum 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 UserRole típus NEM egyezik a backend UserRole enum-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_roles táblában egyetlen rekord sincs
  • Következmény: a organization_members.role mező validálatlan string-ként működik

P2: DEFAULT_RANK_MAP inkonzisztencia

  • A DEFAULT_RANK_MAP tartalmaz olyan rangokat (AUDITOR, ORGANIZATION_OWNER, PREMIUM_USER, GUEST), amelyek nem szerepelnek a UserRole enum-ban
  • Ezek a rangok soha nem kerülnek kiosztásra
  • Megoldás: vagy bővíteni a UserRole enumot, vagy törölni a felesleges rangokat

P3: Enum duplikáció

  • A userrole enum minden értéke kétszer szerepel (kis és NAGY betűs változat)
  • Az orgtype enum é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 manager frontend role nem létezik a backendben, a region_admin és country_admin és moderator hiányzik a frontendből

P5: Hierarchikus scope nem kihasznált

  • A ParameterScope enum (GLOBAL, COUNTRY, REGION, ORGANIZATION, USER) teljesen kiépített
  • De minden system_parameter global scope_level-lel rendelkezik
  • A hierarchikus paraméterezés (ország → régió → szervezet → felhasználó) nincs implementálva