public function actionIndex() { $user = Yii::app()->user->data(); $model = new ChangePhoneForm(); $usersettings = $user->twofactor_settings; if (!$usersettings) { $usersettings = new UserTwoFactorSettings(); $usersettings->id_user = $user->id; $usersettings->googleauth_secret = $ga->createSecret(); $usersettings->googleauth_url = $ga->getQRCodeGoogleUrl('MercadoBTX', $usersettings->googleauth_secret); $usersettings->save(); } $smsform = new SmsAuthForm(); $request = Yii::app()->request; $formData = $request->getPost(get_class($model), false); $smsFormData = $request->getPost(get_class($smsform), false); if ($formData) { $authok = false; $model->attributes = $formData; if ($model->validate(array('phone'))) { if ($smsFormData) { $smsform->attributes = $smsFormData; $authcode = $smsform->twofactorauthcode; if (strcasecmp($smsform->twofactorauthcode, $usersettings->smscode) == 0) { $usersettings->regenerateSmsCode(); // prevent it from being used again $authok = true; $usersettings->smsphone = $model->phone; if (!$usersettings->save()) { Yii::log($this->dump_to_string($newdetail->errors), 'error'); Yii::app()->user->setFlash('error', Yii::t('translation', 'Save failed')); } else { Yii::app()->user->setFlash('success', Yii::t('translation', 'Phone number changed')); } } else { Yii::app()->user->setFlash('error', Yii::t('translation', 'Invalid code')); } } else { Yii::app()->user->setFlash('error', Yii::t('translation', 'Validation code not recieved')); } } } $this->render('index', array('user' => $user, 'model' => $model, 'smsmodel' => $smsform)); }
public function actionIndex() { // $this->leftmenu = 'account'; $user = Yii::app()->user->data(); $ga = new GoogleAuthenticator(); $usersettings = $user->twofactor_settings; if (!$usersettings) { $usersettings = new UserTwoFactorSettings(); $usersettings->id_user = $user->id; $usersettings->googleauth_secret = $ga->createSecret(); $usersettings->googleauth_url = $ga->getQRCodeGoogleUrl('MercadoBTX', $usersettings->googleauth_secret); $usersettings->save(); } $model = new SecurityForm(); $gaform = new GoogleAuthForm(); $smsform = new SmsAuthForm(); $request = Yii::app()->request; $formData = $request->getPost(get_class($model), false); $gaFormData = $request->getPost(get_class($gaform), false); $smsFormData = $request->getPost(get_class($smsform), false); if ($formData) { $authok = false; if ($usersettings->deliveras == UserTwoFactorSettings::GOOGLE_AUTH) { if ($gaFormData) { $gaform->attributes = $gaFormData; $authcode = $gaform->twofactorauthcode; if ($ga->verifyCode($usersettings->googleauth_secret, $authcode)) { $authok = true; } } } elseif ($usersettings->deliveras == UserTwoFactorSettings::SMS) { if ($smsFormData) { $smsform->attributes = $smsFormData; $authcode = $smsform->twofactorauthcode; if (strcasecmp($smsform->twofactorauthcode, $usersettings->smscode) == 0) { $usersettings->regenerateSmsCode(); // prevent it from being used again $authok = true; } } } elseif ($usersettings->deliveras == UserTwoFactorSettings::NONE) { $authok = true; } else { Yii::app()->user->setFlash('error', Yii::t('translation', 'Invalid setting')); } if (!$authok) { Yii::app()->user->setFlash('error', Yii::t('translation', 'Invalid Auth Code! ')); } else { $model->attributes = $formData; if ($model->hasErrors()) { Yii::app()->user->setFlash('error', Yii::t('translation', 'Save failed')); } else { $usersettings->smsphone = $model->smsphone; $usersettings->deliveras = $model->deliveras; if (!$usersettings->save()) { Yii::log(var_dump($usersettings->getErrors()), 'error'); Yii::app()->user->setFlash('error', Yii::t('translation', 'Save failed! ')); } else { Yii::app()->user->setFlash('success', Yii::t('translation', 'Information updated')); } } } } $model->deliveras = $usersettings->deliveras; $model->smsphone = $usersettings->smsphone; $this->render('index', array('model' => $model, 'deliveras' => $model->deliveras, 'qrCodeUrl' => $usersettings->googleauth_url)); }