noumo / easyii

Easy yii2 cms powered by Yii framework 2
http://easyiicms.com
593 stars 272 forks source link

Правильная авторизация и регистрация покупателя #125

Closed xCEZAREx closed 8 years ago

xCEZAREx commented 8 years ago

Привет. Делаю кастомную авторизацию покупателя, но столкнулся с проблемой. После авторизации пользователя не срабатывает стандартный Yii::$app->user->isGuest, так как Yii::$app->user->identity возвращает AdminIdentity из модуля Easyii shop.

Как правильно залогинить пользователя на фронте?

Авторизацию сделал руками по аналогии с advanced шаблоном. Можно было бы сделать через таблицу админов, но не хочется их совмещать.

OrlandoST commented 8 years ago

isGuest должно обрабатываться корректно. Вот кусок кода из SignController::actionIn() if (!Yii::$app->user->isGuest || ($model->load(Yii::$app->request->post()) && $model->login())) { return $this->redirect(Yii::$app->user->getReturnUrl(['/admin']));

Или вы для своих пользователей другой класс модели используете?

xCEZAREx commented 8 years ago

Спасибо. Верно, использую другой класс. Решил писать свой компонент Consumer и в нем использовать базовые классы авторизации.

OrlandoST commented 8 years ago

тогда переопределяйте метод модели LoginForm чтобы возвращал правильный класс в зависимости от необходимости: public function getUser() { if ($this->_user === false) { $this->_user = Admin::findByUsername($this->username); }

    return $this->_user;
}

Или вообще используйте только свой класс пользователей, просто реализуйте в этом классе еще и функционал модели Admin. И потом просто в настройках укажите user[identityClass] = ваш_класс

OrlandoST commented 8 years ago

хотя LoginForm::getUser() все равно править придется

xCEZAREx commented 8 years ago

Так если создать свой компонент Consumer и в нем использовать userIdentityClass = класс_User_из_advaced_шаблона и проводить авторизацию не через yii/vendor/easyii/Admin, а через класс_User_из_advaced_шаблона, то будет ли работать Yii::$app->consumer->isGuest и Yii::$app-> consumer->identity ?

xCEZAREx commented 8 years ago

Решил элегантно. Унаследовал yii\web\User как BaseUser и в конфиге передал свою модель User с дополнительным функционалом. Identity работает, правда не тестировал как это конфликтует с авторизацией админа.