Управление ролями

Управление ролями пользователей осуществляется через коллекцию /api/roles, а также связанные с ним функции посредством /api/features.

Доступны полные действия CRUD над ролями:

  • запрос ролей;
  • создание ролей;
  • редактирование ролей;
  • удаление ролей.

Запрос ролей

Опрос всех ролей в Комплексе:

GET /api/roles

Получение подробной информации о конкретной роли:

GET /api/roles/:id

Получение подробной информации о конкретной роли, включая предоставленные права:

GET /api/roles/:id?expand=features

или с запросом прав, назначенных ролью:

GET /api/roles/:id/features?expand=resources

Запрос всех прав в Комплексе, которые можно назначить роли:

GET /api/features

Создание ролей

Роли можно создавать с помощью POST в коллекции ролей или с помощью действия create, которое также позволяет создавать несколько ролей в одном запросе:

POST /api/roles
{
 "action" : "create",
 "resource" : {
 "name" : "sample_role",
 "settings" : { "restrictions" : { "vms" : "user" } },
 "features" : [
 { "identifier" : "vm_explorer" },
 { "identifier" : "ems_infra_tag" },
 { "identifier" : "miq_report_run" }
 ]
 }
}

Примечание – restrictions для ВМ могут быть любыми из user или user_or_group.

Права могут быть указаны через identifier, href, id или создание нескольких ролей:

{
 "action" : "create",
 "resources" : [
 { "name" : "sample_role1", ... },
 { "name" : "sample_role2", ... },
 ...
 ]
}

Редактирование ролей

Редактирование единственной роли:

POST /api/roles/:id
{
 "action" : "edit",
 "resource" : {
 "name" : "updated_sample_role",
 "settings" : { "restrictions" : { "vms" : "user_or_group" } }
}

Редактирование нескольких ролей:

POST /api/roles
{
 "action" : "edit",
 "resources" : [
 {
 "href" : "http://localhost:3000/api/roles/101",
 "name" : "updated_sample_role1"
 },
 {
 "href" : "http://localhost:3000/api/roles/102",
 "name" : "updated_sample_role2"
 },
 ...
 ]
}

Назначение прав для роли:

POST /api/roles/:id/features
{
 "action" : "assign",
 "resource" : {
 "identifier" : "miq_request_view"
 }
}

Назначение прав для нескольких ролей:

{
"action" : "assign",
"resources" : [
{ "identifier" : "miq_request_view" },
{ "identifier" : "storage_manager_show_list" },
...
]
}

Отмена назначения прав для роли:

POST /api/roles/:id/features
{
"action" : "unassign",
"resource" : {
{ "identifier" : "miq_request_view" }
}
}

Отмена назначения прав для нескольких ролей:

{
"action" : "unassign",
"resources" : [
{ "identifier" : "miq_request_view" },
{ "identifier" : "storage_manager_show_list" },
...
]
}

Удаление ролей

Несистемные роли (т. е. не read_only) можно удалить либо с помощью действия delete POST, либо с помощью HTTP-метода DELETE соответственно:

POST /api/roles/101
{
"action" : "delete"
}

или

DELETE /api/roles/101

Удаление нескольких ролей можно выполнить следующим образом:

POST /api/roles
{
"action" : "delete",
"resources" : [
{ "href" : "http://localhost:3000/api/roles/101" },
{ "href" : "http://localhost:3000/api/roles/102" },
...
]
}