Class RuoloService
RuoloEntity.
Fornisce metodi per la manipolazione dei ruoli aziendali, la gestione delle associazioni tra ruoli e utenti, e l'inizializzazione dei ruoli predefiniti di sistema durante l'onboarding di una nuova azienda.
La classe gestisce la coerenza dei dati attraverso transazioni database (Transactional)
e si interfaccia con CustomUserDetailsService per l'aggiornamento della sicurezza utente.
- Since:
- 1.0.0
- Version:
- 2.3.1
- Author:
- Modulink Team
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final CustomUserDetailsServiceprivate final RuoloRepository -
Constructor Summary
ConstructorsConstructorDescriptionRuoloService(RuoloRepository ruoloRepository, CustomUserDetailsService customUserDetailsService) Costruttore per la Dependency Injection. -
Method Summary
Modifier and TypeMethodDescriptionattivazioneDefault(AziendaEntity aziendaEntity) Inizializza i ruoli di default necessari per il funzionamento di una nuova azienda.createRole(AziendaEntity azienda, RuoloEntity ruolo) Crea un nuovo ruolo personalizzato generandone l'ID in modo sequenziale.voiddeleteRole(AziendaEntity azienda, int idRole) Elimina permanentemente un ruolo dal database.getAllRolesByAzienda(AziendaEntity azienda) Restituisce tutti i ruoli definiti all'interno di un contesto aziendale.getAllRolesFromIds(List<Integer> ids, int id_azienda) Recupera una lista di entità ruolo a partire da una collezione di ID.getNewUser(AziendaEntity azienda) Recupera il ruolo di "Utente Nuovo" (ID 1) per l'azienda specificata.getResponsabile(AziendaEntity azienda) Recupera il ruolo di "Responsabile" (ID 0) per l'azienda specificata.getRoleById(int idRole, AziendaEntity azienda) Cerca un ruolo specifico basandosi sulla chiave primaria composta.getStandardUser(AziendaEntity azienda) Recupera il ruolo di "Utente Standard" (ID 2) per l'azienda specificata.updateRole(AziendaEntity azienda, int idRole, String nome, String colore, String descrizione) Aggiorna i metadati di un ruolo esistente.voidupdateRoleAssociations(AziendaEntity azienda, int idRole, List<UtenteEntity> users) Sincronizza le associazioni tra un ruolo specifico e una lista di utenti fornita.
-
Field Details
-
ruoloRepository
-
customUserDetailsService
-
-
Constructor Details
-
RuoloService
public RuoloService(RuoloRepository ruoloRepository, @Lazy CustomUserDetailsService customUserDetailsService) Costruttore per la Dependency Injection.Utilizza l'annotazione
LazyperCustomUserDetailsServiceper evitare problemi di dipendenze circolari durante il bootstrap del contesto Spring.- Parameters:
ruoloRepository- Repository per l'accesso ai dati dei ruoli.customUserDetailsService- Servizio per la gestione dei dettagli di sicurezza degli utenti.- Since:
- 1.0.0
-
-
Method Details
-
updateRoleAssociations
@Transactional public void updateRoleAssociations(AziendaEntity azienda, int idRole, List<UtenteEntity> users) Sincronizza le associazioni tra un ruolo specifico e una lista di utenti fornita.Il metodo esegue una logica di aggiornamento completa: 1. Rimuove tutte le associazioni preesistenti per il ruolo indicato. 2. Pulisce i riferimenti incrociati nelle entità
UtenteEntity. 3. Crea nuove istanze diAssociazioneEntityper ogni utente nella lista. 4. Notifica il servizio di sicurezza per ricaricare i permessi degli utenti coinvolti.- Parameters:
azienda- L'azienda in cui opera il ruolo.idRole- L'identificativo locale del ruolo da aggiornare.users- La lista aggiornata di utenti da associare al ruolo.- Since:
- 1.5.0
-
attivazioneDefault
Inizializza i ruoli di default necessari per il funzionamento di una nuova azienda.Crea i seguenti ruoli predefiniti:
- ID 0: Responsabile (Amministratore con pieni poteri)
- ID 1: Utente Nuovo (Profilo limitato per utenti non ancora validati)
- ID 2: Utente (Profilo operativo standard)
- Parameters:
aziendaEntity- L'entità dell'azienda appena registrata.- Returns:
- L'entità del ruolo "Responsabile" appena creato.
- Since:
- 1.1.0
-
getResponsabile
Recupera il ruolo di "Responsabile" (ID 0) per l'azienda specificata.- Parameters:
azienda- L'azienda di riferimento.- Returns:
- L'entità
RuoloEntitycorrispondente. - Since:
- 1.0.0
-
getNewUser
Recupera il ruolo di "Utente Nuovo" (ID 1) per l'azienda specificata.- Parameters:
azienda- L'azienda di riferimento.- Returns:
- L'entità
RuoloEntitycorrispondente. - Since:
- 1.0.0
-
getStandardUser
Recupera il ruolo di "Utente Standard" (ID 2) per l'azienda specificata.- Parameters:
azienda- L'azienda di riferimento.- Returns:
- L'entità
RuoloEntitycorrispondente. - Since:
- 1.0.0
-
getAllRolesByAzienda
Restituisce tutti i ruoli definiti all'interno di un contesto aziendale.- Parameters:
azienda- L'azienda proprietaria.- Returns:
- Lista di tutti i ruoli trovati.
- Since:
- 1.0.0
-
createRole
Crea un nuovo ruolo personalizzato generandone l'ID in modo sequenziale.Calcola il nuovo ID incrementando il valore massimo attualmente presente per l'azienda.
- Parameters:
azienda- L'azienda in cui creare il ruolo.ruolo- L'entità ruolo parzialmente popolata.- Returns:
- L'entità del ruolo persistita con il nuovo ID assegnato.
- Since:
- 1.3.0
-
updateRole
@Transactional public RuoloEntity updateRole(AziendaEntity azienda, int idRole, String nome, String colore, String descrizione) Aggiorna i metadati di un ruolo esistente.- Parameters:
azienda- L'azienda di appartenenza.idRole- L'ID del ruolo da modificare.nome- Nuovo nome del ruolo.colore- Nuovo codice colore.descrizione- Nuova descrizione.- Returns:
- L'entità aggiornata.
- Since:
- 1.3.0
-
deleteRole
Elimina permanentemente un ruolo dal database.Impedisce la cancellazione dei ruoli di sistema (ID <= 2) per garantire la stabilità operativa. Prima dell'eliminazione, rimuove tutte le associazioni con gli utenti per evitare violazioni di integrità referenziale o eccezioni di tipo
TransientObjectException.- Parameters:
azienda- L'azienda proprietaria.idRole- L'ID del ruolo da rimuovere.- Throws:
IllegalArgumentException- Se si tenta di eliminare un ruolo protetto di sistema.- Since:
- 1.6.0
-
getRoleById
Cerca un ruolo specifico basandosi sulla chiave primaria composta.- Parameters:
idRole- L'identificativo numerico del ruolo.azienda- L'azienda associata.- Returns:
- L'entità
RuoloEntitytrovata. - Throws:
IllegalArgumentException- Se il ruolo non esiste.- Since:
- 1.0.0
-
getAllRolesFromIds
public List<RuoloEntity> getAllRolesFromIds(List<Integer> ids, int id_azienda) throws RuoloNotFoundException Recupera una lista di entità ruolo a partire da una collezione di ID.- Parameters:
ids- Collezione di identificativi numerici dei ruoli.id_azienda- L'ID dell'azienda di riferimento.- Returns:
- Lista di
RuoloEntitycorrispondenti agli ID forniti. - Throws:
RuoloNotFoundException- Se anche uno solo degli ID non corrisponde ad alcun ruolo esistente.- Since:
- 1.2.0
-