user deactivitation
parent
d5a8af49cb
commit
6eba87d0a2
|
@ -104,6 +104,7 @@ type AllUsers struct {
|
|||
Avatar string
|
||||
Username string
|
||||
ConnectionStatus uint8
|
||||
Deactivated bool
|
||||
LastOnline time.Time
|
||||
}
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -11,6 +11,7 @@ func InitSystemPermissions() {
|
|||
utils.PermissionGroupTasksHistory,
|
||||
utils.PermissionAllUsersActionChangeRole,
|
||||
utils.PermissionAllUsersActionDeleteUser,
|
||||
utils.PermissionAllUsersActionUserDeactivation,
|
||||
utils.PermissionAllUsersCreateNewUser,
|
||||
utils.PermissionScannerUseScanners,
|
||||
utils.PermissionAdminAreaCreateNewRole,
|
||||
|
|
|
@ -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."
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue