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));
 }
Пример #2
0
 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));
 }