diff --git a/src/Application/Controller/Admin/d3user_totp.php b/src/Application/Controller/Admin/d3user_totp.php index 2467161..3130bc9 100644 --- a/src/Application/Controller/Admin/d3user_totp.php +++ b/src/Application/Controller/Admin/d3user_totp.php @@ -17,10 +17,8 @@ namespace D3\Totp\Application\Controller\Admin; use D3\Totp\Application\Model\d3totp; use D3\Totp\Modules\Application\Model\d3_totp_user; -use Doctrine\DBAL\DBALException; use OxidEsales\Eshop\Application\Controller\Admin\AdminDetailsController; use OxidEsales\Eshop\Application\Model\User; -use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException; use OxidEsales\Eshop\Core\Exception\StandardException; use OxidEsales\Eshop\Core\Registry; @@ -32,8 +30,6 @@ class d3user_totp extends AdminDetailsController /** * @return string - * @throws DBALException - * @throws DatabaseConnectionException */ public function render() { diff --git a/src/Application/Model/Exceptions/d3totp_wrongOtpException.php b/src/Application/Model/Exceptions/d3totp_wrongOtpException.php index 55d07a1..051da9f 100644 --- a/src/Application/Model/Exceptions/d3totp_wrongOtpException.php +++ b/src/Application/Model/Exceptions/d3totp_wrongOtpException.php @@ -17,13 +17,6 @@ namespace D3\Totp\Application\Model\Exceptions; -use D3\ModCfg\Application\Model\DependencyInjectionContainer\d3DicHandler; -use D3\ModCfg\Application\Model\Exception\d3_cfg_mod_exception; -use D3\ModCfg\Application\Model\Exception\d3ShopCompatibilityAdapterException; -use D3\ModCfg\Application\Model\Log\d3log; -use Doctrine\DBAL\DBALException; -use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException; -use OxidEsales\Eshop\Core\Exception\DatabaseErrorException; use OxidEsales\Eshop\Core\Exception\StandardException; class d3totp_wrongOtpException extends StandardException diff --git a/src/Application/Model/d3totp.php b/src/Application/Model/d3totp.php index 72a0495..702f9ec 100644 --- a/src/Application/Model/d3totp.php +++ b/src/Application/Model/d3totp.php @@ -20,7 +20,6 @@ use BaconQrCode\Writer; use D3\ModCfg\Application\Model\d3database; use D3\Totp\Application\Model\Exceptions\d3totp_wrongOtpException; use Doctrine\DBAL\DBALException; -use Exception; use OTPHP\TOTP; use OxidEsales\Eshop\Application\Model\User; use OxidEsales\Eshop\Core\DatabaseProvider; @@ -35,6 +34,7 @@ class d3totp extends BaseModel public $tableName = 'd3totp'; public $userId; public $totp; + protected $timeWindow = 2; /** * d3totp constructor. @@ -189,7 +189,7 @@ class d3totp extends BaseModel */ public function verify($totp, $seed = null) { - $blVerify = $this->getTotp($seed)->verify($totp, null, 2); + $blVerify = $this->getTotp($seed)->verify($totp, null, $this->timeWindow); if (false == $blVerify) { $oException = oxNew(d3totp_wrongOtpException::class); throw $oException; diff --git a/src/Modules/Application/Model/d3_totp_user.php b/src/Modules/Application/Model/d3_totp_user.php index 98c20e2..eefce77 100644 --- a/src/Modules/Application/Model/d3_totp_user.php +++ b/src/Modules/Application/Model/d3_totp_user.php @@ -17,11 +17,8 @@ namespace D3\Totp\Modules\Application\Model; use D3\Totp\Application\Model\d3totp; use Doctrine\DBAL\DBALException; -use OxidEsales\Eshop\Application\Controller\ForgotPasswordController; -use OxidEsales\Eshop\Core\DatabaseProvider; use OxidEsales\Eshop\Core\Exception\DatabaseConnectionException; use OxidEsales\Eshop\Core\Registry; -use OxidEsales\EshopCommunity\Application\Controller\Admin\UserMain; class d3_totp_user extends d3_totp_user_parent { @@ -29,7 +26,6 @@ class d3_totp_user extends d3_totp_user_parent { $return = parent::logout(); - // deleting session info Registry::getSession()->deleteVariable(d3totp::TOTP_SESSION_VARNAME); return $return; diff --git a/src/Setup/Installation.php b/src/Setup/Installation.php index 687be3f..971d84c 100644 --- a/src/Setup/Installation.php +++ b/src/Setup/Installation.php @@ -33,7 +33,6 @@ class Installation extends d3install_updatebase 'do' => 'fixIndizes'), ); - // Standardwerte für checkMultiLangTables() und fixRegisterMultiLangTables() public $aMultiLangTables = array(); public $aFields = array( @@ -98,8 +97,7 @@ class Installation extends d3install_updatebase ) ); - protected $_aRefreshMetaModuleIds = array('d3ordermanager'); - + protected $_aRefreshMetaModuleIds = array('d3totp'); /** * @return bool diff --git a/src/metadata.php b/src/metadata.php index ff1d33a..18f49df 100644 --- a/src/metadata.php +++ b/src/metadata.php @@ -1,89 +1,90 @@ - - * @link http://www.oxidmodule.com - */ - -use D3\Totp\Setup as ModuleSetup; -use D3\ModCfg\Application\Model\d3utils; -use OxidEsales\Eshop\Application\Controller\Admin\LoginController; -use OxidEsales\Eshop\Core\Utils; -use OxidEsales\Eshop\Application\Controller as OxidController; -use OxidEsales\Eshop\Application\Model as OxidModel; -use OxidEsales\Eshop\Application\Component as OxidComponent; -use OxidEsales\Eshop\Core as OxidCore; - -/** - * Metadata version - */ -$sMetadataVersion = '2.0'; - -$sModuleId = 'd3totp'; -/** - * Module information - */ -$aModule = [ - 'id' => $sModuleId, - 'title' => - (class_exists(d3utils::class) ? d3utils::getInstance()->getD3Logo() : 'D³') . ' Zwei-Faktor-Authentisierung / two-factor authentication', - 'description' => [ - 'de' => 'Zwei-Faktor-Authentisierung (TOTP) für OXID eSales Shop', - 'en' => 'Two-factor authentication (TOTP) for OXID eSales shop', - ], - 'thumbnail' => 'picture.png', - 'version' => '0.1', - 'author' => 'D³ Data Development (Inh.: Thomas Dartsch)', - 'email' => 'support@shopmodule.com', - 'url' => 'http://www.oxidmodule.com/', - 'extend' => [ - OxidModel\User::class => \D3\Totp\Modules\Application\Model\d3_totp_user::class, - LoginController::class => \D3\Totp\Modules\Application\Controller\Admin\d3_totp_LoginController::class, - Utils::class => \D3\Totp\Modules\Core\d3_totp_utils::class, - ], - 'controllers' => [ - 'd3user_totp' => \D3\Totp\Application\Controller\Admin\d3user_totp::class - ], - 'templates' => [ - 'd3user_totp.tpl' => 'd3/totp/Application/views/admin/tpl/d3user_totp.tpl', - ], - 'events' => [ - 'onActivate' => '\D3\Totp\Setup\Events::onActivate', - 'onDeactivate' => '\D3\Totp\Setup\Events::onDeactivate', - ], - 'settings' => [ - ], - 'blocks' => [ - [ - 'template' => 'login.tpl', - 'block' => 'admin_login_form', - 'file' => 'Application/views/admin/blocks/d3totp_login_admin_login_form.tpl', - ] - ], - 'd3FileRegister' => [ - ], - 'd3SetupClasses' => [ - ModuleSetup\Installation::class - ] -]; - -// CREATE TABLE `d3totp` ( -// `OXID` CHAR(32) NOT NULL, -// `OXUSERID` CHAR(32) NOT NULL, -// `USETOTP` TINYINT(1) NOT NULL DEFAULT '0', -// `SEED` VARCHAR(125) NOT NULL DEFAULT '0', -// PRIMARY KEY (`OXID`), -// UNIQUE INDEX `Schl�ssel 2` (`OXUSERID`) -//) -//ENGINE=InnoDB + + * @link http://www.oxidmodule.com + */ + +use D3\Totp\Setup as ModuleSetup; +use D3\ModCfg\Application\Model\d3utils; +use OxidEsales\Eshop\Application\Controller\Admin\LoginController; +use OxidEsales\Eshop\Core\Utils; +use OxidEsales\Eshop\Application\Model as OxidModel; + +/** + * Metadata version + */ +$sMetadataVersion = '2.0'; + +$logo = (class_exists(d3utils::class) ? d3utils::getInstance()->getD3Logo() : 'D³'); + +$sModuleId = 'd3totp'; +/** + * Module information + */ +$aModule = [ + 'id' => $sModuleId, + 'title' => [ + 'de' => $logo.' Zwei-Faktor-Authentisierung', + 'en' => $logo.' two-factor authentication', + ], + 'description' => [ + 'de' => 'Zwei-Faktor-Authentisierung (TOTP) für OXID eSales Shop', + 'en' => 'Two-factor authentication (TOTP) for OXID eSales shop', + ], + 'thumbnail' => 'picture.png', + 'version' => '0.1', + 'author' => 'D³ Data Development (Inh.: Thomas Dartsch)', + 'email' => 'support@shopmodule.com', + 'url' => 'http://www.oxidmodule.com/', + 'extend' => [ + OxidModel\User::class => \D3\Totp\Modules\Application\Model\d3_totp_user::class, + LoginController::class => \D3\Totp\Modules\Application\Controller\Admin\d3_totp_LoginController::class, + Utils::class => \D3\Totp\Modules\Core\d3_totp_utils::class, + ], + 'controllers' => [ + 'd3user_totp' => \D3\Totp\Application\Controller\Admin\d3user_totp::class + ], + 'templates' => [ + 'd3user_totp.tpl' => 'd3/totp/Application/views/admin/tpl/d3user_totp.tpl', + ], + 'events' => [ + 'onActivate' => '\D3\Totp\Setup\Events::onActivate', + 'onDeactivate' => '\D3\Totp\Setup\Events::onDeactivate', + ], + 'settings' => [ + ], + 'blocks' => [ + [ + 'template' => 'login.tpl', + 'block' => 'admin_login_form', + 'file' => 'Application/views/admin/blocks/d3totp_login_admin_login_form.tpl', + ] + ], + 'd3FileRegister' => [ + ], + 'd3SetupClasses' => [ + ModuleSetup\Installation::class + ] +]; + +// CREATE TABLE `d3totp` ( +// `OXID` CHAR(32) NOT NULL, +// `OXUSERID` CHAR(32) NOT NULL, +// `USETOTP` TINYINT(1) NOT NULL DEFAULT '0', +// `SEED` VARCHAR(125) NOT NULL DEFAULT '0', +// PRIMARY KEY (`OXID`), +// UNIQUE INDEX `Schl�ssel 2` (`OXUSERID`) +//) +//ENGINE=InnoDB //; \ No newline at end of file