Class GDUController

java.lang.Object
com.modulink.Controller.ModuloController
com.modulink.Controller.UserModules.GDU.GDUController

@Controller public class GDUController extends ModuloController
Controller per il modulo GDU (Gestione Dati Utenti).

Questo componente rappresenta il pannello di controllo per la gestione del personale aziendale. Implementa le funzionalità CRUD complete per gli account utente: registrazione nuovi dipendenti, modifica dei profili esistenti, rimozione utenti e gestione del primo accesso (First Login). Estende ModuloController (ID Modulo: 0 - modulo core) per la gestione dei permessi.

Since:
1.3.0
Version:
3.0.1
Author:
Modulink Team
  • Field Details

  • Constructor Details

    • GDUController

      public GDUController(ModuloService moduloService, CustomUserDetailsService customUserDetailsService, RuoloService ruoloService, AssociazioneService associazioneService, @Value("${spring.mail.properties.mail.smtp.from}") String senderEmail, EmailService emailService)
      Costruttore per l'iniezione delle dipendenze.
      Parameters:
      moduloService - Servizio moduli.
      customUserDetailsService - Servizio utenti.
      ruoloService - Servizio ruoli.
      associazioneService - Servizio associazioni utente-ruolo.
      senderEmail - Email mittente per notifiche.
      emailService - Servizio invio email.
      Since:
      1.3.0
  • Method Details

    • dashboardDispatcher

      @GetMapping({"dashboard/gdu/","dashboard/gdu"}) public String dashboardDispatcher(Principal principal, org.springframework.ui.Model model, @ModelAttribute NewUserForm newUserForm, @ModelAttribute EditUserForm editUserForm)
      Visualizza la dashboard di gestione utenti.

      Carica l'elenco di tutti gli utenti appartenenti all'azienda dell'utente loggato.

      Parameters:
      principal - Identità utente.
      model - Modello UI.
      newUserForm - DTO per nuovo utente.
      editUserForm - DTO per modifica utente.
      Returns:
      Vista "moduli/gdu/GestioneUtenti" o redirect.
      Since:
      1.3.0
    • removeUser

      @Transactional @PostMapping("dashboard/gdu/remove-user") public String removeUser(Principal principal, org.springframework.ui.Model model, @RequestParam("email") String email, @ModelAttribute NewUserForm newUserForm, @ModelAttribute EditUserForm editUserForm)
      Rimuove un utente dal sistema aziendale.

      Esegue controlli di sicurezza per impedire:

      • L'eliminazione di utenti appartenenti ad altre aziende (Cross-Tenant check).
      • L'auto-eliminazione dell'utente loggato.
      La cancellazione è transazionale e rimuove a cascata le associazioni correlate.
      Parameters:
      principal - Identità richiedente.
      model - Modello UI.
      email - Email dell'utente da eliminare.
      newUserForm - DTO placeholder.
      editUserForm - DTO placeholder.
      Returns:
      Redirect alla dashboard GDU con esito.
      Since:
      1.3.0
    • generatePassword

      @NonNull private String generatePassword()
      Genera una password casuale sicura di 12 caratteri.
      Returns:
      Stringa password.
    • addUser

      @Transactional @PostMapping("dashboard/gdu/add-user") public String addUser(Principal principal, org.springframework.ui.Model model, @Valid @ModelAttribute @Valid NewUserForm newUserForm, org.springframework.validation.BindingResult bindingResults, @ModelAttribute EditUserForm editUserForm)
      Crea un nuovo account utente aziendale.

      Esegue i seguenti passaggi:

      1. Genera una password temporanea sicura.
      2. Crea l'entità UtenteEntity e la associa all'azienda.
      3. Assegna il ruolo predefinito ("New User") per forzare il primo accesso.
      4. Invia una mail di benvenuto con le credenziali temporanee.
      Parameters:
      principal - Identità amministratore.
      model - Modello UI.
      newUserForm - DTO dati nuovo utente.
      bindingResults - Esito validazione.
      editUserForm - DTO placeholder.
      Returns:
      Redirect alla dashboard GDU con esito.
      Since:
      1.3.0
    • editUser

      @PostMapping("dashboard/gdu/modify-user") public String editUser(Principal principal, org.springframework.ui.Model model, @Valid @ModelAttribute @Valid EditUserForm editUserForm, org.springframework.validation.BindingResult bindingResults, @ModelAttribute NewUserForm newUserForm)
      Modifica i dati di un utente esistente.

      Permette all'amministratore di aggiornare anagrafica e contatti dei dipendenti. Include la possibilità di forzare un reset della password amministrativo.

      Parameters:
      principal - Identità amministratore.
      model - Modello UI.
      editUserForm - DTO dati modificati.
      bindingResults - Esito validazione.
      newUserForm - DTO placeholder.
      Returns:
      Redirect alla dashboard GDU con esito.
      Since:
      1.3.0
    • registerNewUser

      @PostMapping("dashboard/gdu/firstlogin") public String registerNewUser(Principal principal, org.springframework.ui.Model model, @RequestParam String password, @RequestParam String confirmPassword)
      Gestisce la procedura di primo accesso (First Login).

      Imposta la password definitiva scelta dall'utente e assegna i ruoli standard, completando l'attivazione dell'account.

      Parameters:
      principal - Identità utente.
      model - Modello UI.
      password - Nuova password.
      confirmPassword - Conferma password.
      Returns:
      Redirect alla dashboard o errore in pagina.
      Since:
      1.3.0
    • disinstallaModulo

      public void disinstallaModulo(AziendaEntity azienda)
      Description copied from class: ModuloController
      Metodo astratto che deve essere implementato per gestire la logica di pulizia dei dati.

      Viene invocato dal sistema durante la disattivazione o disinstallazione del modulo per una specifica azienda. Deve contenere la logica per rimuovere o archiviare in modo sicuro tutte le entità create dal modulo nel contesto dell'azienda indicata.

      Specified by:
      disinstallaModulo in class ModuloController
      Parameters:
      azienda - L'entità AziendaEntity per cui il modulo viene rimosso.