java.lang.Object
it.unicam.cs.ids2425.FilieraAgricola.service.AuthService

@Service public class AuthService extends Object
Service responsabile della gestione dell'autenticazione e della registrazione degli utenti.

Fornisce metodi per registrare nuovi utenti nel sistema, gestendo la creazione delle credenziali, dei profili associati e l'assegnazione dei ruoli, nonché il processo di login e generazione del token JWT.

  • Constructor Details

    • AuthService

      @Autowired public AuthService(UtenteRepository utenteRepository, RoleRepository roleRepository, org.springframework.security.crypto.password.PasswordEncoder passwordEncoder, JwtUtils jwtUtils, org.springframework.security.authentication.AuthenticationManager authenticationManager, UserProfileRepository userProfileRepository)
      Costruttore per l'iniezione delle dipendenze.
      Parameters:
      utenteRepository - Repository per l'accesso ai dati degli utenti.
      roleRepository - Repository per l'accesso ai dati dei ruoli.
      passwordEncoder - Componente per la cifratura delle password.
      jwtUtils - Utility per la generazione e validazione dei token JWT.
      authenticationManager - Manager di autenticazione di Spring Security.
      userProfileRepository - Repository per l'accesso ai dati dei profili utente.
  • Method Details

    • registraUtente

      @Transactional public LoginResponse registraUtente(RegistrazioneRequest request)
      Gestisce la registrazione di un nuovo utente nel sistema.

      Questo metodo esegue i seguenti passaggi:

      1. Verifica che l'email non sia già presente nel sistema.
      2. Crea un nuovo account utente con le credenziali fornite.
      3. Assegna il ruolo richiesto. Se il ruolo richiede approvazione (non è UTENTE GENERICO o ACQUIRENTE), l'utente viene creato in stato disabilitato.
      4. Salva l'utente e crea il profilo utente associato.
      5. Genera un token JWT per la sessione (anche se l'utente potrebbe non essere abilitato all'uso immediato).
      Parameters:
      request - DTO contenente i dati per la registrazione.
      Returns:
      Un oggetto LoginResponse contenente il token JWT e i dettagli dell'utente registrato.
      Throws:
      EmailAlreadyExistException - Se l'email fornita è già associata a un account esistente.
      IllegalArgumentException - Se il ruolo non è specificato nella richiesta.
      RuntimeException - Se il ruolo specificato non viene trovato nel database.
    • login

      public LoginResponse login(LoginRequest request)
      Autentica un utente nel sistema utilizzando email e password.

      Se le credenziali sono corrette e l'utente è abilitato, viene generato e restituito un token JWT.

      Parameters:
      request - DTO contenente le credenziali di login.
      Returns:
      Un oggetto LoginResponse contenente il token JWT e i dettagli dell'utente autenticato.
      Throws:
      org.springframework.security.authentication.DisabledException - Se l'utente è disabilitato (es. in attesa di approvazione).
      org.springframework.security.core.AuthenticationException - Se le credenziali non sono valide.
      RuntimeException - Se si verifica un errore interno nel recupero dell'utente dopo l'autenticazione.