Class CustomUserDetails

java.lang.Object
com.modulink.Model.Utente.CustomUserDetails
All Implemented Interfaces:
Serializable, org.springframework.security.core.userdetails.UserDetails

public class CustomUserDetails extends Object implements org.springframework.security.core.userdetails.UserDetails
Implementazione personalizzata dell'interfaccia UserDetails di Spring Security.

Questa classe funge da "Adapter" (ponte) tra l'entità del database UtenteEntity e il sistema di autenticazione di Spring Security. Permette al framework di leggere le credenziali (email/password) e le autorizzazioni (ruoli) dell'utente per gestire il contesto di sicurezza (SecurityContext).

Version:
1.2.5
Author:
Modulink Team
See Also:
  • Field Details

  • Constructor Details

    • CustomUserDetails

      public CustomUserDetails(UtenteEntity user)
      Costruttore che incapsula l'entità Utente.
      Parameters:
      user - L'oggetto utente recuperato dal database.
  • Method Details

    • getAuthorities

      public Collection<? extends org.springframework.security.core.GrantedAuthority> getAuthorities()
      Restituisce le autorizzazioni concesse all'utente.

      Il metodo itera sul Set<RuoloEntity> dell'utente e converte ogni ruolo in un oggetto SimpleGrantedAuthority.

      Nota: Viene aggiunto il prefisso "ROLE_" al nome del ruolo (convertito in maiuscolo). Questo è lo standard di Spring Security (es. se il ruolo è "admin", diventa "ROLE_ADMIN") necessario per l'utilizzo corretto di espressioni come hasRole('ADMIN').

      Specified by:
      getAuthorities in interface org.springframework.security.core.userdetails.UserDetails
      Returns:
      Una collezione di autorità (ruoli) derivate dai ruoli dell'entità.
    • getPassword

      public String getPassword()
      Restituisce la password dell'utente utilizzata per l'autenticazione.
      Specified by:
      getPassword in interface org.springframework.security.core.userdetails.UserDetails
      Returns:
      L'hash della password memorizzato nel database.
    • getUsername

      public String getUsername()
      Restituisce il nome utente utilizzato per l'autenticazione.

      Nel sistema Modulink, il nome utente univoco corrisponde all'indirizzo email.

      Specified by:
      getUsername in interface org.springframework.security.core.userdetails.UserDetails
      Returns:
      L'email dell'utente.
    • isAccountNonExpired

      public boolean isAccountNonExpired()
      Indica se l'account dell'utente è scaduto.

      Attualmente restituisce sempre true, indicando che l'account non scade mai. Implementare logica qui se si desidera gestire scadenze temporali degli account.

      Specified by:
      isAccountNonExpired in interface org.springframework.security.core.userdetails.UserDetails
      Returns:
      true (account sempre valido in questa implementazione).
    • isAccountNonLocked

      public boolean isAccountNonLocked()
      Indica se l'account è bloccato o sospeso.

      Attualmente restituisce sempre true. Da implementare se si desidera bloccare utenti dopo troppi tentativi di accesso falliti.

      Specified by:
      isAccountNonLocked in interface org.springframework.security.core.userdetails.UserDetails
      Returns:
      true (account non bloccato).
    • isCredentialsNonExpired

      public boolean isCredentialsNonExpired()
      Indica se le credenziali (password) sono scadute.

      Attualmente restituisce sempre true. Da implementare per forzare il cambio password periodico.

      Specified by:
      isCredentialsNonExpired in interface org.springframework.security.core.userdetails.UserDetails
      Returns:
      true (credenziali sempre valide).
    • isEnabled

      public boolean isEnabled()
      Indica se l'utente è abilitato.

      In futuro, questo metodo potrebbe restituire il valore di un campo "is_attivo" presente nel database (es. per gestione ban o attivazione via email). Attualmente assume che ogni utente presente nel DB sia attivo.

      Specified by:
      isEnabled in interface org.springframework.security.core.userdetails.UserDetails
      Returns:
      true (utente sempre abilitato per default).
    • getUser

      public UtenteEntity getUser()
      Metodo getter aggiuntivo per recuperare l'entità Utente originale.

      Utile nei Controller o Service layer quando si accede al Principal e si ha bisogno di accedere a dati non standard di UserDetails (es. ID Azienda, Nome, Cognome, Immagine Profilo).

      Returns:
      L'oggetto UtenteEntity originale completo.