Управление правами доступа на примере шаблона
Ограничение доступа к приватным ресурсам очень важная возможность FastReport Corporate Server. Гибкая система доступа позволяет задать ограничение или выдать права на каждый ресурс отдельно, задавая круг лиц, которые могут получить доступ.
Приступая к работе
Вам понадобятся следующие инструменты и возможности:
Знания по использованию API key в FastReport Corporate Server.
В этой статье будет пропущена дополнительная информация по аутентификации и авторизации.
Инструмент curl.
Подойдёт любой другой REST клиент, но примеры будут построены для curl.
Шаблон отчёта.
О том, как загрузить шаблон отчёта, можно узнать в статье Загрузка нового шаблона.
Активная подписка для FastReport.Cloud.
Доступ в интернет.
Инструкция
Для просмотра текущих прав на ресурс выполните
GET
запрос наhttps://fastreport.cloud/api/rp/v1/Templates/File/{id}/permissions
, где вместо{id}
следует использовать идентификатор шаблона. пример запроса.Пример запроса.
curl -X GET "https://fastreport.cloud/api/rp/v1/Templates/File/5fc9ece6b792c90001d94b13/permissions" -H "accept: text/plain"
Пример ответа.
{ "permissions": { "ownerId": "5af5a8dc-8cb0-40f9-ac99-ca2533fa4491", "owner": { "create": "All", "delete": "All", "execute": "All", "get": "All", "update": "All", "administrate": "All" }, "groups": null, "other": { "create": "All", "delete": "All", "execute": "All", "get": "All", "update": "All", "administrate": "All" }, "anon": null } }
В этом примере владелец и остальные участники подписки имеют полный доступ к шаблону отчёта.
Для того чтобы изменить разрешения сделайте
POST
запрос наhttps://fastreport.cloud/api/rp/v1/Templates/File/{id}/permissions
, где вместо{id}
следует использовать идентификатор шаблона.Пример модели.
{ "newPermissions": { "ownerId": "5af5a8dc-8cb0-40f9-ac99-ca2533fa4491", "owner": { "create": -1, "delete": -1, "execute": -1, "get": -1, "update": 0, "administrate": -1 }, "other": { "create": 0, "delete": 0, "execute": 0, "get": 0, "update": 0, "administrate": 0 } }, "administrate": "Owner,Other" }
Обратите внимание! В запросе на обновление прав в свойстве
administrate
были переданы значенияOwner
иOther
, в этом случае будут обновлены только указанные категории прав, т.е.owner
иother
, а категорииanon
иgroups
изменены не будут.Пример запроса, который убирает у владельца право на обновление отчёта (например - редактирование в онлайн дизайнере), а также все права на файл у остальных участников подписки
curl -X POST "https://fastreport.cloud/api/rp/v1/Templates/File/5fc9ece6b792c90001d94b13/permissions" -H "accept: text/plain" -H "Content-Type: application/json-patch+json" -d "{ \"newPermissions\": { \"ownerId\": \"5af5a8dc-8cb0-40f9-ac99-ca2533fa4491\", \"owner\": { \"create\": -1, \"delete\": -1, \"execute\": -1, \"get\": -1, \"update\": 0, \"administrate\": -1 }, \"other\": { \"create\": 0, \"delete\": 0, \"execute\": 0, \"get\": 0, \"update\": 0, \"administrate\": 0 } }, \"administrate\": \"Owner,Other\"}
Пример ответа.
200 OK
Теперь можно снова запросить права, чтобы убедиться, что они действительно обновились.
Пример запроса.
curl -X GET "https://fastreport.cloud/api/rp/v1/Templates/File/5fc9ece6b792c90001d94b13/permissions" -H "accept: text/plain"
Пример ответа.
{ "permissions": { "ownerId": "2df79f83-07f1-41ba-96b5-7757bbf377df", "owner": { "create": "All", "delete": "All", "execute": "All", "get": "All", "update": "None", "administrate": "All" }, "groups": null, "other": { "create": "None", "delete": "None", "execute": "None", "get": "None", "update": "None", "administrate": "None" }, "anon": null } }