9.3 KiB
🏁 REGISZTRÁCIÓS ÉS AUTH PROTOKOLL (v1.4)
I. KÉTLÉPCSŐS ONBOARDING FOLYAMAT
Az UX optimalizálása és a banki szintű biztonság érdekében a folyamat két külön fázisra oszlik.
1. Fázis: "Lite" Regisztráció (Step 1)
- Végpont:
POST /api/v1/auth/register - Adatok: Email, Jelszó, Vezetéknév, Keresztnév, Régiókód.
- Rendszeresemény:
- Létrejön a technikai
Userrekord. - Állapot:
is_active = False. - Szerepkör: Kényszerített kisbetűs
user(Postgres Enum fix). - Megerősítés: A rendszer kiküld egy aktiváló emailt egy hash kóddal.
- Válasz: JWT token
status: pending_kycflaggel.
- Létrejön a technikai
2. Fázis: Banki KYC & Aktiválás (Step 2)
- Végpont:
POST /api/v1/auth/complete-kyc(Fejlesztés alatt) - Kötelező KYC adatok:
- Anyja születési neve, születési hely/idő.
- Okmányadatok: Személyi igazolvány és Jogosítvány száma + lejárati idők.
- Járműkategóriák (pl. A, B, C) és speciális engedélyek (hajó, repülő).
- Finalizálás (Atomi tranzakció):
- Person: Identitás rögzítése a JSONB dokumentumtárral.
- Wallet: Pénztárca nyitása 0 egyenleggel.
- Privát Flotta: Automatikus szervezet létrehozása (
is_transferable = False). - Tagság: Felhasználó rögzítése a flotta tulajdonosaként.
- Aktiválás:
is_active = Trueés hozzáférés a rendszerhez.
II. TECHNIKAI SZABÁLYOK ÉS FIXEK
- Postgres Enum: Minden szerepkört (role) kisbetűvel kell küldeni az adatbázis felé (
user, nemUSER). - Dinamikus Paraméterek: Az
auth.reward_days(jutalom napok) és jutalék százalékok adata.system_settingstáblából jönnek. - Audit Trail: Minden regisztrációs fázisról Audit Log készül.
🏁 REGISZTRÁCIÓS ÉS AUTH PROTOKOLL (v1.4)
I. KÉTLÉPCSŐS ONBOARDING FOLYAMAT
A rendszer a felhasználói élmény optimalizálása (UX) és a banki szintű biztonság érdekében két fázisra bontja a regisztrációt.
1. Fázis: "Lite" Regisztráció (Step 1)
- Cél: Gyors belépés és a technikai User fiók létrehozása.
- Kötelező mezők: Email, Jelszó, Vezetéknév, Keresztnév, Régiókód.
- Rendszeresemény:
- Létrejön a
data.usersrekord. - Állapot:
is_active = False. - Szerepkör: Kötelezően kisbetűs
user(Postgres Enum kényszerítés miatt). - Email: A rendszer azonnal kiküld egy ellenőrző emailt egy egyedi hash kóddal/linkkel.
- Token: Az API egy korlátozott JWT tokent ad vissza, amely csak a Step 2 végpont elérésére jogosít (
status: pending_kyc).
- Létrejön a
2. Fázis: KYC & Aktiválás (Step 2)
- Cél: A valós identitás (Person) rögzítése és a gazdasági egységek inicializálása.
- Kötelező adatok (Identity Verification):
- Személyes: Anyja születési neve, születési hely, születési idő.
- Okmányok: Személyi igazolvány száma és lejárati ideje.
- Jogosítvány: Vezetői engedély száma, lejárata és kategóriák (pl. AM, A, B, C, CE).
- Speciális: Hajóvezetői és repülőgép-vezetői engedély adatai (ha releváns).
- Működés: A felhasználó csak ezen adatok kitöltése és sikeres ellenőrzése után válik teljes jogú taggá.
3. Fázis: Atomi Tranzakció (Finalization)
A KYC adatok beküldésekor a rendszer egyetlen adatbázis-tranzakcióban (Atomic) hajtja végre az alábbiakat:
- Person létrehozása: A KYC adatok és okmánymásolatok (JSONB) rögzítése.
- Wallet inicializálás: 0 Coin és 0 XP egyenleggel.
- Privát Flotta (Private Org): Létrejön a felhasználó saját cége (
OrgType.INDIVIDUAL), amely nem átruházható (is_transferable = False). - Aktiválás: A User fiók
is_active = Trueállapotba kerül. - Audit: Bejegyzés az
audit_logstáblába a teljes körű regisztrációról.
II. MEGHÍVÓ ÉS JUTALÉK LOGIKA
- Invite Tokenek:
REG_ONLY: Általános meghívó, beköti a felhasználót a 10-5-2% jutalék láncba.COMPANY_JOIN: Meghatározott szervezetbe hív (CEO, Flotta Manager vagy Sofőr szerepkörbe).
- Kredit Jóváírás:
- Csak az első Prémium csomag befizetésekor történik jutalékfizetés a meghívási láncban.
- A százalékos mérték (10%, 5% vagy 2%) a tranzakció pillanatában érvényes admin beállítások alapján rögzül (Snapshot).
III. TECHNIKAI ÉS BIZTONSÁGI SZABÁLYOK
- Enum Case Sensitivity: A PostgreSQL
userroletípusa miatt minden Enum értéket (user, admin, driver, service, fleet_manager) szigorúan kisbetűvel kell kezelni. - Dinamikus Paraméterezés: Tilos fix értékeket (hardcoded) használni. Az alábbiakat a
data.system_settingstáblából kell lekérni:auth.reward_days: Regisztrációkor járó prémium napok (alapértelmezett: 14).referral.level1-3: Jutalék szintek mértéke.
- Email Manager: A
send_emailhívásakor tilos asubjectparaméter átadása; a szerviz atemplate_keyalapján automatikusan generálja azt. - Szigorú Helyreállítás: A banki szintű KYC után a jelszó-visszaállítás kérhető a Person adatok (Anyja neve, Okmány szám) megadásával is.
IV. SOCIAL AUTH (GOOGLE / FACEBOOK)
- Social Auth esetén a Step 1 lerövidül, de a Step 2 (KYC) kötelező marad az aktiváláshoz.
- Amíg a KYC hiányzik, a felhasználó "GUEST" státuszban marad, és nem fér hozzá a flottakezeléshez.
🏁 REGISZTRÁCIÓS ÉS AUTH PROTOKOLL (v1.1)
1. Hibakezelési Jegyzet (TypeError fix)
A rendszer korábbi verzióiban az EmailManager hívása paraméter-eltérést okozott.
- Megoldás: A
send_emailhívásakor tilos asubjectparaméter átadása, mivel azt a szerviz atemplate_keyalapján generálja a belső szótárából.
2. Adatbázis Integritás
Az Organization tábla bővült az owner_id mezővel, amely a magánszemély (Individual) flottájának tulajdonosát jelöli.
- Minden regisztrációkor létrejön egy automatikus flotta.
- A flotta típusa:
OrgType.INDIVIDUAL.
3. Dinamikus Paraméterek
A regisztrációt követő jutalmak (pl. 14 napos prémium) a data.system_settings táblából kerülnek kiolvasásra.
Keresett kulcs: auth.reward_days.
🏁 REGISZTRÁCIÓ, MEGHÍVÓK ÉS API PROTOKOLL (v1.0)
1. Regisztrációs Flow (Atomcsapás-biztos tranzakció)
Minden új regisztráció egyetlen adatbázis-tranzakcióban (Atomic) hajtja végre az alábbiakat:
- User & Person létrehozása: Alapidentitás rögzítése.
- Wallet inicializálás: 0 Coin és 0 XP egyenleggel.
- Privát Flotta (Private Org): Létrejön a felhasználó saját cége, ahol ő a tulajdonos.
- Meghívó feldolgozása: - Ha
Personal Invite: Bekötés a 10-5-2% jutalék láncba.- Ha
Company Invite: Másodlagos kapcsolat létrehozása a meghívó céghez (Role: Driver/Admin).
- Ha
2. Meghívó Küldés Logikája (Invitation Engine)
- Generálás: Admin vagy jogosult User generál egy egyedi
invite_token-t. - Típusok:
REG_ONLY: Csak a rendszerbe hív.COMPANY_JOIN: Meghatározott cégbe és pozícióba hív.
- Jutalék számítás:
A jóváírandó kredit
C:C = P_{amount} \cdot \frac{R_{level}}{100}AholPa befizetett összeg,Rpedig az aktuális szint (10, 5 vagy 2) értéke.
3. API Végpontok (Baseline v1)
POST /api/v1/auth/register: Komplett onboarding folyamat.POST /api/v1/auth/invite/send: Meghívó generálása és küldése.GET /api/v1/auth/invite/verify/{token}: Token ellenőrzése regisztráció előtt.
4. Jelszó Helyreállítási Protokoll (Recovery)
A rendszer két szintű helyreállítást biztosít:
A) Standard (Email alapú)
POST /api/v1/auth/forgot-password-> Email kiküldése ideiglenes tokennel.
B) Szigorú (Banki szintű / KYC alapú)
-
Végpont:
POST /api/v1/auth/recover-identity -
Kötelező adatok: Vezetéknév, Keresztnév, Anyja neve, Személyi igazolvány száma.
-
Logika: 1. A rendszer azonosítja a
Personrekordot. 2. Ha sikeres, a rendszer kiküld egy visszaállító linket a Person-höz tartozó elsődleges telefonszámra (SMS) vagy a legutolsó aktív Email címre. 3. Sikeres helyreállítás után a felhasználónak kötelezően jelszót kell cserélnie.🛡️ 10. Kormányozhatóság és Biztonsági Beállítások
A rendszer biztonsági paraméterei központilag, a környezeti változókon keresztül szabályozhatók. Ez lehetővé teszi a biztonsági szint gyors módosítását (pl. támadás esetén szigorítás) a kód módosítása nélkül.
10.1. Token Élettartam Szabályok
A .env fájlban (vagy a rendszer beállításaiban) az alábbi paraméterekkel szabályozható a hozzáférés:
| Paraméter | Leírás | Alapértelmezett |
|---|---|---|
REGISTRATION_TOKEN_EXPIRE_HOURS |
Regisztráció megerősítésére álló idő | 48 óra |
PASSWORD_RESET_TOKEN_EXPIRE_HOURS |
Jelszó visszaállítására álló idő | 1 óra |
10.2. Ideiglenes .env Konfiguráció (Példa)
# SECURITY SETTINGS
REGISTRATION_TOKEN_EXPIRE_HOURS=48
PASSWORD_RESET_TOKEN_EXPIRE_HOURS=1
# EMAIL SYSTEM
EMAIL_PROVIDER=sendgrid
EMAILS_FROM_EMAIL=info@profibot.hu
EMAILS_FROM_NAME='Profibot Service Finder'
SENDGRID_API_KEY=SG.xxxxxxxxxxxxxxxxxxxx