/** @inheritdoc */ public function init() { $this->finder = \Yii::$container->get(Finder::className()); $this->mailer = \Yii::$container->get(Mailer::className()); $this->module = \Yii::$app->getModule('user'); parent::init(); }
public static function updateUser($user_id, $data = null) { $user = User::findOne($user_id); $user->scenario = 'settings'; $profile = $user->profile; $oldEmail = $user->email; if ($user->load(['User' => $data]) && $user->validate()) { if ($user->email != $oldEmail) { $user->unconfirmed_email = $user->email; $user->email = $oldEmail; $token = \Yii::createObject(['class' => Token::className(), 'user_id' => $user->id, 'type' => Token::TYPE_CONFIRM_NEW_EMAIL]); $token->save(false); $mailer = Yii::createObject(['class' => Mailer::className(), 'reconfirmationSubject' => 'Mail confirmation']); $mailer->sendReconfirmationMessage($user, $token); } if (!$profile) { $profile = Yii::createObject(['class' => Profile::className(), 'user_id' => $user->id]); $profile->save(); } $profile->load(['Profile' => $data]); $profile->save(); $user->save(); } else { self::error($user); } return self::clearUserData($user); }
/** * Tests recovery request form. */ public function testRecoveryRequest() { $mailer = test::double(Mailer::className(), ['sendRecoveryMessage' => true]); $form = Yii::createObject(['class' => RecoveryForm::className(), 'scenario' => 'request']); $this->specify('form is not valid when email is empty', function () use($form) { $form->setAttributes(['email' => '']); verify($form->validate())->false(); verify($form->getErrors('email'))->contains('Email cannot be blank.'); }); $this->specify('form is not valid when email is incorrect', function () use($form) { $form->setAttributes(['email' => 'foobar']); verify($form->validate())->false(); verify($form->getErrors('email'))->contains('Email is not a valid email address.'); }); $this->specify('form is not valid when user does not exist', function () use($form) { test::double(ActiveQuery::className(), ['exists' => false]); $form->setAttributes(['email' => '*****@*****.**']); verify($form->validate())->false(); verify($form->getErrors('email'))->contains('There is no user with this email address'); test::double(ActiveQuery::className(), ['exists' => true]); }); $this->specify('form is not valid when user is not confirmed', function () use($form) { $user = \Yii::createObject(User::className()); test::double($user, ['getIsConfirmed' => false]); test::double(Finder::className(), ['findUserByEmail' => $user]); $form->setAttributes(['email' => '*****@*****.**']); verify($form->validate())->false(); verify($form->getErrors('email'))->contains('You need to confirm your email address'); test::double($user, ['getIsConfirmed' => true]); verify($form->validate())->true(); }); $this->specify('sendRecoveryMessage return true if validation succeeded', function () use($form, $mailer) { test::double($form, ['validate' => true]); $token = test::double(Token::className(), ['save' => true]); $user = \Yii::createObject(['class' => User::className(), 'id' => 1]); test::double(Finder::className(), ['findUserByEmail' => $user]); verify($form->sendRecoveryMessage())->true(); $token->verifyInvoked('save'); verify(\Yii::$app->session->getFlash('info'))->equals('An email has been sent with instructions for resetting your password'); $mailer->verifyInvoked('sendRecoveryMessage'); }); }
/** * @return Mailer * @throws \yii\base\InvalidConfigException */ protected function getMailer() { return Yii::$container->get(Mailer::className()); }