Symfony2 с FOSUserBundle: Доступ на основе групповых прав


Похоже, я не могу найти документацию о том, как использовать правила, связанные с fos_group для контроля доступа.
В этом проекте я хочу позже определить новые группы, которые используют предопределенные роли, такие как: ROLE_USER, ROLE_AMDIN и ROLE_SUPERAMDIN.
На каждой странице определено, что может или не может делать роль.

Обычно я использую функцию is_granted в twig для проверки ролей, но так как я хочу, чтобы система сначала проверила роли группы, и если у пользователя нет группа проверяет роли конкретных пользователей, чем я не смогу ее использовать.

Есть идеи о том, как добиться этого в Symfony2 с помощью групп FOSUserBundle?

Author: ekad, 2013-11-05

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);
 }
}
 2
Author: Akram, 2014-08-20 17:54:49