Fluxuri de autentificare
Email + Parolă
POST /auth/sign_up → User + Profile create
→ JWT access_token (15 min) + refresh_token (30 zile)
POST /auth/sign_in → verificare parolă bcrypt
→ JWT access_token + refresh_token
POST /auth/refresh → refresh_token → pereche nouă de token-uri
Google OAuth (implementat)
Aplicație mobilă
│
├─ 1. Google Sign-In SDK → id_token
│
└─ 2. POST /api/v1/auth/oauth/google { id_token }
│
├─ Cerere la Google tokeninfo pentru verificare
├─ Extragere: sub, email, given_name, family_name
│
├─ Căutare OAuthIdentity (provider=google, uid=sub)
│ ├─ Găsit → autentificare
│ └─ Negăsit:
│ ├─ User cu acel email există → asociere
│ └─ Nu → creare User + Profile
│
└─ Emitere JWT access_token + refresh_token
201 Created — utilizator nou
200 OK — utilizator existent
Structura JWT
Payload access token:
{
"user_id": "uuid",
"type": "access",
"exp": 1234567890
}
Payload refresh token:
{
"user_id": "uuid",
"type": "refresh",
"exp": 1234567890
}
Algoritm: HS256, cheie din SECRET_KEY_BASE.
Planificat
| Metodă | Status |
|---|---|
| Phone + OTP | Planificat |
| Apple Sign-In | Planificat |
| Facebook Login | Planificat |
| Password Reset | Planificat |
| Email Verification | Planificat |
Erori de token
| Situație | HTTP | Mesaj |
|---|---|---|
| Token expirat | 401 | Token expired |
| Token invalid | 401 | Invalid token |
| Antet lipsă | 401 | Invalid token |