From 2ea567c7bbb94ed03f8f0bc1d38f70acfbe99f0b Mon Sep 17 00:00:00 2001 From: "florian.azizian" <florian.azizian@maarch.org> Date: Fri, 21 Jun 2019 11:49:54 +0100 Subject: [PATCH] FEAT #10733 0:30 wip update groups --- lang/en.json | 3 +- lang/fr.json | 3 +- rest/index.php | 1 + src/app/group/controllers/GroupController.php | 36 +++++++++++++++++++ src/app/group/models/GroupModel.php | 15 ++++++++ 5 files changed, 56 insertions(+), 2 deletions(-) diff --git a/lang/en.json b/lang/en.json index e9deb82057..2d131d5ad5 100755 --- a/lang/en.json +++ b/lang/en.json @@ -188,6 +188,7 @@ "warnPrivateKey": "This cause security issues", "ok": "Ok", "groupAdded" : "Group added", - "groupdeleted" : "Group deleted" + "groupdeleted" : "Group deleted", + "groupUpdated" : "Group updated" } } diff --git a/lang/fr.json b/lang/fr.json index 576517331e..38b1c5ee44 100755 --- a/lang/fr.json +++ b/lang/fr.json @@ -190,7 +190,8 @@ "warnPrivateKey": "Cela compromet la sécurité de l'application.", "ok": "J'ai compris", "groupAdded" : "Groupe ajouté", - "groupdeleted" : "Groupe supprimé" + "groupdeleted" : "Groupe supprimé", + "groupUpdated" : "Groupe mis à jour" } } diff --git a/rest/index.php b/rest/index.php index d0dab6fd5e..ea489dcf83 100755 --- a/rest/index.php +++ b/rest/index.php @@ -85,6 +85,7 @@ $app->post('/groups', \Group\controllers\GroupController::class . ':create'); $app->get('/groups', \Group\controllers\GroupController::class . ':get'); $app->get('/groups/{id}', \Group\controllers\GroupController::class . ':getById'); $app->delete('/groups/{id}', \Group\controllers\GroupController::class . ':delete'); +$app->put('/groups/{id}', \Group\controllers\GroupController::class . ':update'); //Users $app->post('/users', \User\controllers\UserController::class . ':create'); diff --git a/src/app/group/controllers/GroupController.php b/src/app/group/controllers/GroupController.php index b85811f519..9028964efd 100755 --- a/src/app/group/controllers/GroupController.php +++ b/src/app/group/controllers/GroupController.php @@ -63,6 +63,42 @@ class GroupController return $response->withJson(['id' => $id]); } + public function update(Request $request, Response $response, $aArgs) + { + if (!PrivilegeController::hasPrivilege(['userId' => $GLOBALS['id'], 'privilege' => 'manage_groups'])) { + return $response->withStatus(403)->withJson(['errors' => 'Privilege forbidden']); + } + + $body = $request->getParsedBody(); + + $group = GroupModel::getById(['id' => $aArgs['id']]); + if (empty($group)) { + return $response->withStatus(400)->withJson(['errors' => 'Group not found']); + } + + if (empty($body)) { + return $response->withStatus(400)->withJson(['errors' => 'Body is not set or empty']); + } elseif (!Validator::stringType()->notEmpty()->length(1, 128)->validate($body['label'])) { + return $response->withStatus(400)->withJson(['errors' => 'Body label is empty or not a string or longer than 128 caracteres']); + } + + GroupModel::update([ + 'set' => ['label' => $body['label']], + 'where' => ['id = ?'], + 'data' => [$aArgs['id']] + ]); + + HistoryController::add([ + 'code' => 'OK', + 'objectType' => 'groups', + 'objectId' => $aArgs['id'], + 'type' => 'UPDATE', + 'message' => "{groupUpdated} : {$body['label']}" + ]); + + return $response->withStatus(204); + } + public function delete(Request $request, Response $response, $aArgs) { if (!PrivilegeController::hasPrivilege(['userId' => $GLOBALS['id'], 'privilege' => 'manage_groups'])) { diff --git a/src/app/group/models/GroupModel.php b/src/app/group/models/GroupModel.php index e979b2d1a7..094c300a1d 100755 --- a/src/app/group/models/GroupModel.php +++ b/src/app/group/models/GroupModel.php @@ -72,6 +72,21 @@ class GroupModel return $nextSequenceId; } + public static function update(array $args) + { + ValidatorModel::notEmpty($args, ['set', 'where', 'data']); + ValidatorModel::arrayType($args, ['set', 'where', 'data']); + + DatabaseModel::update([ + 'table' => 'groups', + 'set' => $args['set'], + 'where' => $args['where'], + 'data' => $args['data'] + ]); + + return true; + } + public static function delete(array $args) { ValidatorModel::notEmpty($args, ['where', 'data']); -- GitLab