Symfony2 с FOSUserBundle: Доступ на основе групповых прав
Похоже, я не могу найти документацию о том, как использовать правила, связанные с fos_group для контроля доступа.
В этом проекте я хочу позже определить новые группы, которые используют предопределенные роли, такие как: ROLE_USER, ROLE_AMDIN и ROLE_SUPERAMDIN.
На каждой странице определено, что может или не может делать роль.
Обычно я использую функцию is_granted в twig для проверки ролей, но так как я хочу, чтобы система сначала проверила роли группы, и если у пользователя нет группа проверяет роли конкретных пользователей, чем я не смогу ее использовать.
Есть идеи о том, как добиться этого в Symfony2 с помощью групп FOSUserBundle?
1 answers
Я пытался сделать такую работу. Вот что я нашел: объединение ролей группы с ролями пользователей по умолчанию путем переопределения метода getRoles. Я надеюсь, что это кому-нибудь поможет.
class Users extends BaseUser
{
[...]
public function getRoles()
{
$roles = $this->roles;
foreach ($this->getGroups() as $group) {
$roles = array_merge($roles, $group->getRoles());
}
// we need to make sure to have at least one role
$roles[] = static::ROLE_DEFAULT;
return array_unique($roles);
}
}