Подскажите по ролям в БД

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

Подскажите по ролям в БД

Сообщение alexa777 »

Привет, я создал роли админа модера и юзера, все по инструкции все получилось. И в стандартной таблице user добавил поле role(int). а теперь при регистрации выдает ошибку что в эту строку нечего добавлять

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

Database Exception – yii\db\Exception
SQLSTATE[HY000]: General error: 1364 Field 'role' doesn't have a default value
The SQL being executed was: INSERT INTO.............
А может поле status использовать для этих ролей?
и тут приписать вместо role status?

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

<?php
namespace common\components\rbac;
use Yii;
use yii\rbac\Rule;
use yii\helpers\ArrayHelper;
use common\models\User;
class UserRoleRule extends Rule
{
    public $name = 'userRole';
    public function execute($user, $item, $params)
    {
        //Получаем массив пользователя из базы
        $user = ArrayHelper::getValue($params, 'user', User::findOne($user));
        if ($user) {
            $role = $user->role; //Значение из поля role базы данных
            if ($item->name === 'admin') {
                return $role == User::ROLE_ADMIN;
            } elseif ($item->name === 'moder') {
                //moder является потомком admin, который получает его права
                return $role == User::ROLE_ADMIN || $role == User::ROLE_MODER;
            } 
            elseif ($item->name === 'user') {
                return $role == User::ROLE_ADMIN || $role == User::ROLE_MODER
                || $role == User::ROLE_USER;
            }
        }
        return false;
    }
}
alexa777
Сообщения: 299
Зарегистрирован: 2016.03.01, 17:38

Re: Подскажите по ролям в БД

Сообщение alexa777 »

все разобрался всем спасибо
я в SignupForm.php в frontend/model/

добавил в public function signup()
$user->role = \common\models\User::ROLE_USER;
Ответить