public function sendForgotEmail()
 {
     /** @var User $user */
     $user = User::findOne(['email' => $this->email]);
     if (!$user) {
         throw new Exception('Não foi identificado usuário com o e-mail informado: ' . $this->email);
     }
     $user->setScenario('forgot');
     if (!$user->generateToken()) {
         throw new Exception('Houve um erro ao tentar gerar o seu Token de acesso.');
     }
     return Yii::$app->mailer->compose(['html' => 'layouts/reset-password'], ['token' => $user->token])->setFrom(['*****@*****.**' => Yii::$app->name])->setTo($user->email)->setSubject('Recuperação de Senha - ' . Yii::$app->name)->send();
 }
 /**
  * @return bool
  * @throws UserException
  */
 public function login()
 {
     /** @var User $user */
     $user = User::findOne(['email' => $this->email, 'status' => Yii::$app->params['active']]);
     $user->senha = $user->currentPassword;
     if (!$user) {
         throw new UserException('E-mail e/ou senha são invalidos.');
     }
     if (!Yii::$app->getSecurity()->validatePassword($this->password, $user->senha)) {
         throw new UserException('E-mail e/ou senha são invalidos.');
     }
     $identity = User::findIdentity($user->id);
     return Yii::$app->user->login($identity, (bool) $this->rememberMe ? 3600 * 24 * 30 : 0);
 }
 /**
  * Creates data provider instance with search query applied
  * @param array $params
  * @return ActiveDataProvider
  */
 public function search(array $params)
 {
     if (empty($params['status'])) {
         $this->status = '';
     }
     /** @var Query $query */
     $query = User::find();
     $dataProvider = new ActiveDataProvider(['query' => $query, 'sort' => ['defaultOrder' => ['name' => SORT_ASC]], 'pagination' => ['pageSize' => Yii::$app->params['pagination']['pageSize']]]);
     $this->load($params);
     if (!$this->validate()) {
         return $dataProvider;
     }
     $query->andFilterWhere(['id' => $this->id]);
     $query->andFilterWhere(['group_id' => $this->group_id]);
     $query->andFilterWhere(['status' => $this->status]);
     $query->andFilterWhere(['like', 'name', $this->name]);
     $query->andFilterWhere(['like', 'email', $this->email]);
     return $dataProvider;
 }
Exemple #4
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getCreatedBy()
 {
     return $this->hasOne(User::className(), ['id' => 'created_by']);
 }
 public function actionRenewPassword($token)
 {
     $this->controllerDescription = 'Alterar senha de Acesso';
     try {
         if (empty($token) || is_null($token)) {
             throw new Exception('Não foi informado o seu token de alteração de senha.');
         }
         /** @var User $user */
         $user = User::findOne(['token' => $token]);
         if (!$user) {
             throw new Exception('O Token informado é inválido e/ou está fora de validade.');
         }
         $form = new RenewPasswordForm();
         if ($form->load($this->getPost()) && $form->validate()) {
             $form->generateNewPassword($user);
             $this->getSession()->setFlash('success', 'Sua senha de acesso foi alterada com sucesso! Entre no sistema com sua nova senha.');
             return $this->redirect(Yii::$app->user->loginUrl);
         }
         return $this->render('renew-password', ['formModel' => $form]);
     } catch (Exception $e) {
         $this->getSession()->setFlash('warning', $e->getMessage());
         return $this->redirect(['forgot']);
     }
 }
 /**
  * Metodo que faz a alteracao da senha de acesso de um determinado usuario
  * @param User $user
  * @return bool
  * @throws \yii\base\Exception
  */
 public function generateNewPassword(User $user)
 {
     $user->senha = Yii::$app->getSecurity()->generatePasswordHash($this->password);
     $user->token = null;
     return $user->save();
 }