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

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

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 (
@ -102,10 +104,11 @@ const (
PermissionGroupTasksOverviewXYView = _groupTasks + "overview.XY.view" PermissionGroupTasksOverviewXYView = _groupTasks + "overview.XY.view"
PermissionGroupTasksHistory = _groupTasks + "history" PermissionGroupTasksHistory = _groupTasks + "history"
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"
PermissionScannerUseScanners = "scanner.use_scanners" PermissionAllUsersActionUserDeactivation = "all_users.action.user_deactivation"
PermissionScannerUseScanners = "scanner.use_scanners"
_adminArea = "admin_area." _adminArea = "admin_area."
_adminAreaRoles = _adminArea + "roles." _adminAreaRoles = _adminArea + "roles."

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