Добрый день!
Не могу никак понять что происходит с Yii2..... Пока еще только учусь, поэтому сильно не сердитесь на меня.
Брал код с другого сайта, работал он хорошо, человек регистрировался, вводил данные, нажимал кнопку, и его редиректило на главную страницу и сразу авторизовывало, вот такой код был:
SignupFormpublic function signup()
{
if (!$this->validate()) {
return null;
}
$user = new User();
$user->username = $this->username;
$user->email = $this->email;
$user->setPassword($this->password);
$user->generateAuthKey();
return $user->save() ? $user : null;
SiteControllerpublic function actionSignup()
{
$model = new SignupForm();
if ($model->load(Yii::$app->request->post())) {
if ($user = $model->signup()) {
if (Yii::$app->getUser()->login($user)) {
return $this->goHome();
}
}
}
return $this->render('signup', [
'model' => $model,
]);
}
Все отрабатывало отлично. Потом мне потребовалось добавить роль в таблицы RBAC при регистрации, помог мне
Максим Тимофеев за что я ему очень благодарен, все добавлялось в БД и в user и в RBAC, код выглядел так:
SignupFormpublic function signup()
{
if (!$this->validate()) {
return null;
}
$user = new User();
$user->username = $this->username;
$user->email = $this->email;
$user->setPassword($this->password);
$user->generateAuthKey();
if($user->save()){
$role = Yii::$app->authManager->getRole('user');
Yii::$app->authManager->assign($role, $user->id_user);
}
}
Ну и в SiteController без изменений. В итоге перестал работать редирект, и я так понял, что скрипт не заходит в этот кусок кода
if ($user = $model->signup()) {
if (Yii::$app->getUser()->login($user)) {
return $this->goHome();
}
}
а вот так редиректит нормально на главную, но не авторизовывает пользователя.
if ($user = $model->signup()) {
if (Yii::$app->getUser()->login($user)) {
return $this->goHome();
}
}
return $this->goHome();
т.е. обходит мимо первую часть кода.
Помогите пожалуйста, очень хочется разобраться, сделать хороший сайт, но пока тяжело все доходит. Сильно не бейте