Symfony2 с FOSUserBundle: доступ основан на правах группы
Я не могу найти документацию о том, как использовать правила, которые связаны с fos_group для контроля доступа.
В этом проекте я хочу иметь возможность определять новые группы, которые используют предопределенные роли, такие как: ROLE_USER, ROLE_AMDIN и ROLE_SUPERAMDIN.
На каждой странице определяется, что роль может или не может сделать.
Обычно я использую функцию is_granted в twig для проверки ролей, но так как я хочу, чтобы система сначала проверяла роли группы, а если у пользователя нет группы, проверяйте роли, специфичные для пользователя, я не смогу ее использовать.,
Любые идеи о том, как добиться этого в Symfony2 с группами FOSUserBundle?
1 ответ
Я пытался сделать такую работу. Вот что я обнаружил: объединение групповых ролей с ролями пользователей по умолчанию путем переопределения метода 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);
}
}