Разрешения cakePHP с использованием ACL и проверки user_id в модели

У меня работает приложение cakePHP с включенными разрешениями acl. Я разрешил группе пользователей получить доступ ко всем действиям на одном из моих контроллеров, но иногда я хочу иметь возможность запретить доступ, если их идентификатор пользователя не соответствует значению идентификатора пользователя в модели, к которой они пытаются получить доступ или на основании каких-то других произвольных критериев.

Итак ... Каков обычный способ запретить пользователям доступ к действиям, когда пользователь уже имеет доступ к действию из компонента ACL?


person Devin Crossman    schedule 11.08.2013    source источник


Ответы (1)


TL; DR: не используйте ACL. (Это, скорее всего, излишество и не кажется идеальным для вашего проекта).

Есть много вариантов, в зависимости от вашей ситуации, но все сводится к созданию метода, который проверяет, есть ли у них разрешение присутствовать / делать это.

Будь то метод в контроллере, модели или поведение, которое можно использовать во всех моделях ... и т. Д.

Из вашего описания я предполагаю, что идеальным способом было бы создать Behavior с помощью метода hasAccess или чего-то подобного. Затем в «некоторых действиях», где вы хотите ограничить доступ, запустите метод - примерно так:

if(!$this->MyModel->hasAccess($userId)) $this->redirect('/');
person Dave    schedule 11.08.2013