Permissions - aix27249/agiliarepo GitHub Wiki
Права доступа (permissions)
Права доступа к объектам
Каждый объект, для которого могут быть ограничены права доступа, содержит в своей схеме структуру вида:
"permissions" : {
"read" : ["@everyone"],
"write" : ["@admins", "@maintainers"],
"admin" : ["@admins"],
"permission_name": ["@group1", "@group2", "user1", "user2"],
}
Для каждого действия определяются группы и пользователи, которые имеют право на данное действие. Имена групп начинаются с символа @.
Наследование прав
В случае, если объект логически является членом другого объекта (например, версия ОС внутри репозитория), права наследуются от родительского элемента. Право доступа к любому действию может быть переопределено в дочернем элементе. Например:
repository: {
"name": "master",
"owner": "some_user",
"permissions" : {
"read" : ["@everyone"],
"write" : ["@maintainers"],
"admin" : ["@admins"],
"permission_name": ["@group1", "@group2", "user1", "user2"],
},
"osversions": [
{name: "9.0"},
{name: "8.1", permissions: {write: ["@admins"], admin: ["@admins"]}}
]
}
В таком случае, 9.0 будет иметь такие же права, как и во всем репозитории, а у 8.1 права на write и admin имеет только группа @admins.
Специальные группы
Есть несколько специальных групп:
- Группа @everyone обозначает любых пользователей, включая незарегистрированных.
- Группа @admins имеет неограниченные права: все члены этой группы имеют право на любое действие, даже если данная группа явно не указана среди обладателей права.
Владелец
Для объекта может быть определен владелец ("owner"). В качестве владельца может быть указан как конкретный пользователь, так и группа. Владелец обладает неограниченными правами доступа к объекту, наравне с членами группы @admins.
Права доступа к функциям (комплексные действия)
Некоторые действия (например, создание ISO-образов) не ассоциированы с объектами напрямую. В таком случае, проверяется наличие права на данное действие у пользователя, его запросившего.
Права могут быть присвоены как пользователям по отдельности, так и группам. Такие права суммируются: так, если пользователь состоит в нескольких группах, то он обладает правами, которые имеют в сумме обе группы. Кроме того, права пользователя дополняют права групп, в которых он состоит.
Схема прав пользователей и групп
У объекта пользователя или группы набор прав определяется следующей схемой:
permissions: ["permission1", "permission2"]