Autentificare & autorizare
Cum se autentifică un utilizator, cum sunt gestionate sesiunile și cum decide aplicația cine are acces unde.
Autentificarea răspunde la întrebarea „cine ești?”, iar autorizarea la „ce ai voie să faci?”. Recash le tratează separat pe amândouă fără să stocheze vreodată o parolă.
Autentificare fără parole
Recash nu gestionează parole. Întreaga autentificare trece prin OAuth, ceea ce elimină din start o categorie întreagă de riscuri: nu există parole de stocat, deci nu există o bază de date de parole de spart; nu există formular de login, deci nu există atacuri prin forță brută sau completare de credențiale furate; nu există flux de resetare a parolei, cel mai des punct slab dintr-un sistem clasic de conturi.
Furnizori OAuth
Un utilizator se autentifică prin contul lui Google sau Facebook. Recash primește de la furnizor doar identitatea confirmată — nume, email, poză — și creează sau regăsește contul local pe baza adresei de email. Cheile secrete ale aplicației stau exclusiv pe server, niciodată în browser.

Google One Tap
Peste fluxul clasic, Google One Tap oferă autentificare cu o singură atingere, direct în pagină, fără redirect către un ecran separat. Comoditatea nu vine însă cu încredere oarbă: token-ul primit de la Google este verificat criptografic pe server, cu biblioteca oficială Google, înainte de a fi acceptat. Se confirmă că token-ul a fost emis chiar pentru această aplicație și că adresa de email este validată de Google; abia apoi contul este creat sau actualizat. Un token contrafăcut sau destinat altei aplicații este respins.
Sesiuni JWT
De ce JWT?
După autentificare, sesiunea este păstrată într-un token JWT semnat, ținut într-un cookie, nu într-o înregistrare din baza de date. Consecința directă: nicio cerere obișnuită nu trebuie să interogheze baza de date doar ca să confirme că utilizatorul este autentificat — semnătura token-ului este suficientă. Este mai rapid și scalează mai bine, pentru că verificarea nu depinde de baza de date.
Identitatea și rolul, purtate în token
La crearea sesiunii, identificatorul utilizatorului și rolul lui sunt scrise în token și expuse apoi aplicației prin obiectul de sesiune. Astfel, deciziile de autorizare care depind de rol au informația la îndemână, fără o interogare suplimentară, iar token-ul fiind semnat nu poate fi modificat de client fără ca semnătura să nu fie afectata.
Consecința pentru WebSocket
Pentru că sesiunea nu există ca înregistrare în baza de date, serverul WebSocket nu o poate valida acolo. De aceea folosește un mecanism propriu: aplicația cere un token temporar, aleator, valabil 60 de secunde, salvat în Redis și legat de utilizator; serverul WebSocket acceptă conexiunea doar pe baza lui. Detalii complete în Comunicare în timp real.
Protecția rutelor
Accesul este verificat în două etape, complementare, nu alternative.
Filtrul de la marginea aplicației
Înainte ca o cerere să atingă o pagină sau o rută API, un middleware verifică rapid prezența cookie-ului de sesiune și blochează din start ce nu are ce căuta acolo: paginile personale redirecționează un vizitator neautentificat către pagina principală, iar rutele API protejate îi răspund direct cu 401. Este un filtru ieftin, care oprește traficul neautentificat cât mai devreme.
Verificarea din fiecare rută
Filtrul de la margine se uită doar dacă există un cookie, nu îi verifică semnătura. Verificarea reală — decodarea și validarea criptografică a token-ului — se face în fiecare rută API sensibilă, chiar înainte de logica ei. Astfel, chiar dacă o cerere trece de primul filtru, nu poate face nimic fără o sesiune cu adevărat validă.

Niveluri de acces
Protecția nu este uniformă, ci potrivită fiecărei zone:
- paginile personale — profil, postare, notificări, setări — cer autentificare completă
- citirea postărilor este publică: oricine poate vedea harta de anunțuri, chiar și fără cont
- orice scriere — postare nouă, revendicare, anulare, finalizare — cere un cont autentificat; pe rutele de postări, doar metodele care modifică date sunt protejate, cititul rămâne liber
Autorizare pe obiect
Autentificarea confirmă identitatea, dar nu și dreptul asupra unui anumit obiect. De aceea, dincolo de „ești autentificat?”, fiecare acțiune verifică și „ai tu voie să faci asta, aici?”: doar autorul își poate anula propria postare deschisă, doar participanții la o colectare îi văd codul de confirmare, iar o cerere pentru un obiect care nu-ți aparține primește 403, nu datele.
De ce citirea este publică
Un vizitator neautentificat trebuie să vadă ce oferă platforma, ca motivație să-și facă cont — dar orice acțiune care implică bani sau reputație cere o identitate confirmată. Linia dintre „a privi” și „a acționa” este exact linia dintre public și autentificat.
