Gruppi gerarchici a 6 livelli — la funzionalità più complessa del progetto
Ci sono funzionalità che sembrano semplici sulla carta. "Aggiungi gruppi" — sembra innocuo. Poi inizi a scavare e ti rendi conto di aver appena aperto il vaso di Pandora.
TAMSIV supporta gruppi gerarchici fino a 6 livelli di profondità. Il mio club di immersione, per esempio: Club → Commissione Tecnica → Livello 1 → Gruppo del martedì.
Il modello di dati
Ogni gruppo ha un parent_id che punta al suo gruppo genitore. Per visualizzare l'albero completo, utilizzo query ricorsive (CTE) in PostgreSQL con una clausola WHERE depth < 6 come salvaguardia.
Quattro ruoli, quattro realtà
- Admin — fare tutto: creare, modificare, eliminare, gestire i membri
- Manager — gestire attività e memo, assegnare membri
- Member — creare contenuti, visualizzare tutti i contenuti del gruppo
- Viewer — sola lettura
La trappola è l'ereditarietà. Se Lei è admin di un gruppo genitore, è automaticamente admin dei sottogruppi? In TAMSIV, la risposta è sì — ma con delle sfumature.
31 politiche RLS
Questo è il numero di politiche Row Level Security che ho dovuto scrivere per lo schema collaborativo. Testare 31 politiche significa almeno 31 scenari. Metodico, noioso, indispensabile.
Il componente HierarchicalGroupPicker
Lato frontend, ho costruito un HierarchicalGroupPicker che visualizza l'albero con indentazione, icone di ruolo e un interruttore "includi sottogruppi". Questa è la funzionalità che mi ha richiesto più tempo. Ma è anche quella che rende TAMSIV utilizzabile per organizzazioni reali.