# 29 — App privata: scaffold e autenticazione Leggi `CLAUDE.md`. ## Obiettivo Creare `apps/private` (SPA) con login, registrazione e routing per ruolo. ## Cosa fare - Angular standalone, signals, zoneless, SCSS, **senza SSR**. Riusa i design tokens dell'app pubblica (spostali in `packages/shared` o in una cartella SCSS condivisa). - `AuthStore` (signals): access token solo in memoria, utente corrente, ruolo. All'avvio tenta `POST /auth/refresh` (cookie) per ripristinare la sessione. - Interceptor: aggiunge il bearer token; su 401 fa un solo refresh (con coda delle richieste concorrenti) e ripete; se fallisce → logout e redirect al login. - Pagine: login, registrazione (privato / azienda / installatore con campi dedicati), password dimenticata, reset password, verifica email. - Guard per ruolo e layout con menu diverso per `customer/company`, `installer`, `admin`. Redirect post-login all'area corretta. - Link "Torna al sito" verso l'app pubblica. ## Criteri di accettazione - Refresh della pagina mantiene la sessione (tramite cookie refresh) senza salvare token in localStorage. - Un customer che apre una route admin viene reindirizzato. - Token scaduto → refresh trasparente; più richieste in parallelo producono un solo refresh. - `CLAUDE.md` aggiornato.