Получение, создание, обновление и удаление пользовательских ролей с детализированными разрешениями.
Пользовательские роли
Пользовательские роли в Blue позволяют вам определять точные наборы разрешений, адаптированные к потребностям вашей команды. Помимо стандартных уровней доступа (ВЛАДЕЛЕЦ, АДМИН, УЧАСТНИК и т.д.), пользовательские роли предоставляют детализированный контроль над тем, что пользователи могут видеть и делать в рамках проектов.
Простой пример - Список пользовательских ролей
Получите все пользовательские роли для проекта:
query GetProjectRoles {
projectUserRoles(filter: { projectId: "web-redesign" }) {
id
name
description
allowInviteOthers
canDeleteRecords
}
}
Расширенный пример - Создание пользовательской роли
Создайте роль подрядчика с конкретными разрешениями:
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
}
}
Доступные операции
Запрос: projectUserRoles
Получите все пользовательские роли для проекта.
Входные параметры
Параметр | Тип | Обязательный | Описание |
---|---|---|---|
filter.projectId |
String | Нет | Идентификатор проекта или его слаг (если не предоставлен, возвращает роли для всех доступных проектов) |
Мутация: createProjectUserRole
Создайте новую пользовательскую роль с конкретными разрешениями.
Входные параметры
Параметр | Тип | Обязательный | Описание |
---|---|---|---|
projectId |
String! | ✅ Да | Идентификатор проекта или его слаг |
name |
String! | ✅ Да | Название роли |
description |
String | Нет | Описание роли |
Permission Flags | |||
allowInviteOthers |
Boolean | Нет | Может приглашать новых пользователей (по умолчанию: ложь) |
allowMarkRecordsAsDone |
Boolean | Нет | Может выполнять задачи (по умолчанию: ложь) |
canDeleteRecords |
Boolean | Нет | Может удалять записи (по умолчанию: истина) |
Feature Access | |||
isActivityEnabled |
Boolean | Нет | Доступ к разделу "Активность" (по умолчанию: истина) |
isChatEnabled |
Boolean | Нет | Доступ к чату (по умолчанию: истина) |
isDocsEnabled |
Boolean | Нет | Доступ к документам (по умолчанию: истина) |
isFilesEnabled |
Boolean | Нет | Доступ к файлам (по умолчанию: истина) |
isFormsEnabled |
Boolean | Нет | Доступ к формам (по умолчанию: истина) |
isWikiEnabled |
Boolean | Нет | Доступ к вики (по умолчанию: истина) |
isRecordsEnabled |
Boolean | Нет | Доступ к записям (по умолчанию: истина) |
isPeopleEnabled |
Boolean | Нет | Доступ к разделу "Люди" (по умолчанию: истина) |
Visibility Settings | |||
showOnlyAssignedTodos |
Boolean | Нет | Видеть только назначенные задачи (по умолчанию: ложь) |
showOnlyMentionedComments |
Boolean | Нет | Видеть только упомянутые комментарии (по умолчанию: ложь) |
Мутация: updateProjectUserRole
Обновите существующую пользовательскую роль.
Входные параметры
То же самое, что и createProjectUserRole
, плюс:
Параметр | Тип | Обязательный | Описание |
---|---|---|---|
roleId |
String! | ✅ Да | Идентификатор роли для обновления |
Мутация: deleteProjectUserRole
Удалите пользовательскую роль.
Входные параметры
Параметр | Тип | Обязательный | Описание |
---|---|---|---|
roleId |
String! | ✅ Да | Идентификатор роли для удаления |
projectId |
String! | ✅ Да | Идентификатор проекта или его слаг |
Поля ответа
Объект ProjectUserRole
Поле | Тип | Описание |
---|---|---|
id |
String! | Уникальный идентификатор роли |
name |
String! | Название роли |
description |
String | Описание роли |
createdAt |
DateTime! | Время создания |
updatedAt |
DateTime! | Время последнего обновления |
Permissions | ||
allowInviteOthers |
Boolean! | Может приглашать пользователей |
allowMarkRecordsAsDone |
Boolean! | Может выполнять задачи |
canDeleteRecords |
Boolean! | Может удалять записи |
Feature Flags | ||
isActivityEnabled |
Boolean! | Доступ к разделу "Активность" |
isChatEnabled |
Boolean! | Доступ к чату |
isDocsEnabled |
Boolean! | Доступ к документам |
isFilesEnabled |
Boolean! | Доступ к файлам |
isFormsEnabled |
Boolean! | Доступ к формам |
isWikiEnabled |
Boolean! | Доступ к вики |
isRecordsEnabled |
Boolean! | Доступ к записям |
isPeopleEnabled |
Boolean! | Доступ к разделу "Люди" |
Visibility | ||
showOnlyAssignedTodos |
Boolean! | Фильтр видимости задач |
showOnlyMentionedComments |
Boolean! | Фильтр видимости комментариев |
Необходимые разрешения
Операция | Необходимое разрешение |
---|---|
projectUserRoles |
Any project member |
createProjectUserRole |
Project OWNER or ADMIN |
updateProjectUserRole |
Project OWNER or ADMIN |
deleteProjectUserRole |
Project OWNER or ADMIN |
Ответы об ошибках
Недостаточно разрешений
{
"errors": [{
"message": "You don't have permission to manage custom roles",
"extensions": {
"code": "UNAUTHORIZED"
}
}]
}
Роль не найдена
{
"errors": [{
"message": "Custom role not found",
"extensions": {
"code": "PROJECT_USER_ROLE_NOT_FOUND"
}
}]
}
Достигнут лимит ролей
{
"errors": [{
"message": "Project user role limit reached.",
"extensions": {
"code": "PROJECT_USER_ROLE_LIMIT"
}
}]
}
Важные заметки
- Стандартные разрешения: При создании ролей неуказанные булевы разрешения по умолчанию равны ложь, за исключением
canDeleteRecords
, которое по умолчанию равно истина - Назначение ролей: Назначайте пользовательские роли, устанавливая
accessLevel: MEMBER
и предоставляяroleId
в мутацииinviteUser
- Иерархия: Пользовательские роли рассматриваются как роли уровня УЧАСТНИК для целей иерархии
- Лимиты ролей: В каждом проекте может быть максимум 20 пользовательских ролей
- Доступ к функциям: Флаги функций контролируют доступ ко всем разделам приложения
Сценарии использования
Роль подрядчика
{
name: "Contractor",
allowInviteOthers: false,
canDeleteRecords: false,
showOnlyAssignedTodos: true,
isActivityEnabled: true,
isChatEnabled: false,
isPeopleEnabled: false
}
Руководитель отдела
{
name: "Department Lead",
allowInviteOthers: true,
allowMarkRecordsAsDone: true,
canDeleteRecords: true,
isActivityEnabled: true,
isWikiEnabled: true,
isPeopleEnabled: true
}
Наблюдатель только для чтения
{
name: "Observer",
allowMarkRecordsAsDone: false,
canDeleteRecords: false,
allowInviteOthers: false,
showOnlyMentionedComments: true,
isFormsEnabled: false
}
Связанные операции
- Пригласить пользователя - Назначить пользовательские роли пользователям
- Список пользователей - Просмотр пользователей и их ролей
- Удалить пользователя - Удалить пользователей из проектов