2016-05-17 5 views
2

Существуют ли библиотеки/решения, обеспечивающие частичный доступ к ресурсу? Как называется такой контроль разрешения?Контроль частичного доступа для PHP

библиотеки Большинство ACL разрешают/отрицая действия полностью:

user.create user.update user.show

Но что, если там должно быть «частичное» разрешение. Что-то вроде:

  1. Вам разрешается только увидеть активные пользователей с ролью гостя или модератор.
  2. Вам разрешено редактировать пользователь с ролью дизайнера но только его телефоном и почты.

Первый пример может выглядеть следующим образом:

разрешение:

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 

ответ

0

Насколько я знаю в большинстве библиотек, у вас есть возможность расширить класс. Таким образом, вы можете расширить пользователя класса, например

class myuser extends user{ 

Таким образом вы можете предоставить любую роль или разрешение, которое вы хотите для гостей или модераторов. Вы можете использовать Codeigniter, Zend и множество других хороших фреймворков.

+0

Кажется, что я не привел хороший пример. Моя проблема заключается не в том, чтобы предоставить роль пользователю, я ищу библиотеку разрешений, которая допускает более дифференцированный подход, чем разрешение или отказ от действия. В моем примере есть разрешение, которое позволяет показывать пользователям, которые являются активными и принадлежат роли гостя или модератора. Там может быть другое разрешение, позволяющее видеть неактивных женщин-пользователей и т. Д. – user3333137

0

С Zend Framework 2 у вас будет ZfcUser модуль, который может быть связан с модулем bjyauthorize. И у вас будет то, что вам нужно с некоторой конфигурацией.

+0

Пока не использовали Zend 2, но этот модуль выглядит более многообещающим, чем основной Zend ACL. Имейте в виду, если это решает мою проблему. – user3333137

+0

Вы можете определить мелкозернистые разрешения для пользователей и содержимого, которое вам необходимо предоставить. Это очень удобно для работы. – ThierryB