Quber
@Quber
PHP Team lead

Как назначить пользователю права на доступ к фукнции в symfony 2 (is_granted)?

Взял функцию, согласно документации symfony.com/doc/current/bundles/SensioFrameworkExt...
/**
 * @Security("is_granted('POST_SHOW', post)")
 */
public function showAction(Post $post)
{
    // somethings
}

Не могу понять как пользователю дать эти самые права POST_SHOW для того, чтобы он мог воспользоваться функцией ниже. Помогите.
  • Вопрос задан
  • 2503 просмотра
Решения вопроса 2
@neolink
Тут как минимум 2 варианта:
Вы можете использовать Acl - symfony.com/doc/current/cookbook/security/acl.html
Либо создать свой Voter - symfony.com/doc/current/cookbook/security/voters_d...

Acl универсальный вариант, добавили разрешение (в вашем случае это будет view) и все

Voter можно реализовать более сложные проверки, например разрешать COMMENT_EDIT только его автору в течении 5 минут. Или универсальные - Сделать интерфейс
interface OwnerableInterface {
    /**
     *  return User
     */
    public function getOwner();
}

и в вотере просто по условию

$object && $object instanceof OwnerableInterface

разрешать редактировать эти объекты
Ответ написан
difiso
@difiso
В параллельной вселенной я космонавт
Вообще класс пользователя, по-хорошему, должен реализовывать интерфейс UserInterface. Там надо реализовать метод getRoles() который возвращает массив объектов, реализующих интефейс RoleInterface, у которого есть метод getRole(), который возвращает строку с именем роли. Именование ролей строгое, описано в документации. Если планируете хранить роли в базе, то можно читать инструкцию по этому тут (описано все вышесказанное в конкретном примере). Как только так сделаете, все должно заработать.

Или, как ранее сказано, использовать ACL
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы