Piattaforma ITI TECHNOLOGY: monorepo, Medusa, API, sito, area riservata e deploy
Deploy stack su Proxmox / deploy (push) Failing after 3s
Deploy stack su Proxmox / deploy (push) Failing after 3s
Monorepo npm con apps/public (Angular SSR), apps/private (Angular SPA), apps/api (Fastify), packages/shared e packages/styles; Medusa 2.21 in medusa/; infrastruttura Docker (Postgres PostGIS+pgvector, Redis, Caddy, backup) e workflow Gitea Actions per il deploy via SSH a ogni push su master. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018jQyT6dR9czzGwqb7FkG6u
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
# 11 — API: autenticazione JWT
|
||||
|
||||
Leggi `CLAUDE.md`.
|
||||
|
||||
## Obiettivo
|
||||
Login unico applicativo: registrazione, login, refresh, logout, reset password, verifica email.
|
||||
|
||||
## Cosa fare
|
||||
- Hash password con argon2id.
|
||||
- Access token JWT breve (15 min) restituito nel body; il frontend lo tiene in memoria.
|
||||
- Refresh token opaco (random 256 bit) in cookie `httpOnly`, `Secure`, `SameSite=Lax`, `Domain` = dominio padre (per condividerlo tra sottodomini), path `/auth`. Rotazione a ogni refresh, con rilevamento riuso (se un token revocato viene riusato → revoca l'intera family).
|
||||
- Route `public/auth`: `POST /register`, `POST /login`, `POST /refresh`, `POST /logout`, `POST /forgot-password`, `POST /reset-password`, `POST /verify-email`, `GET /me`.
|
||||
- Registrazione: ruolo di default `customer`; `company` se viene passata ragione sociale + P.IVA; `installer` crea anche un `installer_profiles` in stato `pending`. Mai assegnabile `admin` da questa route.
|
||||
- Decorator `authenticate` e `requireRole(...roles)` riutilizzabili.
|
||||
- Rate limit stretto su login/forgot-password. Messaggi di errore che non rivelano se un'email esiste.
|
||||
- Invio email tramite interfaccia `EmailService` (per ora può essere un adapter che logga a console: l'implementazione arriva nel prompt 15).
|
||||
|
||||
## Criteri di accettazione
|
||||
- Test automatici (vitest + `fastify.inject`) per: registrazione, login ok/ko, refresh con rotazione, riuso di refresh token revocato → family revocata, logout, `requireRole` che blocca ruoli errati.
|
||||
- Nessun token o password in chiaro nel DB o nei log.
|
||||
- `CLAUDE.md` aggiornato con il flusso auth.
|
||||
Reference in New Issue
Block a user