/** * Test sign in * * @depends testChangeUserForgottenPassword * * @return User */ public function testSignIn(User $user) { /* @var $user User */ $user = $this->getModule('Yii2')->grabFixture('users', 'activeUser1'); $model = new SignInForm(); $attributes = ['email' => [['value' => null, 'isValid' => false], ['value' => 0, 'isValid' => false], ['value' => '', 'isValid' => false], ['value' => 'wrong e-mail', 'isValid' => false], ['value' => $user->email, 'isValid' => true]], 'password' => [['value' => null, 'isValid' => false], ['value' => 0, 'isValid' => false], ['value' => 'wrong user password', 'isValid' => false], ['value' => 'password_active_user_1', 'isValid' => true]]]; $this->getModule('\\Helper\\Unit')->validateModelAttributes($model, $attributes, $this); // locked user can't sign in $this->assertTrue($this->userModule->lockUser($user)); $this->assertFalse($model->validate()); $this->assertTrue($this->userModule->activateUser($user)); $this->assertTrue($model->validate()); $this->assertInstanceOf(User::className(), $model->getUser()); $this->assertTrue($this->userModule->signInUser($model->getUser(), $model->password, null, true)); return $user; }
/** * Sign in * * @return mixed */ public function actionSignIn() { $model = new SignInForm(); $ret = $this->performAjaxValidation($model); if (is_array($ret)) { // AJAX validation return $ret; } if ($model->load(Yii::$app->request->post()) && $model->validate()) { $user = $model->getUser(); if ($user instanceof User && $this->userModule->signInUser($user, $model->password)) { return $this->goHome(); } // account was blocked /* @var $systemAlert Alert */ $systemAlert = Yii::$app->systemAlert; $systemAlert->setMessage(Alert::DANGER, Yii::t('user', 'An account is blocked')); return $this->refresh(); } return $this->render('sign-in', ['model' => $model]); }