Class LoginController

java.lang.Object
com.modulink.Controller.Login.LoginController

@Controller public class LoginController extends Object
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:

  1. Richiesta di reset tramite email.
  2. Generazione e invio di codici OTP (One-Time Password) via email.
  3. Verifica dell'OTP e aggiornamento sicuro della password.
Utilizza OTPManager per la gestione temporanea dei codici e EmailService per le comunicazioni.
Since:
1.0.0
Version:
2.0.0
Author:
Modulink Team
  • Field Details

  • 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

      @GetMapping("/login") public String login(org.springframework.ui.Model model, Principal principal)
      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

      private static boolean isValidEmail(String email)
    • sendEmailWithOTP

      private void sendEmailWithOTP(String email, UtenteEntity utenteToFind)
      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