Skip to content

[US-003] Autenticazione utente #15

@turibbio

Description

@turibbio

[US-003] Autenticazione utente

As a Customer,
I want registrarmi e accedere con le mie credenziali,
So that posso avere un profilo personale, uno storico ordini e un'esperienza di acquisto personalizzata.

Acceptance Criteria

  • Given che sono un nuovo visitatore, When clicco "Registrati", Then vedo un form di registrazione con campi: nome, email, password, conferma password
  • Given che compilo il form di registrazione con dati validi, When invio il form, Then il mio account viene creato e vengo reindirizzato alla homepage con sessione attiva
  • Given che ho un account, When inserisco email e password corrette nel form di login, Then accedo alla piattaforma e vedo il mio nome nella navbar
  • Given che sono autenticato, When clicco "Esci", Then la sessione viene terminata e vengo reindirizzato alla homepage
  • Given che inserisco credenziali errate, When invio il form di login, Then vedo un messaggio di errore generico "Credenziali non valide"
  • Given che provo a registrarmi con un'email già in uso, When invio il form, Then vedo il messaggio "Email già registrata"
  • Given che non sono autenticato, When scrivo una recensione, Then il mio nome viene precompilato come "Anonimo" (backward compatibility)

Notes

  • Usare ASP.NET Core Identity per la gestione utenti
  • Password hashing con bcrypt/PBKDF2 (default di Identity)
  • Non implementare OAuth/social login in questa story (future enhancement)
  • La registrazione non richiede conferma email per MVP
  • Mantenere backward compatibility: il sistema recensioni deve funzionare anche senza login

Story Points: 8


Task Breakdown

1. [TASK-012] Aggiungere il modello User e configurare Identity (Layer: Core/Infrastructure)

  • Creare modello ApplicationUser che estende IdentityUser con campo FullName
  • Configurare ASP.NET Core Identity nel DbContext
  • Aggiungere migration per le tabelle Identity
  • File coinvolti: src/ClaudeClothes.Core/Models/ApplicationUser.cs (nuovo), src/ClaudeClothes.Infrastructure/Data/ClaudeClothesDbContext.cs, src/ClaudeClothes.Web/Program.cs
  • Stima: M

2. [TASK-013] Implementare il servizio di autenticazione (Layer: Infrastructure)

  • Creare IAuthService con metodi: RegisterAsync, LoginAsync, LogoutAsync, GetCurrentUserAsync
  • Implementare AuthService usando UserManager<ApplicationUser> e SignInManager<ApplicationUser>
  • File coinvolti: src/ClaudeClothes.Core/Interfaces/IAuthService.cs (nuovo), src/ClaudeClothes.Infrastructure/Services/AuthService.cs (nuovo)
  • Stima: M

3. [TASK-014] Creare le pagine di Login e Registrazione (Layer: Web)

  • Creare pagina /login con form email/password
  • Creare pagina /register con form nome/email/password/conferma password
  • Validazione client-side con DataAnnotations
  • Gestione errori e messaggi di feedback
  • File coinvolti: src/ClaudeClothes.Web/Pages/Login.razor (nuovo), src/ClaudeClothes.Web/Pages/Register.razor (nuovo)
  • Stima: M

4. [TASK-015] Aggiornare la navbar con stato autenticazione (Layer: Web)

  • Mostrare "Accedi / Registrati" se non autenticato
  • Mostrare nome utente e "Esci" se autenticato
  • Usare AuthenticationStateProvider di Blazor
  • File coinvolti: src/ClaudeClothes.Web/Shared/NavMenu.razor, src/ClaudeClothes.Web/Shared/MainLayout.razor
  • Stima: S

5. [TASK-016] Integrare autenticazione con il sistema recensioni (Layer: Web)

  • Precompilare il campo "Reviewer" con il nome dell'utente autenticato
  • Rendere il campo "Reviewer" readonly se l'utente è autenticato
  • Mantenere il funzionamento attuale per utenti non autenticati
  • File coinvolti: src/ClaudeClothes.Web/Pages/ClothingItemDetails.razor
  • Stima: S

6. [TASK-017] Test per autenticazione (Layer: Tests)

  • Test per registrazione con dati validi e invalidi
  • Test per login con credenziali corrette e errate
  • Test per email duplicata
  • File coinvolti: tests/ClaudeClothes.Tests/AuthServiceTests.cs (nuovo)
  • Stima: M

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions