diff --git a/apps/maarch_entreprise/js/angular/app/administration/user-administration.component.ts b/apps/maarch_entreprise/js/angular/app/administration/user-administration.component.ts index f2e3be74f972c0b5c30ebdcda3f7f18dfc6e9ecc..495987a114a895a6a298b8b3174b09c6474d7c3b 100644 --- a/apps/maarch_entreprise/js/angular/app/administration/user-administration.component.ts +++ b/apps/maarch_entreprise/js/angular/app/administration/user-administration.component.ts @@ -480,18 +480,35 @@ export class UserAdministrationComponent extends AutoCompletePlugin implements O onSubmit() { if (this.creationMode) { - this.http.post(this.coreUrl + "rest/users", this.user) + var r = true; + + this.http.get(this.coreUrl + "rest/users/" + this.user.userId + "/status") .subscribe((data: any) => { - this.notify.success(this.lang.userAdded); - this.router.navigate(["/administration/users/" + data.user.id]); - }, (err) => { - this.notify.error(err.error.errors); + var deletedUser = false; + if (data.status && data.status == 'DEL') { + r = confirm(this.lang.reactivateUserDeleted); + deletedUser = true; + } + if (r) { + this.http.post(this.coreUrl + "rest/users", this.user) + .subscribe((data: any) => { + if (deletedUser) { + this.notify.success(this.lang.userUpdated); + } else { + this.notify.success(this.lang.userAdded); + } + this.router.navigate(["/administration/users/" + data.user.id]); + }, (err: any) => { + this.notify.error(err.error.errors); + }); + } + }, () => { }); } else { this.http.put(this.coreUrl + "rest/users/" + this.serialId, this.user) .subscribe((data: any) => { this.notify.success(this.lang.userUpdated); - }, (err) => { + }, (err: any) => { this.notify.error(err.error.errors); }); } diff --git a/apps/maarch_entreprise/js/angular/lang/lang-en.ts b/apps/maarch_entreprise/js/angular/lang/lang-en.ts index 484e5c1c4e0d1205ef429c0aaaaaf883943ebef8..fa64692e314d446d146a14298d6c004c3c087b8f 100755 --- a/apps/maarch_entreprise/js/angular/lang/lang-en.ts +++ b/apps/maarch_entreprise/js/angular/lang/lang-en.ts @@ -264,6 +264,7 @@ export const LANG_EN = { "record" : "element(s)", "records" : "result(s)", "reaffectUserRedirect" : "Reaffect to user (diffusion list + diffusion model entity)", + "reactivateUserDeleted" : "The id filled is linked to a deleted user. Voulez-vous le réactiver ?", "recordsPerPage" : "result per page", "redirectBasket" : "Redirect basket", "redirectConfidentialInfo" : "This user has confidentials documents linked to this service.<br/>You could link to an other user in this service.", diff --git a/apps/maarch_entreprise/js/angular/lang/lang-fr.ts b/apps/maarch_entreprise/js/angular/lang/lang-fr.ts index 921480f0f5edf53aebb74f1ea63650e784646d89..08180d7331844745d717625f7b9cd91d4c6d6a72 100755 --- a/apps/maarch_entreprise/js/angular/lang/lang-fr.ts +++ b/apps/maarch_entreprise/js/angular/lang/lang-fr.ts @@ -329,6 +329,7 @@ export const LANG_FR = { "processType" : "Type de traitement", "pswReseted" : "Mot de passe réinitialisé", "reaffectUserRedirect" : "Réaffecter à l'utilisateur (liste de diffusion + modèle de l'entité)", + "reactivateUserDeleted" : "L'identifiant renseigné est attribué à un utilisateur supprimé. Voulez-vous le réactiver ?", "reassign" : "Réassigner", "record" : "élément(s)", "records" : "résultats", diff --git a/apps/maarch_entreprise/lang/en.php b/apps/maarch_entreprise/lang/en.php index 6176f1ef2efbc22996c94eae7caa697d612d1882..9120df643ba6e9ddd9b94ef9699d1af5e6ec9a04 100755 --- a/apps/maarch_entreprise/lang/en.php +++ b/apps/maarch_entreprise/lang/en.php @@ -1452,30 +1452,12 @@ if (!defined('_AUTORIZED_USER')) { if (!defined('_SUSPENDED_USER')) { define('_SUSPENDED_USER', 'Suspended user'); } -if (!defined('_DELETED_USER')) { - define('_DELETED_USER', 'Deleted user'); -} -if (!defined('_USER_DELETION')) { - define('_USER_DELETION', 'User deletion'); -} if (!defined('_USER_AUTORIZATION')) { define('_USER_AUTORIZATION', 'User authorization'); } if (!defined('_USER_SUSPENSION')) { define('_USER_SUSPENSION', 'User suspension'); } -if (!defined('_USER_UPDATED')) { - define('_USER_UPDATED', 'Modified user'); -} -if (!defined('_USER_UPDATE')) { - define('_USER_UPDATE', 'User modification'); -} -if (!defined('_USER_ADDED')) { - define('_USER_ADDED', 'New added user'); -} -if (!defined('_NO_PRIMARY_GROUP')) { - define('_NO_PRIMARY_GROUP', 'No primary group is selected !'); -} if (!defined('_THE_USER')) { define('_THE_USER', 'The user '); } diff --git a/apps/maarch_entreprise/lang/fr.php b/apps/maarch_entreprise/lang/fr.php index 675e0533a66ec8734fa8fdd5596be1b1afeed2f7..8c5f00c52901e1e0e1eee9b0bbbef9810645069c 100755 --- a/apps/maarch_entreprise/lang/fr.php +++ b/apps/maarch_entreprise/lang/fr.php @@ -1460,30 +1460,12 @@ if (!defined('_EMPTY_PSW')) { if (!defined('_AUTORIZED_USER')) { define('_AUTORIZED_USER', 'Utilisateur autorisé'); } -if (!defined('_SUSPENDED_USER')) { - define('_SUSPENDED_USER', 'Utilisateur suspendu'); -} -if (!defined('_DELETED_USER')) { - define('_DELETED_USER', 'Utilisateur supprimé'); -} -if (!defined('_USER_DELETION')) { - define('_USER_DELETION', "Suppression de l'utilisateur"); -} if (!defined('_USER_AUTORIZATION')) { define('_USER_AUTORIZATION', "Autorisation de l'utilisateur"); } if (!defined('_USER_SUSPENSION')) { define('_USER_SUSPENSION', "Suspension de l'utilisateur"); } -if (!defined('_USER_UPDATED')) { - define('_USER_UPDATED', 'Utilisateur modifié'); -} -if (!defined('_USER_UPDATE')) { - define('_USER_UPDATE', "Modification d'un utilisateur"); -} -if (!defined('_USER_ADDED')) { - define('_USER_ADDED', 'Nouvel utilisateur ajouté'); -} if (!defined('_NO_PRIMARY_GROUP')) { define('_NO_PRIMARY_GROUP', 'Aucun groupe primaire sélectionné !'); } diff --git a/rest/index.php b/rest/index.php index a9a906f3dc594f4ba13e1a0b4034d5826a9705c9..89f3fe8ea71aee6bfbd5b37395c6147a70c4c935 100755 --- a/rest/index.php +++ b/rest/index.php @@ -264,6 +264,7 @@ $app->post('/users', \User\controllers\UserController::class . ':create'); $app->get('/users/{id}/details', \User\controllers\UserController::class . ':getDetailledById'); $app->put('/users/{id}', \User\controllers\UserController::class . ':update'); $app->put('/users/{id}/password', \User\controllers\UserController::class . ':resetPassword'); +$app->get('/users/{userId}/status', \User\controllers\UserController::class . ':getStatusByUserId'); $app->put('/users/{id}/status', \User\controllers\UserController::class . ':updateStatus'); $app->delete('/users/{id}', \User\controllers\UserController::class . ':delete'); $app->post('/users/{id}/groups', \User\controllers\UserController::class . ':addGroup'); diff --git a/src/app/user/controllers/UserController.php b/src/app/user/controllers/UserController.php index 16fe2888837482a4852e99b9f48a83954cf48070..dd910f77c51ba7ccd0b10907100db90b88f17e3b 100644 --- a/src/app/user/controllers/UserController.php +++ b/src/app/user/controllers/UserController.php @@ -128,9 +128,15 @@ class UserController return $response->withStatus(400)->withJson(['errors' => 'Bad Request']); } - $existingUser = UserModel::getByUserId(['userId' => $data['userId'], 'select' => ['1']]); - if (!empty($existingUser)) { - return $response->withStatus(400)->withJson(['errors' => _ID . ' ' . _ALREADY_EXISTS]); + $existingUser = UserModel::getByUserId(['userId' => $data['userId'], 'select' => ['id', 'status']]); + if (!empty($existingUser) && $existingUser['status'] == 'DEL') { + UserModel::updateStatus(['id' => $existingUser['id'], 'status' => 'OK']); + $data['enabled'] = 'Y'; + UserModel::update(['id' => $existingUser['id'], 'user' => $data]); + + return $response->withJson(['user' => $existingUser]); + } elseif (!empty($existingUser)) { + return $response->withStatus(400)->withJson(['errors' => _USER_ID_ALREADY_EXISTS]); } $logingModes = ['standard', 'restMode']; @@ -153,6 +159,14 @@ class UserController } } + HistoryController::add([ + 'tableName' => 'users', + 'recordId' => $GLOBALS['userId'], + 'eventType' => 'ADD', + 'eventId' => 'userCreation', + 'info' => _USER_CREATED . " {$data['userId']}" + ]); + return $response->withJson(['user' => $newUser]); } @@ -186,6 +200,14 @@ class UserController } } + HistoryController::add([ + 'tableName' => 'users', + 'recordId' => $GLOBALS['userId'], + 'eventType' => 'ADD', + 'eventId' => 'userCreation', + 'info' => _USER_UPDATED . " {$data['user_id']}" + ]); + return $response->withJson(['success' => 'success']); } @@ -198,6 +220,14 @@ class UserController UserModel::delete(['id' => $aArgs['id']]); + HistoryController::add([ + 'tableName' => 'users', + 'recordId' => $GLOBALS['userId'], + 'eventType' => 'ADD', + 'eventId' => 'userCreation', + 'info' => _USER_DELETED . " {$aArgs['id']}" + ]); + return $response->withJson(['success' => 'success']); } @@ -384,6 +414,17 @@ class UserController ]); } + public function getStatusByUserId(Request $request, Response $response, array $aArgs) + { + if (!ServiceModel::hasService(['id' => 'admin_users', 'userId' => $GLOBALS['userId'], 'location' => 'apps', 'type' => 'admin'])) { + return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']); + } + + $user = UserModel::getByUserId(['userId' => $aArgs['userId'], 'select' => ['status']]); + + return $response->withJson(['status' => $user['status']]); + } + public function updateStatus(Request $request, Response $response, array $aArgs) { $error = $this->hasUsersRights(['id' => $aArgs['id'], 'himself' => true]); diff --git a/src/core/lang/lang-en.php b/src/core/lang/lang-en.php index 235411e66db4e5d73979c309d41bc52a62a0a666..83d8ea51deba1f89ac9423e410fc1ad36841db5f 100644 --- a/src/core/lang/lang-en.php +++ b/src/core/lang/lang-en.php @@ -65,6 +65,10 @@ define('_STATUS_NOT_FOUND', 'Status not found'); define('_TO_CC', 'On copy'); define('_TO_SIGN', 'For signature'); define('_UPDATE_STATUS', 'Status update'); +define('_USER_ID_ALREADY_EXISTS', 'The user id already exists'); +define('_USER_CREATED', 'User added'); +define('_USER_UPDATED', 'User updated'); +define('_USER_DELETED', 'User deleted'); define('_USER_GROUP_CREATION', 'Group added for user'); define('_USER_GROUP_MODIFICATION', 'Group updated for user'); define('_USER_GROUP_SUPPRESSION', 'Group deleted for user'); diff --git a/src/core/lang/lang-fr.php b/src/core/lang/lang-fr.php index d03ca028233c24692f9c3a268d789b2121472608..d8e3ad5979ff8547bc28cfbdab2adfca42189ed2 100644 --- a/src/core/lang/lang-fr.php +++ b/src/core/lang/lang-fr.php @@ -65,6 +65,10 @@ define('_STATUS_NOT_FOUND', 'Statut introuvable'); define('_TO_CC', 'En copie'); define('_TO_SIGN', 'Pour signature'); define('_UPDATE_STATUS', 'Modification du statut'); +define('_USER_ID_ALREADY_EXISTS', 'L\'identifiant utilisateur existe déjà '); +define('_USER_CREATED', 'Utilisateur ajouté'); +define('_USER_UPDATED', 'Utilisateur modifié'); +define('_USER_DELETED', 'Utilisateur supprimé'); define('_USER_GROUP_CREATION', 'Groupe ajouté pour utilisateur'); define('_USER_GROUP_MODIFICATION', 'Groupe modifié pour utilisateur'); define('_USER_GROUP_SUPPRESSION', 'Groupe supprimé pour utilisateur');