Class AuthService
java.lang.Object
it.unicam.cs.ids2425.FilieraAgricola.service.AuthService
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 Summary
ConstructorsConstructorDescriptionAuthService(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. -
Method Summary
Modifier and TypeMethodDescriptionlogin(LoginRequest request) Autentica un utente nel sistema utilizzando email e password.registraUtente(RegistrazioneRequest request) Gestisce la registrazione di un nuovo utente nel sistema.
-
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
Gestisce la registrazione di un nuovo utente nel sistema.Questo metodo esegue i seguenti passaggi:
- Verifica che l'email non sia già presente nel sistema.
- Crea un nuovo account utente con le credenziali fornite.
- Assegna il ruolo richiesto. Se il ruolo richiede approvazione (non è UTENTE GENERICO o ACQUIRENTE), l'utente viene creato in stato disabilitato.
- Salva l'utente e crea il profilo utente associato.
- 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
LoginResponsecontenente 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
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
LoginResponsecontenente 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.
-