role sorting order
parent
866bba7f07
commit
8ba858802b
|
@ -29,38 +29,40 @@ const (
|
||||||
|
|
||||||
// commands sent to web clients
|
// commands sent to web clients
|
||||||
const (
|
const (
|
||||||
SentCmdInitUserSocketConnection = 1
|
SentCmdInitUserSocketConnection = 1
|
||||||
SentCmdUpdateConnectedUsers = 2
|
SentCmdUpdateConnectedUsers = 2
|
||||||
SentCmdNewGroupTaskStarted = 3
|
SentCmdNewGroupTaskStarted = 3
|
||||||
SentCmdNewGroupTaskStep = 4
|
SentCmdNewGroupTaskStep = 4
|
||||||
SentCmdUpdateGroupTaskStep = 5
|
SentCmdUpdateGroupTaskStep = 5
|
||||||
SentCmdUpdateGroupTask = 6
|
SentCmdUpdateGroupTask = 6
|
||||||
SentCmdReloadingGroupTasks = 7
|
SentCmdReloadingGroupTasks = 7
|
||||||
SentCmdGroupTasksReloaded = 8
|
SentCmdGroupTasksReloaded = 8
|
||||||
SentCmdUpdateUserSessions = 9
|
SentCmdUpdateUserSessions = 9
|
||||||
SentCmdUpdateAllUsersUserAvatar = 10
|
SentCmdUpdateAllUsersUserAvatar = 10
|
||||||
SentCmdNewScanner = 11
|
SentCmdNewScanner = 11
|
||||||
SentCmdDeleteScanner = 12
|
SentCmdDeleteScanner = 12
|
||||||
SentCmdUpdateScannerUsedBy = 13
|
SentCmdUpdateScannerUsedBy = 13
|
||||||
SentCmdScanResult = 14
|
SentCmdScanResult = 14
|
||||||
SentCmdUpdateScannerLastUsed = 15
|
SentCmdUpdateScannerLastUsed = 15
|
||||||
SentCmdTaskLocked = 16
|
SentCmdTaskLocked = 16
|
||||||
SentCmdTaskUnlocked = 17
|
SentCmdTaskUnlocked = 17
|
||||||
SentCmdUserProfileUpdated = 18
|
SentCmdUserProfileUpdated = 18
|
||||||
SentCmdAdminAreaNewRoleCreated = 19
|
SentCmdAdminAreaNewRoleCreated = 19
|
||||||
SentCmdAdminAreaRoleUpdated = 20
|
SentCmdAdminAreaRoleUpdated = 20
|
||||||
|
SentCmdAdminAreaUpdateRoleSortingOrder = 21
|
||||||
)
|
)
|
||||||
|
|
||||||
// commands received from web clients
|
// commands received from web clients
|
||||||
const (
|
const (
|
||||||
ReceivedCmdStartGroupTasks = 1
|
ReceivedCmdStartGroupTasks = 1
|
||||||
ReceivedCmdTaskFailedTryAgainRunTaskStep = 2
|
ReceivedCmdTaskFailedTryAgainRunTaskStep = 2
|
||||||
ReceivedCmdTaskContinueTaskStep = 3
|
ReceivedCmdTaskContinueTaskStep = 3
|
||||||
ReceivedCmdReloadGroupTasks = 4
|
ReceivedCmdReloadGroupTasks = 4
|
||||||
ReceivedCmdTaskLocking = 5
|
ReceivedCmdTaskLocking = 5
|
||||||
ReceivedCmdUpdateUserProfile = 6
|
ReceivedCmdUpdateUserProfile = 6
|
||||||
ReceivedCmdAdminAreaCreateNewRole = 7
|
ReceivedCmdAdminAreaCreateNewRole = 7
|
||||||
ReceivedCmdAdminAreaUpdateRole = 8
|
ReceivedCmdAdminAreaUpdateRole = 8
|
||||||
|
ReceivedCmdAdminAreaUpdateRoleSortingOrder = 9
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
|
@ -11,6 +11,7 @@ import (
|
||||||
"github.com/gofiber/websocket/v2"
|
"github.com/gofiber/websocket/v2"
|
||||||
"github.com/rs/zerolog/log"
|
"github.com/rs/zerolog/log"
|
||||||
"golang.org/x/crypto/bcrypt"
|
"golang.org/x/crypto/bcrypt"
|
||||||
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
func BroadcastMessage(sendSocketMessage structs.SendSocketMessage) {
|
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 {
|
func isValueLenValid(value string, min int, max int) bool {
|
||||||
l := len(value)
|
l := len(value)
|
||||||
return l > min && l < max
|
return l >= min && l <= max
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetAllRoles() []structs.Role {
|
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:
|
case utils.ReceivedCmdAdminAreaUpdateRole:
|
||||||
socketclients.AdminAreaUpdateRole(data.Conn.Locals("sessionId").(string), receivedMessage.Body)
|
socketclients.AdminAreaUpdateRole(data.Conn.Locals("sessionId").(string), receivedMessage.Body)
|
||||||
break
|
break
|
||||||
|
case utils.ReceivedCmdAdminAreaUpdateRoleSortingOrder:
|
||||||
|
socketclients.MoveRoleToSortingOrder(receivedMessage.Body)
|
||||||
|
break
|
||||||
default:
|
default:
|
||||||
log.Error().Msgf("Received unknown message: %v", receivedMessage)
|
log.Error().Msgf("Received unknown message: %v", receivedMessage)
|
||||||
break
|
break
|
||||||
|
|
Loading…
Reference in New Issue