Задать вопрос
IgorPI
@IgorPI

Зачем у одного пользователя много ролей?

Зачем в Symfony у одного пользователя много ролей?
Как теперь однозначно сказать кто перед нами?

public function getRoles(): array
    {
        $roles = $this->roles ?? [];
        // guarantee every user at least has ROLE_OPERATOR
        $roles[] = 'ROLE_OPERATOR';

        return array_unique($roles);
    }


В итоге я получу вот такую бороду.
0: "ROLE_ADMIN"
1: "ROLE_OPERATOR"


Как теперь я в SPA однозначно определю кто перед нами?
  • Вопрос задан
  • 125 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 3
myks92
@myks92
Нашёл решение — пометь вопрос ответом!
1. В симфони роли более продвинутые. Они как бы являются одновременно permissions, что позволяет более гибко работать с ними из коробки. То есть где-то можно использовать просто ROLE_ADMIN, ROLE_USER и этого будет достаточно, но чаще в проектах более сложные права доступа, где можно иметь админа в блоге, админа в магазине и т.д. Вы также можете использовать иерархию ролей, в которой наличие одних ролей автоматически дает вам другие роли.

Определить кто перед вами — ответ к вашему домену, а эти роли показывают какие он права имеет. В данном случае оператора и админа.

2. Как отдавать информацию на фронт? Проверяйте есть ли данная роль в массиве, тут, думаю, всё просто. Опять же повторюсь, что это роли более навороченные, поэтому так. На фронте вообще не всегда нужна конкретная роль. Чаще всего на фронт высылают permissions, по котором проверяют что доступно для отображения, а что нет.
Ответ написан
Комментировать
@sl0
Потому что пользователь может иметь много ролей, это норма.
Ответ написан
Maksclub
@Maksclub
maksfedorov.ru
В итоге я получу вот такую бороду.
0: "ROLE_ADMIN"
1: "ROLE_OPERATOR"

Не имеет значение, он оператор или он админ
Имеет значение — может ли он выполнять операторский функционал (имеет роль оператора) или нет
Также к др действиям: может ли он добавлять пользователей? Допустим имеет роль ROLE_ADMIN и для ROLE_ADMIN разрешено редактирвоать юзеров — в этом контексте он админ значит
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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