Существуют ли библиотеки/решения, обеспечивающие частичный доступ к ресурсу? Как называется такой контроль разрешения?Контроль частичного доступа для PHP
библиотеки Большинство ACL разрешают/отрицая действия полностью:
user.create user.update user.show
Но что, если там должно быть «частичное» разрешение. Что-то вроде:
- Вам разрешается только увидеть активные пользователей с ролью гостя или модератор.
- Вам разрешено редактировать пользователь с ролью дизайнера но только его телефоном и почты.
Первый пример может выглядеть следующим образом:
разрешение:
user.show
Привилегии:
status => active && role => guest || moderator
и второй:
разрешение:
user.edit
Привилегии:
editable => phone, mail
Update:
Чтобы сделать мой вопрос более четко, я добавил этот пример использования, чтобы показать, как (в моих идеях) это может выглядеть.
// global access
if($user->can('user.show')){
// get the privileges provided by the permissions
$filter = $user->getPrivilegesFor('user.show');
// use the privileges to filter the (database)query
// (using the example above the filter should restrict to active guests and moderators)
$result = $repo->getUsers($filter);
}else{
// access denied
}
// use the result to fill the view
Кажется, что я не привел хороший пример. Моя проблема заключается не в том, чтобы предоставить роль пользователю, я ищу библиотеку разрешений, которая допускает более дифференцированный подход, чем разрешение или отказ от действия. В моем примере есть разрешение, которое позволяет показывать пользователям, которые являются активными и принадлежат роли гостя или модератора. Там может быть другое разрешение, позволяющее видеть неактивных женщин-пользователей и т. Д. – user3333137