user deactivitation

main
alex 2023-06-25 19:53:26 +02:00
parent d5a8af49cb
commit 6eba87d0a2
7 changed files with 55 additions and 14 deletions

View File

@ -104,6 +104,7 @@ type AllUsers struct {
Avatar string
Username string
ConnectionStatus uint8
Deactivated bool
LastOnline time.Time
}

View File

@ -11,6 +11,7 @@ type User struct {
Username string
Email string
Password string
Deactivated bool
LastOnline time.Time
UpdatedAt time.Time
CreatedAt time.Time

View File

@ -11,6 +11,7 @@ func InitSystemPermissions() {
utils.PermissionGroupTasksHistory,
utils.PermissionAllUsersActionChangeRole,
utils.PermissionAllUsersActionDeleteUser,
utils.PermissionAllUsersActionUserDeactivation,
utils.PermissionAllUsersCreateNewUser,
utils.PermissionScannerUseScanners,
utils.PermissionAdminAreaCreateNewRole,

View File

@ -59,6 +59,7 @@ const (
SentCmdErrorNoPermissions = 25
SentCmdAllUsersNewUserCreated = 26
SentCmdAllUsersUserDeleted = 27
SentCmdAllUsersUserDeactivation = 28
)
// commands received from web clients
@ -76,6 +77,7 @@ const (
ReceivedCmdAllUsersUpdateUserRole = 11
ReceivedCmdAllUsersCreateNewUser = 12
ReceivedCmdAllUsersDeleteUser = 13
ReceivedCmdAllUsersUserDeactivation = 14
)
const (
@ -105,6 +107,7 @@ const (
PermissionAllUsersCreateNewUser = "all_users.create_new_user"
PermissionAllUsersActionChangeRole = "all_users.action.change_role"
PermissionAllUsersActionDeleteUser = "all_users.action.delete_user"
PermissionAllUsersActionUserDeactivation = "all_users.action.user_deactivation"
PermissionScannerUseScanners = "scanner.use_scanners"
_adminArea = "admin_area."

View File

@ -53,6 +53,10 @@ func UserLogin(c *fiber.Ctx) error {
return c.SendStatus(fiber.StatusBadRequest)
}
if user.Deactivated {
return c.SendStatus(fiber.StatusUnauthorized)
}
session, err := GenerateSession()
if err != nil {

View File

@ -177,6 +177,7 @@ func GetAllUsers() []structs.AllUsers {
Avatar: user.Avatar,
Username: user.Username,
ConnectionStatus: isUserGenerallyConnected(user.Id),
Deactivated: user.Deactivated,
LastOnline: user.LastOnline,
})
}
@ -730,3 +731,26 @@ func AllUsersDeleteUser(userId string) {
},
})
}
func AllUsersUserDeactivation(userId string, deactivate bool) {
log.Debug().Msgf("deactivation %v %v", userId, deactivate)
database.DB.Model(&structs.User{}).Select("deactivated").Where("id = ?", userId).Updates(structs.User{
Deactivated: deactivate,
})
if deactivate {
CloseAndDeleteAllUserConnections(userId)
}
BroadcastMessage(structs.SendSocketMessage{
Cmd: utils.SentCmdAllUsersUserDeactivation,
Body: struct {
UserId string
Deactivated bool
}{
UserId: userId,
Deactivated: deactivate,
},
})
}

View File

@ -275,6 +275,14 @@ func RunHub() {
socketclients.AllUsersDeleteUser(receivedMessage.Body["UserId"].(string))
break
case utils.ReceivedCmdAllUsersUserDeactivation:
if !socketclients.HasPermission(data.Conn.Locals("userId").(string), utils.PermissionAllUsersActionUserDeactivation) {
socketclients.SendErrorMessageNoPermissions(data.Conn.Locals("sessionId").(string))
break
}
socketclients.AllUsersUserDeactivation(receivedMessage.Body["UserId"].(string), receivedMessage.Body["Deactivation"].(bool))
break
default:
log.Error().Msgf("Received unknown message: %v", receivedMessage)
@ -293,7 +301,6 @@ func RunHub() {
})
socketclients.UpdateUserSessionsForUser(userId, sessionId)
socketclients.UpdateConnectedUsers(userId)
}
}