role sorting order
parent
866bba7f07
commit
8ba858802b
|
@ -29,38 +29,40 @@ const (
|
|||
|
||||
// commands sent to web clients
|
||||
const (
|
||||
SentCmdInitUserSocketConnection = 1
|
||||
SentCmdUpdateConnectedUsers = 2
|
||||
SentCmdNewGroupTaskStarted = 3
|
||||
SentCmdNewGroupTaskStep = 4
|
||||
SentCmdUpdateGroupTaskStep = 5
|
||||
SentCmdUpdateGroupTask = 6
|
||||
SentCmdReloadingGroupTasks = 7
|
||||
SentCmdGroupTasksReloaded = 8
|
||||
SentCmdUpdateUserSessions = 9
|
||||
SentCmdUpdateAllUsersUserAvatar = 10
|
||||
SentCmdNewScanner = 11
|
||||
SentCmdDeleteScanner = 12
|
||||
SentCmdUpdateScannerUsedBy = 13
|
||||
SentCmdScanResult = 14
|
||||
SentCmdUpdateScannerLastUsed = 15
|
||||
SentCmdTaskLocked = 16
|
||||
SentCmdTaskUnlocked = 17
|
||||
SentCmdUserProfileUpdated = 18
|
||||
SentCmdAdminAreaNewRoleCreated = 19
|
||||
SentCmdAdminAreaRoleUpdated = 20
|
||||
SentCmdInitUserSocketConnection = 1
|
||||
SentCmdUpdateConnectedUsers = 2
|
||||
SentCmdNewGroupTaskStarted = 3
|
||||
SentCmdNewGroupTaskStep = 4
|
||||
SentCmdUpdateGroupTaskStep = 5
|
||||
SentCmdUpdateGroupTask = 6
|
||||
SentCmdReloadingGroupTasks = 7
|
||||
SentCmdGroupTasksReloaded = 8
|
||||
SentCmdUpdateUserSessions = 9
|
||||
SentCmdUpdateAllUsersUserAvatar = 10
|
||||
SentCmdNewScanner = 11
|
||||
SentCmdDeleteScanner = 12
|
||||
SentCmdUpdateScannerUsedBy = 13
|
||||
SentCmdScanResult = 14
|
||||
SentCmdUpdateScannerLastUsed = 15
|
||||
SentCmdTaskLocked = 16
|
||||
SentCmdTaskUnlocked = 17
|
||||
SentCmdUserProfileUpdated = 18
|
||||
SentCmdAdminAreaNewRoleCreated = 19
|
||||
SentCmdAdminAreaRoleUpdated = 20
|
||||
SentCmdAdminAreaUpdateRoleSortingOrder = 21
|
||||
)
|
||||
|
||||
// commands received from web clients
|
||||
const (
|
||||
ReceivedCmdStartGroupTasks = 1
|
||||
ReceivedCmdTaskFailedTryAgainRunTaskStep = 2
|
||||
ReceivedCmdTaskContinueTaskStep = 3
|
||||
ReceivedCmdReloadGroupTasks = 4
|
||||
ReceivedCmdTaskLocking = 5
|
||||
ReceivedCmdUpdateUserProfile = 6
|
||||
ReceivedCmdAdminAreaCreateNewRole = 7
|
||||
ReceivedCmdAdminAreaUpdateRole = 8
|
||||
ReceivedCmdStartGroupTasks = 1
|
||||
ReceivedCmdTaskFailedTryAgainRunTaskStep = 2
|
||||
ReceivedCmdTaskContinueTaskStep = 3
|
||||
ReceivedCmdReloadGroupTasks = 4
|
||||
ReceivedCmdTaskLocking = 5
|
||||
ReceivedCmdUpdateUserProfile = 6
|
||||
ReceivedCmdAdminAreaCreateNewRole = 7
|
||||
ReceivedCmdAdminAreaUpdateRole = 8
|
||||
ReceivedCmdAdminAreaUpdateRoleSortingOrder = 9
|
||||
)
|
||||
|
||||
const (
|
||||
|
|
|
@ -11,6 +11,7 @@ import (
|
|||
"github.com/gofiber/websocket/v2"
|
||||
"github.com/rs/zerolog/log"
|
||||
"golang.org/x/crypto/bcrypt"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
func BroadcastMessage(sendSocketMessage structs.SendSocketMessage) {
|
||||
|
@ -298,7 +299,7 @@ func UpdateUserProfile(conn *websocket.Conn, changes map[string]interface{}) {
|
|||
|
||||
func isValueLenValid(value string, min int, max int) bool {
|
||||
l := len(value)
|
||||
return l > min && l < max
|
||||
return l >= min && l <= max
|
||||
}
|
||||
|
||||
func GetAllRoles() []structs.Role {
|
||||
|
@ -471,3 +472,62 @@ func AdminAreaUpdateRole(sessionId string, body map[string]interface{}) {
|
|||
},
|
||||
})
|
||||
}
|
||||
|
||||
func MoveRoleToSortingOrder(body map[string]interface{}) {
|
||||
roleId := body["RoleId"].(string)
|
||||
direction := int(body["Direction"].(float64))
|
||||
|
||||
var role structs.Role
|
||||
|
||||
if err := database.DB.First(&role, "id = ?", roleId).Error; err != nil {
|
||||
log.Error().Msgf("Failed to get role %s", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
currentSortingOrder := role.SortingOrder
|
||||
var newSortingOrder int
|
||||
|
||||
if direction == 1 {
|
||||
newSortingOrder = currentSortingOrder + 1
|
||||
|
||||
log.Debug().Msgf("up %v %v", newSortingOrder, currentSortingOrder)
|
||||
|
||||
if newSortingOrder > database.GetRoleSortingOrder()-1 {
|
||||
return
|
||||
}
|
||||
} else {
|
||||
newSortingOrder = currentSortingOrder - 1
|
||||
|
||||
if newSortingOrder < 0 {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// If the new sorting order number is smaller than the current sorting order number,
|
||||
// increase the sorting order numbers of all roles between the new and current sorting order by 1
|
||||
if newSortingOrder < currentSortingOrder {
|
||||
if err := database.DB.Model(&structs.Role{}).Where("sorting_order >= ? AND sorting_order < ?", newSortingOrder, currentSortingOrder).Update("sorting_order", gorm.Expr("sorting_order + 1")).Error; err != nil {
|
||||
log.Error().Msgf("Failed to update sorting order upwards %s", err.Error())
|
||||
return
|
||||
}
|
||||
} else if newSortingOrder > currentSortingOrder {
|
||||
// If the new sorting order number is larger than the current sorting order number,
|
||||
// decrease the sorting order numbers of all roles between the current and new sorting order by 1.
|
||||
if err := database.DB.Model(&structs.Role{}).Where("sorting_order > ? AND sorting_order <= ?", currentSortingOrder, newSortingOrder).Update("sorting_order", gorm.Expr("sorting_order - 1")).Error; err != nil {
|
||||
log.Error().Msgf("Failed to update sorting order downwards %s", err.Error())
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// Update the sorting order number of the moved role
|
||||
if err := database.DB.Model(&role).Update("sorting_order", newSortingOrder).Error; err != nil {
|
||||
log.Debug().Msgf("Failed to update sorting order %s", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
// TODO: check permissions
|
||||
BroadcastMessage(structs.SendSocketMessage{
|
||||
Cmd: utils.SentCmdAdminAreaUpdateRoleSortingOrder,
|
||||
Body: body,
|
||||
})
|
||||
}
|
||||
|
|
|
@ -218,6 +218,9 @@ func RunHub() {
|
|||
case utils.ReceivedCmdAdminAreaUpdateRole:
|
||||
socketclients.AdminAreaUpdateRole(data.Conn.Locals("sessionId").(string), receivedMessage.Body)
|
||||
break
|
||||
case utils.ReceivedCmdAdminAreaUpdateRoleSortingOrder:
|
||||
socketclients.MoveRoleToSortingOrder(receivedMessage.Body)
|
||||
break
|
||||
default:
|
||||
log.Error().Msgf("Received unknown message: %v", receivedMessage)
|
||||
break
|
||||
|
|
Loading…
Reference in New Issue