From 1cf5b44bb97bcc5d667aa7c589b1dfe36ee9097e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F=20=D0=A1=D0=BE=D0=BB=D0=BE=D0=B2?= =?UTF-8?q?=D1=8C=D0=B5=D0=B2?= Date: Wed, 14 Feb 2024 12:56:49 +0200 Subject: [PATCH] Added deletion of users --- config/routes.php | 3 +- public/assets/js/admin.js | 38 ++++++++++++++++++++ src/Controllers/AdminController.php | 30 +++++++++++++++- src/Services/Repository/UserService.php | 13 +++++++ src/Views/default/components/admin-users.php | 4 +-- 5 files changed, 84 insertions(+), 4 deletions(-) diff --git a/config/routes.php b/config/routes.php index 06268aa..261f6db 100644 --- a/config/routes.php +++ b/config/routes.php @@ -20,7 +20,8 @@ Router::post('/updateInfo/', [new \Up\Controllers\UserController(), 'updateInfoAction']); //fetch-api -Router::post('/remove/',[new \Up\Controllers\AdminController(), 'removeAction']); +Router::post('/remove/', [new \Up\Controllers\AdminController(), 'removeProductAction']); +Router::post('/removeUser/', [new \Up\Controllers\AdminController(), 'removeUserAction']); Router::post('/migrations/execute/', [new \Up\Controllers\AdminController(), 'executeAction']); Router::post('/database/delete/', [new \Up\Controllers\AdminController(), 'dbAction']); Router::post('/update/product/', [new \Up\Controllers\AdminController(), 'updateProductAction']); diff --git a/public/assets/js/admin.js b/public/assets/js/admin.js index 25c38e9..564ba44 100644 --- a/public/assets/js/admin.js +++ b/public/assets/js/admin.js @@ -89,6 +89,44 @@ async function removeItem(id, title) } } +async function removeUser(id, fullName) +{ + const shouldRemove = confirm(`Are you sure you want to delete this product: ${fullName}`); + if (!shouldRemove) + { + return; + } + const removeParams = { + id: id, + }; + + try { + const response = await fetch('/removeUser/', + { + method: 'POST', + headers:{ + 'Content-Type': 'application/json;charset=utf-8', + }, + body: JSON.stringify(removeParams) + } + ); + const responseJson = await response.json(); + if (responseJson.result !== 'Y') + { + console.log('error while deleting user :('); + } + const userItem = document.querySelector(`[data-id="${id}"]`); + if (userItem) + { + userItem.remove(); + } + } + catch (error) + { + console.log('error while deleting user:' + error); + } +} + document.addEventListener('DOMContentLoaded', function() { const buttons = document.querySelectorAll('.account__sideBarBtn'); const containers = document.querySelectorAll('.account__main'); diff --git a/src/Controllers/AdminController.php b/src/Controllers/AdminController.php index 01d9057..f60b13f 100644 --- a/src/Controllers/AdminController.php +++ b/src/Controllers/AdminController.php @@ -72,7 +72,7 @@ public function loginAction(): string /** * @throws Exception */ - public function removeAction(): void + public function removeProductAction(): void { header('Content-Type: application/json'); $input = file_get_contents('php://input'); @@ -96,6 +96,34 @@ public function removeAction(): void } } + /** + * @throws Exception + */ + public function removeUserAction(): void + { + header('Content-Type: application/json'); + $input = file_get_contents('php://input'); + $data = Json::decode($input); + + if (isset($data['id'])) + { + $id = $data['id']; + $result = UserService::deleteUserByID($id); + + echo Json::encode([ + 'result' => $result > 0 ? 'Y' : 'N', + ]); + } + else + { + echo Json::encode([ + 'result' => 'N', + 'error' => 'Id not provided', + ]); + } + } + + public function dbAction(): void { header('Content-Type: application/json'); diff --git a/src/Services/Repository/UserService.php b/src/Services/Repository/UserService.php index dc76ef5..d0eeb6d 100644 --- a/src/Services/Repository/UserService.php +++ b/src/Services/Repository/UserService.php @@ -2,8 +2,10 @@ namespace Up\Services\Repository; +use Core\DB\DbConnection; use Core\Http\Request; use Exception; +use RuntimeException; use Up\Models\User; use Up\Services\SecurityService; @@ -221,4 +223,15 @@ public static function updateUserPassword(): bool return SecurityService::safeUpdateQuery($table, $data, $condition, $params); } + + /** + * @throws Exception + */ + public static function deleteUserByID(int $id): void + { + if (!SecurityService::safeDeleteQuery('`USER`','`USER`.`ID` = ?', [$id])) + { + throw new RuntimeException('Error delete user: ' . DbConnection::get()->error); + } + } } diff --git a/src/Views/default/components/admin-users.php b/src/Views/default/components/admin-users.php index 4b212e4..e642d95 100644 --- a/src/Views/default/components/admin-users.php +++ b/src/Views/default/components/admin-users.php @@ -12,7 +12,7 @@