diff --git a/classes/Modules/TOTPLogin/TOTPLoginService.php b/classes/Modules/TOTPLogin/TOTPLoginService.php index ecfe97ab..09f20803 100644 --- a/classes/Modules/TOTPLogin/TOTPLoginService.php +++ b/classes/Modules/TOTPLogin/TOTPLoginService.php @@ -270,7 +270,7 @@ class TOTPLoginService $secret = $this->getTOTPSecret($userId); } - $query = "otpauth://totp/{$label}?secret=" . $secret . '&issuer=Xentral&algorithm=SHA1&digits=6&period=30'; + $query = "otpauth://totp/{$label}?secret=" . $secret . '&issuer=OpenXE&algorithm=SHA1&digits=6&period=30'; return $this->barcodeService->createQrCode($query); } diff --git a/phpwf/plugins/class.templateparser.php b/phpwf/plugins/class.templateparser.php index 09854989..c7e55f3d 100644 --- a/phpwf/plugins/class.templateparser.php +++ b/phpwf/plugins/class.templateparser.php @@ -616,7 +616,7 @@ class TemplateParser { } } - if(count($this->VARARRAY)>0) + if(!empty($this->VARARRAY)) foreach($this->VARARRAY as $key=>$value) { if($key!="") diff --git a/www/pages/totp.php b/www/pages/totp.php index 8d382bd2..420238e5 100644 --- a/www/pages/totp.php +++ b/www/pages/totp.php @@ -1,134 +1,133 @@ -app = $app; - - if($intern) return; - - $app->ActionHandlerInit($this); - - $app->ActionHandler('generate', 'TOTPGenerateSecretJSON'); - $app->ActionHandler('enable', 'TOTPEnable'); - $app->ActionHandler('disable', 'TOTPDisable'); - - $app->ActionHandlerListen($app); - } - - public function Install() - { - $tableName = 'user_totp'; - $this->app->erp->CheckTable($tableName); - $this->app->erp->CheckColumn('id', 'UNSIGNED INT', $tableName, 'NOT NULL AUTO_INCREMENT'); - $this->app->erp->CheckColumn('user_id', 'INT', $tableName, 'UNSIGNED NOT NULL'); - $this->app->erp->CheckColumn('active', 'TINYINT(1)', $tableName, 'UNSIGNED DEFAULT 0'); - $this->app->erp->CheckColumn('secret', 'VARCHAR(100)', $tableName, 'NOT NULL'); - $this->app->erp->CheckColumn('created_at', 'TIMESTAMP', $tableName, 'DEFAULT NOW()'); - $this->app->erp->CheckColumn('modified_at', 'TIMESTAMP', $tableName); - $this->app->erp->CheckIndex($tableName, 'user_id', true); - - $this->app->erp->RegisterHook('login_password_check_otp', 'totp', 'TOTPCheckLogin', 1, false, null, 3); - } - - function TOTPDisable(){ - $action = $this->app->Secure->GetPOST('action'); - - if($action !== 'disable'){ - return new JsonResponse(['status' => 'error', 'msg' => 'muss POST sein'], 400); - } - - /** @var TOTPLoginService $totpLoginService */ - $totpLoginService = $this->app->Container->get('TOTPLoginService'); - - $userId = $this->app->User->GetID(); - - $totpLoginService->disableTotp($userId); - - return new JsonResponse(['status' => 'success']); - } - - function TOTPEnable(){ - $secret = $this->app->Secure->GetPOST('secret'); - - if(empty($secret)){ - return new JsonResponse(['status' => 'error', 'msg' => 'Secret Empty'], 400); - } - - /** @var TOTPLoginService $totpLoginService */ - $totpLoginService = $this->app->Container->get('TOTPLoginService'); - - $userId = $this->app->User->GetID(); - - $totpLoginService->enableTotp($userId); - $totpLoginService->setUserSecret($userId, $secret); - - return new JsonResponse(['status' => 'success']); - } - - /** - * @param $userID - * @param $token - * @param $passwordValid - * - * @throws Exception - */ - public function TOTPCheckLogin($userID, $token, &$passwordValid) - { - /** @var TOTPLoginService $totpLoginService */ - $totpLoginService = $this->app->Container->get('TOTPLoginService'); - - if(!$totpLoginService->isTOTPEnabled($userID)){ - return; - } - $passwordValid = $totpLoginService->isTokenValid($userID, $token); - } - - public function TOTPGenerateSecretJSON(){ - /** @var TOTPLoginService $totpLoginService */ - $totpLoginService = $this->app->Container->get('TOTPLoginService'); - - /** @var \Xentral\Components\Token\TOTPTokenManager $tokenManager */ - $tokenManager = $this->app->Container->get('TOTPTokenManager'); - - $secret = $tokenManager->generateBase32Secret(); - - $label = 'Xentral' . ' | ' . $this->app->erp->GetFirmaName(); - - $qr = $totpLoginService->generatePairingQrCode($this->app->User->GetID(), $label, $secret); - - return new JsonResponse( - [ - 'secret' => $secret, - 'qr' => $qr->toHtml(4, 4) - ] - ); - } -} +app = $app; + + if($intern) return; + + $app->ActionHandlerInit($this); + + $app->ActionHandler('generate', 'TOTPGenerateSecretJSON'); + $app->ActionHandler('enable', 'TOTPEnable'); + $app->ActionHandler('disable', 'TOTPDisable'); + + $app->ActionHandlerListen($app); + } + + public function Install() + { + $tableName = 'user_totp'; + $this->app->erp->CheckTable($tableName); + $this->app->erp->CheckColumn('id', 'UNSIGNED INT', $tableName, 'NOT NULL AUTO_INCREMENT'); + $this->app->erp->CheckColumn('user_id', 'INT', $tableName, 'UNSIGNED NOT NULL'); + $this->app->erp->CheckColumn('active', 'TINYINT(1)', $tableName, 'UNSIGNED DEFAULT 0'); + $this->app->erp->CheckColumn('secret', 'VARCHAR(100)', $tableName, 'NOT NULL'); + $this->app->erp->CheckColumn('created_at', 'TIMESTAMP', $tableName, 'DEFAULT NOW()'); + $this->app->erp->CheckColumn('modified_at', 'TIMESTAMP', $tableName); + $this->app->erp->CheckIndex($tableName, 'user_id', true); + + $this->app->erp->RegisterHook('login_password_check_otp', 'totp', 'TOTPCheckLogin', 1, false, null, 3); + } + + function TOTPDisable(){ + $action = $this->app->Secure->GetPOST('action'); + + if($action !== 'disable'){ + return new JsonResponse(['status' => 'error', 'msg' => 'muss POST sein'], 400); + } + + /** @var TOTPLoginService $totpLoginService */ + $totpLoginService = $this->app->Container->get('TOTPLoginService'); + + $userId = $this->app->User->GetID(); + + $totpLoginService->disableTotp($userId); + + return new JsonResponse(['status' => 'success']); + } + + function TOTPEnable(){ + $secret = $this->app->Secure->GetPOST('secret'); + + if(empty($secret)){ + return new JsonResponse(['status' => 'error', 'msg' => 'Secret Empty'], 400); + } + + /** @var TOTPLoginService $totpLoginService */ + $totpLoginService = $this->app->Container->get('TOTPLoginService'); + + $userId = $this->app->User->GetID(); + + $totpLoginService->enableTotp($userId); + $totpLoginService->setUserSecret($userId, $secret); + + return new JsonResponse(['status' => 'success']); + } + + /** + * @param $userID + * @param $token + * @param $passwordValid + * + * @throws Exception + */ + public function TOTPCheckLogin($userID, $token, &$passwordValid) + { + /** @var TOTPLoginService $totpLoginService */ + $totpLoginService = $this->app->Container->get('TOTPLoginService'); + if(!$totpLoginService->isTOTPEnabled($userID)){ + return; + } + $passwordValid = $totpLoginService->isTokenValid($userID, $token); + } + + public function TOTPGenerateSecretJSON(){ + /** @var TOTPLoginService $totpLoginService */ + $totpLoginService = $this->app->Container->get('TOTPLoginService'); + + /** @var \Xentral\Components\Token\TOTPTokenManager $tokenManager */ + $tokenManager = $this->app->Container->get('TOTPTokenManager'); + + $secret = $tokenManager->generateBase32Secret(); + + $label = 'OpenXE' . ':' . $this->app->User->Getname(); + + $qr = $totpLoginService->generatePairingQrCode($this->app->User->GetID(), $label, $secret); + + return new JsonResponse( + [ + 'secret' => $secret, + 'qr' => $qr->toHtml(4, 4) + ] + ); + } +}