3 livelli di accesso per condividere senza dare tutto: la riprogettazione dei permessi in TAMSIV
Marie ha invitato Camille al quaderno "Matrimonio Léa & Thomas" martedì sera. Voleva solo mostrarle l'elenco dei fornitori e l'organizzazione degli invitati. Mercoledì a mezzogiorno, Camille aveva modificato il budget, eliminato due attività "per errore" e rinominato il quaderno. Non per cattiveria. Solo perché la condivisione era binaria: o ci sei o non ci sei, e quando ci sei, puoi fare tutto.
Questo scenario si ripete continuamente non appena un'app collaborativa cresce. La granularità di accesso non è un dettaglio tecnico, è ciò che differenzia uno strumento che puoi prestare a tutta la famiglia da uno strumento che esiti a condividere. La versione 1.29 di TAMSIV introduce tre livelli di accesso distinti (lettura, scrittura, totale) che si applicano a ogni membro di una condivisione, su ogni attività, memo, evento e quaderno. 1258 righe aggiunte, 824 eliminate, sei lingue aggiornate, un cantiere che abbiamo chiamato internamente "Fase A + B rifacimento permessi".
Punti chiave
- Tre chiari livelli di accesso sostituiscono la condivisione binaria: Lettura (visualizzare senza modificare), Scrittura (visualizzare e modificare il contenuto), Totale (modificare, eliminare, gestire le assegnazioni).
- Ogni membro di un quaderno condiviso riceve un badge visibile (occhio grigio, matita blu, scudo verde) che rende l'accesso leggibile a colpo d'occhio per tutti, non solo per il proprietario.
- Le sezioni "Albero" e "Membri" diventano collassabili, l'albero di accesso è ridisegnato con connettori continui, schede indentate per profondità e una linea orizzontale estesa per livello.
- Il componente
PermissionLevelPickercentralizza la selezione: 186 righe, modale accessibile, descrizioni esplicite in sei lingue, stato disabilitato per i ruoli non modificabili.- Il ruolo di un assegnato è risolto nel contesto del quaderno (assegnato diretto vs. esterno), con chiavi
roles.assignederoles.externalche evitano confusioni visive.
Perché la condivisione binaria non regge più quando una famiglia si intromette?
Nella maggior parte delle app collaborative consumer, l'accesso si riduce a due stati: sei un membro, o non lo sei. Quando inviti qualcuno, gli dai per impostazione predefinita il diritto di fare tutto. Modificare, eliminare, aggiungere partecipanti, cambiare le date, rinominare. Questo è il modello di Trello per le board di base, della maggior parte delle note condivise Apple, e di molte liste della spesa condivise.
Questo modello funziona finché condividi con una sola persona di fiducia, e finché tutti hanno lo stesso interesse a rispettare il contenuto. Non appena aggiungi un terzo attore, o la dinamica cambia, inizia l'attrito. Il tuo coniuge ha bisogno di modificare la lista della spesa, ma tua suocera che passa il fine settimana ha solo bisogno di vederla. Il tuo team può modificare il brief del cliente, ma il cliente stesso dovrebbe solo leggere. Tua sorella che prepara il suo matrimonio con te ha bisogno del controllo totale, ma sua cognata che aiuta occasionalmente non ha bisogno di poter eliminare l'intero quaderno.
L'assenza di livelli di accesso forza una scelta binaria dolorosa: o sovrainvesti gli invitati (e corri il rischio che un parente modifichi involontariamente), o sottinvesti (e la persona non può fare nulla di utile, quindi abbandona). È esattamente l'attrito che spinge le persone a tornare agli screenshot di WhatsApp e a un carico mentale disperso in dieci strumenti diversi.
Quali sono i tre livelli di accesso in TAMSIV?
Il rifacimento introduce tre livelli distinti, ognuno con la sua icona, il suo colore e la sua descrizione, accessibili tramite un selettore unificato in tutta l'app.
Lettura (occhio grigio)
Il membro vede l'intero contenuto, ma non può modificare nulla. Può commentare, reagire con emoji, ricevere le notifiche del quaderno, ma non creare nuove attività, non modificare le date, non cambiare le assegnazioni. È il livello perfetto per un parente che si tiene aggiornato, un cliente che si consulta, un genitore che vuole seguire l'organizzazione senza rischiare di toccare nulla.
Scrittura (matita blu)
Il membro può vedere e modificare il contenuto esistente. Può creare nuove attività, modificare memo, aggiungere foto, spostare un evento. Ma non può eliminare ciò che non ha creato lui stesso, né gestire le assegnazioni degli altri. È la modalità di collaborazione corrente, quella che si usa quando si lavora insieme sullo stesso progetto.
Totale (scudo verde)
Il membro ha gli stessi diritti del proprietario con un'unica eccezione: non può sciogliere l'intera condivisione. Può modificare, eliminare, gestire le assegnazioni, invitare nuovi membri, cambiare i livelli di accesso degli altri. È la modalità "co-organizzatore", perfetta per un coniuge, un socio, un genitore a cui si vuole delegare tutto senza però trasferire la proprietà del quaderno.
I tre livelli sono rappresentati da un selettore visivo coerente: icona + colore + etichetta, con una bolla di spiegazione al tap. Il selettore si chiama PermissionLevelPicker, si trova in frontend/src/components/common/ ed è utilizzato ovunque un livello di accesso debba essere visualizzato o modificato. Questa unicità del componente garantisce che un membro con accesso di Lettura sul quaderno "Matrimonio" si riconosca visivamente come Lettura sull'attività "Prenotare sala", senza reinterpretazioni.
Come vedere chi ha quale accesso in un quaderno condiviso?
Il secondo grande pezzo del rifacimento riguarda la schermata che elenca i membri. Prima, si vedeva una lista piatta di avatar con i nomi. Ora, ogni membro è accompagnato da un badge di accesso colorato, e la lista è ordinata per livello (i Totale in alto, poi gli Scrittura, poi i Lettura). A colpo d'occhio, il proprietario vede chi può fare cosa.
Le sezioni "Albero" e "Membri" del dettaglio di un'attività, di un memo o di un evento diventano ora collassabili. Tu tocchi l'intestazione, la freccia ruota, la sezione si ripiega o si apre. Sugli schermi con molti membri o gerarchie profonde, questo cambia tutto per la leggibilità.
L'albero di accesso stesso è stato ridisegnato. Prima, era una lista piatta con due o tre indentazioni approssimative. Ora, ogni livello di profondità ha la sua cella, la sua linea orizzontale che si estende, i suoi connettori ad albero continui che disegnano la gerarchia come un vero albero. Quando un quaderno è annidato in un altro, e un'attività è annidata nel quaderno figlio, l'albero rende la catena di ereditarietà visiva, non verbale.
Come funziona l'ereditarietà dei permessi attraverso la gerarchia?
TAMSIV permette di annidare quaderni su sei livelli. Se tu dai accesso di Scrittura a qualcuno su un quaderno genitore, eredita automaticamente l'accesso di Scrittura su tutti i sottocuaderni e il loro contenuto. Questo è il comportamento predefinito, ed è quello che ci si aspetta nell'80% dei casi.
Ma la nuova architettura permette anche di sovrascrivere un livello di accesso localmente. Un membro con accesso di Scrittura sul quaderno genitore può essere limitato a Lettura su un sottocuaderno specifico, perché quel sottocuaderno contiene informazioni sensibili. La sovrascrittura è esplicita (un badge specifico appare nell'albero), e viene visualizzata nel contesto del quaderno genitore per rimanere tracciabile.
Questa ereditarietà con sovrascrittura è tecnicamente complessa. Si basa sulle Row Level Security policies di PostgreSQL, estese da 31 politiche RLS che calcolano il livello effettivo di un utente su un dato elemento risalendo l'albero. Il risultato è calcolato lato database, non lato client, il che evita derive di permessi e exploit lato frontend.
Perché questo rifacimento ha toccato 15 file e 6 lingue?
I permessi sono un concetto trasversale. Vivono nel dettaglio di un'attività (chi può modificare?), nella lista dei membri di un quaderno (chi vede cosa?), nel selettore di condivisione (a chi do accesso?), nella schermata di assegnazione (chi può essere assegnato?), nell'albero di accesso (come si calcola l'ereditarietà?). Toccare i permessi significa toccare la spina dorsale della collaborazione.
Il rifacimento ha coinvolto 15 file modificati nel frontend, tra cui i principali: AssigneesModal.tsx (130 righe aggiunte, gestione del ruolo di un assegnato nel suo quaderno), GroupMembersModal.tsx (62 righe aggiunte, badge di accesso), GroupHierarchySection.tsx (346 righe rifatte, albero ridisegnato), TaskAccessTree.tsx (24 righe aggiustate, integrazione del badge nel ramo gruppo), e il nuovo componente PermissionLevelPicker.tsx (186 righe, modale riutilizzabile).
Lato i18n, le nuove chiavi access.read/write/readWrite/full, access.readDescription/writeDescription/fullDescription, access.permissionLevel, roles.assigned/external sono state aggiunte nei sei file di lingua (FR, EN, DE, ES, IT, PT). La traduzione è passata attraverso il nostro script automatico OpenRouter con revisione umana sulle sfumature. Un'etichetta sbagliata su "Total" in tedesco o "Écriture" in italiano può bastare a perdere tutta la leggibilità della funzionalità.
Quali usi familiari e professionali sblocca la granularità?
Ciò che cambia nella vita reale non è il codice. Sono gli scenari d'uso che diventano possibili senza aggiramenti.
Una famiglia con un adolescente. Tu dai Totale al tuo coniuge sul quaderno "Casa", Scrittura al tuo adolescente di 15 anni in modo che possa spuntare le sue attività senza rischiare di eliminare quelle di tutta la famiglia, Lettura ai nonni che passano il fine settimana e vogliono solo sapere se devono portare il pane.
Un freelance con un cliente. Tu condividi il quaderno "Sito cliente X" con il tuo cliente in Lettura (vede l'avanzamento, commenta), con il tuo subappaltatore in Scrittura (modifica il contenuto senza poterti disassegnare), con il tuo socio in Totale (può gestire tutto se vai in ferie).
Un'associazione o un APE. Tu dai Totale all'ufficio (3 persone), Scrittura ai volontari attivi (15 persone), Lettura ai genitori che vogliono seguire l'organizzazione della festa senza rischiare di modificare il programma per sbaglio.
Un matrimonio a più mani. Tu dai Totale al tuo coniuge e al testimone principale, Scrittura alle quattro damigelle d'onore che aiutano su aspetti specifici, Lettura ai genitori e suoceri che vogliono seguire gli invitati e il programma del giorno J senza rischiare di rovinare tutto.
Domande frequenti
Il proprietario del quaderno può cambiare il livello di accesso dei membri dopo l'invito?
Sì. Dalla schermata "Membri" del quaderno, il proprietario (e qualsiasi membro Totale) può modificare il livello di accesso di ciascuno in qualsiasi momento, senza reinvitare. La modifica viene applicata in tempo reale su tutti i dispositivi tramite Supabase Realtime, il membro interessato vede il suo livello cambiare nell'app senza dover effettuare nuovamente l'accesso.
Cosa succede se do accesso di Lettura a qualcuno che prima era Totale?
I contributi passati (attività create, foto caricate, commenti) rimangono nel quaderno. La persona perde solo la capacità di modificarli o eliminarli. Continua a vedere tutto il contenuto, ma i pulsanti di modifica scompaiono lato interfaccia, e le richieste lato server vengono rifiutate dalle politiche RLS se qualcuno tenta di aggirare tramite una richiesta diretta.
Posso dare Totale a qualcuno su un sottocuaderno senza dargli Totale sul quaderno genitore?
No, l'ereditarietà scende ma non risale. Se vuoi che qualcuno sia Totale su un sottocuaderno, deve avere almeno Lettura sul genitore (altrimenti non potrà navigare fino al sottocuaderno). Puoi invece fare l'inverso: dare Totale sul genitore e scendere a Scrittura o Lettura su un sottocuaderno specifico per proteggere una parte sensibile.
I livelli di accesso si applicano anche agli allegati e ai commenti?
Sì. Un membro con accesso di Lettura può vedere gli allegati ma non caricarne. Può leggere i commenti ma può comunque scriverne e reagire con emoji (il commento è una forma di contributo non distruttiva, aperta a tutti i livelli). Le politiche RLS sono applicate in modo coerente sulle sei tabelle coinvolte: attività, memo, eventi, allegati, commenti, reazioni.
Come avviene la migrazione per i quaderni creati prima della 1.29?
Tutti i membri esistenti sono stati migrati al livello Totale (che corrisponde al comportamento prima del rifacimento). Non è richiesta alcuna azione da parte dell'utente. Se vuoi sfruttare la granularità su un quaderno esistente, è sufficiente aprire la schermata Membri e regolare il livello di ogni persona. La modifica è istantanea, senza rifiuto di invito o perdita di dati.
E tu, hai mai dato un accesso troppo ampio a qualcuno su un'app condivisa?
Se stai leggendo questo articolo, è probabilmente perché hai già vissuto la scena almeno una volta. Hai aggiunto un parente a un quaderno o un progetto, e hai scoperto qualche giorno dopo che la persona aveva modificato, eliminato o riorganizzato qualcosa a cui tenevi. Non per cattiveria. Solo perché l'app non ti permetteva di dire "puoi guardare, ma non toccare".
La versione 1.29 di TAMSIV risolve questo dilemma in due tap. Inviti, scegli il livello, puoi modificarlo in qualsiasi momento. La condivisione diventa un cursore, non più un interruttore. E questo è forse ciò che ti darà il coraggio di aprire i tuoi quaderni a un cerchio più ampio delle due persone che invitavi prima.
Scarica TAMSIV gratuitamente dal Play Store e prova i nuovi livelli di accesso a partire dalla versione 1.29.