Gestione dei membri
Guida completa per invitare, gestire e rimuovere i membri del team nei progetti CodeCourier, incluso il flusso di invito e le operazioni in blocco.
La pagina Membri è il tuo hub centrale per gestire chi ha accesso a un progetto. Da qui puoi invitare nuovi membri del team, esaminare i loro ruoli e stati, cambiare i permessi e rimuovere i membri quando necessario. Solo gli utenti con il ruolo Owner o Admin possono gestire l’appartenenza al progetto.
Visualizzare l’elenco dei membri
Vai alla pagina Membri dalla barra laterale sotto il gruppo Insights. La pagina mostra una tabella con tutti i membri correnti e gli inviti in sospeso, ordinati con i proprietari per primi, poi gli admin, poi i membri, con gli inviti in sospeso raggruppati in fondo. Per ogni membro, la tabella mostra:
- Nome - Il nome visualizzato del membro con il suo avatar. Passa sopra con il mouse per vedere ulteriori dettagli del profilo e chi lo ha invitato.
- Email - L’indirizzo email associato al suo account
- Ruolo - Badge con codice colore che mostra Owner (ambra), Admin (blu) o Member (grigio)
- Stato - « Accepted » (verde) oppure « Pending » (arancione con icona dell’orologio)
- Iscritto - La data in cui il membro si è unito al progetto (mostra « -- » per gli inviti in sospeso)
- Azioni - Menu a discesa con opzioni di gestione dei ruoli e rimozione (solo admin/proprietario)
Invitare i membri del team
Apri la finestra di invito
Clicca sul pulsante Invita membro nell’intestazione della pagina. Questo apre una finestra con campi per l’email dell’invitato e l’assegnazione del ruolo.
Inserisci l’indirizzo email
Digita l’indirizzo email della persona che vuoi invitare. L’email deve appartenere a un account utente CodeCourier esistente - il sistema cerca l’utente tramite email. Se non viene trovato alcun account, vedrai un errore « No user found with that email address ». La persona deve prima registrarsi su CodeCourier.
Seleziona un ruolo
Scegli il ruolo per il nuovo membro:
- Admin - Può gestire i membri, configurare le impostazioni ed eseguire tutte le operazioni del progetto
- Member - Può usare tutte le funzionalità del progetto ma non può gestire i membri né le impostazioni critiche
Nota che il ruolo Owner non può essere assegnato durante l’invito. Solo il proprietario corrente può trasferire la proprietà tramite la gestione dei ruoli.
Invia l’invito
Clicca su Invia invito per creare l’appartenenza. Il sistema convalida l’email, verifica che l’utente non sia già membro e crea un record di appartenenza in sospeso. L’invitato vedrà l’invito nella sua dashboard.
Errori di invito
- « No user found with that email address » - L’email non è registrata in CodeCourier
- « User is already a member or has a pending invitation » - Un’appartenenza esiste già
Accettare e rifiutare gli inviti
Quando vieni invitato a un progetto, l’invito compare nella tua dashboard. Hai due opzioni:
Accettare
Accettare un invito aggiorna il tuo stato di appartenenza da « pending » a « accepted » e registra il timestamp dell’accettazione. Ottieni immediatamente l’accesso a tutte le risorse del progetto in base al ruolo che ti è stato assegnato.
Rifiutare
Rifiutare un invito elimina definitivamente il record di appartenenza. L’admin del progetto può reinvitarti in seguito se necessario. Il rifiuto non crea alcuna notifica per il team del progetto.
Puoi visualizzare tutti i tuoi inviti in sospeso su tutti i progetti usando la query listPendingInvitations, che restituisce dettagli dell’invito arricchiti, incluso il nome del progetto e il nome della persona che ti ha invitato.
Gestire i membri esistenti
Cambiare i ruoli
Solo i proprietari del progetto possono cambiare i ruoli dei membri. Dal menu delle azioni del membro, seleziona Cambia ruolo e scegli il nuovo ruolo. I cambi di ruolo hanno effetto immediato e si riflettono in tempo reale su tutti i client connessi.
Salvaguardie per i cambi di ruolo:
- Un proprietario non può retrocedersi se è l’unico proprietario. Deve prima essere assegnato un altro proprietario.
- Gli admin non possono promuoversi a proprietari - solo i proprietari esistenti possono farlo.
- I cambi di ruolo non richiedono una riautenticazione; i nuovi permessi si applicano immediatamente.
Rimuovere i membri
Proprietari e admin possono rimuovere i membri dal progetto. Clicca sul menu delle azioni del membro e seleziona Rimuovi membro. Una finestra di conferma compare prima che la rimozione venga eseguita.
Salvaguardie per la rimozione:
- L’ultimo proprietario rimasto non può essere rimosso. Trasferisci prima la proprietà.
- I non proprietari non possono rimuovere i proprietari - solo altri proprietari possono farlo.
- Rimuovere un membro elimina definitivamente il suo record di appartenenza e decrementa il contatore dei membri del progetto.
Annullare gli inviti in sospeso
Se un invito è stato inviato per errore, proprietari e admin possono annullarlo prima che l’invitato lo accetti. Seleziona Annulla invito dal menu delle azioni del membro in sospeso. Questo elimina definitivamente il record di appartenenza in sospeso.
Operazioni in blocco
La tabella dei membri supporta la selezione in blocco tramite caselle di controllo. Seleziona più membri e usa la barra delle azioni in blocco per rimuoverli tutti in una volta. L’operazione di rimozione in blocco gestisce sia i membri attivi che gli inviti in sospeso - per i membri in sospeso annulla l’invito, per i membri attivi rimuove la loro appartenenza.
Azioni irreversibili
Supporto per il menu contestuale
Oltre al menu delle azioni a discesa, la tabella dei membri supporta i menu contestuali con il tasto destro su ogni riga. Cliccando con il tasto destro su un membro compaiono le stesse opzioni del menu a discesa: Vedi profilo, Cambia ruolo e Rimuovi membro (o Annulla invito per i membri in sospeso). Questo offre un workflow più veloce per gli utenti esperti che gestiscono grandi team.
Gestione programmatica dei membri
Tutte le operazioni di gestione dei membri sono disponibili tramite mutation Convex:
import { api } from "@/convex/_generated/api";
import { useMutation, useQuery } from "convex/react";
// List all members
const members = useQuery(api.projectMembers.listByProject, { projectId });
// Invite by email
const addMember = useMutation(api.projectMembers.addMemberByEmail);
await addMember({ projectId, email: "user@example.com", role: "member" });
// Accept invitation
const accept = useMutation(api.projectMembers.acceptInvitation);
await accept({ projectId });
// Change role (owner only)
const updateRole = useMutation(api.projectMembers.updateRole);
await updateRole({ projectId, userId, role: "admin" });
// Remove member
const remove = useMutation(api.projectMembers.removeMember);
await remove({ projectId, userId });