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
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы