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 le roleId dans la mutation inviteUser
  • 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

Assistant IA

Les réponses sont générées par l'IA et peuvent contenir des erreurs.

Comment puis-je vous aider ?

Posez-moi toutes vos questions sur Blue ou cette documentation.

Entrez pour envoyer • Maj+Entrée pour une nouvelle ligne • ⌘I pour ouvrir