People — Dettaglio utente
La pagina Dettaglio utente (/dashboard/users/:id) mostra il profilo completo di un Paradigmino, suddiviso in sezioni indipendenti.
Esperienza utente
Sezioni del profilo
| Sezione | Contenuto |
|---|---|
| Header | Foto, nome, azioni rapide |
| Informazioni generali | Dati lavorativi, posizione, BU |
| Informazioni personali | Dati anagrafici e di contatto |
| Contratti | Storico contrattuale |
| Skills | Competenze associate |
| Progetti | Progetti assegnati |
Cosa si può fare
- Consultare tutte le sezioni (accesso in lettura per utenti autorizzati)
- Modificare il profilo se
canManageUsers()oppure se si sta visualizzando il proprio profilo (isSelf) - Gestire contratti e skills (aggiunta/rimozione): in base alle policies dedicate / gestione utenti
- Aprire dialog di aggiornamento foto e campi principali dall'header
Limitazioni
| Azione | canManageUsers() |
Self (proprio profilo) | Altri utenti |
|---|---|---|---|
| Visualizzare sezioni | Sì | Sì | Sì |
| Modificare generali/personali | Sì | Sì | No |
| Gestire contratti | Sì (policies) | No | No |
| Aggiungere skills | Sì (policies) | No | No |
| Dialog aggiornamento header | Sì | Sì | No |
Vedi Accesso e ruoli.
Dettaglio tecnico
Modello permessi
UserDetailComponent calcola:
canManageUsers→policiesService.canManageUsers()(persons.create)isSelf→ confronto email daPeopleService.getEmailByID(id)conauthService.isSelf(email)
L'email viene caricata all'ngOnInit. In caso di 403, viene mostrato un toast e isSelf resta false — l'utente non può operare come "proprio profilo" senza accesso all'email.
Caricamento sezioni
Ogni sotto-componente in src/components/user-detail/ carica i propri dati tramite PeopleService con endpoint differenziati per tipo (general, personal, contracts, skills, projects, …). Non c'è un unico payload aggregato.
Dialog skills
AddSkillDialogComponent è orchestrato da AddSkillDialogService (stato condiviso per apertura/chiusura e callback).
flowchart LR
UD[UserDetailComponent] -->|id| PS[PeopleService.getEmailByID]
PS -->|email| IS{isSelf?}
IS -->|sì/no + canManageUsers| SEC[Sezioni editabili]
SEC --> GI[GeneralInfo]
SEC --> PI[PersonalInfo]
SEC --> UC[UserContracts]
SEC --> US[UserSkills]
SEC --> UP[UserProjects]
File principali
| File | Ruolo |
|---|---|
src/pages/user-detail/user-detail.component.ts |
Orchestrazione e permessi |
src/components/user-detail/ |
Sezioni profilo |
src/services/people.service.ts |
API per sezione |
src/services/policies.service.ts |
ACL UI |
src/services/add-skill-dialog.service.ts |
Stato dialog skills |