Exemplo n.º 1
0
 /** @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();
 }
Exemplo n.º 2
0
 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);
 }
Exemplo n.º 3
0
 /**
  * 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');
     });
 }
Exemplo n.º 4
0
 /**
  * @return Mailer
  * @throws \yii\base\InvalidConfigException
  */
 protected function getMailer()
 {
     return Yii::$container->get(Mailer::className());
 }