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]);
}