Riferimento al Controllo degli Accessi
Copia un prompt di configurazione con i passaggi di installazione e la guida markdown completa per questo plugin.
Capgo utilizza il controllo degli accessi basato sul ruolo (RBAC) per gestire cosa può fare ogni membro del team. I ruoli sono organizzati per ambito — dall'intera organizzazione fino a un singolo pacchetto.
Per una guida visiva per la gestione dei membri nel pannello di controllo, vedi Organizzazione.
Scopi dei ruoli
Sottosezione intitolata “Scopi dei ruoli”Ogni ruolo appartiene a uno scopo che determina quali risorse concede l'accesso.
| Ambito | context: Pagina/Area: Pagina di supporto / sezione di supporto premium o sezione di supporto del footer. Ruolo: Intestazione di sezione o pagina. Visualizzato in: pagina support-policy.astro. Chiave di messaggio `support_policy_scope_title` (Titolo della politica di supporto). | Esempio di utilizzo |
|---|---|---|
| Organizzazione | L'intera organizzazione e tutti i suoi app | Il tuo co-fondatore ottiene Super Amministratore; il tuo contabile ottiene Gestore della fatturazione |
| App | Una singola app e i suoi canali | Un consulente che lavora su un'app ottiene Sviluppatore di app |
| Canale | Un singolo canale all'interno di un'app | Un ingegnere QA gestisce solo il staging canale |
| Pacchetto | Ambito di versione singola | Un revisore ha bisogno di accesso in lettura a una versione specifica di rilascio |
Un membro può detenere un ruolo per ambito di destinazione ad esempio, un ruolo di organizzazione, un ruolo su App A e un ruolo diverso su App B.
Ruoli di organizzazione
Sottosezione intitolata “Ruoli di organizzazione”Questi ruoli sono assegnati quando si invita un membro. Concedono l'accesso all'intera organizzazione.
| Ruolo | Nome interno | Descrizione |
|---|---|---|
| Amministratore Superiore | org_super_admin | Paragono equivalente. Controllo totale, compreso la possibilità di eliminare l'organizzazione, gestire la fatturazione e trasferire le app. Concesso automaticamente al creatore dell'organizzazione. |
| Amministratore | org_admin | Amministrazione completa — gestire membri, app, canali. Non è possibile eliminare l'organizzazione, aggiornare la fatturazione, trasferire le app o promuovere gli utenti a Super Amministratore. |
| Gestore Fatturazione | org_billing_admin | Accesso solo alla fatturazione: visualizzare e aggiornare le informazioni sulla fatturazione, le fatture e i registri di audit della fatturazione. Nessun accesso alle app o ai membri. |
| Membro | org_member | Matrice di autorizzazioni dell'organizzazione |
Autorizzazione
Descrizione| Super Amministratore | Tabella delle autorizzazioni dell'organizzazione | Autorizzazione | Amministratore | Gestore fatturazione | Membro |
|---|---|---|---|---|---|
org.read | Visualizza l'organizzazione | ✅ | ✅ | ✅ | ✅ |
org.update_settings | Modifica nome, logo e indirizzo email di gestione dell'organizzazione | ✅ | ✅ | ❌ | ❌ |
org.delete | Elimina permanentemente l'organizzazione | ✅ | ❌ | ❌ | ❌ |
org.read_members | Visualizza la lista dei membri | ✅ | ✅ | ❌ | ✅ |
org.invite_user | Invita nuovi membri | ✅ | ✅ | ❌ | ❌ |
org.update_user_roles | Cambia ruolo dei membri (l'amministratore non può promuovere a Super Amministratore — bloccato dalla gerarchia dei ruoli) | ✅ | ✅ | ❌ | ❌ |
org.read_billing | Visualizza informazioni di fatturazione e piano attuale | ✅ | ✅ | ✅ | ❌ |
org.update_billing | Aggiorna metodo di pagamento e piano | ✅ | ❌ | ✅ | ❌ |
org.read_invoices | Visualizza fatture | ✅ | ✅ | ✅ | ❌ |
org.read_audit | Visualizza il registro delle attività dell'organizzazione | ✅ | ✅ | ❌ | ❌ |
org.read_billing_audit | Visualizza il registro di audit specifico per la fatturazione | ✅ | ✅ | ✅ | ❌ |
può fare, in tutti gli app e canali.
Sezione intitolata “Ruoli dell'app”Limitata a un singolo app. Utilizza questi quando un membro del team dovrebbe lavorare solo su un'app, non sull'intera organizzazione.
| Ruolo | Nome interno | Descrizione |
|---|---|---|
| Amministratore dell'app | app_admin | Controllo completo di un'app — canali, dispositivi, ruoli degli utenti per l'app. Non è possibile cancellare o trasferire l'app (queste sono operazioni a livello di organizzazione). |
| Sviluppatore dell'app | app_developer | Carica bundle, gestisci dispositivi, attiva costruzioni native, aggiorna impostazioni dei canali. Nessuna cancellazione, nessuna modifiche alle impostazioni dell'app, nessuna creazione di canali. |
| Caricatore di bundle dell'app | app_uploader | Accesso di sola lettura + caricamento di nuove versioni dei bundle. |
| Lettore dell'app | app_reader | Letture solo per statistiche, bundle, canali, log e dispositivi. |
| Vista anteprima dell'app | app_preview | Ciclo di vita della CI legato all'organizzazione e all'app: caricare un bundle e creare un canale di anteprima. La creazione di quel canale concede automaticamente i diritti di ciclo di vita solo per esso. |
Matrice di permessi dell'app
Matrice di permessi dell'app| Permesso | Descrizione | Amministratore dell'app | Sviluppatore dell'app | Caricatore dell'app | Lettore dell'app |
|---|---|---|---|---|---|
app.read | Visualizza i dettagli dell'app, le statistiche e i metadati | ✅ | ✅ | ✅ | ✅ |
app.update_settings | Modifica le impostazioni dell'app | ✅ | ❌ | ❌ | ❌ |
app.read_bundles | Visualizza l'elenco dei bundle caricati | ✅ | ✅ | ✅ | ✅ |
app.upload_bundle | Carica una nuova versione del bundle | ✅ | ✅ | ✅ | ❌ |
app.create_channel | Crea un nuovo canale | ✅ | ❌ | ❌ | ❌ |
app.read_channels | Visualizza i canali | ✅ | ✅ | ✅ | ✅ |
app.read_logs | Visualizza i registri di consegna degli aggiornamenti | ✅ | ✅ | ✅ | ✅ |
app.manage_devices | Assegna, sovrascrivi o disconnetti dispositivi | ✅ | ✅ | ❌ | ❌ |
app.read_devices | Visualizza l'elenco dei dispositivi | ✅ | ✅ | ✅ | ✅ |
app.build_native | Avvia un build cloud nativo | ✅ | ✅ | ❌ | ❌ |
app.read_audit | Visualizza il registro di attività dell'app | ✅ | ✅ | ✅ | ✅ |
app.update_user_roles | Gestisci le assegnazioni di ruoli dell'app | ✅ | ❌ | ❌ | ❌ |
bundle.delete | Elimina un bundle | ✅ | ❌ | ❌ | ❌ |
Set di autorizzazioni per anteprima dell'app
Sottosezione intitolata “Set di autorizzazioni per anteprima dell'app”Usa Anteprima dell'app (app_preview) per una chiave CI a livello di organizzazione e app che gestisce il ciclo di vita dell'anteprima di una PR senza accesso ampio a livello di app o organizzazione.
Il app_preview concede solo questi permessi di livello di app:
| Permesso | Consente |
|---|---|
app.read | Leggi l'app selezionata |
app.read_bundles | Leggi i bundle caricati |
app.upload_bundle | Carica un bundle |
app.create_channel | Crea un canale |
Quando una chiave di anteprima dell'app crea un canale, Capgo dà automaticamente a quella chiave una sottoscrizione figlia per il nuovo canale solo: channel_preview Permesso
| Consente | protectedTokens |
|---|---|
channel.read | Leggi il canale creato dalla chiave |
channel.promote_bundle | Imposta il bundle caricato dalla chiave stessa su quel canale |
channel.delete | Cancella quel canale |
Poiché app_preview conserva app.read, la chiave può enumerare i metadati del canale nella selezionata app. L'assegnazione automatica dei figli è un limite di gestione : non concede mutazioni di ciclo di vita per un canale che la chiave non ha creato.
Capgo registra la chiave di anteprima che ha creato ogni canale e caricato ogni bundle. Quindi una chiave di anteprima dell'applicazione può creare ogni canale di anteprima non pubblico che ha bisogno, promuovere il proprio bundle e cancellare atomicamente quel canale e bundle con channel delete --delete-bundlenon può fare quelle cose a un canale predefinito/main esistente, a un canale di un'altra chiave di anteprima o al bundle di un'altra chiave.
Non include app.update_settings, la gestione del dispositivo o del ruolo, channel.update_settings, channel.rollback_bundlegestione dispositivi forzata, o generici bundle.delete.
Ruoli di canale
Sottosezione intitolata “Ruoli di canale”Limitato a un singolo canale. Utile per concedere accesso mirato a un canale di rilascio specifico.
| Ruolo | Nome interno | Descrizione |
|---|---|---|
| Amministratore del canale | channel_admin | Controllo completo di un canale: impostazioni, promuovi/riporta bundle, gestisci dispositivi obbligati. |
| Visualizzatore del canale | channel_reader | Letto solo — bundle corrente, storia, dispositivi obbligati, registro degli accessi. |
| Anteprima del canale | channel_preview | Assegnato automaticamente alla chiave di anteprima dell'app che ha creato il canale: lettura, promuovi il proprio bundle e cancella quel canale. |
Matrice di autorizzazioni del canale
Matrice di autorizzazioni del canale| Autorizzazione | Descrizione | Amministratore del canale | Visualizzatore del canale | Anteprima del canale |
|---|---|---|---|---|
channel.read | Visualizza il canale e il suo bundle corrente | ✅ | ✅ | ✅ |
channel.update_settings | Modifica le impostazioni del canale (toggle di piattaforma, politica di aggiornamento…) | ✅ | ❌ | ❌ |
channel.delete | Elimina il canale | ✅ | ❌ | ✅ |
channel.read_history | Visualizza la cronologia delle assegnazioni del bundle | ✅ | ✅ | ❌ |
channel.promote_bundle | Imposta il bundle attivo sul canale | ✅ | ❌ | ✅ |
channel.rollback_bundle | Ritorna indietro a un bundle precedente | ✅ | ❌ | ❌ |
channel.manage_forced_devices | Forza dispositivi specifici a questo canale | ✅ | ❌ | ❌ |
channel.read_forced_devices | Visualizza l'elenco dei dispositivi forzati | ✅ | ✅ | ❌ |
channel.read_audit | Visualizza il registro di attività del canale | ✅ | ✅ | ❌ |
Ruoli di bundle
Titolo della sezione “Ruoli di bundle”Limitato a una sola versione di bundle. Raramente necessario — la maggior parte delle squadre utilizza invece ruoli a livello di app.
| Funzione | Nome interno | Descrizione |
|---|---|---|
| Amministratore del pacchetto | bundle_admin | Leggi, aggiorna i metadati e cancella un pacchetto specifico. |
| Visualizza pacchetto | bundle_reader | Override delle autorizzazioni del canale (Pannello di controllo) |
Sezione intitolata “Override delle autorizzazioni del canale (Pannello di controllo)”
Nel pannello di controllo, l'accesso al canale è determinato dal ruolo dell'applicazione dell'utente di default. Per un controllo più dettagliato, puoisovrascrivere le autorizzazioni del canale specifiche per utente o gruppo senza modificare il ruolo dell'applicazione. Override delle autorizzazioni del canale (Dashboard)
Le sovrascritture sono configurate dall'applicazione nel suo Accesso tab cliccando sul pulsante delle autorizzazioni del canale (icona della protezione) accanto a un utente. Vedi Organizzazione — Sovrascrittura delle autorizzazioni del canale Permessi sovrascrivibili
Sezione intitolata “Permessi sovrascrivibili”
Permesso| Descrizione | Comportamento predefinito | Leggi |
|---|---|---|
| Visualizza il canale e il suo bundle corrente | dal canale e il suo bundle corrente | Ereditato dal ruolo dell'applicazione |
| Storia | Visualizza la cronologia delle assegnazioni del bundle | Ereditato dal ruolo dell'applicazione |
| Associare bundle | Imposta o modifica il bundle attivo sul canale | Ereditato dal ruolo dell'applicazione |
Ogni autorizzazione può essere impostata su:
- Predefinito — eredita dal ruolo dell'applicazione (predefinito)
- Consenti — concede esplicitamente, indipendentemente dal ruolo dell'applicazione
- Negare — nega esplicitamente, indipendentemente dal ruolo dell'app
Ciò ti consente, ad esempio, di dare a un lettore di App la possibilità di associare bundle sul staging canale senza promuoverli a sviluppatore di App.
Gerarchia dei ruoli
Sezione intitolata “Gerarchia dei ruoli”I ruoli formano una gerarchia. Un ruolo padre eredita tutti i permessi dei suoi figli. Ciò significa che un org_admin può fare tutto ciò che può fare un app_admin che in turn può fare tutto ciò che può fare un channel_admin e così via.
Super Admin (org_super_admin) └── Admin (org_admin) └── App Admin (app_admin) ├── App Developer (app_developer) │ └── App Uploader (app_uploader) │ └── App Reader (app_reader) ├── Bundle Admin (bundle_admin) │ └── Bundle Viewer (bundle_reader) └── Channel Admin (channel_admin) └── Channel Viewer (channel_reader)Come funziona nella pratica:
- Un Amministratore all'organo di livello può fare tutto ciò che un Amministratore dell'app può fare, su ogni app nell'organo.
- Un Amministratore dell'app su un'app specifica può fare tutto ciò che un Amministratore del canale può fare, su ogni canale in quell'app.
- Un Un sviluppatore di App può fare tutto ciò che può fare un Un caricatore di App può fare, più cose.
La gerarchia fluisce solo in basso — un channel_admin non acquisisce mai le autorizzazioni di livello organizzativo, neanche se detiene anche un ruolo di livello app.
Invece di assegnare ruoli a ogni utente individualmente, puoi creare gruppi e assegna ruoli al gruppo. Ogni membro del gruppo eredita automaticamente quei ruoli.
Come funzionano i gruppi
Sottosezione intitolata “Come funzionano i gruppi”- Un gruppo appartiene a un'organizzazione – non può coprire più di un'org.
- I gruppi possono contenere vincoli di ruolo a qualsiasi ambito: org, app, canale o bundle. Ad esempio, un gruppo può essere assegnato il Ruolo dello sviluppatore dell'applicazione ruolo Amministratore del canale ruolo sul
stagingcanale di App B. - Quando vengono valutate le autorizzazioni di un utente, tutti i suoi appartenenti a un gruppo vengono risolti in modo trasparente. Se qualsiasi gruppo di cui fa parte concede la permessi richiesto, l'accesso è consentito.
- Un utente può appartenere a più gruppi, e i permessi da tutti i gruppi sono cumulativi.
- I permessi basati sui gruppi si applicano solo ai principali utente — le chiavi API non ereditano ruoli di gruppo.
Quando utilizzare i gruppi
Sezione intitolata “Quando utilizzare i gruppi”| Scenario | Senza gruppi | Con gruppi |
|---|---|---|
| 5 ingegneri QA hanno bisogno di accesso al ruolo di sviluppatore per 3 app | 15 vincoli di ruolo individuali | 1 gruppo + 3 vincoli di ruolo |
| Qualcuno entra a far parte del team QA | Aggiungere 3 vincoli di ruolo manualmente | Aggiungerli al gruppo |
| Qualcuno lascia il team QA | Rimuovere 3 vincoli di ruolo manualmente | Rimuoverli dal gruppo |
Gestione dei gruppi tramite API
Sezione intitolata “Gestione dei gruppi tramite API”Tutti gli endpoint dei gruppi richiedono l'autenticazione e sono serviti sotto /private/groups.
Elenco dei gruppi
Sezione intitolata “Elenco dei gruppi”curl -X GET "https://api.capgo.app/private/groups/<ORG_ID>" \ -H "authorization: <API_KEY>"Richiede org.read_members permesso.
Crea un gruppo
Sezione intitolata “Crea un gruppo”curl -X POST "https://api.capgo.app/private/groups/<ORG_ID>" \ -H "authorization: <API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "name": "QA Team", "description": "Quality assurance engineers" }'Richiede org.update_user_roles permesso (Super Amministratore o context:HTML testo frammento da una stringa UI Capgo più lunga (chiave genitrice `alternatives_cta_questions`). Pagina/area: Pagina di confronto delle alternative di aggiornamento in tempo reale di Capacitor. Ruolo: Lungo paragrafo di marketing o legale. Visualizzato in: pagina alternatives.astro. Preservare esattamente i termini del prodotto e della marca Capgo e dei termini dei developer. Chiave del messaggio `alternatives_cta_questions` (Domande per l'azione di alternativa). | Testo frammento HTML da una stringa UI Capgo più lunga (chiave genitrice `appflow_cta_questions`). Pagina/area: Copia di marketing per il confronto e la migrazione di Appflow. Ruolo: Lungo paragrafo di marketing o legale. Visualizzato in: pagina ionic-appflow.astro. Preservare esattamente i termini del prodotto e della marca Capgo e dei termini dei developer. Chiave del messaggio `appflow_cta_questions` (Domande per l'azione di Appflow). | Testo frammento HTML da una stringa UI Capgo più lunga (chiave genitrice `capwesome_cta_questions`). Pagina/area: Pagina di confronto di Capawesome. Ruolo: Lungo paragrafo di marketing o legale. Visualizzato in: pagina capwesome.astro. Preservare esattamente i termini del prodotto e della marca Capgo e dei termini dei developer. Chiave del messaggio `capwesome_cta_questions` (Domande per l'azione di Capawesome). | Testo frammento HTML da una stringa UI Capgo più lunga (chiave genitrice `consulting_faq_subtitle`). Pagina/area: Pagina dei servizi di consulenza. Ruolo: Sottotitolo o didascalia di sezione. Visualizzato in: pagina consulting.astro. Preservare esattamente i termini del prodotto e della marca Capgo e dei termini dei developer. Chiave del messaggio `consulting_faq_subtitle` (Sottotitolo FAQ dei servizi di consulenza). | Pagina/area: Copia di marketing per il confronto e la migrazione di Appflow. Ruolo: Etichetta UI breve o elemento di navigazione. Visualizzato in: pagina ionic-appflow.astro, pagina ionic-enterprise-plugins.astro, pagina solutions/ionic-enterprise-plugins.astro. Chiave del messaggio `appflow_plugins_or` (Appflow Plugins o).).
Amministratore
Aggiorna un gruppocurl -X PUT "https://api.capgo.app/private/groups/<GROUP_ID>" \ -H "authorization: <API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "name": "QA Team", "description": "Updated description" }'Copia nel portale delle applicazioni
Cancella un gruppocurl -X DELETE "https://api.capgo.app/private/groups/<GROUP_ID>" \ -H "authorization: <API_KEY>"La cancellazione di un gruppo elimina anche tutti i relativi vincoli di ruolo. I membri non vengono eliminati dall'organizzazione.
Elenco membri del gruppo
Sezione intitolata “Elenco membri del gruppo”curl -X GET "https://api.capgo.app/private/groups/<GROUP_ID>/members" \ -H "authorization: <API_KEY>"Aggiungi un membro a un gruppo
Sezione intitolata “Aggiungi un membro a un gruppo”curl -X POST "https://api.capgo.app/private/groups/<GROUP_ID>/members" \ -H "authorization: <API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "user_id": "<USER_UUID>" }'L'utente deve già essere un membro dell'organizzazione. L'aggiunta di un membro esistente è un'operazione senza effetti.
Rimuovere un membro da un gruppo
Sezione intitolata “Rimuovere un membro da un gruppo”curl -X DELETE "https://api.capgo.app/private/groups/<GROUP_ID>/members/<USER_UUID>" \ -H "authorization: <API_KEY>"Assegnare ruoli tramite API
Sezione intitolata “Assegnare ruoli tramite API”Elenco membri
Sezione intitolata “Elenco membri”curl -X GET "https://api.capgo.app/organization/members" \ -H "authorization: <API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "orgId": "<ORG_ID>" }'Risposta:
[ { "uid": "user-uuid", "email": "alice@example.com", "image_url": "https://...", "role": "org_admin", "is_tmp": false }]Invita un membro
Sezione intitolata “Invita un membro”curl -X POST "https://api.capgo.app/organization/members" \ -H "authorization: <API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "orgId": "<ORG_ID>", "email": "bob@example.com", "invite_type": "org_admin" }'Valori accettati per invite_type:
| Valore | Ruolo assegnato |
|---|---|
org_super_admin | Amministratore Superiore |
org_admin | Amministratore |
org_billing_admin | Gestore fatturazione |
org_member | Membro |
Rimuovi un membro
Sezione intitolata “Rimuovi un membro”curl -X DELETE "https://api.capgo.app/organization/members" \ -H "authorization: <API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "orgId": "<ORG_ID>", "email": "bob@example.com" }'Assegnazione di ruoli tramite CLI
Sezione intitolata “Assegnazione di ruoli tramite CLI”Elenco organizzazioni
Sezione intitolata “Elenco organizzazioni”npx @capgo/cli organization list --apikey <API_KEY>Elenco membri
Sezione intitolata “Elenco membri”npx @capgo/cli organization members <ORG_ID> --apikey <API_KEY>Ruoli personalizzati
Sezione intitolata “Ruoli personalizzati”Il ruoli predefiniti coprono la struttura di squadra più comune. La creazione di ruoli personalizzati è nel nostro piano di lavoro — se questo è qualcosa che il tuo team ha bisogno di ContattaciIl tuo caso d'uso ci aiuterà a priorizzare questa funzionalità.
Continua da Access Control Reference
Sezione intitolata “Continua da Access Control Reference”Se stai utilizzando Access Control Reference per pianificare dashboard e operazioni di API, connettilo con API Overview per i dettagli di implementazione in API Overview Introduzione per i dettagli di implementazione in Introduzione API Keys per i dettagli di implementazione in API Chiavi, Dispositivi per i dettagli di implementazione in Dispositivi, e Bundle per i dettagli di implementazione in Bundle.