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);
 }
}
Другие вопросы по тегам