コード例 #1
0
ファイル: UserController.php プロジェクト: amnah/yii2-angular
 /**
  * User account
  */
 public function actionIndex()
 {
     /** @var User $user */
     // get user
     $user = $this->jwtAuth->getAuthenticatedUser();
     $user->setScenario("account");
     // check for post input errors
     $loadedAndValidated = $user->loadPostAndValidate();
     if ($loadedAndValidated === false) {
         return ["errors" => $user->errors];
     }
     // process account update or find a $userToken (for pending email confirmation)
     $userToken = null;
     if ($loadedAndValidated) {
         // check if user changed his email
         $newEmail = $user->checkEmailChange();
         if ($newEmail) {
             $userToken = UserToken::generate($user->id, UserToken::TYPE_EMAIL_CHANGE, $newEmail);
             $user->sendEmailConfirmation($userToken);
         }
         $user->save(false);
     } else {
         $userToken = UserToken::findByUser($user->id, UserToken::TYPE_EMAIL_CHANGE);
     }
     $hasPassword = (bool) $user->password;
     return ["success" => ["user" => $user, "userToken" => $userToken, "hasPassword" => $hasPassword]];
 }
コード例 #2
0
ファイル: AuthController.php プロジェクト: amnah/yii2-angular
 /**
  * Register
  */
 public function actionRegister()
 {
     $user = new User(["scenario" => "register"]);
     $profile = new Profile();
     // ensure that both models get validated for errors
     $userValidate = $user->loadPostAndValidate();
     $profileValidate = $profile->loadPostAndValidate();
     if (!$userValidate || !$profileValidate) {
         return ["errors" => array_merge($user->errors, $profile->errors)];
     }
     // create user/profile
     $user->setRegisterAttributes(Role::ROLE_USER)->save(false);
     $profile->setUser($user->id)->save(false);
     // determine userToken type to see if we need to send email
     $userTokenType = null;
     if ($user->status == $user::STATUS_INACTIVE) {
         $userTokenType = UserToken::TYPE_EMAIL_ACTIVATE;
     } elseif ($user->status == $user::STATUS_UNCONFIRMED_EMAIL) {
         $userTokenType = UserToken::TYPE_EMAIL_CHANGE;
     }
     // check if we have a userToken type to process, or just generate jwt data
     if ($userTokenType) {
         $userToken = UserToken::generate($user->id, $userTokenType);
         $user->sendEmailConfirmation($userToken);
         return ["success" => ["userToken" => 1]];
     } else {
         $request = Yii::$app->request;
         $rememberMe = $request->post("rememberMe", true);
         $jwtCookie = $request->post("jwtCookie", true);
         return ["success" => $this->generateAuthSuccess($user, $rememberMe, $jwtCookie)];
     }
 }