Вход Регистрация
Файл: system/controllers/authga/hooks/form_users_password_2fa.php
Строк: 48
<?php

class onAuthgaFormUsersPassword2fa extends cmsAction {

    public function 
run($data) {

        list(
$form$params) = $data;

        
$profile $params[0];

        
cmsCore::loadLib('google_authenticator.class');

        
$ga = new googleAuthenticator();

        if (
$profile['ga_secret']) {

            
$form->addField('twofa', new fieldString('ga_secret_respose', array(
                    
'title' => LANG_AUTHGA_GA_SECRET_RESPOSE,
                    
'rules' => array(
                        array(function(
$controller$data$value)use($profile){

                            if(
$data['2fa'] === 'authga'){ return true; }

                            if(!
$value){ return ERR_VALIDATE_REQUIRED; }

                            
$ga = new googleAuthenticator();

                            if(!
$ga->verifyCode($profile['ga_secret'], $value)){
                                return 
ERR_VALIDATE_INVALID;
                            }

                            return 
true;

                        })
                    ),
                    
'visible_depend' => array('2fa' => array('hide' => array($this->name)))
                ))
            );

            return [
$form$params];
        }

        
$ga_secret $ga->createSecret();

        
$form->addField('twofa', new cmsFormField('ga_qrcode', array(
                
'title' => LANG_AUTHGA_GA_QRCODE,
                
'html' => '<img src="'.$ga->getQRCodeGoogleUrl($this->cms_config->sitename$ga_secret).'">',
                
'visible_depend' => array('2fa' => array('show' => array($this->name)))
            ))
        )->
disableField('ga_qrcode');

        
$form->addField('twofa', new fieldString('ga_secret', array(
                
'title' => LANG_AUTHGA_GA_SECRET,
                
'default' => $ga_secret,
                
'attributes' => ['readonly' => true],
                
'visible_depend' => array('2fa' => array('show' => array($this->name)))
            ))
        );

        
$form->addField('twofa', new fieldString('ga_secret_respose', array(
                
'title' => LANG_AUTHGA_GA_SECRET_RESPOSE,
                
'rules' => array(
                    array(function(
$controller$data$value){

                        if(
$data['2fa'] !== 'authga'){ return true; }

                        if(!
$value || empty($data['ga_secret'])){ return ERR_VALIDATE_REQUIRED; }

                        
$ga = new googleAuthenticator();

                        if(!
$ga->verifyCode($data['ga_secret'], $value)){
                            return 
ERR_VALIDATE_INVALID;
                        }

                        return 
true;

                    })
                ),
                
'visible_depend' => array('2fa' => array('show' => array($this->name)))
            ))
        );

        return [
$form$params];

    }

}
Онлайн: 1
Реклама