app\controllers\UserController::actionAccount PHP Method

actionAccount() public method

public actionAccount ( )
    public function actionAccount()
    {
        /** @var \amnah\yii2\user\models\User $user */
        /** @var \amnah\yii2\user\models\UserKey $userKey */
        // save url for goBack() method
        Yii::$app->getUser()->setReturnUrl(Yii::$app->request->url);
        // set up user and load post data
        $user = Yii::$app->user->identity;
        //$userAuths = $user->userAuths;
        //when user does not have old school account, registered via social networks
        if (empty($user->password)) {
            $user->setScenario("socialonlyaccount");
        } else {
            $user->setScenario("account");
        }
        $loadedPost = $user->load(Yii::$app->request->post());
        // validate for ajax request
        if ($loadedPost && Yii::$app->request->isAjax) {
            Yii::$app->response->format = Response::FORMAT_JSON;
            return ActiveForm::validate($user);
        }
        // validate for normal request
        if ($loadedPost && $user->validate()) {
            // generate userKey and send email if user changed his email
            if (Yii::$app->getModule("user")->emailChangeConfirmation && $user->checkAndPrepEmailChange()) {
                $userKey = Yii::$app->getModule("user")->model("UserKey");
                $userKey = $userKey::generate($user->id, $userKey::TYPE_EMAIL_CHANGE);
                if (!($numSent = $user->sendEmailConfirmation($userKey))) {
                    // handle email error
                    //Yii::$app->session->setFlash("Email-error", "Failed to send email");
                }
            }
            // save, set flash, and refresh page
            $user->save(false);
            Yii::$app->session->setFlash("Account-success", Yii::t("user", "Account updated"));
            return $this->refresh();
        }
        $keychainConnects = UserKeychain::getKeychainConnects();
        // render
        return $this->render("account", ['user' => $user, 'keychainConnects' => $keychainConnects]);
    }