Aller directement au contenu

Référence du contrôle d'accès

Capgo uses Includes install, sync, and the source markdown guide. Gérer ce que chaque membre de l'équipe peut faire. Les rôles sont organisés par portée — de l'ensemble de l'organisation jusqu'à un seul paquet.

Pour une présentation visuelle de la gestion des membres dans le tableau de bord, voir Gestion de l'organisation.


Chaque rôle appartient à une portée qui détermine à quelles ressources il accorde accès.

PortéeS'applique àExemple d'utilisation
Gestion de l'organisationL'ensemble de l'organisation et tous ses applicationsVotre co-fondateur obtient Super Administrateur ; votre comptable obtient Gestionnaire de facturation
ApplicationUne seule application et ses canauxUn prestataire travaillant sur une application obtient Développeur d'application
CanauxUn seul canal au sein d'une applicationUn ingénieur QA ne gère que le staging canal
BundleUne version de bundle uniqueUn réviseur a besoin d'accès en lecture à une version spécifique de release

Un membre peut détenir un rôle par cible de portée — par exemple, un rôle d'organisation, un rôle sur l'application A, et un rôle différent sur l'application B.


Ces rôles sont attribués lors de l'invitation d'un membre. Ils accordent accès à l'ensemble de l'organisation.

RôleNom interneDescription
Administrateur supérieurorg_super_adminÉquivalent propriétaire. Contrôle total y compris la suppression de l'org, la gestion des factures et le transfert d'applications. Attribué automatiquement au créateur de l'org.
— for example, one org role, one role on App A, and a different role on App B.org_adminAdministration complète — gérer les membres, les applications, les canaux. Impossible de supprimer l'organisation, de mettre à jour les factures, de transférer les applications ou de promouvoir les utilisateurs en Super Administrateur.
Gestionnaire de facturesorg_billing_adminAccès factures uniquement : afficher et mettre à jour les informations de facturation, les factures et les journaux de comptes de facturation. Pas d'accès aux applications ou aux membres.
Membreorg_memberAccès en lecture seule à l'organisation et à toutes ses applications.
PermissionDescriptionSuper AdministrateurAdministrateurGestionnaire de facturesMembre
org.readVoir l'organisation
org.update_settingsModifier le nom, le logo et l'adresse e-mail de gestion de l'organisation
org.deleteSupprimer définitivement l'organisation
org.read_membersVoir la liste des membres
org.invite_userInviter de nouveaux membres
org.update_user_rolesChanger les rôles des membres (un administrateur ne peut pas promouvoir un super administrateur — bloqué par la hiérarchie des rôles)
org.read_billingVoir les informations de facturation et le plan actuel
org.update_billingMettre à jour le moyen de paiement et le plan
org.read_invoicesVoir les factures
org.read_auditVoir le journal d'activité de l'organisation
org.read_billing_auditVoir le journal d'audit spécifique à la facturation

Limités à une seule application. Utilisez-les lorsque l'un de vos membres d'équipe devrait travailler uniquement sur une application, et non sur toute l'organisation.

Rôle__CAPGO_KEEP_0__Description
Administrateur d'applicationapp_adminContrôle total d'une application — canaux, appareils, rôles d'utilisateur pour l'application. Impossible de supprimer ou de transférer l'application (ce sont des opérations au niveau de l'organisation).
Développeur d'applicationapp_developerCharger des bundles, gérer des appareils, déclencher des builds natifs, mettre à jour les paramètres de canal. Pas de suppression, pas de modifications des paramètres d'application, pas de création de canal.
Téléchargeur d'applicationapp_uploaderAccès en lecture + télécharger de nouvelles versions de bundles.
Lecteur d'applicationapp_readerAccès en lecture uniquement — statistiques, bundles, canaux, journaux, appareils.

Matrice de permissions d'application

Matrice de permissions d'application
PermissionDescriptionAdministrateur d'applicationDéveloppeur d'applicationChargeur d'applicationLecteur d'application
app.readAfficher les détails de l'application, les statistiques et les métadonnées
app.update_settingsÉditer les paramètres de l'application
app.read_bundlesAfficher la liste des ensembles de fichiers chargés
app.upload_bundleCharger une nouvelle version de l'ensemble de fichiers
app.create_channelCréer un nouveau canal
app.read_channelsAfficher les canaux
app.read_logsAfficher les journaux de livraison de mise à jour
app.manage_devicesAttribuer, surcharger ou délier les appareils
app.read_devicesAfficher la liste des appareils
app.build_nativeDéclencher une construction cloud native
app.read_auditAfficher le journal d'activité au niveau de l'application
app.update_user_rolesGérer les affectations de rôle scoping de l'application
bundle.deleteSupprimer un bundle

Limités à un seul canal. Utile pour donner un accès ciblé à un canal de version spécifique.

RôleNom interneDescription
Administrateur de canalchannel_adminContrôle total d'un canal : paramètres, promotion/retour en arrière des lots, gestion des appareils forcés.
Voyeur de canalchannel_readerLecture seule — lot actuel, historique, appareils forcés, journal d'audit.
PermissionDescriptionAdministrateur de canalVoyant de canal
channel.readAfficher le canal et son bundle actuel
channel.update_settingsÉditer les paramètres du canal (tournis de plateforme, politique de mise à jour…)
channel.deleteSupprimer le canal
channel.read_historyAfficher l'historique d'affectation de bundle
channel.promote_bundleDéfinir le bundle actif sur le canal
channel.rollback_bundleRevenir à un bundle précédent
channel.manage_forced_devicesForcer des appareils spécifiques à ce canal
channel.read_forced_devicesAfficher la liste des appareils forcés
channel.read_auditAfficher le journal d'activité du canal

Limité à une version de paquet unique. Rarement nécessaire — la plupart des équipes utilisent des rôles d'application au lieu de ceux-ci.

RôleNom interneDescription
Administrateur de paquetbundle_adminLecture, mise à jour des métadonnées et suppression d'un paquet spécifique.
Afficheur de Bundlebundle_readerAccès en lecture seule à un bundle spécifique.

Par défaut, l'accès au canal est déterminé par le rôle de l'application de l'utilisateur dans le tableau de bord. Pour un contrôle plus granulaire, vous pouvez surpasser les permissions de canal spécifiques par utilisateur ou groupe sans modifier leur rôle d'application.

Les survol sont configurés à partir de l'onglet Accès du tableau de bord en cliquant sur le bouton de permissions de canal (icône bouclier) à côté d'un utilisateur. Voir Organisation — Survol des permissions de canal pour une présentation visuelle.

AutorisationDescriptionComportement par défaut
LectureAfficher le canal et son bundle actuelHérité du rôle d'application
HistoriqueAfficher l'historique des affectations de bundleHérité du rôle d'application
Associer un bundleDéfinir ou modifier le bundle actif sur le canalHérité du rôle d'application

Chaque permission peut être définie sur :

  • Par défaut — hériter du rôle d'application par défaut (la valeur par défaut)
  • Autoriser — accorder explicitement, en fonction du rôle d'application
  • Interdire — bloquer explicitement, en fonction du rôle d'application

Cela vous permet, par exemple, de donner à un Lecteur d'application la possibilité de lier des bundles sur le staging canal sans les promouvoir en Développeur d'application.


Les rôles forment une hiérarchie. Un rôle parent hérite de toutes les permissions de ses enfants. Cela signifie que org_admin peut faire tout ce que app_admin peut faire, qui à son tour peut faire tout ce que channel_admin peut faire, et ainsi de suite.

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)

Comment ça marche en pratique :

  • Un Administrateur au niveau de l'org peut faire tout ce que Admin d'application peut faire tout sur chaque application de l'organisation.
  • Un Admin d'application sur une application spécifique peut faire tout ce que peut faire un Admin de canal peut faire tout sur chaque canal de cette application. Un
  • Développeur d'application peut faire tout ce que peut faire un Chargeur d'application et encore plus. __CAPGO_KEEP_0__

La hiérarchie ne s'écoule que vers le bas en descendant — un channel_admin jamais obtient des permissions d'org niveau, même si elle détient également un rôle d'application.


Au lieu d'attribuer des rôles à chaque utilisateur individuellement, vous pouvez créer des groupes et attribuer des rôles au groupe. Chaque membre du groupe hérite automatiquement de ces rôles. Comment fonctionnent les groupes Section intitulée « Comment fonctionnent les groupes »

  • Section intitulée « Un groupe appartient à » une organisation — elle ne peut pas couvrir plusieurs organisations.
  • Les groupes peuvent détenir des liaisons de rôle à niveau de portée quelconque: organisation, application, canal ou ensemble. Par exemple, un groupe peut être attribué le rôle d'App Developer sur l'application A et le rôle de Channel Admin sur le canal de l'application B. staging Lorsque les permissions d'un utilisateur sont évaluées, toutes ses adhésions de groupe sont résolues de manière transparente. Si l'un de ses groupes accorde la permission requise, l'accès est autorisé.
  • Un utilisateur peut appartenir à
  • __CAPGO_KEEP_0__ groupes multiples, et les permissions de tous les groupes sont additives.
  • Les permissions basées sur les groupes ne s'appliquent qu'à principaux d'utilisateurs — les clés API ne héritent pas des rôles de groupe.
ScénarioSans groupesAvec groupes
5 ingénieurs QA ont besoin d'accès Développeur à 3 applications15 liaisons de rôle individuelles1 groupe + 3 liens de rôle
Quelqu'un rejoint l'équipe QAAjouter 3 liens de rôle manuellementAjouter-les au groupe
Quelqu'un quitte l'équipe QASupprimer 3 liens de rôle manuellementLes retirer du groupe

Tous les points de terminaison de groupe nécessitent une authentification et sont servis sous /private/groups.

Fenêtre de terminal
curl -X GET "https://api.capgo.app/private/groups/<ORG_ID>" \
-H "authorization: <API_KEY>"

Exige org.read_members une autorisation.

Fenêtre de terminal
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"
}'

Exige org.update_user_roles une autorisation (Administrateur supérieur ou Admin).

Fenêtre de terminal
curl -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"
}'
Fenêtre de terminal
curl -X DELETE "https://api.capgo.app/private/groups/<GROUP_ID>" \
-H "authorization: <API_KEY>"

La suppression d'un groupe supprime également toutes ses liaisons de rôle. Les membres ne sont pas supprimés de l'organisation.

Fenêtre de terminal
curl -X GET "https://api.capgo.app/private/groups/<GROUP_ID>/members" \
-H "authorization: <API_KEY>"
Fenêtre de terminal
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'utilisateur doit déjà être membre de l'organisation. L'ajout d'un membre existant est une opération sans effet.

Fenêtre de terminal
curl -X DELETE "https://api.capgo.app/private/groups/<GROUP_ID>/members/<USER_UUID>" \
-H "authorization: <API_KEY>"

Fenêtre de terminal
curl -X GET "https://api.capgo.app/organization/members" \
-H "authorization: <API_KEY>" \
-H "Content-Type: application/json" \
-d '{ "orgId": "<ORG_ID>" }'

Réponse :

[
{
"uid": "user-uuid",
"email": "alice@example.com",
"image_url": "https://...",
"role": "org_admin",
"is_tmp": false
}
]
Fenêtre de terminal
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"
}'

Valeurs acceptées pour invite_type:

ValeurRôle attribué
org_super_adminAdministrateur principal
org_adminAdministrateur
org_billing_adminGestionnaire des factures
org_memberMembre
Fenêtre de terminal
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"
}'

Fenêtre de terminal
npx @capgo/cli organization list --apikey <API_KEY>
Fenêtre de terminal
npx @capgo/cli organization members <ORG_ID> --apikey <API_KEY>

Les rôles intégrés couvrent la plupart des structures d'équipe. La création de rôles personnalisés est prévue dans notre roadmap — si cela est quelque chose dont votre équipe a besoin, nous contacterVotre cas d'utilisation aidera directement à nous prioriser cette fonctionnalité.