Class LoginController
java.lang.Object
com.modulink.Controller.Login.LoginController
Controller dedicato alla gestione delle procedure di autenticazione e recupero credenziali.
Oltre a servire la pagina di login, gestisce l'intero flusso di "Password Dimenticata" (Forgot Password), che include:
- Richiesta di reset tramite email.
- Generazione e invio di codici OTP (One-Time Password) via email.
- Verifica dell'OTP e aggiornamento sicuro della password.
OTPManager per la gestione temporanea dei codici e EmailService per le comunicazioni.- Since:
- 1.0.0
- Version:
- 2.0.0
- Author:
- Modulink Team
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final CustomUserDetailsServiceprivate static final Patternprivate static final Stringprivate final EmailServiceprivate final OTPManagerprivate final String -
Constructor Summary
ConstructorsConstructorDescriptionLoginController(CustomUserDetailsService customUserDetailsService, String senderEmail, EmailService emailService) Costruttore con iniezione delle dipendenze. -
Method Summary
Modifier and TypeMethodDescriptionconfirmNewPassword(org.springframework.ui.Model model, Principal principal, @Valid ConfirmPasswordForm confirmPasswordForm, org.springframework.validation.BindingResult bindingResult) Processa la conferma del cambio password tramite OTP.forgotPasswordController(org.springframework.ui.Model model, Principal principal, String email) Elabora la richiesta di recupero password inviata dal form.forgotPasswordGetter(org.springframework.ui.Model model, Principal principal) Visualizza la pagina per la richiesta di recupero password.private static booleanisValidEmail(String email) Visualizza la pagina di Login.org.springframework.http.ResponseEntity<Void> reSendOTP(org.springframework.ui.Model model, Principal principal, ConfirmPasswordForm confirmPasswordForm) Endpoint AJAX per il rinvio del codice OTP.private voidsendEmailWithOTP(String email, UtenteEntity utenteToFind) Metodo helper privato per generare e inviare un OTP via email.
-
Field Details
-
customUserDetailsService
-
otpManager
-
senderEmail
-
emailService
-
EMAIL_REGEX
- See Also:
-
EMAIL_PATTERN
-
-
Constructor Details
-
LoginController
public LoginController(CustomUserDetailsService customUserDetailsService, @Value("${spring.mail.properties.mail.smtp.from}") String senderEmail, EmailService emailService) Costruttore con iniezione delle dipendenze.- Parameters:
customUserDetailsService- Servizio gestione utenti.senderEmail- Indirizzo email mittente configurato nelle properties.emailService- Servizio per l'invio di email.- Since:
- 1.0.0
-
-
Method Details
-
login
Visualizza la pagina di Login. Se l'utente è già autenticato, esegue un redirect alla dashboard.- Parameters:
model- Modello UI.principal- Utente autenticato.- Returns:
- Vista "login/login" o redirect.
- Since:
- 1.0.0
-
forgotPasswordGetter
@GetMapping("/forgot-password") public String forgotPasswordGetter(org.springframework.ui.Model model, Principal principal) Visualizza la pagina per la richiesta di recupero password.- Parameters:
model- Modello UI.principal- Utente autenticato.- Returns:
- Vista "login/forgot-password" o redirect.
- Since:
- 1.0.0
-
isValidEmail
-
sendEmailWithOTP
Metodo helper privato per generare e inviare un OTP via email.- Parameters:
email- Indirizzo destinatario.utenteToFind- Entità utente associata.
-
forgotPasswordController
@PostMapping("/forgot-password") public String forgotPasswordController(org.springframework.ui.Model model, Principal principal, @RequestParam String email) Elabora la richiesta di recupero password inviata dal form.Verifica l'esistenza dell'email nel sistema. Se trovata, invia l'OTP e reindirizza alla pagina di verifica.
- Parameters:
model- Modello UI.principal- Utente autenticato.email- Email fornita dall'utente.- Returns:
- Vista "login/otp-check" in caso di successo, o ricarica la pagina con errore.
- Since:
- 1.1.0
-
reSendOTP
@PostMapping("/resend-otp") @ResponseBody public org.springframework.http.ResponseEntity<Void> reSendOTP(org.springframework.ui.Model model, Principal principal, @ModelAttribute ConfirmPasswordForm confirmPasswordForm) Endpoint AJAX per il rinvio del codice OTP.- Parameters:
model- Modello UI.principal- Utente autenticato.confirmPasswordForm- DTO contenente l'email.- Returns:
- ResponseEntity OK o BadRequest.
- Since:
- 1.1.0
-
confirmNewPassword
@PostMapping("/confirm-new-password") public String confirmNewPassword(org.springframework.ui.Model model, Principal principal, @Valid @ModelAttribute @Valid ConfirmPasswordForm confirmPasswordForm, org.springframework.validation.BindingResult bindingResult) Processa la conferma del cambio password tramite OTP.Verifica la validità dell'OTP, la corrispondenza delle password e che la nuova password sia diversa dalla precedente. In caso di successo, aggiorna la password criptata nel database.
- Parameters:
model- Modello UI.principal- Utente autenticato.confirmPasswordForm- DTO con i dati di conferma.bindingResult- Risultati validazione.- Returns:
- Vista di conferma successo o pagina di errore OTP.
- Since:
- 1.1.0
-