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 Avatar string
Username string Username string
ConnectionStatus uint8 ConnectionStatus uint8
Deactivated bool
LastOnline time.Time LastOnline time.Time
} }

View File

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

View File

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

View File

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

View File

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

View File

@ -177,6 +177,7 @@ func GetAllUsers() []structs.AllUsers {
Avatar: user.Avatar, Avatar: user.Avatar,
Username: user.Username, Username: user.Username,
ConnectionStatus: isUserGenerallyConnected(user.Id), ConnectionStatus: isUserGenerallyConnected(user.Id),
Deactivated: user.Deactivated,
LastOnline: user.LastOnline, 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)) socketclients.AllUsersDeleteUser(receivedMessage.Body["UserId"].(string))
break 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: default:
log.Error().Msgf("Received unknown message: %v", receivedMessage) log.Error().Msgf("Received unknown message: %v", receivedMessage)
@ -293,7 +301,6 @@ func RunHub() {
}) })
socketclients.UpdateUserSessionsForUser(userId, sessionId) socketclients.UpdateUserSessionsForUser(userId, sessionId)
socketclients.UpdateConnectedUsers(userId) socketclients.UpdateConnectedUsers(userId)
} }
} }