user deactivitation
parent
d5a8af49cb
commit
6eba87d0a2
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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."
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue