Récupérer, créer, mettre à jour et supprimer des rôles d'utilisateur personnalisés avec des autorisations granulaires.
Rôles Personnalisés
Les rôles personnalisés dans Blue vous permettent de définir des ensembles d'autorisations précis adaptés aux besoins de votre équipe. Au-delà des niveaux d'accès standard (PROPRIÉTAIRE, ADMIN, MEMBRE, etc.), les rôles personnalisés offrent un contrôle granulaire sur ce que les utilisateurs peuvent voir et faire au sein des projets.
Exemple de Base - Lister les Rôles Personnalisés
Récupérer tous les rôles personnalisés pour un projet :
query GetProjectRoles {
projectUserRoles(filter: { projectId: "web-redesign" }) {
id
name
description
allowInviteOthers
canDeleteRecords
}
}
Exemple Avancé - Créer un Rôle Personnalisé
Créer un rôle de contracteur avec des autorisations spécifiques :
mutation CreateContractorRole {
createProjectUserRole(
input: {
projectId: "web-redesign"
name: "External Contractor"
description: "Limited access for external contractors"
allowInviteOthers: false
allowMarkRecordsAsDone: true
canDeleteRecords: false
showOnlyAssignedTodos: true
isActivityEnabled: true
isFormsEnabled: false
isWikiEnabled: true
isChatEnabled: false
isDocsEnabled: true
isFilesEnabled: true
isRecordsEnabled: true
isPeopleEnabled: false
}
) {
id
name
}
}
Opérations Disponibles
Requête : projectUserRoles
Récupérer tous les rôles personnalisés pour un projet.
Paramètres d'Entrée
Paramètre | Type | Requis | Description |
---|---|---|---|
filter.projectId |
String | Non | ID ou slug du projet (si non fourni, retourne les rôles pour tous les projets accessibles) |
Mutation : createProjectUserRole
Créer un nouveau rôle personnalisé avec des autorisations spécifiques.
Paramètres d'Entrée
Paramètre | Type | Requis | Description |
---|---|---|---|
projectId |
String! | ✅ Oui | ID ou slug du projet |
name |
String! | ✅ Oui | Nom du rôle |
description |
String | Non | Description du rôle |
Permission Flags | |||
allowInviteOthers |
Boolean | Non | Peut inviter de nouveaux utilisateurs (par défaut : faux) |
allowMarkRecordsAsDone |
Boolean | Non | Peut compléter des tâches (par défaut : faux) |
canDeleteRecords |
Boolean | Non | Peut supprimer des enregistrements (par défaut : vrai) |
Feature Access | |||
isActivityEnabled |
Boolean | Non | Accès à la section Activité (par défaut : vrai) |
isChatEnabled |
Boolean | Non | Accès au Chat (par défaut : vrai) |
isDocsEnabled |
Boolean | Non | Accès aux Docs (par défaut : vrai) |
isFilesEnabled |
Boolean | Non | Accès aux Fichiers (par défaut : vrai) |
isFormsEnabled |
Boolean | Non | Accès aux Formulaires (par défaut : vrai) |
isWikiEnabled |
Boolean | Non | Accès au Wiki (par défaut : vrai) |
isRecordsEnabled |
Boolean | Non | Accès aux Enregistrements (par défaut : vrai) |
isPeopleEnabled |
Boolean | Non | Accès à la section Personnes (par défaut : vrai) |
Visibility Settings | |||
showOnlyAssignedTodos |
Boolean | Non | Voir uniquement les tâches assignées (par défaut : faux) |
showOnlyMentionedComments |
Boolean | Non | Voir uniquement les commentaires mentionnés (par défaut : faux) |
Mutation : updateProjectUserRole
Mettre à jour un rôle personnalisé existant.
Paramètres d'Entrée
Identique à createProjectUserRole
, plus :
Paramètre | Type | Requis | Description |
---|---|---|---|
roleId |
String! | ✅ Oui | ID du rôle à mettre à jour |
Mutation : deleteProjectUserRole
Supprimer un rôle personnalisé.
Paramètres d'Entrée
Paramètre | Type | Requis | Description |
---|---|---|---|
roleId |
String! | ✅ Oui | ID du rôle à supprimer |
projectId |
String! | ✅ Oui | ID ou slug du projet |
Champs de Réponse
Objet ProjectUserRole
Champ | Type | Description |
---|---|---|
id |
String! | Identifiant unique du rôle |
name |
String! | Nom du rôle |
description |
String | Description du rôle |
createdAt |
DateTime! | Horodatage de création |
updatedAt |
DateTime! | Horodatage de la dernière mise à jour |
Permissions | ||
allowInviteOthers |
Boolean! | Peut inviter des utilisateurs |
allowMarkRecordsAsDone |
Boolean! | Peut compléter des tâches |
canDeleteRecords |
Boolean! | Peut supprimer des enregistrements |
Feature Flags | ||
isActivityEnabled |
Boolean! | Accès à la section Activité |
isChatEnabled |
Boolean! | Accès au Chat |
isDocsEnabled |
Boolean! | Accès aux Docs |
isFilesEnabled |
Boolean! | Accès aux Fichiers |
isFormsEnabled |
Boolean! | Accès aux Formulaires |
isWikiEnabled |
Boolean! | Accès au Wiki |
isRecordsEnabled |
Boolean! | Accès aux Enregistrements |
isPeopleEnabled |
Boolean! | Accès à la section Personnes |
Visibility | ||
showOnlyAssignedTodos |
Boolean! | Filtre de visibilité des tâches |
showOnlyMentionedComments |
Boolean! | Filtre de visibilité des commentaires |
Permissions Requises
Opération | Permission Requise |
---|---|
projectUserRoles |
Any project member |
createProjectUserRole |
Project OWNER or ADMIN |
updateProjectUserRole |
Project OWNER or ADMIN |
deleteProjectUserRole |
Project OWNER or ADMIN |
Réponses d'Erreur
Permissions Insuffisantes
{
"errors": [{
"message": "You don't have permission to manage custom roles",
"extensions": {
"code": "UNAUTHORIZED"
}
}]
}
Rôle Non Trouvé
{
"errors": [{
"message": "Custom role not found",
"extensions": {
"code": "PROJECT_USER_ROLE_NOT_FOUND"
}
}]
}
Limite de Rôle Atteinte
{
"errors": [{
"message": "Project user role limit reached.",
"extensions": {
"code": "PROJECT_USER_ROLE_LIMIT"
}
}]
}
Notes Importantes
- Permissions par Défaut : Lors de la création de rôles, les permissions booléennes non spécifiées sont par défaut à faux sauf pour
canDeleteRecords
qui est par défaut à vrai - Attribution de Rôle : Attribuez des rôles personnalisés en définissant
accessLevel: MEMBER
et en fournissant leroleId
dans la mutationinviteUser
- Hiérarchie : Les rôles personnalisés sont traités comme des rôles de niveau MEMBRE à des fins de hiérarchie
- Limites de Rôle : Chaque projet peut avoir un maximum de 20 rôles personnalisés
- Accès aux Fonctionnalités : Les drapeaux de fonctionnalités contrôlent l'accès à des sections entières de l'application
Cas d'Utilisation
Rôle de Contracteur
{
name: "Contractor",
allowInviteOthers: false,
canDeleteRecords: false,
showOnlyAssignedTodos: true,
isActivityEnabled: true,
isChatEnabled: false,
isPeopleEnabled: false
}
Responsable de Département
{
name: "Department Lead",
allowInviteOthers: true,
allowMarkRecordsAsDone: true,
canDeleteRecords: true,
isActivityEnabled: true,
isWikiEnabled: true,
isPeopleEnabled: true
}
Observateur en Lecture Seule
{
name: "Observer",
allowMarkRecordsAsDone: false,
canDeleteRecords: false,
allowInviteOthers: false,
showOnlyMentionedComments: true,
isFormsEnabled: false
}
Opérations Associées
- Inviter un Utilisateur - Attribuer des rôles personnalisés aux utilisateurs
- Lister les Utilisateurs - Voir les utilisateurs et leurs rôles
- Supprimer un Utilisateur - Retirer des utilisateurs des projets