Помогите добиться правды RBAC Super Simple with Admin and User

224
10 декабря 2016, 10:14

Наткнулся на простой пост с реализацией простой админки. yii2 установлен advanced. Сделал все как описано, но, проблемы не прошли мимо. На выходе: если проверять статус по 10(STATUS_ACTIVE) - прекрасно логинит в bacend, если менять на 20(STATUS_ADMIN) - неверный логин или пароль! Мой код: commons\modelsUser.php

public function rules()
{
    return [
        ['status', 'default', 'value' => self::STATUS_ADMIN],
        ['status', 'in', 'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED, self::STATUS_ADMIN]],
    ];
}
public static function isUserAdmin($username)
{
    return static::findOne(['username' => $username, 'status' => self::STATUS_ACTIVE]);
}

common\models\LoginForm.php

public function loginAdmin()
{
    if ($this->validate() && User::isUserAdmin($this->username)) {
        return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600 * 24 * 30 : 0);
    } else {
        return false;
    }
}

backend\controllers\SiteController.php

public function actionLogin()
{
    if (!Yii::$app->user->isGuest) {
        return $this->goHome();
    }
    $model = new LoginForm();
    if ($model->load(Yii::$app->request->post()) && $model->loginAdmin()) {
        return $this->goBack();
    } else {
        return $this->render('login', [
            'model' => $model,
        ]);
    }
}
Answer 1

Решение быть может не самое правильное, но если делаем все просто - сойдет! В классе User (common\models\User.php) есть функция:

public static function findByUsername($username)
{
    return static::findOne(['username' => $username, 'status' => self::STATUS_ACTIVE]);
}

из-за вот этого параметра 'status' => self::STATUS_ACTIVE] наш код не мог пройти валидацию. Я просто его удалил.

Так же в этом контроллере backend\controllers\SiteController.php есть код при успешной авторизации:

return $this->goBack();

У меня он не работает, поэтому я заменил его на

return $this->render('index');

Вроде все нормально... Если кто-то знает как сделать лучше - отпишите пожалуйста, всегда рад новым знаниям!

READ ALSO
Как вывести категории с бд - PHP

Как вывести категории с бд - PHP

Есть HTML код и таблица (category) из 15 brand и idКак грамотно вывести данные в теги li где li=сектор 1? Каждые 5 наименований относятся разным разделом

157
Самый простой ЧПУ [закрыто]

Самый простой ЧПУ [закрыто]

Есть лендинг с 2 страницами indexhtml и en

279
Как определить корневой веб каталог php при настройках Flash Builder?

Как определить корневой веб каталог php при настройках Flash Builder?

ЗдравствуйтеДелаю Flex проект на Flash Builder с php типом сервера

177
Вопрос который решаю 4 дня [закрыто]

Вопрос который решаю 4 дня [закрыто]

Всем приветтакая проблема я учу php и я придумал пример благодаря которому мой личный бизнес и мои знания php вырастут до новых высот ) Это будет...

157