Skip to content

[US-003] Autenticazione utente #15

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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions