2013-06-03 3 views
1

У меня есть небольшая проблема с BjyAuthorize: я могу получить все роли пользователя, но я бы хотел только самый высокий.ZF2 BjyAuthorize получить максимальную роль пользователя

Например, если пользователь является администратором, я могу получить все его роли (гость, пользователь и админ), но хотел бы отобразить только администратора.

Кто-нибудь нашел решение для этого?

ответ

1

Вы должны определить, что вы имеете в виду с наивысшим. В случае наследования разрешений один из них без родителя имеет наименьшие разрешения. Но это работает только тогда, когда они связаны. Итак, если они связаны как admin ->user ->guest, где стрелка может быть прочитана как «наследует разрешения от», то очень вероятно (запретить правила, не учтенные), что у admin больше всего прав, поскольку у пользователя нет была назначена другая роль, которая наследуется от admin.

Когда f.e. admin наследует разрешение от user и guest вообще не связано с user или admin, то оно будет более сложным.

  • admin ->user

  • guest

Чтобы определить, какой из них имеет больше прав (называние роли очевидна, но не приложения), вы должны сравните разрешения guest с разрешениями admin.

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

+0

Я знаю, что я мог бы создать метод, чтобы найти роль без родителя, поскольку я использую наследование. Это сработало бы, но это было слишком сложно, как вы заметили. Будет ли BjyAuthorize работать, если я ставлю только одну роль для каждого пользователя? Самый высокий, очевидно. –

0

Я понимаю, что это старо, но в случае, если это полезно для всех: Если у вас есть роль пользователя и роль администратора, которая наследует разрешения от пользователя, вам не нужно давать кому-то, кто является администратором обеих ролей , просто роль администратора. Они также автоматически получат разрешения от группы пользователей; вот для чего это наследство.

 Смежные вопросы

  • Нет связанных вопросов^_^