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

@ -5,15 +5,16 @@ import (
)
type User struct {
Id string
RoleId string
Avatar string
Username string
Email string
Password string
LastOnline time.Time
UpdatedAt time.Time
CreatedAt time.Time
Id string
RoleId string
Avatar string
Username string
Email string
Password string
Deactivated bool
LastOnline time.Time
UpdatedAt time.Time
CreatedAt time.Time
}
type UserSession struct {

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 (
@ -102,10 +104,11 @@ const (
PermissionGroupTasksOverviewXYView = _groupTasks + "overview.XY.view"
PermissionGroupTasksHistory = _groupTasks + "history"
PermissionAllUsersCreateNewUser = "all_users.create_new_user"
PermissionAllUsersActionChangeRole = "all_users.action.change_role"
PermissionAllUsersActionDeleteUser = "all_users.action.delete_user"
PermissionScannerUseScanners = "scanner.use_scanners"
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."
_adminAreaRoles = _adminArea + "roles."

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