delete role

main
alex 2023-06-21 13:55:43 +02:00
parent 8ba858802b
commit ba86dc8e4d
4 changed files with 29 additions and 3 deletions

View File

@ -6,7 +6,7 @@ import (
type Role struct { type Role struct {
Id string Id string
Master bool `gorm:"type:bool"` // this reflects the role that has all rights Master bool // this reflects the role that has all rights
DisplayName string DisplayName string
Description string Description string
SortingOrder int SortingOrder int

View File

@ -50,6 +50,7 @@ const (
SentCmdAdminAreaNewRoleCreated = 19 SentCmdAdminAreaNewRoleCreated = 19
SentCmdAdminAreaRoleUpdated = 20 SentCmdAdminAreaRoleUpdated = 20
SentCmdAdminAreaUpdateRoleSortingOrder = 21 SentCmdAdminAreaUpdateRoleSortingOrder = 21
SentCmdAdminAreaRoleDeleted = 22
) )
// commands received from web clients // commands received from web clients
@ -63,6 +64,7 @@ const (
ReceivedCmdAdminAreaCreateNewRole = 7 ReceivedCmdAdminAreaCreateNewRole = 7
ReceivedCmdAdminAreaUpdateRole = 8 ReceivedCmdAdminAreaUpdateRole = 8
ReceivedCmdAdminAreaUpdateRoleSortingOrder = 9 ReceivedCmdAdminAreaUpdateRoleSortingOrder = 9
ReceivedCmdAdminAreaDeleteRole = 10
) )
const ( const (

View File

@ -473,7 +473,7 @@ func AdminAreaUpdateRole(sessionId string, body map[string]interface{}) {
}) })
} }
func MoveRoleToSortingOrder(body map[string]interface{}) { func AdminAreaMoveRoleToSortingOrder(body map[string]interface{}) {
roleId := body["RoleId"].(string) roleId := body["RoleId"].(string)
direction := int(body["Direction"].(float64)) direction := int(body["Direction"].(float64))
@ -531,3 +531,24 @@ func MoveRoleToSortingOrder(body map[string]interface{}) {
Body: body, Body: body,
}) })
} }
func AdminAreaDeleteRole(body map[string]interface{}) {
roleId := body["RoleId"].(string)
var role structs.Role
database.DB.Where("id = ?", roleId).First(&role)
if err := database.DB.Model(&structs.Role{}).Where("sorting_order > ?", role.SortingOrder).Update("sorting_order", gorm.Expr("sorting_order - 1")).Error; err != nil {
log.Error().Msgf("Failed to update role sorting order after delete role %s", err.Error())
return
}
database.DB.Where("id = ?", roleId).Delete(&structs.Role{})
database.DB.Where("role_id = ?", roleId).Delete(&structs.RolePermission{})
BroadcastMessage(structs.SendSocketMessage{
Cmd: utils.SentCmdAdminAreaRoleDeleted,
Body: body,
})
}

View File

@ -219,7 +219,10 @@ func RunHub() {
socketclients.AdminAreaUpdateRole(data.Conn.Locals("sessionId").(string), receivedMessage.Body) socketclients.AdminAreaUpdateRole(data.Conn.Locals("sessionId").(string), receivedMessage.Body)
break break
case utils.ReceivedCmdAdminAreaUpdateRoleSortingOrder: case utils.ReceivedCmdAdminAreaUpdateRoleSortingOrder:
socketclients.MoveRoleToSortingOrder(receivedMessage.Body) socketclients.AdminAreaMoveRoleToSortingOrder(receivedMessage.Body)
break
case utils.ReceivedCmdAdminAreaDeleteRole:
socketclients.AdminAreaDeleteRole(receivedMessage.Body)
break break
default: default:
log.Error().Msgf("Received unknown message: %v", receivedMessage) log.Error().Msgf("Received unknown message: %v", receivedMessage)