From 5ab81670f267e82b483125f4003447bbf3f462bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20M=C3=BCller?= <p.mueller@pcsg.de> Date: Wed, 1 Feb 2017 12:10:32 +0100 Subject: [PATCH] feat: Permission-Abfrage bei Ajax-Requests --- ajax/deleteKeys.php | 16 ++++++++++++++-- ajax/generateKey.php | 23 ++++++++++++++++------- ajax/getKey.php | 18 ++++++++++++++---- ajax/getKeys.php | 18 +++++++++++++++--- ajax/regenerateRecoveryKeys.php | 18 ++++++++++++++---- 5 files changed, 73 insertions(+), 20 deletions(-) diff --git a/ajax/deleteKeys.php b/ajax/deleteKeys.php index 468bf33..8f09a07 100644 --- a/ajax/deleteKeys.php +++ b/ajax/deleteKeys.php @@ -11,10 +11,22 @@ QUI::$Ajax->registerFunction( 'package_quiqqer_authgoogle2fa_ajax_deleteKeys', function ($userId, $titles) { - $AuthUser = QUI::getUsers()->get((int)$userId); - $titles = Orthos::clearArray(json_decode($titles, true)); + $Users = QUI::getUsers(); + $AuthUser = $Users->get((int)$userId); + $titles = Orthos::clearArray(json_decode($titles, true)); + $SessionUser = QUI::getUserBySession(); // @todo Check user edit permission of session user + if ($Users->isNobodyUser($SessionUser)) { + throw new QUI\Permissions\Exception( + QUI::getLocale()->get( + 'quiqqer/system', + 'exception.lib.user.no.edit.rights' + ) + ); + } + + $SessionUser->checkEditPermission(); try { $secrets = json_decode($AuthUser->getAttribute('quiqqer.auth.google2fa.secrets'), true); diff --git a/ajax/generateKey.php b/ajax/generateKey.php index 208bf19..66364ab 100644 --- a/ajax/generateKey.php +++ b/ajax/generateKey.php @@ -15,16 +15,25 @@ QUI::$Ajax->registerFunction( 'package_quiqqer_authgoogle2fa_ajax_generateKey', function ($userId, $title) { - $AuthUser = QUI::getUsers()->get((int)$userId); - $title = Orthos::clear($title); - $CreateUser = QUI::getUserBySession(); + $Users = QUI::getUsers(); + $SessionUser = QUI::getUserBySession(); + $AuthUser = $Users->get((int)$userId); + $title = Orthos::clear($title); - // @todo Check user edit permission of session user + if ($Users->isNobodyUser($SessionUser)) { + throw new QUI\Permissions\Exception( + QUI::getLocale()->get( + 'quiqqer/system', + 'exception.lib.user.no.edit.rights' + ) + ); + } + + $SessionUser->checkEditPermission(); try { $Google2FA = new Google2FA(); - - $secrets = json_decode($AuthUser->getAttribute('quiqqer.auth.google2fa.secrets'), true); + $secrets = json_decode($AuthUser->getAttribute('quiqqer.auth.google2fa.secrets'), true); if (empty($secrets)) { $secrets = array(); @@ -43,7 +52,7 @@ function ($userId, $title) { $secrets[$title] = array( 'key' => Security::encrypt($Google2FA->generateSecretKey(32)), 'recoveryKeys' => Auth::generateRecoveryKeys(), - 'createUserId' => $CreateUser->getId(), + 'createUserId' => $SessionUser->getId(), 'createDate' => date('Y-m-d H:i:s') ); diff --git a/ajax/getKey.php b/ajax/getKey.php index 622ef80..96a2890 100644 --- a/ajax/getKey.php +++ b/ajax/getKey.php @@ -15,11 +15,21 @@ QUI::$Ajax->registerFunction( 'package_quiqqer_authgoogle2fa_ajax_getKey', function ($userId, $title) { - $AuthUser = QUI::getUsers()->get((int)$userId); - $title = Orthos::clear($title); - $keyData = array(); + $Users = QUI::getUsers(); + $SessionUser = QUI::getUserBySession(); + $AuthUser = $Users->get((int)$userId); + $title = Orthos::clear($title); - // @todo Check user edit permission of session user + if ($Users->isNobodyUser($SessionUser)) { + throw new QUI\Permissions\Exception( + QUI::getLocale()->get( + 'quiqqer/system', + 'exception.lib.user.no.edit.rights' + ) + ); + } + + $SessionUser->checkEditPermission(); try { $Google2FA = new Google2FA(); diff --git a/ajax/getKeys.php b/ajax/getKeys.php index 98bb68c..16a5cc2 100644 --- a/ajax/getKeys.php +++ b/ajax/getKeys.php @@ -9,10 +9,22 @@ QUI::$Ajax->registerFunction( 'package_quiqqer_authgoogle2fa_ajax_getKeys', function ($userId) { - $AuthUser = QUI::getUsers()->get((int)$userId); - $keys = array(); + $Users = QUI::getUsers(); + $SessionUser = QUI::getUserBySession(); + $AuthUser = $Users->get((int)$userId); - // @todo Check user edit permission of session user + if ($Users->isNobodyUser($SessionUser)) { + throw new QUI\Permissions\Exception( + QUI::getLocale()->get( + 'quiqqer/system', + 'exception.lib.user.no.edit.rights' + ) + ); + } + + $SessionUser->checkEditPermission(); + + $keys = array(); try { $secrets = json_decode($AuthUser->getAttribute('quiqqer.auth.google2fa.secrets'), true); diff --git a/ajax/regenerateRecoveryKeys.php b/ajax/regenerateRecoveryKeys.php index 71f6190..01e8ebb 100644 --- a/ajax/regenerateRecoveryKeys.php +++ b/ajax/regenerateRecoveryKeys.php @@ -15,11 +15,21 @@ QUI::$Ajax->registerFunction( 'package_quiqqer_authgoogle2fa_ajax_regenerateRecoveryKeys', function ($userId, $title) { - $AuthUser = QUI::getUsers()->get((int)$userId); - $title = Orthos::clear($title); - $EditUser = QUI::getUserBySession(); + $Users = QUI::getUsers(); + $SessionUser = QUI::getUserBySession(); + $AuthUser = $Users->get((int)$userId); + $title = Orthos::clear($title); - // @todo Check user edit permission of session user + if ($Users->isNobodyUser($SessionUser)) { + throw new QUI\Permissions\Exception( + QUI::getLocale()->get( + 'quiqqer/system', + 'exception.lib.user.no.edit.rights' + ) + ); + } + + $SessionUser->checkEditPermission(); try { $secrets = json_decode($AuthUser->getAttribute('quiqqer.auth.google2fa.secrets'), true); -- GitLab