From d5a8af49cbe7f93ee9375050dc78424d7b04e3e6 Mon Sep 17 00:00:00 2001 From: alex Date: Sun, 25 Jun 2023 14:56:29 +0200 Subject: [PATCH] delete user --- .../systempermissions/systempermissions.go | 1 + modules/utils/globals.go | 3 ++ socketclients/socketclients.go | 37 +++++++++++++++++++ socketserver/hub.go | 8 ++++ 4 files changed, 49 insertions(+) diff --git a/modules/systempermissions/systempermissions.go b/modules/systempermissions/systempermissions.go index 60efc01..dfedb78 100644 --- a/modules/systempermissions/systempermissions.go +++ b/modules/systempermissions/systempermissions.go @@ -10,6 +10,7 @@ func InitSystemPermissions() { cache.AddSystemPermissions([]string{ utils.PermissionGroupTasksHistory, utils.PermissionAllUsersActionChangeRole, + utils.PermissionAllUsersActionDeleteUser, utils.PermissionAllUsersCreateNewUser, utils.PermissionScannerUseScanners, utils.PermissionAdminAreaCreateNewRole, diff --git a/modules/utils/globals.go b/modules/utils/globals.go index 63a1c77..4e2285f 100644 --- a/modules/utils/globals.go +++ b/modules/utils/globals.go @@ -58,6 +58,7 @@ const ( SentCmdRolePermissionsUpdated = 24 SentCmdErrorNoPermissions = 25 SentCmdAllUsersNewUserCreated = 26 + SentCmdAllUsersUserDeleted = 27 ) // commands received from web clients @@ -74,6 +75,7 @@ const ( ReceivedCmdAdminAreaDeleteRole = 10 ReceivedCmdAllUsersUpdateUserRole = 11 ReceivedCmdAllUsersCreateNewUser = 12 + ReceivedCmdAllUsersDeleteUser = 13 ) const ( @@ -102,6 +104,7 @@ const ( PermissionAllUsersCreateNewUser = "all_users.create_new_user" PermissionAllUsersActionChangeRole = "all_users.action.change_role" + PermissionAllUsersActionDeleteUser = "all_users.action.delete_user" PermissionScannerUseScanners = "scanner.use_scanners" _adminArea = "admin_area." diff --git a/socketclients/socketclients.go b/socketclients/socketclients.go index dd40f99..7e16eae 100644 --- a/socketclients/socketclients.go +++ b/socketclients/socketclients.go @@ -7,6 +7,7 @@ import ( "janex/admin-dashboard-backend/modules/structs" "janex/admin-dashboard-backend/modules/systempermissions" "janex/admin-dashboard-backend/modules/utils" + "os" "time" "github.com/gofiber/websocket/v2" @@ -693,3 +694,39 @@ func AllUsersCreateNewUser(sessionId string, body map[string]interface{}) { }, }) } + +func AllUsersDeleteUser(userId string) { + var user structs.User + + database.DB.Select("avatar").Where("id = ?", userId).Find(&user) + + if user.Avatar != "" { + os.Remove("./public/avatars/" + user.Avatar) + } + + database.DB.Where("id = ?", userId).Delete(&structs.User{}) + database.DB.Where("user_id = ?", userId).Delete(&structs.UserSession{}) + + var scannerInUsage structs.Scanner + + database.DB.Select("id").Where("used_by_user_id = ?", userId).Find(&scannerInUsage) + + if scannerInUsage.Id != "" { + database.DB.Model(&structs.Scanner{}).Where("id = ?", scannerInUsage.Id).Updates(structs.Scanner{ + UsedByUserId: "", + }) + } + + CloseAndDeleteAllUserConnections(userId) + + BroadcastMessage(structs.SendSocketMessage{ + Cmd: utils.SentCmdAllUsersUserDeleted, + Body: struct { + UserId string + ScannerId string + }{ + UserId: userId, + ScannerId: scannerInUsage.Id, + }, + }) +} diff --git a/socketserver/hub.go b/socketserver/hub.go index 3fac5ea..19523fc 100644 --- a/socketserver/hub.go +++ b/socketserver/hub.go @@ -267,6 +267,14 @@ func RunHub() { socketclients.AllUsersCreateNewUser(data.Conn.Locals("sessionId").(string), receivedMessage.Body) break + case utils.ReceivedCmdAllUsersDeleteUser: + if !socketclients.HasPermission(data.Conn.Locals("userId").(string), utils.PermissionAllUsersActionDeleteUser) { + socketclients.SendErrorMessageNoPermissions(data.Conn.Locals("sessionId").(string)) + break + } + + socketclients.AllUsersDeleteUser(receivedMessage.Body["UserId"].(string)) + break default: log.Error().Msgf("Received unknown message: %v", receivedMessage)