From cdf8d4c07dbf291c69798cc566759d1cdc3bd7f7 Mon Sep 17 00:00:00 2001 From: Abdul Rahman Reza Date: Fri, 13 Dec 2024 09:47:52 +0700 Subject: [PATCH] update hard delete service user --- config/default.json | 2 +- config/stag.json | 2 +- src/controllers/user.ts | 13 ++++++++++--- src/controllers/user_roles.ts | 13 ++++++++++--- src/routes/private.ts | 4 ++-- src/swagger/builder.js | 6 ++++++ 6 files changed, 30 insertions(+), 10 deletions(-) diff --git a/config/default.json b/config/default.json index 6fab56f..a6d9991 100644 --- a/config/default.json +++ b/config/default.json @@ -30,7 +30,7 @@ "auth": { "refresh_token_lifetime_day": 30, "access_token_lifetime": 86400, - "reset_password_url": "https://bri-dev.shiblysolution.id/reset-password/" + "reset_password_url": "https://bri-dev.shiblysolution.id/auth/reset-password/" }, "service": { "notification": "http://127.0.0.1:4008/" diff --git a/config/stag.json b/config/stag.json index 369563d..76b1caa 100644 --- a/config/stag.json +++ b/config/stag.json @@ -30,7 +30,7 @@ "auth": { "refresh_token_lifetime_day": 30, "access_token_lifetime": 86400, - "reset_password_url": "https://bri-dev.shiblysolution.id/reset-password/" + "reset_password_url": "https://bri-dev.shiblysolution.id/auth/reset-password/" }, "service": { "notification": "http://127.0.0.1:4008/" diff --git a/src/controllers/user.ts b/src/controllers/user.ts index cfae86e..c8c6663 100644 --- a/src/controllers/user.ts +++ b/src/controllers/user.ts @@ -459,17 +459,24 @@ export class UserController { required: true, type: 'string' } + #swagger.parameters['hard'] = { + in: 'path', + description: 'Is Hard Delete', + required: false, + type: 'boolean' + } */ try { const schema = Joi.object().keys({ - id: Joi.string().uuid().required().label('ID') + id: Joi.string().uuid().required().label('ID'), + hard: Joi.bool().optional().allow('').label('Is hard delete?') }); - const param: User = await schema.validateAsync(req.params); + const param: { id: string, hard: boolean } = await schema.validateAsync(req.params); const userRepository = OrmHelper.DB.getRepository(User); - const affected = (await userRepository.softDelete({ id: param.id })).affected; + const affected = (!param.hard ? await userRepository.softDelete({ id: param.id }) : await userRepository.delete({ id: param.id })).affected; if (affected > 0) { return ReturnHelper.successResponseAny(res, 200, Language.lang.success_delete, {}); diff --git a/src/controllers/user_roles.ts b/src/controllers/user_roles.ts index f271b05..1126dee 100644 --- a/src/controllers/user_roles.ts +++ b/src/controllers/user_roles.ts @@ -350,13 +350,20 @@ export class UserRoleController { required: true, type: 'string' } + #swagger.parameters['hard'] = { + in: 'path', + description: 'Is Hard Delete', + required: false, + type: 'boolean' + } */ try { const schema = Joi.object().keys({ - id: Joi.string().uuid().required().label('ID') + id: Joi.string().uuid().required().label('ID'), + hard: Joi.bool().optional().allow('').label('Is hard delete?') }); - const param: UserRole = await schema.validateAsync(req.params); + const param: { id: string, hard: boolean } = await schema.validateAsync(req.params); const repo_role = OrmHelper.DB.getRepository(UserRole); const repo_user = OrmHelper.DB.getRepository(User); @@ -364,7 +371,7 @@ export class UserRoleController { const check_used = await repo_user.findOneBy({ id_role: param.id }) if (check_used == null) { - const affected = (await repo_role.softDelete({ id: param.id })).affected; + const affected = (!param.hard ? await repo_role.softDelete({ id: param.id }) : await repo_role.delete({ id: param.id })).affected; if (affected > 0) { return ReturnHelper.successResponseAny(res, 200, Language.lang.success_delete, {}); diff --git a/src/routes/private.ts b/src/routes/private.ts index f25172d..a71f69c 100644 --- a/src/routes/private.ts +++ b/src/routes/private.ts @@ -20,7 +20,7 @@ export class RoutePrivate { app.put('/api/user/update_profile', UserController.updateProfile) app.put('/api/user/update_password', UserController.updatePassword) app.get('/api/user/detail/:id', UserController.detail) - app.delete('/api/user/delete/:id', UserController.delete) + app.delete('/api/user/delete/:id/:hard', UserController.delete) app.put('/api/user/restore/:id', UserController.restore) app.get('/api/user_role/list', UserRoleController.list) @@ -28,7 +28,7 @@ export class RoutePrivate { // app.get('/api/user_role/role', UserRoleController.role) app.post('/api/user_role/create', UserRoleController.create) app.put('/api/user_role/update/:id', UserRoleController.update) - app.delete('/api/user_role/delete/:id', UserRoleController.delete) + app.delete('/api/user_role/delete/:id/:hard', UserRoleController.delete) app.put('/api/user_role/restore/:id', UserRoleController.restore) app.get('/api/user_activity/list', UserActivityController.list) diff --git a/src/swagger/builder.js b/src/swagger/builder.js index 43a2ce7..dc21dd2 100644 --- a/src/swagger/builder.js +++ b/src/swagger/builder.js @@ -20,11 +20,17 @@ const doc = { $password: "123456" }, user: { + $nik: "123456789", $email: "admin@gmail.com", $username: "admin", $password: "123456", $retype_password: "123456", $name: "Administrator", + $phone: "08123456789", + $jabatan: "4a6991b6-78a0-4b3b-bf5c-fa0af5f69be8", + $organisasi: "4a6991b6-78a0-4b3b-bf5c-fa0af5f69be8", + $divisi: "4a6991b6-78a0-4b3b-bf5c-fa0af5f69be8", + $unit: "4a6991b6-78a0-4b3b-bf5c-fa0af5f69be8", $id_role: "4a6991b6-78a0-4b3b-bf5c-fa0af5f69be8", $status: "Y" },