diff --git a/internal/command/user.go b/internal/command/user.go index db0e1a061b..f6df852a7e 100644 --- a/internal/command/user.go +++ b/internal/command/user.go @@ -70,6 +70,9 @@ func (c *Commands) DeactivateUser(ctx context.Context, userID, resourceOwner str if !isUserStateExists(existingUser.UserState) { return nil, caos_errs.ThrowNotFound(nil, "COMMAND-3M9ds", "Errors.User.NotFound") } + if isUserStateInitial(existingUser.UserState) { + return nil, caos_errs.ThrowNotFound(nil, "COMMAND-ke0fw", "Errors.User.CantDeactivateInitial") + } if isUserStateInactive(existingUser.UserState) { return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-5M0sf", "Errors.User.AlreadyInactive") } diff --git a/internal/command/user_model.go b/internal/command/user_model.go index 2aae85ee5a..003128eadf 100644 --- a/internal/command/user_model.go +++ b/internal/command/user_model.go @@ -140,6 +140,10 @@ func isUserStateInactive(state domain.UserState) bool { return hasUserState(state, domain.UserStateInactive) } +func isUserStateInitial(state domain.UserState) bool { + return hasUserState(state, domain.UserStateInitial) +} + func hasUserState(check domain.UserState, states ...domain.UserState) bool { for _, state := range states { if check == state { diff --git a/internal/static/i18n/de.yaml b/internal/static/i18n/de.yaml index 9786d1dc6d..da93cbfefd 100644 --- a/internal/static/i18n/de.yaml +++ b/internal/static/i18n/de.yaml @@ -39,6 +39,7 @@ Errors: DomainNotAllowedAsUsername: Domäne ist bereits reserviert und kann nicht verwendet werden AlreadyInactive: Benutzer ist bereits deaktiviert NotInactive: Benutzer ist nicht inaktiv + CantDeactivateInitial: Benutzer mit dem Status initial kann nur gelöscht und nicht deaktiviert werden ShouldBeActiveOrInitial: Benutzer ist nicht aktiv oder initialisiert AlreadyInitialised: Benutzer ist bereits initialisiert NotInitialised: Benutzer ist noch nicht initialisiert diff --git a/internal/static/i18n/en.yaml b/internal/static/i18n/en.yaml index 53a5b752e7..0abf4e838b 100644 --- a/internal/static/i18n/en.yaml +++ b/internal/static/i18n/en.yaml @@ -39,6 +39,7 @@ Errors: DomainNotAllowedAsUsername: Domain is already reserved and cannot be used AlreadyInactive: User already inactive NotInactive: User is not inactive + CantDeactivateInitial: User with state initial can only be deleted not deactivated ShouldBeActiveOrInitial: User is not active or inital AlreadyInitialised: User is already initialised NotInitialised: User is not yet initialised diff --git a/internal/static/i18n/it.yaml b/internal/static/i18n/it.yaml index 34a1ae4594..5113bf3f04 100644 --- a/internal/static/i18n/it.yaml +++ b/internal/static/i18n/it.yaml @@ -39,6 +39,7 @@ Errors: DomainNotAllowedAsUsername: Il dominio è già riservato e non può essere utilizzato AlreadyInactive: Utente già inattivo NotInactive: L'utente non è inattivo + CantDeactivateInitial: Gli utenti con lo stato iniziale possono solo essere cancellati e non disattivati ShouldBeActiveOrInitial: L'utente non è attivo o inizializzato AlreadyInitialised: L'utente è già inizializzato NotInitialised: L'utente non è ancora inizializzato