public function SaveNewPassword() { $user = User::findOne($this->id); $user->password_hash = Yii::$app->security->generatePasswordHash($this->new_password); if ($user->save()) { return true; } else { return false; } }
public function sendEmail() { /* @var $user User */ $user = User::findOne(['status' => User::STATUS_ACTIVE, 'email' => $this->email]); if ($user) { if (!User::isActivateTokenValid($user->password_reset_token)) { $user->generateActivateToken(); } if ($user->save()) { $mailer = \Yii::$app->mailer; $mailer->viewPath = $this->viewPath; $mailer->getView()->theme = \Yii::$app->view->theme; return $mailer->compose(['html' => 'ActivateToken-html', 'text' => 'ActivateToken-text'], ['user' => $user])->setFrom([\Yii::$app->params['supportEmail'] => \Yii::$app->name . ' robot'])->setTo($this->email)->setSubject('Activate Account for ' . \Yii::$app->name)->send(); } } return false; }
public function onAuthSuccess($client) { $attributes = $client->getUserAttributes(); /* @var $auth Auth */ $auth = Auth::find()->where(['source' => $client->getId(), 'source_id' => $attributes['id']])->one(); if (Yii::$app->user->isGuest) { if ($auth) { // login $user = User::findOne(['id' => $auth->user_id]); Yii::$app->user->login($user); } else { // signup if (isset($attributes['email']) && User::find()->where(['email' => $attributes['email']])->exists()) { Yii::$app->getSession()->setFlash('error', [Yii::t('app', "User with the same email as in {client} account already exists but isn't linked to it. Login using email first to link it.", ['client' => $client->getTitle()])]); } else { $password = Yii::$app->security->generateRandomString(6); $user = new User(['username' => $attributes['name'], 'email' => $attributes['email'], 'password' => $password]); $user->generateAuthKey(); $user->generatePasswordResetToken(); $transaction = $user->getDb()->beginTransaction(); if ($user->save()) { $authManager = Yii::$app->authManager; $authorRole = $authManager->getRole('User'); $authManager->assign($authorRole, $user->id); $auth = new Auth(['user_id' => $user->id, 'source' => $client->getId(), 'source_id' => (string) $attributes['id']]); if ($auth->save()) { $transaction->commit(); Yii::$app->user->login($user); } else { print_r($auth->getErrors()); } } else { print_r($user->getErrors()); } } } } else { // user already logged in if (!$auth) { // add auth provider $auth = new Auth(['user_id' => Yii::$app->user->id, 'source' => $client->getId(), 'source_id' => $attributes['id']]); $auth->save(); } } }
public function actionSetPassword($id) { $model = new SetPasswordForm(); $model->id = $id; if ($user = User::findOne($id)) { if ($model->load(Yii::$app->request->post()) && $model->SaveNewPassword()) { Yii::$app->getSession()->setFlash('success', 'new password set'); return $this->redirect(['view', 'id' => $id]); } else { return $this->render('set-password', ['model' => $model]); } } }
protected function findModelChangePassword($id) { if (($model = User::findOne($id)) !== null) { $new_model = new ChangePasswordForm(); $new_model->username = $model->username; $new_model->email = $model->email; return $new_model; } else { throw new NotFoundHttpException('The requested page does not exist.'); } }