Class RegisterController
java.lang.Object
com.modulink.Controller.Register.RegisterController
@Controller
@SessionAttributes("registerAziendaForm")
public class RegisterController
extends Object
Controller Spring MVC che gestisce il flusso di registrazione (Onboarding) di una nuova Azienda e del suo Responsabile.
Il processo è strutturato come un Wizard in due passaggi:
- Registrazione dati Azienda (Anagrafica, Logo, P.IVA, Contatti).
- Registrazione dati Utente Responsabile (Credenziali, Profilo).
La classe utilizza l'annotazione SessionAttributes per mantenere persistente l'oggetto
RegisterAziendaForm tra le varie richieste HTTP finché l'intero processo non viene completato.
- Since:
- 1.0.0
- Version:
- 3.1.0
- Author:
- Modulink Team
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final AssociazioneServiceprivate final AttivazioneServiceprivate final AziendaServiceprivate final PertinenzaServiceprivate final RuoloServiceprivate final CustomUserDetailsService -
Constructor Summary
ConstructorsConstructorDescriptionRegisterController(CustomUserDetailsService userDetailsService, AziendaService aziendaService, RuoloService ruoloService, AssociazioneService associazioneService, AttivazioneService attivazioneService, PertinenzaService pertinenzaService) Costruttore per l'iniezione delle dipendenze. -
Method Summary
Modifier and TypeMethodDescriptionGestisce i tentativi di accesso diretto allo Step 2 via GET.registerAzienda(org.springframework.ui.Model model, Principal principal, @Valid RegisterAziendaForm registerAziendaForm, org.springframework.validation.BindingResult bindingResult) Elabora i dati dell'Azienda inviati (Step 1 -> Step 2).registerUtente(RegisterAziendaForm registerAziendaForm, org.springframework.ui.Model model, Principal principal, @Valid RegisterResponsabileForm registerUtenteForm, org.springframework.validation.BindingResult bindingResult, org.springframework.web.bind.support.SessionStatus sessionStatus) Finalizza la registrazione completa (Azienda + Responsabile).showRegistrationForm(org.springframework.ui.Model model, Principal principal) Inizializza il processo di registrazione (Step 1).
-
Field Details
-
userDetailsService
-
aziendaService
-
ruoloService
-
associazioneService
-
attivazioneService
-
pertinenzaService
-
supportedImageTypes
-
-
Constructor Details
-
RegisterController
public RegisterController(CustomUserDetailsService userDetailsService, AziendaService aziendaService, RuoloService ruoloService, AssociazioneService associazioneService, AttivazioneService attivazioneService, PertinenzaService pertinenzaService) Costruttore per l'iniezione delle dipendenze.- Parameters:
userDetailsService- Servizio gestione utenti.aziendaService- Servizio gestione aziende.ruoloService- Servizio gestione ruoli.associazioneService- Servizio associazione utente-ruolo.attivazioneService- Servizio attivazione moduli.pertinenzaService- Servizio permessi moduli.- Since:
- 1.0.0
-
-
Method Details
-
showRegistrationForm
@GetMapping("/register") public String showRegistrationForm(org.springframework.ui.Model model, Principal principal) Inizializza il processo di registrazione (Step 1).Se l'utente è già autenticato, viene reindirizzato alla home. Altrimenti, inizializza il form per i dati aziendali.
- Parameters:
model- Il modello per la vista.principal- L'utente attualmente loggato (se presente).- Returns:
- Il nome della vista Thymeleaf per la registrazione azienda.
- Since:
- 1.0.0
-
registerAzienda
@PostMapping("/register") public String registerAzienda(org.springframework.ui.Model model, Principal principal, @Valid @ModelAttribute("registerAziendaForm") @Valid RegisterAziendaForm registerAziendaForm, org.springframework.validation.BindingResult bindingResult) throws IOException Elabora i dati dell'Azienda inviati (Step 1 -> Step 2).Esegue le seguenti operazioni:
- Validazione formale dei dati (JSR-380).
- Verifica univocità della Partita IVA nel database.
- Normalizzazione del numero di telefono (rimozione spazi bianchi) e verifica della sua univocità nel sistema.
- Conversione temporanea del file Logo in array di byte per conservarlo in sessione.
- Parameters:
model- Il modello per la vista.principal- L'utente loggato.registerAziendaForm- Il DTO popolato con i dati dell'azienda.bindingResult- Risultato della validazione.- Returns:
- La vista successiva (RegistraUtente) o la stessa in caso di errori.
- Throws:
IOException- Se si verifica un errore nella lettura del file logo.- Since:
- 1.0.0
-
redirectToRegisterUtente
Gestisce i tentativi di accesso diretto allo Step 2 via GET.Reindirizza sempre all'inizio del processo per garantire che i dati aziendali siano presenti.
- Returns:
- Redirect alla pagina di registrazione principale.
- Since:
- 1.0.0
-
registerUtente
@PostMapping("/register-utente") public String registerUtente(@ModelAttribute("registerAziendaForm") RegisterAziendaForm registerAziendaForm, org.springframework.ui.Model model, Principal principal, @Valid @ModelAttribute("registerUtenteForm") @Valid RegisterResponsabileForm registerUtenteForm, org.springframework.validation.BindingResult bindingResult, org.springframework.web.bind.support.SessionStatus sessionStatus) throws IOException Finalizza la registrazione completa (Azienda + Responsabile).Metodo annotato come
Transactional: garantisce che il salvataggio di Azienda, Utente, Ruolo e Associazione avvenga in modo atomico (tutto o niente).Flusso operativo:
- Verifica congruenza password e univocità email.
- Salvataggio fisico del logo Azienda su filesystem.
- Persistenza
AziendaEntity. - Salvataggio fisico foto profilo Utente su filesystem.
- Persistenza
UtenteEntity(con password hashata). - Creazione e assegnazione automatica del ruolo "Responsabile".
- Pulizia della sessione (rimozione attributi temporanei).
- Parameters:
registerAziendaForm- DTO Azienda recuperato dalla sessione.model- Il modello.principal- L'utente loggato.registerUtenteForm- DTO Utente inviato dal form.bindingResult- Risultati validazione utente.sessionStatus- Oggetto per segnare la sessione come completata.- Returns:
- Redirect alla pagina di login in caso di successo.
- Throws:
IOException- Se fallisce la scrittura dei file su disco.- Since:
- 1.0.0
-