PhpRbac Правильно ли я делаю?

Всё про контроль доступа пользователей: фильтры, RBAC, проверки
Ответить
alexa777
Сообщения: 299
Зарегистрирован: 2016.03.01, 17:38

PhpRbac Правильно ли я делаю?

Сообщение alexa777 »

Много перерыл инфы по поводу PhpRbac везде пишут как создать роли, права и т.д. Но нигде не пишут как присваивать роль новому зарегистрированному пользователю и как проверять тех кто не зареган вообще. Поэтому я сделал присваивание ролей зареганным пользователям вот так.
Использую для создания rbac yii\rbac\PhpManager вот по этому способу http://rgblog.ru/page/yii2-i-rbac-kontr ... nove-rolej
Там есть шаг что в модели \common\models\User.php надо создать константы

Код: Выделить всё

const ROLE_USER = 1;
const ROLE_MODER = 5;
const ROLE_ADMIN = 10;
После этих строк думал я думал как же присваивать новому пользователю роли, не зря же в том способе указали эти константы.
Я сделал так, в базе данных в таблице user я создал новое поле role
а в модели регистрации SignupForm добавил строчку $user->role = User::ROLE_USER;

Код: Выделить всё

 public function signup()
    {
        if (!$this->validate()) {
            return null;
        }
        
        $user = new User();
        $user->username = $this->username;
        $user->email = $this->email;
        $user->setPassword($this->password);
        $user->generateAuthKey();
        $user->role = User::ROLE_USER;
        return $user->save() ? $user : null;
    }
Соответственно после регистрации нового пользователя в поле role ставится значение 1

А потом при проверки брать данные с этого поля и определять роль
Я в правильном направлении? или нет?
Аватара пользователя
maleks
Сообщения: 1992
Зарегистрирован: 2012.12.26, 12:56

Re: PhpRbac Правильно ли я делаю?

Сообщение maleks »

alexa777 писал(а): 2018.10.02, 06:20 Я в правильном направлении? или нет?
Это один из самых упрощенных вариантов, когда:
- роль хранится в таблице пользователя
- при каждой загрузке страницы (где нибудь в бутстрапе) происходит 2 действия: пользователь удаляются все роли и пользователю присваивается вот эта его роль.

Но вообще rbac задумывался для более мощных дел и он сам привязки пользователей и ролей хранит. И также само роли можно на лету создавать, а не хардкодить вручную константами.
alexa777
Сообщения: 299
Зарегистрирован: 2016.03.01, 17:38

Re: PhpRbac Правильно ли я делаю?

Сообщение alexa777 »

maleks писал(а): 2018.10.02, 06:34
alexa777 писал(а): 2018.10.02, 06:20 Я в правильном направлении? или нет?
Это один из самых упрощенных вариантов, когда:
- роль хранится в таблице пользователя
- при каждой загрузке страницы (где нибудь в бутстрапе) происходит 2 действия: пользователь удаляются все роли и пользователю присваивается вот эта его роль.

Но вообще rbac задумывался для более мощных дел и он сам привязки пользователей и ролей хранит. И также само роли можно на лету создавать, а не хардкодить вручную константами.
Где он хранит? в файлах? или где, если есть примеры скиньте буду благодарен
Аватара пользователя
maleks
Сообщения: 1992
Зарегистрирован: 2012.12.26, 12:56

Re: PhpRbac Правильно ли я делаю?

Сообщение maleks »

Для файлового менеджера, вот:
https://github.com/yiisoft/yii2/blob/ma ... er.php#L54
alexa777
Сообщения: 299
Зарегистрирован: 2016.03.01, 17:38

Re: PhpRbac Правильно ли я делаю?

Сообщение alexa777 »

maleks писал(а): 2018.10.02, 08:08 Для файлового менеджера, вот:
https://github.com/yiisoft/yii2/blob/ma ... er.php#L54
А как он будет работать если будет несколько тысяч или несколько десятков тысяч пользователей? Не будет лагать?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: PhpRbac Правильно ли я делаю?

Сообщение ElisDN »

Возьмите DbManager
alexa777
Сообщения: 299
Зарегистрирован: 2016.03.01, 17:38

Re: PhpRbac Правильно ли я делаю?

Сообщение alexa777 »

ElisDN писал(а): 2018.10.02, 08:47 Возьмите DbManager
По Вашему мнению он лучше и производительней?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: PhpRbac Правильно ли я делаю?

Сообщение ElisDN »

alexa777 писал(а): 2018.10.02, 09:22 По Вашему мнению он лучше и производительней?
По мне лучше https://github.com/ElisDN/yii2-hybrid-authmanager
alexa777
Сообщения: 299
Зарегистрирован: 2016.03.01, 17:38

Re: PhpRbac Правильно ли я делаю?

Сообщение alexa777 »

ElisDN писал(а): 2018.10.02, 09:52
alexa777 писал(а): 2018.10.02, 09:22 По Вашему мнению он лучше и производительней?
По мне лучше https://github.com/ElisDN/yii2-hybrid-authmanager

Этот гибридный rbac менеджер работает так же как вы в конце этого видео описали? https://www.youtube.com/watch?v=ZoZ3A_orZc8&t=11478s
что роли, наследования и правила хранятся в php файлах а сами роли в базе user в поле role?
Просто тут нет https://github.com/ElisDN/yii2-hybrid-authmanager описания настройки и работы
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: PhpRbac Правильно ли я делаю?

Сообщение ElisDN »

Да, работает как PhpManager. Копируете первый код из Usage samples в свой класс User.
alexa777
Сообщения: 299
Зарегистрирован: 2016.03.01, 17:38

Re: PhpRbac Правильно ли я делаю?

Сообщение alexa777 »

ElisDN писал(а): 2018.12.30, 18:09 Да, работает как PhpManager. Копируете первый код из Usage samples в свой класс User.
Спасибо, с наступающим Новым годом и спасибо за Ваши вебинары, очень информативные, жаль что таких как Вы преподов не было в моем универе)
Ответить