delete user

main
alex 2023-06-25 14:56:29 +02:00
parent 5a13c3fe36
commit d5a8af49cb
4 changed files with 49 additions and 0 deletions

View File

@ -10,6 +10,7 @@ func InitSystemPermissions() {
cache.AddSystemPermissions([]string{
utils.PermissionGroupTasksHistory,
utils.PermissionAllUsersActionChangeRole,
utils.PermissionAllUsersActionDeleteUser,
utils.PermissionAllUsersCreateNewUser,
utils.PermissionScannerUseScanners,
utils.PermissionAdminAreaCreateNewRole,

View File

@ -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."

View File

@ -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,
},
})
}

View File

@ -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)