-
- {{t "RegistrationUser.BackButtonText"}}
+
+
{{t "RegistrationUser.NextButtonText"}}
diff --git a/internal/api/ui/login/username_change_handler.go b/internal/api/ui/login/username_change_handler.go
index 79affe9705..7a497c4eb5 100644
--- a/internal/api/ui/login/username_change_handler.go
+++ b/internal/api/ui/login/username_change_handler.go
@@ -21,7 +21,7 @@ func (l *Login) renderChangeUsername(w http.ResponseWriter, r *http.Request, aut
errID, errMessage = l.getErrorMessage(r, err)
}
translator := l.getTranslator(r.Context(), authReq)
- data := l.getUserData(r, authReq, "UsernameChange.Title", "UsernameChange.Description", errID, errMessage)
+ data := l.getUserData(r, authReq, translator, "UsernameChange.Title", "UsernameChange.Description", errID, errMessage)
l.renderer.RenderTemplate(w, r, translator, l.renderer.Templates[tmplChangeUsername], data, nil)
}
@@ -43,6 +43,6 @@ func (l *Login) handleChangeUsername(w http.ResponseWriter, r *http.Request) {
func (l *Login) renderChangeUsernameDone(w http.ResponseWriter, r *http.Request, authReq *domain.AuthRequest) {
var errType, errMessage string
translator := l.getTranslator(r.Context(), authReq)
- data := l.getUserData(r, authReq, "UsernameChangeDone.Title", "UsernameChangeDone.Description", errType, errMessage)
+ data := l.getUserData(r, authReq, translator, "UsernameChangeDone.Title", "UsernameChangeDone.Description", errType, errMessage)
l.renderer.RenderTemplate(w, r, translator, l.renderer.Templates[tmplChangeUsernameDone], data, nil)
}
diff --git a/internal/auth/repository/eventsourcing/eventstore/auth_request.go b/internal/auth/repository/eventsourcing/eventstore/auth_request.go
index b0e1c4c7ab..2d2c60e3cc 100644
--- a/internal/auth/repository/eventsourcing/eventstore/auth_request.go
+++ b/internal/auth/repository/eventsourcing/eventstore/auth_request.go
@@ -14,7 +14,6 @@ import (
"github.com/zitadel/zitadel/internal/command"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/id"
@@ -23,6 +22,7 @@ import (
"github.com/zitadel/zitadel/internal/telemetry/tracing"
user_model "github.com/zitadel/zitadel/internal/user/model"
user_view_model "github.com/zitadel/zitadel/internal/user/repository/view/model"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const unknownUserID = "UNKNOWN"
@@ -262,7 +262,7 @@ func (repo *AuthRequestRepo) CheckExternalUserLogin(ctx context.Context, authReq
return err
}
err = repo.checkExternalUserLogin(ctx, request, externalUser.IDPConfigID, externalUser.ExternalUserID)
- if errors.IsNotFound(err) {
+ if zerrors.IsNotFound(err) {
// clear potential user information (e.g. when username was entered but another external user was returned)
request.SetUserInfo("", "", "", "", "", request.UserOrgID)
// in case the check was done with an ID, that was retrieved by a session that allows migration,
@@ -328,7 +328,7 @@ func (repo *AuthRequestRepo) SelectUser(ctx context.Context, id, userID, userAge
return err
}
if request.RequestedOrgID != "" && request.RequestedOrgID != user.ResourceOwner {
- return errors.ThrowPreconditionFailed(nil, "EVENT-fJe2a", "Errors.User.NotAllowedOrg")
+ return zerrors.ThrowPreconditionFailed(nil, "EVENT-fJe2a", "Errors.User.NotAllowedOrg")
}
username := user.UserName
if request.RequestedOrgID == "" {
@@ -344,7 +344,7 @@ func (repo *AuthRequestRepo) VerifyPassword(ctx context.Context, authReqID, user
request, err := repo.getAuthRequestEnsureUser(ctx, authReqID, userAgentID, userID)
if err != nil {
if isIgnoreUserNotFoundError(err, request) {
- return errors.ThrowInvalidArgument(nil, "EVENT-SDe2f", "Errors.User.UsernameOrPassword.Invalid")
+ return zerrors.ThrowInvalidArgument(nil, "EVENT-SDe2f", "Errors.User.UsernameOrPassword.Invalid")
}
return err
}
@@ -354,17 +354,17 @@ func (repo *AuthRequestRepo) VerifyPassword(ctx context.Context, authReqID, user
}
err = repo.Command.HumanCheckPassword(ctx, resourceOwner, userID, password, request.WithCurrentInfo(info), lockoutPolicyToDomain(policy))
if isIgnoreUserInvalidPasswordError(err, request) {
- return errors.ThrowInvalidArgument(nil, "EVENT-Jsf32", "Errors.User.UsernameOrPassword.Invalid")
+ return zerrors.ThrowInvalidArgument(nil, "EVENT-Jsf32", "Errors.User.UsernameOrPassword.Invalid")
}
return err
}
func isIgnoreUserNotFoundError(err error, request *domain.AuthRequest) bool {
- return request != nil && request.LoginPolicy != nil && request.LoginPolicy.IgnoreUnknownUsernames && errors.IsNotFound(err) && errors.Contains(err, "Errors.User.NotFound")
+ return request != nil && request.LoginPolicy != nil && request.LoginPolicy.IgnoreUnknownUsernames && zerrors.IsNotFound(err) && zerrors.Contains(err, "Errors.User.NotFound")
}
func isIgnoreUserInvalidPasswordError(err error, request *domain.AuthRequest) bool {
- return request != nil && request.LoginPolicy != nil && request.LoginPolicy.IgnoreUnknownUsernames && errors.IsErrorInvalidArgument(err) && errors.Contains(err, "Errors.User.Password.Invalid")
+ return request != nil && request.LoginPolicy != nil && request.LoginPolicy.IgnoreUnknownUsernames && zerrors.IsErrorInvalidArgument(err) && zerrors.Contains(err, "Errors.User.Password.Invalid")
}
func lockoutPolicyToDomain(policy *query.LockoutPolicy) *domain.LockoutPolicy {
@@ -613,7 +613,7 @@ func (repo *AuthRequestRepo) getAuthRequestEnsureUser(ctx context.Context, authR
}
}
if request.UserID != userID {
- return nil, errors.ThrowPreconditionFailed(nil, "EVENT-GBH32", "Errors.User.NotMatchingUserID")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "EVENT-GBH32", "Errors.User.NotMatchingUserID")
}
_, err = activeUserByID(ctx, repo.UserViewProvider, repo.UserEventProvider, repo.OrgViewProvider, repo.LockoutPolicyViewProvider, request.UserID, false)
if err != nil {
@@ -631,7 +631,7 @@ func (repo *AuthRequestRepo) getAuthRequest(ctx context.Context, id, userAgentID
return nil, err
}
if request.AgentID != userAgentID {
- return nil, errors.ThrowPermissionDenied(nil, "EVENT-adk13", "Errors.AuthRequest.UserAgentNotCorresponding")
+ return nil, zerrors.ThrowPermissionDenied(nil, "EVENT-adk13", "Errors.AuthRequest.UserAgentNotCorresponding")
}
err = repo.fillPolicies(ctx, request)
if err != nil {
@@ -743,7 +743,7 @@ func (repo *AuthRequestRepo) checkLoginName(ctx context.Context, request *domain
user, err = repo.checkLoginNameInput(ctx, request, preferredLoginName)
}
// return any error apart from not found ones directly
- if err != nil && !errors.IsNotFound(err) {
+ if err != nil && !zerrors.IsNotFound(err) {
return err
}
// if there's an active (human) user, let's use it
@@ -759,11 +759,11 @@ func (repo *AuthRequestRepo) checkLoginName(ctx context.Context, request *domain
}
// let's once again check if the user was just inactive
if user != nil && user.State == int32(domain.UserStateInactive) {
- return errors.ThrowPreconditionFailed(nil, "AUTH-2n8fs", "Errors.User.Inactive")
+ return zerrors.ThrowPreconditionFailed(nil, "AUTH-2n8fs", "Errors.User.Inactive")
}
// or locked
if user != nil && user.State == int32(domain.UserStateLocked) {
- return errors.ThrowPreconditionFailed(nil, "AUTH-SF3gb", "Errors.User.Locked")
+ return zerrors.ThrowPreconditionFailed(nil, "AUTH-SF3gb", "Errors.User.Locked")
}
// let's just check if unknown usernames are ignored
if request.LoginPolicy != nil && request.LoginPolicy.IgnoreUnknownUsernames {
@@ -780,11 +780,11 @@ func (repo *AuthRequestRepo) checkLoginName(ctx context.Context, request *domain
}
// let's check if it was a machine user
if !user.MachineView.IsZero() {
- return errors.ThrowPreconditionFailed(nil, "AUTH-DGV4g", "Errors.User.NotHuman")
+ return zerrors.ThrowPreconditionFailed(nil, "AUTH-DGV4g", "Errors.User.NotHuman")
}
// everything should be handled by now
logging.WithFields("authRequest", request.ID, "loginName", loginName).Error("unhandled state for checkLoginName")
- return errors.ThrowInternal(nil, "AUTH-asf3df", "Errors.Internal")
+ return zerrors.ThrowInternal(nil, "AUTH-asf3df", "Errors.Internal")
}
func (repo *AuthRequestRepo) checkDomainDiscovery(ctx context.Context, request *domain.AuthRequest, loginName string) (bool, error) {
@@ -889,12 +889,12 @@ func (repo *AuthRequestRepo) checkLoginPolicyWithResourceOwner(ctx context.Conte
return err
}
if len(request.LinkingUsers) != 0 && !loginPolicy.AllowExternalIDPs {
- return errors.ThrowInvalidArgument(nil, "LOGIN-s9sio", "Errors.User.NotAllowedToLink")
+ return zerrors.ThrowInvalidArgument(nil, "LOGIN-s9sio", "Errors.User.NotAllowedToLink")
}
if len(request.LinkingUsers) != 0 {
exists := linkingIDPConfigExistingInAllowedIDPs(request.LinkingUsers, idpProviders)
if !exists {
- return errors.ThrowInvalidArgument(nil, "LOGIN-Dj89o", "Errors.User.NotAllowedToLink")
+ return zerrors.ThrowInvalidArgument(nil, "LOGIN-Dj89o", "Errors.User.NotAllowedToLink")
}
}
request.LoginPolicy = queryLoginPolicyToDomain(loginPolicy)
@@ -941,7 +941,7 @@ func (repo *AuthRequestRepo) checkSelectedExternalIDP(request *domain.AuthReques
return nil
}
}
- return errors.ThrowNotFound(nil, "LOGIN-Nsm8r", "Errors.User.ExternalIDP.NotAllowed")
+ return zerrors.ThrowNotFound(nil, "LOGIN-Nsm8r", "Errors.User.ExternalIDP.NotAllowed")
}
func (repo *AuthRequestRepo) checkExternalUserLogin(ctx context.Context, request *domain.AuthRequest, idpConfigID, externalUserID string) (err error) {
@@ -968,7 +968,7 @@ func (repo *AuthRequestRepo) checkExternalUserLogin(ctx context.Context, request
return err
}
if len(links.Links) != 1 {
- return errors.ThrowNotFound(nil, "AUTH-Sf8sd", "Errors.ExternalIDP.NotFound")
+ return zerrors.ThrowNotFound(nil, "AUTH-Sf8sd", "Errors.ExternalIDP.NotFound")
}
user, err := activeUserByID(ctx, repo.UserViewProvider, repo.UserEventProvider, repo.OrgViewProvider, repo.LockoutPolicyViewProvider, links.Links[0].UserID, false)
if err != nil {
@@ -988,7 +988,7 @@ func (repo *AuthRequestRepo) nextSteps(ctx context.Context, request *domain.Auth
defer func() { span.EndWithError(err) }()
if request == nil {
- return nil, errors.ThrowInvalidArgument(nil, "EVENT-ds27a", "Errors.Internal")
+ return nil, zerrors.ThrowInvalidArgument(nil, "EVENT-ds27a", "Errors.Internal")
}
steps = make([]domain.NextStep, 0)
if !checkLoggedIn && domain.IsPrompt(request.Prompt, domain.PromptNone) {
@@ -1216,7 +1216,7 @@ func (repo *AuthRequestRepo) mfaChecked(userSession *user_model.UserSessionView,
if promptRequired || !repo.mfaSkippedOrSetUp(user, request) {
types := user.MFATypesSetupPossible(mfaLevel, request.LoginPolicy)
if promptRequired && len(types) == 0 {
- return nil, false, errors.ThrowPreconditionFailed(nil, "LOGIN-5Hm8s", "Errors.Login.LoginPolicy.MFA.ForceAndNotConfigured")
+ return nil, false, zerrors.ThrowPreconditionFailed(nil, "LOGIN-5Hm8s", "Errors.Login.LoginPolicy.MFA.ForceAndNotConfigured")
}
if len(types) == 0 {
return nil, true, nil
@@ -1265,7 +1265,7 @@ func (repo *AuthRequestRepo) mfaSkippedOrSetUp(user *user_model.UserView, reques
func (repo *AuthRequestRepo) GetPrivacyPolicy(ctx context.Context, orgID string) (*domain.PrivacyPolicy, error) {
policy, err := repo.PrivacyPolicyProvider.PrivacyPolicyByOrg(ctx, false, orgID, false)
- if errors.IsNotFound(err) {
+ if zerrors.IsNotFound(err) {
return new(domain.PrivacyPolicy), nil
}
if err != nil {
@@ -1468,7 +1468,7 @@ func userSessionByIDs(ctx context.Context, provider userSessionViewProvider, eve
session, err := provider.UserSessionByIDs(agentID, user.ID, instanceID)
if err != nil {
- if !errors.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return nil, err
}
session = &user_view_model.UserSessionView{UserAgentID: agentID, UserID: user.ID}
@@ -1510,7 +1510,7 @@ func userSessionByIDs(ctx context.Context, provider userSessionViewProvider, eve
continue
}
case user_repo.UserRemovedType:
- return nil, errors.ThrowPreconditionFailed(nil, "EVENT-dG2fe", "Errors.User.NotActive")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "EVENT-dG2fe", "Errors.User.NotActive")
}
err := sessionCopy.AppendEvent(event)
logging.WithFields("traceID", tracing.TraceIDFromCtx(ctx)).OnError(err).Warn("error appending event")
@@ -1522,7 +1522,7 @@ func activeUserByID(ctx context.Context, userViewProvider userViewProvider, user
// PLANNED: Check LockoutPolicy
user, err = userByID(ctx, userViewProvider, userEventProvider, userID)
if err != nil {
- if ignoreUnknownUsernames && errors.IsNotFound(err) {
+ if ignoreUnknownUsernames && zerrors.IsNotFound(err) {
return &user_model.UserView{
ID: userID,
HumanView: &user_model.HumanView{},
@@ -1532,20 +1532,20 @@ func activeUserByID(ctx context.Context, userViewProvider userViewProvider, user
}
if user.HumanView == nil {
- return nil, errors.ThrowPreconditionFailed(nil, "EVENT-Lm69x", "Errors.User.NotHuman")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "EVENT-Lm69x", "Errors.User.NotHuman")
}
if user.State == user_model.UserStateLocked || user.State == user_model.UserStateSuspend {
- return nil, errors.ThrowPreconditionFailed(nil, "EVENT-FJ262", "Errors.User.Locked")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "EVENT-FJ262", "Errors.User.Locked")
}
if !(user.State == user_model.UserStateActive || user.State == user_model.UserStateInitial) {
- return nil, errors.ThrowPreconditionFailed(nil, "EVENT-FJ262", "Errors.User.NotActive")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "EVENT-FJ262", "Errors.User.NotActive")
}
org, err := queries.OrgByID(ctx, false, user.ResourceOwner)
if err != nil {
return nil, err
}
if org.State != domain.OrgStateActive {
- return nil, errors.ThrowPreconditionFailed(nil, "EVENT-Zws3s", "Errors.User.NotActive")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "EVENT-Zws3s", "Errors.User.NotActive")
}
return user, nil
}
@@ -1555,7 +1555,7 @@ func userByID(ctx context.Context, viewProvider userViewProvider, eventProvider
defer func() { span.EndWithError(err) }()
user, viewErr := viewProvider.UserByID(userID, authz.GetInstance(ctx).InstanceID())
- if viewErr != nil && !errors.IsNotFound(viewErr) {
+ if viewErr != nil && !zerrors.IsNotFound(viewErr) {
return nil, viewErr
} else if user == nil {
user = new(user_view_model.UserView)
@@ -1578,7 +1578,7 @@ func userByID(ctx context.Context, viewProvider userViewProvider, eventProvider
}
}
if userCopy.State == int32(user_model.UserStateDeleted) {
- return nil, errors.ThrowNotFound(nil, "EVENT-3F9so", "Errors.User.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "EVENT-3F9so", "Errors.User.NotFound")
}
return user_view_model.UserToModel(&userCopy), nil
}
@@ -1626,7 +1626,7 @@ func userGrantRequired(ctx context.Context, request *domain.AuthRequest, user *u
return false, err
}
default:
- return false, errors.ThrowPreconditionFailed(nil, "EVENT-dfrw2", "Errors.AuthRequest.RequestTypeNotSupported")
+ return false, zerrors.ThrowPreconditionFailed(nil, "EVENT-dfrw2", "Errors.AuthRequest.RequestTypeNotSupported")
}
if !project.ProjectRoleCheck {
return false, nil
@@ -1647,7 +1647,7 @@ func projectRequired(ctx context.Context, request *domain.AuthRequest, projectPr
return false, err
}
default:
- return false, errors.ThrowPreconditionFailed(nil, "EVENT-ku4He", "Errors.AuthRequest.RequestTypeNotSupported")
+ return false, zerrors.ThrowPreconditionFailed(nil, "EVENT-ku4He", "Errors.AuthRequest.RequestTypeNotSupported")
}
// if the user and project are part of the same organisation we do not need to check if the project exists on that org
if !project.HasProjectCheck || project.ResourceOwner == request.UserOrgID {
diff --git a/internal/auth/repository/eventsourcing/eventstore/auth_request_test.go b/internal/auth/repository/eventsourcing/eventstore/auth_request_test.go
index 36355350af..de0af84247 100644
--- a/internal/auth/repository/eventsourcing/eventstore/auth_request_test.go
+++ b/internal/auth/repository/eventsourcing/eventstore/auth_request_test.go
@@ -14,7 +14,6 @@ import (
"github.com/zitadel/zitadel/internal/auth_request/repository/mock"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/query"
@@ -22,6 +21,7 @@ import (
user_model "github.com/zitadel/zitadel/internal/user/model"
user_es_model "github.com/zitadel/zitadel/internal/user/repository/eventsourcing/model"
user_view_model "github.com/zitadel/zitadel/internal/user/repository/view/model"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -31,7 +31,7 @@ var (
type mockViewNoUserSession struct{}
func (m *mockViewNoUserSession) UserSessionByIDs(string, string, string) (*user_view_model.UserSessionView, error) {
- return nil, errors.ThrowNotFound(nil, "id", "user session not found")
+ return nil, zerrors.ThrowNotFound(nil, "id", "user session not found")
}
func (m *mockViewNoUserSession) UserSessionsByAgentID(string, string) ([]*user_view_model.UserSessionView, error) {
@@ -45,11 +45,11 @@ func (m *mockViewNoUserSession) GetLatestUserSessionSequence(ctx context.Context
type mockViewErrUserSession struct{}
func (m *mockViewErrUserSession) UserSessionByIDs(string, string, string) (*user_view_model.UserSessionView, error) {
- return nil, errors.ThrowInternal(nil, "id", "internal error")
+ return nil, zerrors.ThrowInternal(nil, "id", "internal error")
}
func (m *mockViewErrUserSession) UserSessionsByAgentID(string, string) ([]*user_view_model.UserSessionView, error) {
- return nil, errors.ThrowInternal(nil, "id", "internal error")
+ return nil, zerrors.ThrowInternal(nil, "id", "internal error")
}
func (m *mockViewErrUserSession) GetLatestUserSessionSequence(ctx context.Context, instanceID string) (*query.CurrentState, error) {
@@ -102,7 +102,7 @@ func (m *mockViewUserSession) GetLatestUserSessionSequence(ctx context.Context,
type mockViewNoUser struct{}
func (m *mockViewNoUser) UserByID(string, string) (*user_view_model.UserView, error) {
- return nil, errors.ThrowNotFound(nil, "id", "user not found")
+ return nil, zerrors.ThrowNotFound(nil, "id", "user not found")
}
type mockEventUser struct {
@@ -127,11 +127,11 @@ func (m *mockEventUser) BulkAddExternalIDPs(ctx context.Context, userID string,
type mockEventErrUser struct{}
func (m *mockEventErrUser) UserEventsByID(ctx context.Context, id string, changeDate time.Time, types []eventstore.EventType) ([]eventstore.Event, error) {
- return nil, errors.ThrowInternal(nil, "id", "internal error")
+ return nil, zerrors.ThrowInternal(nil, "id", "internal error")
}
func (m *mockEventErrUser) BulkAddExternalIDPs(ctx context.Context, userID string, externalIDPs []*user_model.ExternalIDP) error {
- return errors.ThrowInternal(nil, "id", "internal error")
+ return zerrors.ThrowInternal(nil, "id", "internal error")
}
type mockViewUser struct {
@@ -226,11 +226,11 @@ func (m *mockViewOrg) OrgByPrimaryDomain(context.Context, string) (*query.Org, e
type mockViewErrOrg struct{}
func (m *mockViewErrOrg) OrgByID(context.Context, bool, string) (*query.Org, error) {
- return nil, errors.ThrowInternal(nil, "id", "internal error")
+ return nil, zerrors.ThrowInternal(nil, "id", "internal error")
}
func (m *mockViewErrOrg) OrgByPrimaryDomain(context.Context, string) (*query.Org, error) {
- return nil, errors.ThrowInternal(nil, "id", "internal error")
+ return nil, zerrors.ThrowInternal(nil, "id", "internal error")
}
type mockUserGrants struct {
@@ -276,7 +276,7 @@ func (m *mockApp) AppByOIDCClientID(ctx context.Context, id string) (*query.App,
if m.app != nil {
return m.app, nil
}
- return nil, errors.ThrowNotFound(nil, "ERROR", "error")
+ return nil, zerrors.ThrowNotFound(nil, "ERROR", "error")
}
type mockIDPUserLinks struct {
@@ -321,7 +321,7 @@ func TestAuthRequestRepo_nextSteps(t *testing.T) {
fields{},
args{nil, false},
nil,
- errors.IsErrorInvalidArgument,
+ zerrors.IsErrorInvalidArgument,
},
{
"prompt none and checkLoggedIn false, callback step",
@@ -386,7 +386,7 @@ func TestAuthRequestRepo_nextSteps(t *testing.T) {
},
args{&domain.AuthRequest{Prompt: []domain.Prompt{domain.PromptSelectAccount}}, false},
nil,
- errors.IsInternal,
+ zerrors.IsInternal,
},
{
"user not set, prompt select account, select account step",
@@ -666,7 +666,7 @@ func TestAuthRequestRepo_nextSteps(t *testing.T) {
},
args{&domain.AuthRequest{UserID: "UserID", LoginPolicy: &domain.LoginPolicy{}}, false},
nil,
- errors.IsNotFound,
+ zerrors.IsNotFound,
},
{
"user not active, precondition failed error",
@@ -688,7 +688,7 @@ func TestAuthRequestRepo_nextSteps(t *testing.T) {
},
args{&domain.AuthRequest{UserID: "UserID", LoginPolicy: &domain.LoginPolicy{}}, false},
nil,
- errors.IsPreconditionFailed,
+ zerrors.IsPreconditionFailed,
},
{
"user locked, precondition failed error",
@@ -709,7 +709,7 @@ func TestAuthRequestRepo_nextSteps(t *testing.T) {
},
args{&domain.AuthRequest{UserID: "UserID", LoginPolicy: &domain.LoginPolicy{}}, false},
nil,
- errors.IsPreconditionFailed,
+ zerrors.IsPreconditionFailed,
},
{
"org error, internal error",
@@ -725,7 +725,7 @@ func TestAuthRequestRepo_nextSteps(t *testing.T) {
},
args{&domain.AuthRequest{UserID: "UserID", LoginPolicy: &domain.LoginPolicy{}}, false},
nil,
- errors.IsInternal,
+ zerrors.IsInternal,
},
{
"org not active, precondition failed error",
@@ -741,7 +741,7 @@ func TestAuthRequestRepo_nextSteps(t *testing.T) {
},
args{&domain.AuthRequest{UserID: "UserID", LoginPolicy: &domain.LoginPolicy{}}, false},
nil,
- errors.IsPreconditionFailed,
+ zerrors.IsPreconditionFailed,
},
{
"usersession not found, new user session, password step",
@@ -779,7 +779,7 @@ func TestAuthRequestRepo_nextSteps(t *testing.T) {
},
args{&domain.AuthRequest{UserID: "UserID", LoginPolicy: &domain.LoginPolicy{}}, false},
nil,
- errors.IsInternal,
+ zerrors.IsInternal,
},
{
"user not initialized, init user step",
@@ -1716,7 +1716,7 @@ func TestAuthRequestRepo_mfaChecked(t *testing.T) {
},
nil,
false,
- errors.IsPreconditionFailed,
+ zerrors.IsPreconditionFailed,
},
{
"not set up, no mfas configured, no prompt and true",
@@ -2073,7 +2073,7 @@ func Test_userSessionByIDs(t *testing.T) {
user: &user_model.UserView{ID: "id"},
},
nil,
- errors.IsInternal,
+ zerrors.IsInternal,
},
{
"error user events, old view model state",
@@ -2184,7 +2184,7 @@ func Test_userSessionByIDs(t *testing.T) {
},
},
nil,
- errors.IsPreconditionFailed,
+ zerrors.IsPreconditionFailed,
},
}
for _, tt := range tests {
@@ -2220,7 +2220,7 @@ func Test_userByID(t *testing.T) {
eventProvider: &mockEventUser{},
},
nil,
- errors.IsNotFound,
+ zerrors.IsNotFound,
},
{
"error user events, old view model state",
diff --git a/internal/auth/repository/eventsourcing/eventstore/refresh_token.go b/internal/auth/repository/eventsourcing/eventstore/refresh_token.go
index a51edca476..90b98aaf8c 100644
--- a/internal/auth/repository/eventsourcing/eventstore/refresh_token.go
+++ b/internal/auth/repository/eventsourcing/eventstore/refresh_token.go
@@ -10,12 +10,12 @@ import (
"github.com/zitadel/zitadel/internal/auth/repository/eventsourcing/view"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
usr_model "github.com/zitadel/zitadel/internal/user/model"
usr_view "github.com/zitadel/zitadel/internal/user/repository/view"
"github.com/zitadel/zitadel/internal/user/repository/view/model"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type RefreshTokenRepo struct {
@@ -35,7 +35,7 @@ func (r *RefreshTokenRepo) RefreshTokenByToken(ctx context.Context, refreshToken
return nil, err
}
if tokenView.Token != token {
- return nil, errors.ThrowNotFound(nil, "EVENT-5Bm9s", "Errors.User.RefreshToken.Invalid")
+ return nil, zerrors.ThrowNotFound(nil, "EVENT-5Bm9s", "Errors.User.RefreshToken.Invalid")
}
return tokenView, nil
}
@@ -51,10 +51,10 @@ func (r *RefreshTokenRepo) RefreshTokenByID(ctx context.Context, tokenID, userID
Errorf("could not get current sequence for RefreshTokenByID")
tokenView, viewErr := r.View.RefreshTokenByID(tokenID, instanceID)
- if viewErr != nil && !errors.IsNotFound(viewErr) {
+ if viewErr != nil && !zerrors.IsNotFound(viewErr) {
return nil, viewErr
}
- if errors.IsNotFound(viewErr) {
+ if zerrors.IsNotFound(viewErr) {
tokenView = new(model.RefreshTokenView)
tokenView.ID = tokenID
tokenView.UserID = userID
@@ -65,8 +65,8 @@ func (r *RefreshTokenRepo) RefreshTokenByID(ctx context.Context, tokenID, userID
}
events, esErr := r.getUserEvents(ctx, userID, tokenView.InstanceID, tokenView.ChangeDate, tokenView.GetRelevantEventTypes())
- if errors.IsNotFound(viewErr) && len(events) == 0 {
- return nil, errors.ThrowNotFound(nil, "EVENT-BHB52", "Errors.User.RefreshToken.Invalid")
+ if zerrors.IsNotFound(viewErr) && len(events) == 0 {
+ return nil, zerrors.ThrowNotFound(nil, "EVENT-BHB52", "Errors.User.RefreshToken.Invalid")
}
if esErr != nil {
@@ -81,7 +81,7 @@ func (r *RefreshTokenRepo) RefreshTokenByID(ctx context.Context, tokenID, userID
}
}
if !tokenView.Expiration.After(time.Now()) {
- return nil, errors.ThrowNotFound(nil, "EVENT-5Bm9s", "Errors.User.RefreshToken.Invalid")
+ return nil, zerrors.ThrowNotFound(nil, "EVENT-5Bm9s", "Errors.User.RefreshToken.Invalid")
}
return model.RefreshTokenViewToModel(tokenView), nil
}
diff --git a/internal/auth/repository/eventsourcing/eventstore/token.go b/internal/auth/repository/eventsourcing/eventstore/token.go
index 3a91e25107..ba58dfd4d7 100644
--- a/internal/auth/repository/eventsourcing/eventstore/token.go
+++ b/internal/auth/repository/eventsourcing/eventstore/token.go
@@ -8,12 +8,12 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/auth/repository/eventsourcing/view"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
usr_model "github.com/zitadel/zitadel/internal/user/model"
usr_view "github.com/zitadel/zitadel/internal/user/repository/view"
"github.com/zitadel/zitadel/internal/user/repository/view/model"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type TokenRepo struct {
@@ -32,10 +32,11 @@ func (repo *TokenRepo) TokenByIDs(ctx context.Context, userID, tokenID string) (
Errorf("could not get current sequence for TokenByIDs")
token, viewErr := repo.View.TokenByIDs(tokenID, userID, instanceID)
- if viewErr != nil && !errors.IsNotFound(viewErr) {
+ if viewErr != nil && !zerrors.IsNotFound(viewErr) {
return nil, viewErr
}
- if errors.IsNotFound(viewErr) {
+ if zerrors.IsNotFound(viewErr) {
+
token = new(model.TokenView)
token.ID = tokenID
token.UserID = userID
@@ -46,8 +47,8 @@ func (repo *TokenRepo) TokenByIDs(ctx context.Context, userID, tokenID string) (
}
events, esErr := repo.getUserEvents(ctx, userID, token.InstanceID, token.ChangeDate, token.GetRelevantEventTypes())
- if errors.IsNotFound(viewErr) && len(events) == 0 {
- return nil, errors.ThrowNotFound(nil, "EVENT-4T90g", "Errors.Token.NotFound")
+ if zerrors.IsNotFound(viewErr) && len(events) == 0 {
+ return nil, zerrors.ThrowNotFound(nil, "EVENT-4T90g", "Errors.Token.NotFound")
}
if esErr != nil {
@@ -62,7 +63,7 @@ func (repo *TokenRepo) TokenByIDs(ctx context.Context, userID, tokenID string) (
}
}
if !token.Expiration.After(time.Now().UTC()) || token.Deactivated {
- return nil, errors.ThrowNotFound(nil, "EVENT-5Bm9s", "Errors.Token.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "EVENT-5Bm9s", "Errors.Token.NotFound")
}
return model.TokenViewToModel(token), nil
}
diff --git a/internal/auth/repository/eventsourcing/eventstore/user_session.go b/internal/auth/repository/eventsourcing/eventstore/user_session.go
index 3fb60fc75e..8bacef942b 100644
--- a/internal/auth/repository/eventsourcing/eventstore/user_session.go
+++ b/internal/auth/repository/eventsourcing/eventstore/user_session.go
@@ -20,8 +20,3 @@ func (repo *UserSessionRepo) GetMyUserSessions(ctx context.Context) ([]*usr_mode
}
return model.UserSessionsToModel(userSessions), nil
}
-
-func (repo *UserSessionRepo) ActiveUserSessionCount() int64 {
- userSessions, _ := repo.View.ActiveUserSessionsCount()
- return int64(userSessions)
-}
diff --git a/internal/auth/repository/eventsourcing/handler/refresh_token.go b/internal/auth/repository/eventsourcing/handler/refresh_token.go
index 5a1b59d492..4dac7eab6f 100644
--- a/internal/auth/repository/eventsourcing/handler/refresh_token.go
+++ b/internal/auth/repository/eventsourcing/handler/refresh_token.go
@@ -6,13 +6,13 @@ import (
"github.com/zitadel/logging"
auth_view "github.com/zitadel/zitadel/internal/auth/repository/eventsourcing/view"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/user"
view_model "github.com/zitadel/zitadel/internal/user/repository/view/model"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -112,7 +112,7 @@ func (t *RefreshToken) Reduce(event eventstore.Event) (_ *handler.Statement, err
e := new(user.HumanRefreshTokenRenewedEvent)
if err := event.Unmarshal(e); err != nil {
logging.WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(nil, "MODEL-BHn75", "could not unmarshal data")
+ return zerrors.ThrowInternal(nil, "MODEL-BHn75", "could not unmarshal data")
}
token, err := t.view.RefreshTokenByID(e.TokenID, event.Aggregate().InstanceID)
if err != nil {
@@ -127,7 +127,7 @@ func (t *RefreshToken) Reduce(event eventstore.Event) (_ *handler.Statement, err
e := new(user.HumanRefreshTokenRemovedEvent)
if err := event.Unmarshal(e); err != nil {
logging.WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(nil, "MODEL-Bz653", "could not unmarshal data")
+ return zerrors.ThrowInternal(nil, "MODEL-Bz653", "could not unmarshal data")
}
return t.view.DeleteRefreshToken(e.TokenID, event.Aggregate().InstanceID)
case user.UserLockedType,
diff --git a/internal/auth/repository/eventsourcing/handler/token.go b/internal/auth/repository/eventsourcing/handler/token.go
index 03827aa44b..14641cacdc 100644
--- a/internal/auth/repository/eventsourcing/handler/token.go
+++ b/internal/auth/repository/eventsourcing/handler/token.go
@@ -6,7 +6,6 @@ import (
"github.com/zitadel/logging"
auth_view "github.com/zitadel/zitadel/internal/auth/repository/eventsourcing/view"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
@@ -18,6 +17,7 @@ import (
"github.com/zitadel/zitadel/internal/repository/project"
"github.com/zitadel/zitadel/internal/repository/user"
view_model "github.com/zitadel/zitadel/internal/user/repository/view/model"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -242,7 +242,7 @@ func agentIDFromSession(event eventstore.Event) (string, error) {
session := make(map[string]interface{})
if err := event.Unmarshal(&session); err != nil {
logging.WithError(err).Error("could not unmarshal event data")
- return "", caos_errs.ThrowInternal(nil, "MODEL-sd325", "could not unmarshal data")
+ return "", zerrors.ThrowInternal(nil, "MODEL-sd325", "could not unmarshal data")
}
return session["userAgentID"].(string), nil
}
@@ -251,7 +251,7 @@ func applicationFromSession(event eventstore.Event) (*project_es_model.Applicati
application := new(project_es_model.Application)
if err := event.Unmarshal(application); err != nil {
logging.WithError(err).Error("could not unmarshal event data")
- return nil, caos_errs.ThrowInternal(nil, "MODEL-Hrw1q", "could not unmarshal data")
+ return nil, zerrors.ThrowInternal(nil, "MODEL-Hrw1q", "could not unmarshal data")
}
return application, nil
}
@@ -260,7 +260,7 @@ func tokenIDFromRemovedEvent(event eventstore.Event) (string, error) {
removed := make(map[string]interface{})
if err := event.Unmarshal(&removed); err != nil {
logging.WithError(err).Error("could not unmarshal event data")
- return "", caos_errs.ThrowInternal(nil, "MODEL-Sff32", "could not unmarshal data")
+ return "", zerrors.ThrowInternal(nil, "MODEL-Sff32", "could not unmarshal data")
}
return removed["tokenId"].(string), nil
}
@@ -269,7 +269,7 @@ func refreshTokenIDFromRemovedEvent(event eventstore.Event) (string, error) {
removed := make(map[string]interface{})
if err := event.Unmarshal(&removed); err != nil {
logging.WithError(err).Error("could not unmarshal event data")
- return "", caos_errs.ThrowInternal(nil, "MODEL-Dfb3w", "could not unmarshal data")
+ return "", zerrors.ThrowInternal(nil, "MODEL-Dfb3w", "could not unmarshal data")
}
return removed["tokenId"].(string), nil
}
@@ -293,7 +293,7 @@ func (t *Token) getProjectByID(ctx context.Context, projID, instanceID string) (
}
if esProject.Sequence == 0 {
- return nil, caos_errs.ThrowNotFound(nil, "EVENT-Dsdw2", "Errors.Project.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "EVENT-Dsdw2", "Errors.Project.NotFound")
}
return project_es_model.ProjectToModel(esProject), nil
}
diff --git a/internal/auth/repository/eventsourcing/handler/user.go b/internal/auth/repository/eventsourcing/handler/user.go
index 96a5ea5a51..c93dc06477 100644
--- a/internal/auth/repository/eventsourcing/handler/user.go
+++ b/internal/auth/repository/eventsourcing/handler/user.go
@@ -6,7 +6,6 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
auth_view "github.com/zitadel/zitadel/internal/auth/repository/eventsourcing/view"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
@@ -19,6 +18,7 @@ import (
user_repo "github.com/zitadel/zitadel/internal/repository/user"
usr_view "github.com/zitadel/zitadel/internal/user/repository/view"
view_model "github.com/zitadel/zitadel/internal/user/repository/view/model"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -389,7 +389,7 @@ func (u *User) ProcessUser(event eventstore.Event) (_ *handler.Statement, err er
user_repo.HumanPasswordlessInitCodeRequestedType:
user, err = u.view.UserByID(event.Aggregate().ID, event.Aggregate().InstanceID)
if err != nil {
- if !errors.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return err
}
user, err = u.userFromEventstore(event.Aggregate(), user.EventTypes())
@@ -402,7 +402,7 @@ func (u *User) ProcessUser(event eventstore.Event) (_ *handler.Statement, err er
user_repo.UserUserNameChangedType:
user, err = u.view.UserByID(event.Aggregate().ID, event.Aggregate().InstanceID)
if err != nil {
- if !errors.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return err
}
user, err = u.userFromEventstore(event.Aggregate(), user.EventTypes())
@@ -521,7 +521,7 @@ func (u *User) getOrgByID(ctx context.Context, orgID, instanceID string) (*org_m
return nil, err
}
if esOrg.Sequence == 0 {
- return nil, errors.ThrowNotFound(nil, "EVENT-3m9vs", "Errors.Org.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "EVENT-3m9vs", "Errors.Org.NotFound")
}
return org_es_model.OrgToModel(esOrg), nil
diff --git a/internal/auth/repository/eventsourcing/handler/user_session.go b/internal/auth/repository/eventsourcing/handler/user_session.go
index a9cefcccae..65d1facf54 100644
--- a/internal/auth/repository/eventsourcing/handler/user_session.go
+++ b/internal/auth/repository/eventsourcing/handler/user_session.go
@@ -6,7 +6,6 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
auth_view "github.com/zitadel/zitadel/internal/auth/repository/eventsourcing/view"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
@@ -18,6 +17,7 @@ import (
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/user"
view_model "github.com/zitadel/zitadel/internal/user/repository/view/model"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -241,7 +241,7 @@ func (u *UserSession) Reduce(event eventstore.Event) (_ *handler.Statement, err
}
session, err = u.view.UserSessionByIDs(eventData.UserAgentID, event.Aggregate().ID, event.Aggregate().InstanceID)
if err != nil {
- if !errors.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return err
}
session = &view_model.UserSessionView{
@@ -392,7 +392,7 @@ func (u *UserSession) getOrgByID(ctx context.Context, orgID, instanceID string)
}
if esOrg.Sequence == 0 {
- return nil, errors.ThrowNotFound(nil, "EVENT-3m9vs", "Errors.Org.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "EVENT-3m9vs", "Errors.Org.NotFound")
}
return org_es_model.OrgToModel(esOrg), nil
}
diff --git a/internal/auth/repository/eventsourcing/view/refresh_token.go b/internal/auth/repository/eventsourcing/view/refresh_token.go
index 64933bc7cb..b45f769cb7 100644
--- a/internal/auth/repository/eventsourcing/view/refresh_token.go
+++ b/internal/auth/repository/eventsourcing/view/refresh_token.go
@@ -4,13 +4,13 @@ import (
"context"
"github.com/zitadel/zitadel/internal/api/authz"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/query"
user_model "github.com/zitadel/zitadel/internal/user/model"
usr_view "github.com/zitadel/zitadel/internal/user/repository/view"
"github.com/zitadel/zitadel/internal/user/repository/view/model"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -39,7 +39,7 @@ func (v *View) PutRefreshTokens(token []*model.RefreshTokenView) error {
func (v *View) DeleteRefreshToken(tokenID, instanceID string) error {
err := usr_view.DeleteRefreshToken(v.Db, refreshTokenTable, tokenID, instanceID)
- if err != nil && !errors.IsNotFound(err) {
+ if err != nil && !zerrors.IsNotFound(err) {
return err
}
return nil
@@ -47,7 +47,7 @@ func (v *View) DeleteRefreshToken(tokenID, instanceID string) error {
func (v *View) DeleteUserRefreshTokens(userID, instanceID string) error {
err := usr_view.DeleteUserRefreshTokens(v.Db, refreshTokenTable, userID, instanceID)
- if err != nil && !errors.IsNotFound(err) {
+ if err != nil && !zerrors.IsNotFound(err) {
return err
}
return nil
@@ -55,7 +55,7 @@ func (v *View) DeleteUserRefreshTokens(userID, instanceID string) error {
func (v *View) DeleteApplicationRefreshTokens(event *models.Event, ids ...string) error {
err := usr_view.DeleteApplicationTokens(v.Db, refreshTokenTable, event.InstanceID, ids)
- if err != nil && !errors.IsNotFound(err) {
+ if err != nil && !zerrors.IsNotFound(err) {
return err
}
return nil
@@ -63,7 +63,7 @@ func (v *View) DeleteApplicationRefreshTokens(event *models.Event, ids ...string
func (v *View) DeleteInstanceRefreshTokens(instanceID string) error {
err := usr_view.DeleteInstanceRefreshTokens(v.Db, refreshTokenTable, instanceID)
- if err != nil && !errors.IsNotFound(err) {
+ if err != nil && !zerrors.IsNotFound(err) {
return err
}
return nil
@@ -71,7 +71,7 @@ func (v *View) DeleteInstanceRefreshTokens(instanceID string) error {
func (v *View) DeleteOrgRefreshTokens(event eventstore.Event) error {
err := usr_view.DeleteOrgRefreshTokens(v.Db, refreshTokenTable, event.Aggregate().InstanceID, event.Aggregate().ResourceOwner)
- if err != nil && !errors.IsNotFound(err) {
+ if err != nil && !zerrors.IsNotFound(err) {
return err
}
return nil
diff --git a/internal/auth/repository/eventsourcing/view/token.go b/internal/auth/repository/eventsourcing/view/token.go
index 549907d893..b19f5a69aa 100644
--- a/internal/auth/repository/eventsourcing/view/token.go
+++ b/internal/auth/repository/eventsourcing/view/token.go
@@ -3,11 +3,11 @@ package view
import (
"context"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/query"
usr_view "github.com/zitadel/zitadel/internal/user/repository/view"
"github.com/zitadel/zitadel/internal/user/repository/view/model"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -32,7 +32,7 @@ func (v *View) PutTokens(token []*model.TokenView) error {
func (v *View) DeleteToken(tokenID, instanceID string) error {
err := usr_view.DeleteToken(v.Db, tokenTable, tokenID, instanceID)
- if err != nil && !errors.IsNotFound(err) {
+ if err != nil && !zerrors.IsNotFound(err) {
return err
}
return nil
@@ -40,7 +40,7 @@ func (v *View) DeleteToken(tokenID, instanceID string) error {
func (v *View) DeleteSessionTokens(agentID string, event eventstore.Event) error {
err := usr_view.DeleteSessionTokens(v.Db, tokenTable, agentID, event.Aggregate().ID, event.Aggregate().InstanceID)
- if err != nil && !errors.IsNotFound(err) {
+ if err != nil && !zerrors.IsNotFound(err) {
return err
}
return nil
@@ -48,7 +48,7 @@ func (v *View) DeleteSessionTokens(agentID string, event eventstore.Event) error
func (v *View) DeleteUserTokens(event eventstore.Event) error {
err := usr_view.DeleteUserTokens(v.Db, tokenTable, event.Aggregate().ID, event.Aggregate().InstanceID)
- if err != nil && !errors.IsNotFound(err) {
+ if err != nil && !zerrors.IsNotFound(err) {
return err
}
return nil
@@ -56,7 +56,7 @@ func (v *View) DeleteUserTokens(event eventstore.Event) error {
func (v *View) DeleteApplicationTokens(event eventstore.Event, ids ...string) error {
err := usr_view.DeleteApplicationTokens(v.Db, tokenTable, event.Aggregate().InstanceID, ids)
- if err != nil && !errors.IsNotFound(err) {
+ if err != nil && !zerrors.IsNotFound(err) {
return err
}
return nil
@@ -64,7 +64,7 @@ func (v *View) DeleteApplicationTokens(event eventstore.Event, ids ...string) er
func (v *View) DeleteTokensFromRefreshToken(refreshTokenID, instanceID string) error {
err := usr_view.DeleteTokensFromRefreshToken(v.Db, tokenTable, refreshTokenID, instanceID)
- if err != nil && !errors.IsNotFound(err) {
+ if err != nil && !zerrors.IsNotFound(err) {
return err
}
return nil
@@ -72,7 +72,7 @@ func (v *View) DeleteTokensFromRefreshToken(refreshTokenID, instanceID string) e
func (v *View) DeleteInstanceTokens(event eventstore.Event) error {
err := usr_view.DeleteInstanceTokens(v.Db, tokenTable, event.Aggregate().InstanceID)
- if err != nil && !errors.IsNotFound(err) {
+ if err != nil && !zerrors.IsNotFound(err) {
return err
}
return nil
@@ -80,7 +80,7 @@ func (v *View) DeleteInstanceTokens(event eventstore.Event) error {
func (v *View) DeleteOrgTokens(event eventstore.Event) error {
err := usr_view.DeleteOrgTokens(v.Db, tokenTable, event.Aggregate().InstanceID, event.Aggregate().ResourceOwner)
- if err != nil && !errors.IsNotFound(err) {
+ if err != nil && !zerrors.IsNotFound(err) {
return err
}
return nil
diff --git a/internal/auth/repository/eventsourcing/view/user.go b/internal/auth/repository/eventsourcing/view/user.go
index 0f15991e33..8479924f9a 100644
--- a/internal/auth/repository/eventsourcing/view/user.go
+++ b/internal/auth/repository/eventsourcing/view/user.go
@@ -5,12 +5,12 @@ import (
"github.com/zitadel/logging"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/query"
usr_model "github.com/zitadel/zitadel/internal/user/model"
"github.com/zitadel/zitadel/internal/user/repository/view"
"github.com/zitadel/zitadel/internal/user/repository/view/model"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -43,7 +43,7 @@ func (v *View) UserByLoginNameAndResourceOwner(ctx context.Context, loginName, r
return nil, err
}
if user.ResourceOwner != resourceOwner {
- return nil, errors.ThrowNotFound(nil, "VIEW-qScmi", "Errors.User.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "VIEW-qScmi", "Errors.User.NotFound")
}
return user, nil
@@ -105,7 +105,7 @@ func (v *View) userByID(ctx context.Context, instanceID string, queries ...query
Errorf("could not get current sequence for userByID")
user, err := view.UserByID(v.Db, userTable, queriedUser.ID, instanceID)
- if err != nil && !errors.IsNotFound(err) {
+ if err != nil && !zerrors.IsNotFound(err) {
return nil, err
}
@@ -136,7 +136,7 @@ func (v *View) userByID(ctx context.Context, instanceID string, queries ...query
}
if user.State == int32(usr_model.UserStateDeleted) {
- return nil, errors.ThrowNotFound(nil, "VIEW-r4y8r", "Errors.User.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "VIEW-r4y8r", "Errors.User.NotFound")
}
return user, nil
@@ -156,7 +156,7 @@ func (v *View) PutUsers(users []*model.UserView, event eventstore.Event) error {
func (v *View) DeleteUser(userID, instanceID string, event eventstore.Event) error {
err := view.DeleteUser(v.Db, userTable, userID, instanceID)
- if err != nil && !errors.IsNotFound(err) {
+ if err != nil && !zerrors.IsNotFound(err) {
return err
}
return nil
@@ -164,7 +164,7 @@ func (v *View) DeleteUser(userID, instanceID string, event eventstore.Event) err
func (v *View) DeleteInstanceUsers(event eventstore.Event) error {
err := view.DeleteInstanceUsers(v.Db, userTable, event.Aggregate().InstanceID)
- if err != nil && !errors.IsNotFound(err) {
+ if err != nil && !zerrors.IsNotFound(err) {
return err
}
return nil
@@ -172,7 +172,7 @@ func (v *View) DeleteInstanceUsers(event eventstore.Event) error {
func (v *View) UpdateOrgOwnerRemovedUsers(event eventstore.Event) error {
err := view.UpdateOrgOwnerRemovedUsers(v.Db, userTable, event.Aggregate().InstanceID, event.Aggregate().ID)
- if err != nil && !errors.IsNotFound(err) {
+ if err != nil && !zerrors.IsNotFound(err) {
return err
}
return nil
diff --git a/internal/auth/repository/eventsourcing/view/user_session.go b/internal/auth/repository/eventsourcing/view/user_session.go
index 5303b0deab..e2e4938d62 100644
--- a/internal/auth/repository/eventsourcing/view/user_session.go
+++ b/internal/auth/repository/eventsourcing/view/user_session.go
@@ -3,11 +3,11 @@ package view
import (
"context"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/query"
"github.com/zitadel/zitadel/internal/user/repository/view"
"github.com/zitadel/zitadel/internal/user/repository/view/model"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -44,7 +44,7 @@ func (v *View) PutUserSessions(userSession []*model.UserSessionView) error {
func (v *View) DeleteUserSessions(userID, instanceID string) error {
err := view.DeleteUserSessions(v.Db, userSessionTable, userID, instanceID)
- if err != nil && !errors.IsNotFound(err) {
+ if err != nil && !zerrors.IsNotFound(err) {
return err
}
return nil
@@ -52,7 +52,7 @@ func (v *View) DeleteUserSessions(userID, instanceID string) error {
func (v *View) DeleteInstanceUserSessions(instanceID string) error {
err := view.DeleteInstanceUserSessions(v.Db, userSessionTable, instanceID)
- if err != nil && !errors.IsNotFound(err) {
+ if err != nil && !zerrors.IsNotFound(err) {
return err
}
return nil
@@ -60,7 +60,7 @@ func (v *View) DeleteInstanceUserSessions(instanceID string) error {
func (v *View) DeleteOrgUserSessions(event eventstore.Event) error {
err := view.DeleteOrgUserSessions(v.Db, userSessionTable, event.Aggregate().InstanceID, event.Aggregate().ResourceOwner)
- if err != nil && !errors.IsNotFound(err) {
+ if err != nil && !zerrors.IsNotFound(err) {
return err
}
return nil
diff --git a/internal/auth/repository/user_session.go b/internal/auth/repository/user_session.go
index 0bfaf47e1f..182fe9edea 100644
--- a/internal/auth/repository/user_session.go
+++ b/internal/auth/repository/user_session.go
@@ -8,5 +8,4 @@ import (
type UserSessionRepository interface {
GetMyUserSessions(ctx context.Context) ([]*model.UserSessionView, error)
- ActiveUserSessionCount() int64
}
diff --git a/internal/auth_request/repository/cache/cache.go b/internal/auth_request/repository/cache/cache.go
index 10090ef286..63c442ef2d 100644
--- a/internal/auth_request/repository/cache/cache.go
+++ b/internal/auth_request/repository/cache/cache.go
@@ -11,7 +11,7 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type AuthRequestCache struct {
@@ -50,7 +50,7 @@ func (c *AuthRequestCache) UpdateAuthRequest(_ context.Context, request *domain.
func (c *AuthRequestCache) DeleteAuthRequest(ctx context.Context, id string) error {
_, err := c.client.Exec("DELETE FROM auth.auth_requests WHERE instance_id = $1 and id = $2", authz.GetInstance(ctx).InstanceID(), id)
if err != nil {
- return caos_errs.ThrowInternal(err, "CACHE-dsHw3", "unable to delete auth request")
+ return zerrors.ThrowInternal(err, "CACHE-dsHw3", "unable to delete auth request")
}
return nil
}
@@ -67,16 +67,16 @@ func (c *AuthRequestCache) getAuthRequest(key, value, instanceID string) (*domai
if err != nil {
if errors.Is(err, sql.ErrNoRows) {
- return nil, caos_errs.ThrowNotFound(err, "CACHE-d24aD", "Errors.AuthRequest.NotFound")
+ return nil, zerrors.ThrowNotFound(err, "CACHE-d24aD", "Errors.AuthRequest.NotFound")
}
- return nil, caos_errs.ThrowInternal(err, "CACHE-as3kj", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "CACHE-as3kj", "Errors.Internal")
}
request, err := domain.NewAuthRequestFromType(requestType)
if err == nil {
err = json.Unmarshal(b, request)
}
if err != nil {
- return nil, caos_errs.ThrowInternal(err, "CACHE-2wshg", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "CACHE-2wshg", "Errors.Internal")
}
return request, nil
}
@@ -84,11 +84,11 @@ func (c *AuthRequestCache) getAuthRequest(key, value, instanceID string) (*domai
func (c *AuthRequestCache) saveAuthRequest(request *domain.AuthRequest, query string, date time.Time, param interface{}) error {
b, err := json.Marshal(request)
if err != nil {
- return caos_errs.ThrowInternal(err, "CACHE-os0GH", "Errors.Internal")
+ return zerrors.ThrowInternal(err, "CACHE-os0GH", "Errors.Internal")
}
_, err = c.client.Exec(query, request.ID, b, request.InstanceID, date, param)
if err != nil {
- return caos_errs.ThrowInternal(err, "CACHE-su3GK", "Errors.Internal")
+ return zerrors.ThrowInternal(err, "CACHE-su3GK", "Errors.Internal")
}
return nil
}
diff --git a/internal/authz/repository/eventsourcing/eventstore/token_verifier.go b/internal/authz/repository/eventsourcing/eventstore/token_verifier.go
index ea007dfa63..2ddcc3cf93 100644
--- a/internal/authz/repository/eventsourcing/eventstore/token_verifier.go
+++ b/internal/authz/repository/eventsourcing/eventstore/token_verifier.go
@@ -18,13 +18,13 @@ import (
"github.com/zitadel/zitadel/internal/command"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/query"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
usr_model "github.com/zitadel/zitadel/internal/user/model"
usr_view "github.com/zitadel/zitadel/internal/user/repository/view"
"github.com/zitadel/zitadel/internal/user/repository/view/model"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type TokenVerifierRepo struct {
@@ -53,10 +53,10 @@ func (repo *TokenVerifierRepo) tokenByID(ctx context.Context, tokenID, userID st
Errorf("could not get current sequence for token check")
token, viewErr := repo.View.TokenByIDs(tokenID, userID, instanceID)
- if viewErr != nil && !caos_errs.IsNotFound(viewErr) {
+ if viewErr != nil && !zerrors.IsNotFound(viewErr) {
return nil, viewErr
}
- if caos_errs.IsNotFound(viewErr) {
+ if zerrors.IsNotFound(viewErr) {
token = new(model.TokenView)
token.ID = tokenID
token.UserID = userID
@@ -66,8 +66,8 @@ func (repo *TokenVerifierRepo) tokenByID(ctx context.Context, tokenID, userID st
}
events, esErr := repo.getUserEvents(ctx, userID, instanceID, token.ChangeDate, token.GetRelevantEventTypes())
- if caos_errs.IsNotFound(viewErr) && len(events) == 0 {
- return nil, caos_errs.ThrowNotFound(nil, "EVENT-4T90g", "Errors.Token.NotFound")
+ if zerrors.IsNotFound(viewErr) && len(events) == 0 {
+ return nil, zerrors.ThrowNotFound(nil, "EVENT-4T90g", "Errors.Token.NotFound")
}
if esErr != nil {
@@ -82,7 +82,7 @@ func (repo *TokenVerifierRepo) tokenByID(ctx context.Context, tokenID, userID st
}
}
if !token.Expiration.After(time.Now().UTC()) || token.Deactivated {
- return nil, caos_errs.ThrowNotFound(nil, "EVENT-5Bm9s", "Errors.Token.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "EVENT-5Bm9s", "Errors.Token.NotFound")
}
return model.TokenViewToModel(token), nil
}
@@ -93,7 +93,7 @@ func (repo *TokenVerifierRepo) VerifyAccessToken(ctx context.Context, tokenStrin
tokenID, subject, ok := repo.getTokenIDAndSubject(ctx, tokenString)
if !ok {
- return "", "", "", "", "", caos_errs.ThrowUnauthenticated(nil, "APP-Reb32", "invalid token")
+ return "", "", "", "", "", zerrors.ThrowUnauthenticated(nil, "APP-Reb32", "invalid token")
}
if strings.HasPrefix(tokenID, command.IDPrefixV2) {
userID, clientID, resourceOwner, err = repo.verifyAccessTokenV2(ctx, tokenID, verifierClientID, projectID)
@@ -114,10 +114,10 @@ func (repo *TokenVerifierRepo) verifyAccessTokenV1(ctx context.Context, tokenID,
token, err := repo.tokenByID(ctx, tokenID, subject)
tokenSpan.EndWithError(err)
if err != nil {
- return "", "", "", "", "", caos_errs.ThrowUnauthenticated(err, "APP-BxUSiL", "invalid token")
+ return "", "", "", "", "", zerrors.ThrowUnauthenticated(err, "APP-BxUSiL", "invalid token")
}
if !token.Expiration.After(time.Now().UTC()) {
- return "", "", "", "", "", caos_errs.ThrowUnauthenticated(err, "APP-k9KS0", "invalid token")
+ return "", "", "", "", "", zerrors.ThrowUnauthenticated(err, "APP-k9KS0", "invalid token")
}
if token.IsPAT {
return token.UserID, "", "", "", token.ResourceOwner, nil
@@ -154,7 +154,7 @@ func (repo *TokenVerifierRepo) verifySessionToken(ctx context.Context, sessionID
return "", "", "", err
}
if !session.Expiration.IsZero() && session.Expiration.Before(time.Now()) {
- return "", "", "", caos_errs.ThrowPermissionDenied(nil, "AUTHZ-EGDo3", "session expired")
+ return "", "", "", zerrors.ThrowPermissionDenied(nil, "AUTHZ-EGDo3", "session expired")
}
if err = repo.checkAuthentication(ctx, authMethodsFromSession(session), session.UserFactor.UserID); err != nil {
return "", "", "", err
@@ -166,7 +166,7 @@ func (repo *TokenVerifierRepo) verifySessionToken(ctx context.Context, sessionID
// It will also check if there was a multi factor authentication, if either MFA is forced by the login policy or if the user has set up any
func (repo *TokenVerifierRepo) checkAuthentication(ctx context.Context, authMethods []domain.UserAuthMethodType, userID string) error {
if len(authMethods) == 0 {
- return caos_errs.ThrowPermissionDenied(nil, "AUTHZ-Kl3p0", "authentication required")
+ return zerrors.ThrowPermissionDenied(nil, "AUTHZ-Kl3p0", "authentication required")
}
if domain.HasMFA(authMethods) {
return nil
@@ -176,7 +176,7 @@ func (repo *TokenVerifierRepo) checkAuthentication(ctx context.Context, authMeth
return err
}
if domain.RequiresMFA(forceMFA, forceMFALocalOnly, hasIDPAuthentication(authMethods)) || domain.HasMFA(availableAuthMethods) {
- return caos_errs.ThrowPermissionDenied(nil, "AUTHZ-Kl3p0", "mfa required")
+ return zerrors.ThrowPermissionDenied(nil, "AUTHZ-Kl3p0", "mfa required")
}
return nil
}
@@ -288,11 +288,11 @@ func (repo *TokenVerifierRepo) jwtTokenVerifier(ctx context.Context) *op.AccessT
func (repo *TokenVerifierRepo) decryptAccessToken(token string) (string, error) {
tokenData, err := base64.RawURLEncoding.DecodeString(token)
if err != nil {
- return "", caos_errs.ThrowUnauthenticated(nil, "APP-ASdgg", "invalid token")
+ return "", zerrors.ThrowUnauthenticated(nil, "APP-ASdgg", "invalid token")
}
tokenIDSubject, err := repo.TokenVerificationKey.DecryptString(tokenData, repo.TokenVerificationKey.EncryptionKeyID())
if err != nil {
- return "", caos_errs.ThrowUnauthenticated(nil, "APP-8EF0zZ", "invalid token")
+ return "", zerrors.ThrowUnauthenticated(nil, "APP-8EF0zZ", "invalid token")
}
return tokenIDSubject, nil
}
@@ -303,7 +303,7 @@ func verifyAudience(audience []string, verifierClientID, projectID string) error
return nil
}
}
- return caos_errs.ThrowUnauthenticated(nil, "APP-Zxfako", "invalid audience")
+ return zerrors.ThrowUnauthenticated(nil, "APP-Zxfako", "invalid audience")
}
type openIDKeySet struct {
diff --git a/internal/authz/repository/eventsourcing/view/application.go b/internal/authz/repository/eventsourcing/view/application.go
index 8958f2e7e8..8db8ec8e39 100644
--- a/internal/authz/repository/eventsourcing/view/application.go
+++ b/internal/authz/repository/eventsourcing/view/application.go
@@ -3,9 +3,9 @@ package view
import (
"context"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (v *View) ApplicationByOIDCClientID(ctx context.Context, clientID string) (*query.App, error) {
@@ -37,7 +37,7 @@ func (v *View) ApplicationByProjecIDAndAppName(ctx context.Context, projectID, a
return nil, err
}
if len(apps.Apps) != 1 {
- return nil, errors.ThrowNotFound(nil, "VIEW-svLQq", "app not found")
+ return nil, zerrors.ThrowNotFound(nil, "VIEW-svLQq", "app not found")
}
return apps.Apps[0], nil
diff --git a/internal/authz/repository/eventsourcing/view/token.go b/internal/authz/repository/eventsourcing/view/token.go
index 20baf22747..47667ae68e 100644
--- a/internal/authz/repository/eventsourcing/view/token.go
+++ b/internal/authz/repository/eventsourcing/view/token.go
@@ -4,11 +4,11 @@ import (
"context"
"github.com/zitadel/zitadel/internal/api/authz"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/query"
usr_view "github.com/zitadel/zitadel/internal/user/repository/view"
usr_view_model "github.com/zitadel/zitadel/internal/user/repository/view/model"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -25,7 +25,7 @@ func (v *View) PutToken(token *usr_view_model.TokenView, event *models.Event) er
func (v *View) DeleteToken(tokenID, instanceID string, event *models.Event) error {
err := usr_view.DeleteToken(v.Db, tokenTable, tokenID, instanceID)
- if err != nil && !errors.IsNotFound(err) {
+ if err != nil && !zerrors.IsNotFound(err) {
return err
}
return nil
@@ -33,7 +33,7 @@ func (v *View) DeleteToken(tokenID, instanceID string, event *models.Event) erro
func (v *View) DeleteSessionTokens(agentID, userID, instanceID string, event *models.Event) error {
err := usr_view.DeleteSessionTokens(v.Db, tokenTable, agentID, userID, instanceID)
- if err != nil && !errors.IsNotFound(err) {
+ if err != nil && !zerrors.IsNotFound(err) {
return err
}
return nil
diff --git a/internal/cache/bigcache/bigcache_test.go b/internal/cache/bigcache/bigcache_test.go
deleted file mode 100644
index 2c91f019c5..0000000000
--- a/internal/cache/bigcache/bigcache_test.go
+++ /dev/null
@@ -1,222 +0,0 @@
-package bigcache
-
-import (
- "reflect"
- "testing"
-
- a_cache "github.com/allegro/bigcache"
- "github.com/zitadel/zitadel/internal/errors"
- es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
-)
-
-type TestStruct struct {
- Test string
-}
-
-func getBigCacheMock() *Bigcache {
- cache, _ := a_cache.NewBigCache(a_cache.DefaultConfig(2000))
- return &Bigcache{cache: cache}
-}
-
-func TestSet(t *testing.T) {
- type args struct {
- cache *Bigcache
- key string
- value *TestStruct
- }
- type res struct {
- result *TestStruct
- errFunc func(err error) bool
- }
- tests := []struct {
- name string
- args args
- res res
- }{
- {
- name: "set cache no err",
- args: args{
- cache: getBigCacheMock(),
- key: "KEY",
- value: &TestStruct{Test: "Test"},
- },
- res: res{
- result: &TestStruct{},
- },
- },
- {
- name: "key empty",
- args: args{
- cache: getBigCacheMock(),
- key: "",
- value: &TestStruct{Test: "Test"},
- },
- res: res{
- errFunc: errors.IsErrorInvalidArgument,
- },
- },
- {
- name: "set cache nil value",
- args: args{
- cache: getBigCacheMock(),
- key: "KEY",
- },
- res: res{
- errFunc: errors.IsErrorInvalidArgument,
- },
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- err := tt.args.cache.Set(tt.args.key, tt.args.value)
-
- if tt.res.errFunc == nil && err != nil {
- t.Errorf("got wrong result should not get err: %v ", err)
- }
-
- if tt.res.errFunc == nil {
- tt.args.cache.Get(tt.args.key, tt.res.result)
- if tt.res.result == nil {
- t.Errorf("got wrong result should get result: %v ", err)
- }
- }
- if tt.res.errFunc != nil && !tt.res.errFunc(err) {
- t.Errorf("got wrong err: %v ", err)
- }
- })
- }
-}
-
-func TestGet(t *testing.T) {
- type args struct {
- event []*es_models.Event
- cache *Bigcache
- key string
- setValue *TestStruct
- getValue *TestStruct
- }
- type res struct {
- result *TestStruct
- errFunc func(err error) bool
- }
- tests := []struct {
- name string
- args args
- res res
- }{
- {
- name: "get cache no err",
- args: args{
- cache: getBigCacheMock(),
- key: "KEY",
- setValue: &TestStruct{Test: "Test"},
- getValue: &TestStruct{Test: "Test"},
- },
- res: res{
- result: &TestStruct{Test: "Test"},
- },
- },
- {
- name: "get cache no key",
- args: args{
- cache: getBigCacheMock(),
- setValue: &TestStruct{Test: "Test"},
- getValue: &TestStruct{Test: "Test"},
- },
- res: res{
- errFunc: errors.IsErrorInvalidArgument,
- },
- },
- {
- name: "get cache no value",
- args: args{
- cache: getBigCacheMock(),
- key: "KEY",
- setValue: &TestStruct{Test: "Test"},
- },
- res: res{
- errFunc: errors.IsErrorInvalidArgument,
- },
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- err := tt.args.cache.Set("KEY", tt.args.setValue)
- if err != nil {
- t.Errorf("something went wrong")
- }
-
- err = tt.args.cache.Get(tt.args.key, tt.args.getValue)
-
- if tt.res.errFunc == nil && err != nil {
- t.Errorf("got wrong result should not get err: %v ", err)
- }
-
- if tt.res.errFunc == nil && !reflect.DeepEqual(tt.args.getValue, tt.res.result) {
- t.Errorf("got wrong result expected: %v actual: %v", tt.res.result, tt.args.getValue)
- }
-
- if tt.res.errFunc != nil && !tt.res.errFunc(err) {
- t.Errorf("got wrong err: %v ", err)
- }
- })
- }
-}
-
-func TestDelete(t *testing.T) {
- type args struct {
- event []*es_models.Event
- cache *Bigcache
- key string
- setValue *TestStruct
- getValue *TestStruct
- }
- type res struct {
- result *TestStruct
- errFunc func(err error) bool
- }
- tests := []struct {
- name string
- args args
- res res
- }{
- {
- name: "delete cache no err",
- args: args{
- cache: getBigCacheMock(),
- key: "KEY",
- setValue: &TestStruct{Test: "Test"},
- },
- res: res{},
- },
- {
- name: "get cache no key",
- args: args{
- cache: getBigCacheMock(),
- setValue: &TestStruct{Test: "Test"},
- getValue: &TestStruct{Test: "Test"},
- },
- res: res{
- errFunc: errors.IsErrorInvalidArgument,
- },
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- err := tt.args.cache.Set("KEY", tt.args.setValue)
- if err != nil {
- t.Errorf("something went wrong")
- }
-
- err = tt.args.cache.Delete(tt.args.key)
-
- if tt.res.errFunc == nil && err != nil {
- t.Errorf("got wrong result should not get err: %v ", err)
- }
-
- if tt.res.errFunc != nil && !tt.res.errFunc(err) {
- t.Errorf("got wrong err: %v ", err)
- }
- })
- }
-}
diff --git a/internal/cache/bigcache/cache.go b/internal/cache/bigcache/cache.go
deleted file mode 100644
index 9e7baea93e..0000000000
--- a/internal/cache/bigcache/cache.go
+++ /dev/null
@@ -1,66 +0,0 @@
-package bigcache
-
-import (
- "bytes"
- "encoding/gob"
- "reflect"
-
- a_cache "github.com/allegro/bigcache"
- "github.com/zitadel/logging"
- "github.com/zitadel/zitadel/internal/errors"
-)
-
-type Bigcache struct {
- cache *a_cache.BigCache
-}
-
-func NewBigcache(c *Config) (*Bigcache, error) {
- cacheConfig := a_cache.DefaultConfig(c.CacheLifetime)
- cacheConfig.HardMaxCacheSize = c.MaxCacheSizeInMB
- cache, err := a_cache.NewBigCache(cacheConfig)
- if err != nil {
- return nil, err
- }
-
- return &Bigcache{
- cache: cache,
- }, nil
-}
-
-func (c *Bigcache) Set(key string, object interface{}) error {
- if key == "" || reflect.ValueOf(object).IsNil() {
- return errors.ThrowInvalidArgument(nil, "BIGCA-du73s", "key or value should not be empty")
- }
- var b bytes.Buffer
- enc := gob.NewEncoder(&b)
- if err := enc.Encode(object); err != nil {
- return errors.ThrowInvalidArgument(err, "BIGCA-RUyxI", "unable to encode object")
- }
- return c.cache.Set(key, b.Bytes())
-}
-
-func (c *Bigcache) Get(key string, ptrToObject interface{}) error {
- if key == "" || reflect.ValueOf(ptrToObject).IsNil() {
- return errors.ThrowInvalidArgument(nil, "BIGCA-dksoe", "key or value should not be empty")
- }
- value, err := c.cache.Get(key)
- if err == a_cache.ErrEntryNotFound {
- return errors.ThrowNotFound(err, "BIGCA-we32s", "not in cache")
- }
- if err != nil {
- logging.Log("BIGCA-ftofbc").WithError(err).Info("read from cache failed")
- return errors.ThrowInvalidArgument(err, "BIGCA-3idls", "error in reading from cache")
- }
-
- b := bytes.NewBuffer(value)
- dec := gob.NewDecoder(b)
-
- return dec.Decode(ptrToObject)
-}
-
-func (c *Bigcache) Delete(key string) error {
- if key == "" {
- return errors.ThrowInvalidArgument(nil, "BIGCA-clsi2", "key should not be empty")
- }
- return c.cache.Delete(key)
-}
diff --git a/internal/cache/bigcache/config.go b/internal/cache/bigcache/config.go
deleted file mode 100644
index fa997ea59c..0000000000
--- a/internal/cache/bigcache/config.go
+++ /dev/null
@@ -1,17 +0,0 @@
-package bigcache
-
-import (
- "time"
-
- "github.com/zitadel/zitadel/internal/cache"
-)
-
-type Config struct {
- MaxCacheSizeInMB int
- //CacheLifetime if set, entries older than the lifetime will be deleted on cleanup (every minute)
- CacheLifetime time.Duration
-}
-
-func (c *Config) NewCache() (cache.Cache, error) {
- return NewBigcache(c)
-}
diff --git a/internal/cache/cache.go b/internal/cache/cache.go
deleted file mode 100644
index b2eef1cc6f..0000000000
--- a/internal/cache/cache.go
+++ /dev/null
@@ -1,7 +0,0 @@
-package cache
-
-type Cache interface {
- Set(key string, object interface{}) error
- Get(key string, ptrToObject interface{}) error
- Delete(key string) error
-}
diff --git a/internal/cache/config.go b/internal/cache/config.go
deleted file mode 100644
index 86c298241d..0000000000
--- a/internal/cache/config.go
+++ /dev/null
@@ -1,5 +0,0 @@
-package cache
-
-type Config interface {
- NewCache() (Cache, error)
-}
diff --git a/internal/cache/config/config.go b/internal/cache/config/config.go
deleted file mode 100644
index 7cabee8fc1..0000000000
--- a/internal/cache/config/config.go
+++ /dev/null
@@ -1,59 +0,0 @@
-package config
-
-import (
- "encoding/json"
-
- "github.com/zitadel/zitadel/internal/cache"
- "github.com/zitadel/zitadel/internal/cache/bigcache"
- "github.com/zitadel/zitadel/internal/cache/fastcache"
- "github.com/zitadel/zitadel/internal/errors"
-)
-
-type CacheConfig struct {
- Type string
- Config cache.Config
-}
-
-var caches = map[string]func() cache.Config{
- "bigcache": func() cache.Config { return &bigcache.Config{} },
- "fastcache": func() cache.Config { return &fastcache.Config{} },
-}
-
-func (c *CacheConfig) UnmarshalJSON(data []byte) error {
- var rc struct {
- Type string
- Config json.RawMessage
- }
-
- if err := json.Unmarshal(data, &rc); err != nil {
- return errors.ThrowInternal(err, "CONFI-98ejs", "unable to unmarshal config")
- }
-
- c.Type = rc.Type
-
- var err error
- c.Config, err = newCacheConfig(c.Type, rc.Config)
- if err != nil {
- return errors.ThrowInternal(err, "CONFI-do9es", "unable create config")
- }
-
- return nil
-}
-
-func newCacheConfig(cacheType string, configData []byte) (cache.Config, error) {
- t, ok := caches[cacheType]
- if !ok {
- return nil, errors.ThrowInternal(nil, "CONFI-di328s", "no config")
- }
-
- cacheConfig := t()
- if len(configData) == 0 {
- return cacheConfig, nil
- }
-
- if err := json.Unmarshal(configData, cacheConfig); err != nil {
- return nil, errors.ThrowInternal(nil, "CONFI-skei3", "could not read config")
- }
-
- return cacheConfig, nil
-}
diff --git a/internal/cache/fastcache/config.go b/internal/cache/fastcache/config.go
deleted file mode 100644
index 5e68126156..0000000000
--- a/internal/cache/fastcache/config.go
+++ /dev/null
@@ -1,11 +0,0 @@
-package fastcache
-
-import "github.com/zitadel/zitadel/internal/cache"
-
-type Config struct {
- MaxCacheSizeInByte int
-}
-
-func (c *Config) NewCache() (cache.Cache, error) {
- return NewFastcache(c)
-}
diff --git a/internal/cache/fastcache/fastcache.go b/internal/cache/fastcache/fastcache.go
deleted file mode 100644
index 1ff4eee140..0000000000
--- a/internal/cache/fastcache/fastcache.go
+++ /dev/null
@@ -1,57 +0,0 @@
-package fastcache
-
-import (
- "bytes"
- "encoding/gob"
- "reflect"
-
- "github.com/zitadel/zitadel/internal/errors"
-
- "github.com/VictoriaMetrics/fastcache"
-)
-
-type Fastcache struct {
- cache *fastcache.Cache
-}
-
-func NewFastcache(config *Config) (*Fastcache, error) {
- return &Fastcache{
- cache: fastcache.New(config.MaxCacheSizeInByte),
- }, nil
-}
-
-func (fc *Fastcache) Set(key string, object interface{}) error {
- if key == "" || reflect.ValueOf(object).IsNil() {
- return errors.ThrowInvalidArgument(nil, "FASTC-87dj3", "key or value should not be empty")
- }
- var b bytes.Buffer
- enc := gob.NewEncoder(&b)
- if err := enc.Encode(object); err != nil {
- return errors.ThrowInvalidArgument(err, "FASTC-RUyxI", "unable to encode object")
- }
- fc.cache.Set([]byte(key), b.Bytes())
- return nil
-}
-
-func (fc *Fastcache) Get(key string, ptrToObject interface{}) error {
- if key == "" || reflect.ValueOf(ptrToObject).IsNil() {
- return errors.ThrowInvalidArgument(nil, "FASTC-di8es", "key or value should not be empty")
- }
- data := fc.cache.Get(nil, []byte(key))
- if len(data) == 0 {
- return errors.ThrowNotFound(nil, "FASTC-xYzSm", "key not found")
- }
-
- b := bytes.NewBuffer(data)
- dec := gob.NewDecoder(b)
-
- return dec.Decode(ptrToObject)
-}
-
-func (fc *Fastcache) Delete(key string) error {
- if key == "" {
- return errors.ThrowInvalidArgument(nil, "FASTC-lod92", "key should not be empty")
- }
- fc.cache.Del([]byte(key))
- return nil
-}
diff --git a/internal/cache/fastcache/fastcache_test.go b/internal/cache/fastcache/fastcache_test.go
deleted file mode 100644
index e17566e12a..0000000000
--- a/internal/cache/fastcache/fastcache_test.go
+++ /dev/null
@@ -1,217 +0,0 @@
-package fastcache
-
-import (
- "reflect"
- "testing"
-
- "github.com/VictoriaMetrics/fastcache"
- "github.com/zitadel/zitadel/internal/errors"
- es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
-)
-
-type TestStruct struct {
- Test string
-}
-
-func TestSet(t *testing.T) {
- type args struct {
- cache *Fastcache
- key string
- value *TestStruct
- }
- type res struct {
- result *TestStruct
- errFunc func(err error) bool
- }
- tests := []struct {
- name string
- args args
- res res
- }{
- {
- name: "set cache no err",
- args: args{
- cache: &Fastcache{cache: fastcache.New(2000)},
- key: "KEY",
- value: &TestStruct{Test: "Test"},
- },
- res: res{
- result: &TestStruct{},
- },
- },
- {
- name: "key empty",
- args: args{
- cache: &Fastcache{cache: fastcache.New(2000)},
- key: "",
- value: &TestStruct{Test: "Test"},
- },
- res: res{
- errFunc: errors.IsErrorInvalidArgument,
- },
- },
- {
- name: "set cache nil value",
- args: args{
- cache: &Fastcache{cache: fastcache.New(2000)},
- key: "KEY",
- },
- res: res{
- errFunc: errors.IsErrorInvalidArgument,
- },
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- err := tt.args.cache.Set(tt.args.key, tt.args.value)
-
- if tt.res.errFunc == nil && err != nil {
- t.Errorf("got wrong result should not get err: %v ", err)
- }
-
- if tt.res.errFunc == nil {
- tt.args.cache.Get(tt.args.key, tt.res.result)
- if tt.res.result == nil {
- t.Errorf("got wrong result should get result: %v ", err)
- }
- }
- if tt.res.errFunc != nil && !tt.res.errFunc(err) {
- t.Errorf("got wrong err: %v ", err)
- }
- })
- }
-}
-
-func TestGet(t *testing.T) {
- type args struct {
- event []*es_models.Event
- cache *Fastcache
- key string
- setValue *TestStruct
- getValue *TestStruct
- }
- type res struct {
- result *TestStruct
- errFunc func(err error) bool
- }
- tests := []struct {
- name string
- args args
- res res
- }{
- {
- name: "get cache no err",
- args: args{
- cache: &Fastcache{cache: fastcache.New(2000)},
- key: "KEY",
- setValue: &TestStruct{Test: "Test"},
- getValue: &TestStruct{Test: "Test"},
- },
- res: res{
- result: &TestStruct{Test: "Test"},
- },
- },
- {
- name: "get cache no key",
- args: args{
- cache: &Fastcache{cache: fastcache.New(2000)},
- setValue: &TestStruct{Test: "Test"},
- getValue: &TestStruct{Test: "Test"},
- },
- res: res{
- errFunc: errors.IsErrorInvalidArgument,
- },
- },
- {
- name: "get cache no value",
- args: args{
- cache: &Fastcache{cache: fastcache.New(2000)},
- key: "KEY",
- setValue: &TestStruct{Test: "Test"},
- },
- res: res{
- errFunc: errors.IsErrorInvalidArgument,
- },
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- err := tt.args.cache.Set("KEY", tt.args.setValue)
- if err != nil {
- t.Errorf("something went wrong")
- }
-
- err = tt.args.cache.Get(tt.args.key, tt.args.getValue)
-
- if tt.res.errFunc == nil && err != nil {
- t.Errorf("got wrong result should not get err: %v ", err)
- }
-
- if tt.res.errFunc == nil && !reflect.DeepEqual(tt.args.getValue, tt.res.result) {
- t.Errorf("got wrong result expected: %v actual: %v", tt.res.result, tt.args.getValue)
- }
-
- if tt.res.errFunc != nil && !tt.res.errFunc(err) {
- t.Errorf("got wrong err: %v ", err)
- }
- })
- }
-}
-
-func TestDelete(t *testing.T) {
- type args struct {
- event []*es_models.Event
- cache *Fastcache
- key string
- setValue *TestStruct
- getValue *TestStruct
- }
- type res struct {
- result *TestStruct
- errFunc func(err error) bool
- }
- tests := []struct {
- name string
- args args
- res res
- }{
- {
- name: "delete cache no err",
- args: args{
- cache: &Fastcache{cache: fastcache.New(2000)},
- key: "KEY",
- setValue: &TestStruct{Test: "Test"},
- },
- res: res{},
- },
- {
- name: "get cache no key",
- args: args{
- cache: &Fastcache{cache: fastcache.New(2000)},
- setValue: &TestStruct{Test: "Test"},
- getValue: &TestStruct{Test: "Test"},
- },
- res: res{
- errFunc: errors.IsErrorInvalidArgument,
- },
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- err := tt.args.cache.Set("KEY", tt.args.setValue)
- if err != nil {
- t.Errorf("something went wrong")
- }
-
- err = tt.args.cache.Delete(tt.args.key)
-
- if tt.res.errFunc == nil && err != nil {
- t.Errorf("got wrong result should not get err: %v ", err)
- }
-
- if tt.res.errFunc != nil && !tt.res.errFunc(err) {
- t.Errorf("got wrong err: %v ", err)
- }
- })
- }
-}
diff --git a/internal/cache/generate.go b/internal/cache/generate.go
deleted file mode 100644
index 2809d31003..0000000000
--- a/internal/cache/generate.go
+++ /dev/null
@@ -1,3 +0,0 @@
-package cache
-
-//go:generate mockgen -package mock -destination ./mock/cache.mock.go github.com/zitadel/zitadel/internal/cache Cache
diff --git a/internal/cache/mock/cache.mock.go b/internal/cache/mock/cache.mock.go
deleted file mode 100644
index 56a238922f..0000000000
--- a/internal/cache/mock/cache.mock.go
+++ /dev/null
@@ -1,80 +0,0 @@
-// Code generated by MockGen. DO NOT EDIT.
-// Source: github.com/zitadel/zitadel/internal/cache (interfaces: Cache)
-//
-// Generated by this command:
-//
-// mockgen -package mock -destination ./mock/cache.mock.go github.com/zitadel/zitadel/internal/cache Cache
-//
-// Package mock is a generated GoMock package.
-package mock
-
-import (
- reflect "reflect"
-
- gomock "go.uber.org/mock/gomock"
-)
-
-// MockCache is a mock of Cache interface.
-type MockCache struct {
- ctrl *gomock.Controller
- recorder *MockCacheMockRecorder
-}
-
-// MockCacheMockRecorder is the mock recorder for MockCache.
-type MockCacheMockRecorder struct {
- mock *MockCache
-}
-
-// NewMockCache creates a new mock instance.
-func NewMockCache(ctrl *gomock.Controller) *MockCache {
- mock := &MockCache{ctrl: ctrl}
- mock.recorder = &MockCacheMockRecorder{mock}
- return mock
-}
-
-// EXPECT returns an object that allows the caller to indicate expected use.
-func (m *MockCache) EXPECT() *MockCacheMockRecorder {
- return m.recorder
-}
-
-// Delete mocks base method.
-func (m *MockCache) Delete(arg0 string) error {
- m.ctrl.T.Helper()
- ret := m.ctrl.Call(m, "Delete", arg0)
- ret0, _ := ret[0].(error)
- return ret0
-}
-
-// Delete indicates an expected call of Delete.
-func (mr *MockCacheMockRecorder) Delete(arg0 any) *gomock.Call {
- mr.mock.ctrl.T.Helper()
- return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Delete", reflect.TypeOf((*MockCache)(nil).Delete), arg0)
-}
-
-// Get mocks base method.
-func (m *MockCache) Get(arg0 string, arg1 any) error {
- m.ctrl.T.Helper()
- ret := m.ctrl.Call(m, "Get", arg0, arg1)
- ret0, _ := ret[0].(error)
- return ret0
-}
-
-// Get indicates an expected call of Get.
-func (mr *MockCacheMockRecorder) Get(arg0, arg1 any) *gomock.Call {
- mr.mock.ctrl.T.Helper()
- return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*MockCache)(nil).Get), arg0, arg1)
-}
-
-// Set mocks base method.
-func (m *MockCache) Set(arg0 string, arg1 any) error {
- m.ctrl.T.Helper()
- ret := m.ctrl.Call(m, "Set", arg0, arg1)
- ret0, _ := ret[0].(error)
- return ret0
-}
-
-// Set indicates an expected call of Set.
-func (mr *MockCacheMockRecorder) Set(arg0, arg1 any) *gomock.Call {
- mr.mock.ctrl.T.Helper()
- return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Set", reflect.TypeOf((*MockCache)(nil).Set), arg0, arg1)
-}
diff --git a/internal/command/auth_checks.go b/internal/command/auth_checks.go
index 703c2a89ee..994060f0d3 100644
--- a/internal/command/auth_checks.go
+++ b/internal/command/auth_checks.go
@@ -4,7 +4,7 @@ import (
"context"
"github.com/zitadel/zitadel/internal/api/authz"
- caos_errors "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func checkExplicitProjectPermission(ctx context.Context, grantID, projectID string) error {
@@ -19,7 +19,7 @@ func checkExplicitProjectPermission(ctx context.Context, grantID, projectID stri
if listContainsID(ids, projectID) {
return nil
}
- return caos_errors.ThrowPermissionDenied(nil, "EVENT-Shu7e", "Errors.UserGrant.NoPermissionForProject")
+ return zerrors.ThrowPermissionDenied(nil, "EVENT-Shu7e", "Errors.UserGrant.NoPermissionForProject")
}
func listContainsID(ids []string, id string) bool {
diff --git a/internal/command/auth_request.go b/internal/command/auth_request.go
index b0b0226100..1a24e75b5c 100644
--- a/internal/command/auth_request.go
+++ b/internal/command/auth_request.go
@@ -6,9 +6,9 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/repository/authrequest"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type AuthRequest struct {
@@ -50,7 +50,7 @@ func (c *Commands) AddAuthRequest(ctx context.Context, authRequest *AuthRequest)
return nil, err
}
if writeModel.AuthRequestState != domain.AuthRequestStateUnspecified {
- return nil, errors.ThrowPreconditionFailed(nil, "COMMAND-Sf3gt", "Errors.AuthRequest.AlreadyExisting")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-Sf3gt", "Errors.AuthRequest.AlreadyExisting")
}
err = c.pushAppendAndReduce(ctx, writeModel, authrequest.NewAddedEvent(
ctx,
@@ -82,13 +82,13 @@ func (c *Commands) LinkSessionToAuthRequest(ctx context.Context, id, sessionID,
return nil, nil, err
}
if writeModel.AuthRequestState == domain.AuthRequestStateUnspecified {
- return nil, nil, errors.ThrowNotFound(nil, "COMMAND-jae5P", "Errors.AuthRequest.NotExisting")
+ return nil, nil, zerrors.ThrowNotFound(nil, "COMMAND-jae5P", "Errors.AuthRequest.NotExisting")
}
if writeModel.AuthRequestState != domain.AuthRequestStateAdded {
- return nil, nil, errors.ThrowPreconditionFailed(nil, "COMMAND-Sx208nt", "Errors.AuthRequest.AlreadyHandled")
+ return nil, nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-Sx208nt", "Errors.AuthRequest.AlreadyHandled")
}
if checkLoginClient && authz.GetCtxData(ctx).UserID != writeModel.LoginClient {
- return nil, nil, errors.ThrowPermissionDenied(nil, "COMMAND-rai9Y", "Errors.AuthRequest.WrongLoginClient")
+ return nil, nil, zerrors.ThrowPermissionDenied(nil, "COMMAND-rai9Y", "Errors.AuthRequest.WrongLoginClient")
}
sessionWriteModel := NewSessionWriteModel(sessionID, authz.GetInstance(ctx).InstanceID())
err = c.eventstore.FilterToQueryReducer(ctx, sessionWriteModel)
@@ -120,7 +120,7 @@ func (c *Commands) FailAuthRequest(ctx context.Context, id string, reason domain
return nil, nil, err
}
if writeModel.AuthRequestState != domain.AuthRequestStateAdded {
- return nil, nil, errors.ThrowPreconditionFailed(nil, "COMMAND-Sx202nt", "Errors.AuthRequest.AlreadyHandled")
+ return nil, nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-Sx202nt", "Errors.AuthRequest.AlreadyHandled")
}
err = c.pushAppendAndReduce(ctx, writeModel, authrequest.NewFailedEvent(
ctx,
@@ -135,14 +135,14 @@ func (c *Commands) FailAuthRequest(ctx context.Context, id string, reason domain
func (c *Commands) AddAuthRequestCode(ctx context.Context, authRequestID, code string) (err error) {
if code == "" {
- return errors.ThrowPreconditionFailed(nil, "COMMAND-Ht52d", "Errors.AuthRequest.InvalidCode")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-Ht52d", "Errors.AuthRequest.InvalidCode")
}
writeModel, err := c.getAuthRequestWriteModel(ctx, authRequestID)
if err != nil {
return err
}
if writeModel.AuthRequestState != domain.AuthRequestStateAdded || writeModel.SessionID == "" {
- return errors.ThrowPreconditionFailed(nil, "COMMAND-SFwd2", "Errors.AuthRequest.AlreadyHandled")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-SFwd2", "Errors.AuthRequest.AlreadyHandled")
}
return c.pushAppendAndReduce(ctx, writeModel, authrequest.NewCodeAddedEvent(ctx,
&authrequest.NewAggregate(writeModel.AggregateID, authz.GetInstance(ctx).InstanceID()).Aggregate))
@@ -150,14 +150,14 @@ func (c *Commands) AddAuthRequestCode(ctx context.Context, authRequestID, code s
func (c *Commands) ExchangeAuthCode(ctx context.Context, code string) (authRequest *CurrentAuthRequest, err error) {
if code == "" {
- return nil, errors.ThrowPreconditionFailed(nil, "COMMAND-Sf3g2", "Errors.AuthRequest.InvalidCode")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-Sf3g2", "Errors.AuthRequest.InvalidCode")
}
writeModel, err := c.getAuthRequestWriteModel(ctx, code)
if err != nil {
return nil, err
}
if writeModel.AuthRequestState != domain.AuthRequestStateCodeAdded {
- return nil, errors.ThrowPreconditionFailed(nil, "COMMAND-SFwd2", "Errors.AuthRequest.NoCode")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-SFwd2", "Errors.AuthRequest.NoCode")
}
err = c.pushAppendAndReduce(ctx, writeModel, authrequest.NewCodeExchangedEvent(ctx,
&authrequest.NewAggregate(writeModel.AggregateID, authz.GetInstance(ctx).InstanceID()).Aggregate))
diff --git a/internal/command/auth_request_model.go b/internal/command/auth_request_model.go
index d27caf8764..235477f627 100644
--- a/internal/command/auth_request_model.go
+++ b/internal/command/auth_request_model.go
@@ -6,9 +6,9 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/authrequest"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type AuthRequestWriteModel struct {
@@ -95,7 +95,7 @@ func (m *AuthRequestWriteModel) Query() *eventstore.SearchQueryBuilder {
// and in case of a Code Flow the code must have been exchanged
func (m *AuthRequestWriteModel) CheckAuthenticated() error {
if m.SessionID == "" {
- return caos_errs.ThrowPreconditionFailed(nil, "AUTHR-SF2r2", "Errors.AuthRequest.NotAuthenticated")
+ return zerrors.ThrowPreconditionFailed(nil, "AUTHR-SF2r2", "Errors.AuthRequest.NotAuthenticated")
}
// in case of OIDC Code Flow, the code must have been exchanged
if m.ResponseType == domain.OIDCResponseTypeCode && m.AuthRequestState == domain.AuthRequestStateCodeExchanged {
@@ -106,5 +106,5 @@ func (m *AuthRequestWriteModel) CheckAuthenticated() error {
m.AuthRequestState == domain.AuthRequestStateAdded {
return nil
}
- return caos_errs.ThrowPreconditionFailed(nil, "AUTHR-sajk3", "Errors.AuthRequest.NotAuthenticated")
+ return zerrors.ThrowPreconditionFailed(nil, "AUTHR-sajk3", "Errors.AuthRequest.NotAuthenticated")
}
diff --git a/internal/command/auth_request_test.go b/internal/command/auth_request_test.go
index e077c90f97..a70a592bb0 100644
--- a/internal/command/auth_request_test.go
+++ b/internal/command/auth_request_test.go
@@ -13,12 +13,12 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/id"
"github.com/zitadel/zitadel/internal/id/mock"
"github.com/zitadel/zitadel/internal/repository/authrequest"
"github.com/zitadel/zitadel/internal/repository/session"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommands_AddAuthRequest(t *testing.T) {
@@ -70,7 +70,7 @@ func TestCommands_AddAuthRequest(t *testing.T) {
request: &AuthRequest{},
},
nil,
- caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Sf3gt", "Errors.AuthRequest.AlreadyExisting"),
+ zerrors.ThrowPreconditionFailed(nil, "COMMAND-Sf3gt", "Errors.AuthRequest.AlreadyExisting"),
},
{
"added",
@@ -199,7 +199,7 @@ func TestCommands_LinkSessionToAuthRequest(t *testing.T) {
sessionID: "sessionID",
},
res{
- wantErr: caos_errs.ThrowNotFound(nil, "COMMAND-jae5P", "Errors.AuthRequest.NotExisting"),
+ wantErr: zerrors.ThrowNotFound(nil, "COMMAND-jae5P", "Errors.AuthRequest.NotExisting"),
},
},
{
@@ -239,7 +239,7 @@ func TestCommands_LinkSessionToAuthRequest(t *testing.T) {
sessionID: "sessionID",
},
res{
- wantErr: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Sx208nt", "Errors.AuthRequest.AlreadyHandled"),
+ wantErr: zerrors.ThrowPreconditionFailed(nil, "COMMAND-Sx208nt", "Errors.AuthRequest.AlreadyHandled"),
},
},
{
@@ -277,7 +277,7 @@ func TestCommands_LinkSessionToAuthRequest(t *testing.T) {
checkLoginClient: true,
},
res{
- wantErr: caos_errs.ThrowPermissionDenied(nil, "COMMAND-rai9Y", "Errors.AuthRequest.WrongLoginClient"),
+ wantErr: zerrors.ThrowPermissionDenied(nil, "COMMAND-rai9Y", "Errors.AuthRequest.WrongLoginClient"),
},
},
{
@@ -314,7 +314,7 @@ func TestCommands_LinkSessionToAuthRequest(t *testing.T) {
sessionID: "sessionID",
},
res{
- wantErr: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Flk38", "Errors.Session.NotExisting"),
+ wantErr: zerrors.ThrowPreconditionFailed(nil, "COMMAND-Flk38", "Errors.Session.NotExisting"),
},
},
{
@@ -374,7 +374,7 @@ func TestCommands_LinkSessionToAuthRequest(t *testing.T) {
sessionToken: "token",
},
res{
- wantErr: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Hkl3d", "Errors.Session.Expired"),
+ wantErr: zerrors.ThrowPreconditionFailed(nil, "COMMAND-Hkl3d", "Errors.Session.Expired"),
},
},
{
@@ -423,7 +423,7 @@ func TestCommands_LinkSessionToAuthRequest(t *testing.T) {
sessionToken: "invalid",
},
res{
- wantErr: caos_errs.ThrowPermissionDenied(nil, "COMMAND-sGr42", "Errors.Session.Token.Invalid"),
+ wantErr: zerrors.ThrowPermissionDenied(nil, "COMMAND-sGr42", "Errors.Session.Token.Invalid"),
},
},
{
@@ -650,7 +650,7 @@ func TestCommands_FailAuthRequest(t *testing.T) {
reason: domain.OIDCErrorReasonLoginRequired,
},
res{
- wantErr: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Sx202nt", "Errors.AuthRequest.AlreadyHandled"),
+ wantErr: zerrors.ThrowPreconditionFailed(nil, "COMMAND-Sx202nt", "Errors.AuthRequest.AlreadyHandled"),
},
},
{
@@ -745,7 +745,7 @@ func TestCommands_AddAuthRequestCode(t *testing.T) {
id: "V2_authRequestID",
code: "",
},
- caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Ht52d", "Errors.AuthRequest.InvalidCode"),
+ zerrors.ThrowPreconditionFailed(nil, "COMMAND-Ht52d", "Errors.AuthRequest.InvalidCode"),
},
{
"no session linked error",
@@ -781,7 +781,7 @@ func TestCommands_AddAuthRequestCode(t *testing.T) {
id: "V2_authRequestID",
code: "V2_authRequestID",
},
- caos_errs.ThrowPreconditionFailed(nil, "COMMAND-SFwd2", "Errors.AuthRequest.AlreadyHandled"),
+ zerrors.ThrowPreconditionFailed(nil, "COMMAND-SFwd2", "Errors.AuthRequest.AlreadyHandled"),
},
{
"success",
@@ -871,7 +871,7 @@ func TestCommands_ExchangeAuthCode(t *testing.T) {
code: "",
},
res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Sf3g2", "Errors.AuthRequest.InvalidCode"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-Sf3g2", "Errors.AuthRequest.InvalidCode"),
},
},
{
@@ -908,7 +908,7 @@ func TestCommands_ExchangeAuthCode(t *testing.T) {
code: "V2_authRequestID",
},
res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-SFwd2", "Errors.AuthRequest.NoCode"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-SFwd2", "Errors.AuthRequest.NoCode"),
},
},
{
diff --git a/internal/command/command.go b/internal/command/command.go
index 3b45a9b874..d43bd550d7 100644
--- a/internal/command/command.go
+++ b/internal/command/command.go
@@ -9,19 +9,22 @@ import (
"math/big"
"net/http"
"strconv"
+ "sync"
"time"
+ "github.com/zitadel/logging"
+
"github.com/zitadel/zitadel/internal/api/authz"
api_http "github.com/zitadel/zitadel/internal/api/http"
"github.com/zitadel/zitadel/internal/command/preparation"
sd "github.com/zitadel/zitadel/internal/config/systemdefaults"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/id"
"github.com/zitadel/zitadel/internal/repository/action"
"github.com/zitadel/zitadel/internal/repository/authrequest"
+ "github.com/zitadel/zitadel/internal/repository/deviceauth"
"github.com/zitadel/zitadel/internal/repository/feature"
"github.com/zitadel/zitadel/internal/repository/idpintent"
instance_repo "github.com/zitadel/zitadel/internal/repository/instance"
@@ -37,12 +40,16 @@ import (
usr_repo "github.com/zitadel/zitadel/internal/repository/user"
usr_grant_repo "github.com/zitadel/zitadel/internal/repository/usergrant"
"github.com/zitadel/zitadel/internal/static"
+ "github.com/zitadel/zitadel/internal/telemetry/tracing"
webauthn_helper "github.com/zitadel/zitadel/internal/webauthn"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Commands struct {
httpClient *http.Client
+ jobs sync.WaitGroup
+
checkPermission domain.PermissionCheck
newCode cryptoCodeFunc
newCodeWithDefault cryptoCodeWithDefaultFunc
@@ -105,7 +112,7 @@ func StartCommands(
defaultSecretGenerators *SecretGenerators,
) (repo *Commands, err error) {
if externalDomain == "" {
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-Df21s", "no external domain specified")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-Df21s", "no external domain specified")
}
idGenerator := id.SonyFlakeGenerator()
// reuse the oidcEncryption to be able to handle both tokens in the interceptor later on
@@ -160,6 +167,7 @@ func StartCommands(
oidcsession.RegisterEventMappers(repo.eventstore)
milestone.RegisterEventMappers(repo.eventstore)
feature.RegisterEventMappers(repo.eventstore)
+ deviceauth.RegisterEventMappers(repo.eventstore)
repo.codeAlg = crypto.NewBCrypt(defaults.SecretGenerators.PasswordSaltCost)
repo.userPasswordHasher, err = defaults.PasswordHasher.PasswordHasher()
@@ -249,7 +257,7 @@ func samlCertificateAndKeyGenerator(keySize int) func(id string) ([]byte, []byte
derBytes, err := x509.CreateCertificate(rand.Reader, &template, &template, pub, priv)
if err != nil {
- return nil, nil, errors.ThrowInternalf(err, "COMMAND-x92u101j", "failed to create certificate")
+ return nil, nil, zerrors.ThrowInternalf(err, "COMMAND-x92u101j", "failed to create certificate")
}
keyBlock := &pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(priv)}
@@ -257,3 +265,54 @@ func samlCertificateAndKeyGenerator(keySize int) func(id string) ([]byte, []byte
return pem.EncodeToMemory(keyBlock), pem.EncodeToMemory(certBlock), nil
}
}
+
+// Close blocks until all async jobs are finished,
+// the context expires or after eventstore.PushTimeout.
+func (c *Commands) Close(ctx context.Context) error {
+ if c.eventstore.PushTimeout != 0 {
+ var cancel context.CancelFunc
+ ctx, cancel = context.WithTimeout(ctx, c.eventstore.PushTimeout)
+ defer cancel()
+ }
+
+ done := make(chan struct{})
+ go func() {
+ c.jobs.Wait()
+ close(done)
+ }()
+ select {
+ case <-done:
+ return nil
+ case <-ctx.Done():
+ return ctx.Err()
+ }
+}
+
+// asyncPush attempts to push events to the eventstore in a separate Go routine.
+// This can be used to speed up request times when the outcome of the push is
+// not important for business logic but have a pure logging function.
+// For example this can be used for Secret Check Success and Failed events.
+// On push error, a log line describing the error will be emitted.
+func (c *Commands) asyncPush(ctx context.Context, cmds ...eventstore.Command) {
+ // Create a new context, as the request scoped context might get
+ // canceled before we where able to push.
+ // The eventstore has its own PushTimeout setting,
+ // so we don't need to have a context with timeout here.
+ ctx = context.WithoutCancel(ctx)
+
+ c.jobs.Add(1)
+
+ go func() {
+ defer c.jobs.Done()
+ localCtx, span := tracing.NewSpan(ctx)
+
+ _, err := c.eventstore.Push(localCtx, cmds...)
+ if err != nil {
+ for _, cmd := range cmds {
+ logging.WithError(err).Errorf("could not push event %q", cmd.Type())
+ }
+ }
+
+ span.EndWithError(err)
+ }()
+}
diff --git a/internal/command/command_test.go b/internal/command/command_test.go
new file mode 100644
index 0000000000..2367930b89
--- /dev/null
+++ b/internal/command/command_test.go
@@ -0,0 +1,146 @@
+package command
+
+import (
+ "context"
+ "io"
+ "os"
+ "testing"
+ "time"
+
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+ "golang.org/x/text/language"
+
+ "github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/i18n"
+ "github.com/zitadel/zitadel/internal/repository/user"
+)
+
+var (
+ SupportedLanguages = []language.Tag{language.English, language.German}
+ OnlyAllowedLanguages = []language.Tag{language.English}
+ AllowedLanguage = language.English
+ DisallowedLanguage = language.German
+ UnsupportedLanguage = language.Spanish
+)
+
+func TestMain(m *testing.M) {
+ i18n.SupportLanguages(SupportedLanguages...)
+ os.Exit(m.Run())
+}
+
+func TestCommands_asyncPush(t *testing.T) {
+ // make sure the test terminates on deadlock
+ background := context.Background()
+ agg := user.NewAggregate("userID", "orgID")
+ cmd := user.NewMachineSecretCheckFailedEvent(background, &agg.Aggregate)
+
+ tests := []struct {
+ name string
+ pushCtx func() (context.Context, context.CancelFunc)
+ eventstore func(*testing.T) *eventstore.Eventstore
+ closeCtx func() (context.Context, context.CancelFunc)
+ wantCloseErr bool
+ }{
+ {
+ name: "push error",
+ pushCtx: func() (context.Context, context.CancelFunc) {
+ return context.WithCancel(background)
+ },
+ eventstore: expectEventstore(
+ expectPushFailed(io.ErrClosedPipe, cmd),
+ ),
+ closeCtx: func() (context.Context, context.CancelFunc) {
+ return context.WithTimeout(background, time.Second)
+ },
+ wantCloseErr: false,
+ },
+ {
+ name: "success",
+ pushCtx: func() (context.Context, context.CancelFunc) {
+ return context.WithCancel(background)
+ },
+ eventstore: expectEventstore(
+ expectPushSlow(time.Second/10, cmd),
+ ),
+ closeCtx: func() (context.Context, context.CancelFunc) {
+ return context.WithTimeout(background, time.Second)
+ },
+ wantCloseErr: false,
+ },
+ {
+ name: "success after push context cancels",
+ pushCtx: func() (context.Context, context.CancelFunc) {
+ ctx, cancel := context.WithCancel(background)
+ cancel()
+ return ctx, cancel
+ },
+ eventstore: expectEventstore(
+ expectPushSlow(time.Second/10, cmd),
+ ),
+ closeCtx: func() (context.Context, context.CancelFunc) {
+ return context.WithTimeout(background, time.Second)
+ },
+ wantCloseErr: false,
+ },
+ {
+ name: "success after push context timeout",
+ pushCtx: func() (context.Context, context.CancelFunc) {
+ return context.WithTimeout(background, time.Second/100)
+ },
+ eventstore: expectEventstore(
+ expectPushSlow(time.Second/10, cmd),
+ ),
+ closeCtx: func() (context.Context, context.CancelFunc) {
+ return context.WithTimeout(background, time.Second)
+ },
+ wantCloseErr: false,
+ },
+ {
+ name: "success after push context timeout",
+ pushCtx: func() (context.Context, context.CancelFunc) {
+ return context.WithTimeout(background, time.Second/100)
+ },
+ eventstore: expectEventstore(
+ expectPushSlow(time.Second/10, cmd),
+ ),
+ closeCtx: func() (context.Context, context.CancelFunc) {
+ return context.WithTimeout(background, time.Second)
+ },
+ wantCloseErr: false,
+ },
+ {
+ name: "close timeout error",
+ pushCtx: func() (context.Context, context.CancelFunc) {
+ return context.WithCancel(background)
+ },
+ eventstore: expectEventstore(
+ expectPushSlow(time.Second/10, cmd),
+ ),
+ closeCtx: func() (context.Context, context.CancelFunc) {
+ return context.WithTimeout(background, time.Second/100)
+ },
+ wantCloseErr: true,
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ c := &Commands{
+ eventstore: tt.eventstore(t),
+ }
+ c.eventstore.PushTimeout = 10 * time.Second
+ pushCtx, cancel := tt.pushCtx()
+ c.asyncPush(pushCtx, cmd)
+ cancel()
+
+ closeCtx, cancel := tt.closeCtx()
+ defer cancel()
+ err := c.Close(closeCtx)
+ if tt.wantCloseErr {
+ assert.Error(t, err)
+ return
+ }
+ require.NoError(t, err)
+ })
+ }
+}
diff --git a/internal/command/crypto.go b/internal/command/crypto.go
index 0f7fe11ce5..dfbbc00012 100644
--- a/internal/command/crypto.go
+++ b/internal/command/crypto.go
@@ -7,7 +7,7 @@ import (
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type cryptoCodeFunc func(ctx context.Context, filter preparation.FilterToQueryReducer, typ domain.SecretGeneratorType, alg crypto.Crypto) (*CryptoCode, error)
@@ -61,7 +61,7 @@ func secretGenerator(ctx context.Context, filter preparation.FilterToQueryReduce
case crypto.EncryptionAlgorithm:
return crypto.NewEncryptionGenerator(*config, a), config, nil
default:
- return nil, nil, errors.ThrowInternalf(nil, "COMMA-RreV6", "Errors.Internal unsupported crypto algorithm type %T", a)
+ return nil, nil, zerrors.ThrowInternalf(nil, "COMMA-RreV6", "Errors.Internal unsupported crypto algorithm type %T", a)
}
}
diff --git a/internal/command/crypto_test.go b/internal/command/crypto_test.go
index cebd1118e5..14df176d12 100644
--- a/internal/command/crypto_test.go
+++ b/internal/command/crypto_test.go
@@ -13,9 +13,9 @@ import (
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func mockCode(code string, exp time.Duration) cryptoCodeFunc {
@@ -270,7 +270,7 @@ func Test_secretGenerator(t *testing.T) {
alg: nil,
defaultConfig: emptyConfig,
},
- wantErr: errors.ThrowInternalf(nil, "COMMA-RreV6", "Errors.Internal unsupported crypto algorithm type %T", nil),
+ wantErr: zerrors.ThrowInternalf(nil, "COMMA-RreV6", "Errors.Internal unsupported crypto algorithm type %T", nil),
},
}
for _, tt := range tests {
diff --git a/internal/command/device_auth.go b/internal/command/device_auth.go
index 6c3e1a3cfa..7abe858017 100644
--- a/internal/command/device_auth.go
+++ b/internal/command/device_auth.go
@@ -6,19 +6,14 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/deviceauth"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
-func (c *Commands) AddDeviceAuth(ctx context.Context, clientID, deviceCode, userCode string, expires time.Time, scopes []string) (string, *domain.ObjectDetails, error) {
- aggrID, err := c.idGenerator.Next()
- if err != nil {
- return "", nil, err
- }
-
- aggr := deviceauth.NewAggregate(aggrID, authz.GetInstance(ctx).InstanceID())
- model := NewDeviceAuthWriteModel(aggrID, aggr.ResourceOwner)
+func (c *Commands) AddDeviceAuth(ctx context.Context, clientID, deviceCode, userCode string, expires time.Time, scopes []string) (*domain.ObjectDetails, error) {
+ aggr := deviceauth.NewAggregate(deviceCode, authz.GetInstance(ctx).InstanceID())
+ model := NewDeviceAuthWriteModel(deviceCode, aggr.ResourceOwner)
pushedEvents, err := c.eventstore.Push(ctx, deviceauth.NewAddedEvent(
ctx,
@@ -30,27 +25,27 @@ func (c *Commands) AddDeviceAuth(ctx context.Context, clientID, deviceCode, user
scopes,
))
if err != nil {
- return "", nil, err
+ return nil, err
}
err = AppendAndReduce(model, pushedEvents...)
if err != nil {
- return "", nil, err
+ return nil, err
}
- return model.AggregateID, writeModelToObjectDetails(&model.WriteModel), nil
+ return writeModelToObjectDetails(&model.WriteModel), nil
}
-func (c *Commands) ApproveDeviceAuth(ctx context.Context, id, subject string) (*domain.ObjectDetails, error) {
- model, err := c.getDeviceAuthWriteModelByID(ctx, id)
+func (c *Commands) ApproveDeviceAuth(ctx context.Context, deviceCode, subject string, authMethods []domain.UserAuthMethodType, authTime time.Time) (*domain.ObjectDetails, error) {
+ model, err := c.getDeviceAuthWriteModelByDeviceCode(ctx, deviceCode)
if err != nil {
return nil, err
}
if !model.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-Hief9", "Errors.DeviceAuth.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-Hief9", "Errors.DeviceAuth.NotFound")
}
aggr := deviceauth.NewAggregate(model.AggregateID, model.InstanceID)
- pushedEvents, err := c.eventstore.Push(ctx, deviceauth.NewApprovedEvent(ctx, aggr, subject))
+ pushedEvents, err := c.eventstore.Push(ctx, deviceauth.NewApprovedEvent(ctx, aggr, subject, authMethods, authTime))
if err != nil {
return nil, err
}
@@ -63,12 +58,12 @@ func (c *Commands) ApproveDeviceAuth(ctx context.Context, id, subject string) (*
}
func (c *Commands) CancelDeviceAuth(ctx context.Context, id string, reason domain.DeviceAuthCanceled) (*domain.ObjectDetails, error) {
- model, err := c.getDeviceAuthWriteModelByID(ctx, id)
+ model, err := c.getDeviceAuthWriteModelByDeviceCode(ctx, id)
if err != nil {
return nil, err
}
if !model.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-gee5A", "Errors.DeviceAuth.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-gee5A", "Errors.DeviceAuth.NotFound")
}
aggr := deviceauth.NewAggregate(model.AggregateID, model.InstanceID)
@@ -84,27 +79,8 @@ func (c *Commands) CancelDeviceAuth(ctx context.Context, id string, reason domai
return writeModelToObjectDetails(&model.WriteModel), nil
}
-func (c *Commands) RemoveDeviceAuth(ctx context.Context, id string) (*domain.ObjectDetails, error) {
- model, err := c.getDeviceAuthWriteModelByID(ctx, id)
- if err != nil {
- return nil, err
- }
- aggr := deviceauth.NewAggregate(model.AggregateID, model.InstanceID)
-
- pushedEvents, err := c.eventstore.Push(ctx, deviceauth.NewRemovedEvent(ctx, aggr, model.ClientID, model.DeviceCode, model.UserCode))
- if err != nil {
- return nil, err
- }
- err = AppendAndReduce(model, pushedEvents...)
- if err != nil {
- return nil, err
- }
-
- return writeModelToObjectDetails(&model.WriteModel), nil
-}
-
-func (c *Commands) getDeviceAuthWriteModelByID(ctx context.Context, id string) (*DeviceAuthWriteModel, error) {
- model := &DeviceAuthWriteModel{WriteModel: eventstore.WriteModel{AggregateID: id}}
+func (c *Commands) getDeviceAuthWriteModelByDeviceCode(ctx context.Context, deviceCode string) (*DeviceAuthWriteModel, error) {
+ model := &DeviceAuthWriteModel{WriteModel: eventstore.WriteModel{AggregateID: deviceCode}}
err := c.eventstore.FilterToQueryReducer(ctx, model)
if err != nil {
return nil, err
diff --git a/internal/command/device_auth_model.go b/internal/command/device_auth_model.go
index 2ea52a39ab..69a457c514 100644
--- a/internal/command/device_auth_model.go
+++ b/internal/command/device_auth_model.go
@@ -11,19 +11,21 @@ import (
type DeviceAuthWriteModel struct {
eventstore.WriteModel
- ClientID string
- DeviceCode string
- UserCode string
- Expires time.Time
- Scopes []string
- Subject string
- State domain.DeviceAuthState
+ ClientID string
+ DeviceCode string
+ UserCode string
+ Expires time.Time
+ Scopes []string
+ State domain.DeviceAuthState
+ Subject string
+ UserAuthMethods []domain.UserAuthMethodType
+ AuthTime time.Time
}
-func NewDeviceAuthWriteModel(aggrID, resourceOwner string) *DeviceAuthWriteModel {
+func NewDeviceAuthWriteModel(deviceCode, resourceOwner string) *DeviceAuthWriteModel {
return &DeviceAuthWriteModel{
WriteModel: eventstore.WriteModel{
- AggregateID: aggrID,
+ AggregateID: deviceCode,
ResourceOwner: resourceOwner,
},
}
@@ -40,12 +42,12 @@ func (m *DeviceAuthWriteModel) Reduce() error {
m.Scopes = e.Scopes
m.State = e.State
case *deviceauth.ApprovedEvent:
- m.Subject = e.Subject
m.State = domain.DeviceAuthStateApproved
+ m.Subject = e.Subject
+ m.UserAuthMethods = e.UserAuthMethods
+ m.AuthTime = e.AuthTime
case *deviceauth.CanceledEvent:
m.State = e.Reason.State()
- case *deviceauth.RemovedEvent:
- m.State = domain.DeviceAuthStateRemoved
}
}
@@ -54,8 +56,14 @@ func (m *DeviceAuthWriteModel) Reduce() error {
func (m *DeviceAuthWriteModel) Query() *eventstore.SearchQueryBuilder {
return eventstore.NewSearchQueryBuilder(eventstore.ColumnsEvent).
+ ResourceOwner(m.ResourceOwner).
AddQuery().
AggregateTypes(deviceauth.AggregateType).
AggregateIDs(m.AggregateID).
+ EventTypes(
+ deviceauth.AddedEventType,
+ deviceauth.ApprovedEventType,
+ deviceauth.CanceledEventType,
+ ).
Builder()
}
diff --git a/internal/command/device_auth_test.go b/internal/command/device_auth_test.go
index 3b74e13224..584f44f134 100644
--- a/internal/command/device_auth_test.go
+++ b/internal/command/device_auth_test.go
@@ -8,29 +8,24 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
- "go.uber.org/mock/gomock"
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
- "github.com/zitadel/zitadel/internal/id"
- id_mock "github.com/zitadel/zitadel/internal/id/mock"
"github.com/zitadel/zitadel/internal/repository/deviceauth"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommands_AddDeviceAuth(t *testing.T) {
ctx := authz.WithInstanceID(context.Background(), "instance1")
- idErr := errors.New("idErr")
pushErr := errors.New("pushErr")
now := time.Now()
- unique := deviceauth.NewAddUniqueConstraints("client_id", "123", "456")
+ unique := deviceauth.NewAddUniqueConstraints("123", "456")
require.Len(t, unique, 2)
type fields struct {
- eventstore *eventstore.Eventstore
- idGenerator id.Generator
+ eventstore *eventstore.Eventstore
}
type args struct {
ctx context.Context
@@ -44,42 +39,20 @@ func TestCommands_AddDeviceAuth(t *testing.T) {
name string
fields fields
args args
- wantID string
wantDetails *domain.ObjectDetails
wantErr error
}{
- {
- name: "idGenerator error",
- fields: fields{
- eventstore: eventstoreExpect(t),
- idGenerator: func() id.Generator {
- m := id_mock.NewMockGenerator(gomock.NewController(t))
- m.EXPECT().Next().Return("", idErr)
- return m
- }(),
- },
- args: args{
- ctx: ctx,
- clientID: "client_id",
- deviceCode: "123",
- userCode: "456",
- expires: now,
- scopes: []string{"a", "b", "c"},
- },
- wantErr: idErr,
- },
{
name: "success",
fields: fields{
eventstore: eventstoreExpect(t, expectPush(
deviceauth.NewAddedEvent(
ctx,
- deviceauth.NewAggregate("1999", "instance1"),
+ deviceauth.NewAggregate("123", "instance1"),
"client_id", "123", "456", now,
[]string{"a", "b", "c"},
),
)),
- idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "1999"),
},
args: args{
ctx: authz.WithInstanceID(context.Background(), "instance1"),
@@ -89,7 +62,6 @@ func TestCommands_AddDeviceAuth(t *testing.T) {
expires: now,
scopes: []string{"a", "b", "c"},
},
- wantID: "1999",
wantDetails: &domain.ObjectDetails{
ResourceOwner: "instance1",
},
@@ -100,12 +72,11 @@ func TestCommands_AddDeviceAuth(t *testing.T) {
eventstore: eventstoreExpect(t, expectPushFailed(pushErr,
deviceauth.NewAddedEvent(
ctx,
- deviceauth.NewAggregate("1999", "instance1"),
+ deviceauth.NewAggregate("123", "instance1"),
"client_id", "123", "456", now,
[]string{"a", "b", "c"},
)),
),
- idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "1999"),
},
args: args{
ctx: authz.WithInstanceID(context.Background(), "instance1"),
@@ -121,12 +92,10 @@ func TestCommands_AddDeviceAuth(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
c := &Commands{
- eventstore: tt.fields.eventstore,
- idGenerator: tt.fields.idGenerator,
+ eventstore: tt.fields.eventstore,
}
- gotID, gotDetails, err := c.AddDeviceAuth(tt.args.ctx, tt.args.clientID, tt.args.deviceCode, tt.args.userCode, tt.args.expires, tt.args.scopes)
+ gotDetails, err := c.AddDeviceAuth(tt.args.ctx, tt.args.clientID, tt.args.deviceCode, tt.args.userCode, tt.args.expires, tt.args.scopes)
require.ErrorIs(t, err, tt.wantErr)
- assert.Equal(t, tt.wantID, gotID)
assert.Equal(t, tt.wantDetails, gotDetails)
})
}
@@ -141,9 +110,11 @@ func TestCommands_ApproveDeviceAuth(t *testing.T) {
eventstore *eventstore.Eventstore
}
type args struct {
- ctx context.Context
- id string
- subject string
+ ctx context.Context
+ id string
+ subject string
+ authMethods []domain.UserAuthMethodType
+ authTime time.Time
}
tests := []struct {
name string
@@ -156,27 +127,15 @@ func TestCommands_ApproveDeviceAuth(t *testing.T) {
name: "not found error",
fields: fields{
eventstore: eventstoreExpect(t,
- expectFilter(
- eventFromEventPusherWithInstanceID("instance1",
- deviceauth.NewAddedEvent(
- ctx,
- deviceauth.NewAggregate("1999", "instance1"),
- "client_id", "123", "456", now,
- []string{"a", "b", "c"},
- ),
- ),
- eventFromEventPusherWithInstanceID("instance1",
- deviceauth.NewRemovedEvent(
- ctx,
- deviceauth.NewAggregate("1999", "instance1"),
- "client_id", "123", "456",
- ),
- ),
- ),
+ expectFilter(),
),
},
- args: args{ctx, "1999", "subj"},
- wantErr: caos_errs.ThrowNotFound(nil, "COMMAND-Hief9", "Errors.DeviceAuth.NotFound"),
+ args: args{
+ ctx, "123", "subj",
+ []domain.UserAuthMethodType{domain.UserAuthMethodTypePassword},
+ time.Unix(123, 456),
+ },
+ wantErr: zerrors.ThrowNotFound(nil, "COMMAND-Hief9", "Errors.DeviceAuth.NotFound"),
},
{
name: "push error",
@@ -186,19 +145,25 @@ func TestCommands_ApproveDeviceAuth(t *testing.T) {
"instance1",
deviceauth.NewAddedEvent(
ctx,
- deviceauth.NewAggregate("1999", "instance1"),
+ deviceauth.NewAggregate("123", "instance1"),
"client_id", "123", "456", now,
[]string{"a", "b", "c"},
),
)),
expectPushFailed(pushErr,
deviceauth.NewApprovedEvent(
- ctx, deviceauth.NewAggregate("1999", "instance1"), "subj",
+ ctx, deviceauth.NewAggregate("123", "instance1"), "subj",
+ []domain.UserAuthMethodType{domain.UserAuthMethodTypePassword},
+ time.Unix(123, 456),
),
),
),
},
- args: args{ctx, "1999", "subj"},
+ args: args{
+ ctx, "123", "subj",
+ []domain.UserAuthMethodType{domain.UserAuthMethodTypePassword},
+ time.Unix(123, 456),
+ },
wantErr: pushErr,
},
{
@@ -209,19 +174,25 @@ func TestCommands_ApproveDeviceAuth(t *testing.T) {
"instance1",
deviceauth.NewAddedEvent(
ctx,
- deviceauth.NewAggregate("1999", "instance1"),
+ deviceauth.NewAggregate("123", "instance1"),
"client_id", "123", "456", now,
[]string{"a", "b", "c"},
),
)),
expectPush(
deviceauth.NewApprovedEvent(
- ctx, deviceauth.NewAggregate("1999", "instance1"), "subj",
+ ctx, deviceauth.NewAggregate("123", "instance1"), "subj",
+ []domain.UserAuthMethodType{domain.UserAuthMethodTypePassword},
+ time.Unix(123, 456),
),
),
),
},
- args: args{ctx, "1999", "subj"},
+ args: args{
+ ctx, "123", "subj",
+ []domain.UserAuthMethodType{domain.UserAuthMethodTypePassword},
+ time.Unix(123, 456),
+ },
wantDetails: &domain.ObjectDetails{
ResourceOwner: "instance1",
},
@@ -232,7 +203,7 @@ func TestCommands_ApproveDeviceAuth(t *testing.T) {
c := &Commands{
eventstore: tt.fields.eventstore,
}
- gotDetails, err := c.ApproveDeviceAuth(tt.args.ctx, tt.args.id, tt.args.subject)
+ gotDetails, err := c.ApproveDeviceAuth(tt.args.ctx, tt.args.id, tt.args.subject, tt.args.authMethods, tt.args.authTime)
require.ErrorIs(t, err, tt.wantErr)
assert.Equal(t, gotDetails, tt.wantDetails)
})
@@ -263,27 +234,11 @@ func TestCommands_CancelDeviceAuth(t *testing.T) {
name: "not found error",
fields: fields{
eventstore: eventstoreExpect(t,
- expectFilter(
- eventFromEventPusherWithInstanceID("instance1",
- deviceauth.NewAddedEvent(
- ctx,
- deviceauth.NewAggregate("1999", "instance1"),
- "client_id", "123", "456", now,
- []string{"a", "b", "c"},
- ),
- ),
- eventFromEventPusherWithInstanceID("instance1",
- deviceauth.NewRemovedEvent(
- ctx,
- deviceauth.NewAggregate("1999", "instance1"),
- "client_id", "123", "456",
- ),
- ),
- ),
+ expectFilter(),
),
},
- args: args{ctx, "1999", domain.DeviceAuthCanceledDenied},
- wantErr: caos_errs.ThrowNotFound(nil, "COMMAND-gee5A", "Errors.DeviceAuth.NotFound"),
+ args: args{ctx, "123", domain.DeviceAuthCanceledDenied},
+ wantErr: zerrors.ThrowNotFound(nil, "COMMAND-gee5A", "Errors.DeviceAuth.NotFound"),
},
{
name: "push error",
@@ -293,20 +248,20 @@ func TestCommands_CancelDeviceAuth(t *testing.T) {
"instance1",
deviceauth.NewAddedEvent(
ctx,
- deviceauth.NewAggregate("1999", "instance1"),
+ deviceauth.NewAggregate("123", "instance1"),
"client_id", "123", "456", now,
[]string{"a", "b", "c"},
),
)),
expectPushFailed(pushErr,
deviceauth.NewCanceledEvent(
- ctx, deviceauth.NewAggregate("1999", "instance1"),
+ ctx, deviceauth.NewAggregate("123", "instance1"),
domain.DeviceAuthCanceledDenied,
),
),
),
},
- args: args{ctx, "1999", domain.DeviceAuthCanceledDenied},
+ args: args{ctx, "123", domain.DeviceAuthCanceledDenied},
wantErr: pushErr,
},
{
@@ -317,20 +272,20 @@ func TestCommands_CancelDeviceAuth(t *testing.T) {
"instance1",
deviceauth.NewAddedEvent(
ctx,
- deviceauth.NewAggregate("1999", "instance1"),
+ deviceauth.NewAggregate("123", "instance1"),
"client_id", "123", "456", now,
[]string{"a", "b", "c"},
),
)),
expectPush(
deviceauth.NewCanceledEvent(
- ctx, deviceauth.NewAggregate("1999", "instance1"),
+ ctx, deviceauth.NewAggregate("123", "instance1"),
domain.DeviceAuthCanceledDenied,
),
),
),
},
- args: args{ctx, "1999", domain.DeviceAuthCanceledDenied},
+ args: args{ctx, "123", domain.DeviceAuthCanceledDenied},
wantDetails: &domain.ObjectDetails{
ResourceOwner: "instance1",
},
@@ -343,20 +298,20 @@ func TestCommands_CancelDeviceAuth(t *testing.T) {
"instance1",
deviceauth.NewAddedEvent(
ctx,
- deviceauth.NewAggregate("1999", "instance1"),
+ deviceauth.NewAggregate("123", "instance1"),
"client_id", "123", "456", now,
[]string{"a", "b", "c"},
),
)),
expectPush(
deviceauth.NewCanceledEvent(
- ctx, deviceauth.NewAggregate("1999", "instance1"),
+ ctx, deviceauth.NewAggregate("123", "instance1"),
domain.DeviceAuthCanceledExpired,
),
),
),
},
- args: args{ctx, "1999", domain.DeviceAuthCanceledExpired},
+ args: args{ctx, "123", domain.DeviceAuthCanceledExpired},
wantDetails: &domain.ObjectDetails{
ResourceOwner: "instance1",
},
@@ -373,88 +328,3 @@ func TestCommands_CancelDeviceAuth(t *testing.T) {
})
}
}
-
-func TestCommands_RemoveDeviceAuth(t *testing.T) {
- ctx := authz.WithInstanceID(context.Background(), "instance1")
- now := time.Now()
- pushErr := errors.New("pushErr")
-
- unique := deviceauth.NewRemoveUniqueConstraints("client_id", "123", "456")
- require.Len(t, unique, 2)
-
- type fields struct {
- eventstore *eventstore.Eventstore
- }
- type args struct {
- ctx context.Context
- id string
- }
- tests := []struct {
- name string
- fields fields
- args args
- wantDetails *domain.ObjectDetails
- wantErr error
- }{
- {
- name: "push error",
- fields: fields{
- eventstore: eventstoreExpect(t,
- expectFilter(eventFromEventPusherWithInstanceID(
- "instance1",
- deviceauth.NewAddedEvent(
- ctx,
- deviceauth.NewAggregate("1999", "instance1"),
- "client_id", "123", "456", now,
- []string{"a", "b", "c"},
- ),
- )),
- expectPushFailed(pushErr,
- deviceauth.NewRemovedEvent(
- ctx, deviceauth.NewAggregate("1999", "instance1"),
- "client_id", "123", "456",
- ),
- ),
- ),
- },
- args: args{ctx, "1999"},
- wantErr: pushErr,
- },
- {
- name: "success",
- fields: fields{
- eventstore: eventstoreExpect(t,
- expectFilter(eventFromEventPusherWithInstanceID(
- "instance1",
- deviceauth.NewAddedEvent(
- ctx,
- deviceauth.NewAggregate("1999", "instance1"),
- "client_id", "123", "456", now,
- []string{"a", "b", "c"},
- ),
- )),
- expectPush(
- deviceauth.NewRemovedEvent(
- ctx, deviceauth.NewAggregate("1999", "instance1"),
- "client_id", "123", "456",
- ),
- ),
- ),
- },
- args: args{ctx, "1999"},
- wantDetails: &domain.ObjectDetails{
- ResourceOwner: "instance1",
- },
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- c := &Commands{
- eventstore: tt.fields.eventstore,
- }
- gotDetails, err := c.RemoveDeviceAuth(tt.args.ctx, tt.args.id)
- require.ErrorIs(t, err, tt.wantErr)
- assert.Equal(t, gotDetails, tt.wantDetails)
- })
- }
-}
diff --git a/internal/command/idp.go b/internal/command/idp.go
index 3dc8f1ad50..997a772786 100644
--- a/internal/command/idp.go
+++ b/internal/command/idp.go
@@ -6,8 +6,8 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/command/preparation"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/repository/idp"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type GenericOAuthProvider struct {
@@ -167,7 +167,7 @@ func IDPProviderWriteModel(ctx context.Context, filter preparation.FilterToQuery
return nil, err
}
if len(events) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "COMMAND-as02jin", "Errors.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-as02jin", "Errors.IDPConfig.NotExisting")
}
writeModel.AppendEvents(events...)
if err := writeModel.Reduce(); err != nil {
diff --git a/internal/command/idp_intent.go b/internal/command/idp_intent.go
index edf28ef460..1afc823fb2 100644
--- a/internal/command/idp_intent.go
+++ b/internal/command/idp_intent.go
@@ -14,7 +14,6 @@ import (
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/idp"
"github.com/zitadel/zitadel/internal/idp/providers/apple"
@@ -23,20 +22,21 @@ import (
"github.com/zitadel/zitadel/internal/idp/providers/oauth"
openid "github.com/zitadel/zitadel/internal/idp/providers/oidc"
"github.com/zitadel/zitadel/internal/repository/idpintent"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) prepareCreateIntent(writeModel *IDPIntentWriteModel, idpID string, successURL, failureURL string) preparation.Validation {
return func() (_ preparation.CreateCommands, err error) {
if idpID == "" {
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-x8j2bk", "Errors.Intent.IDPMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-x8j2bk", "Errors.Intent.IDPMissing")
}
successURL, err := url.Parse(successURL)
if err != nil {
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-x8j3bk", "Errors.Intent.SuccessURLMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-x8j3bk", "Errors.Intent.SuccessURLMissing")
}
failureURL, err := url.Parse(failureURL)
if err != nil {
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-x8j4bk", "Errors.Intent.FailureURLMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-x8j4bk", "Errors.Intent.FailureURLMissing")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
err = getIDPIntentWriteModel(ctx, writeModel, filter)
@@ -45,7 +45,7 @@ func (c *Commands) prepareCreateIntent(writeModel *IDPIntentWriteModel, idpID st
}
exists, err := ExistsIDP(ctx, filter, idpID, writeModel.ResourceOwner)
if !exists || err != nil {
- return nil, errors.ThrowPreconditionFailed(err, "COMMAND-39n221fs", "Errors.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowPreconditionFailed(err, "COMMAND-39n221fs", "Errors.IDPConfig.NotExisting")
}
return []eventstore.Command{
idpintent.NewStartedEvent(ctx, writeModel.aggregate, successURL, failureURL, idpID),
@@ -117,10 +117,10 @@ func (c *Commands) GetActiveIntent(ctx context.Context, intentID string) (*IDPIn
return nil, err
}
if intent.State == domain.IDPIntentStateUnspecified {
- return nil, errors.ThrowNotFound(nil, "IDP-Hk38e", "Errors.Intent.NotStarted")
+ return nil, zerrors.ThrowNotFound(nil, "IDP-Hk38e", "Errors.Intent.NotStarted")
}
if intent.State != domain.IDPIntentStateStarted {
- return nil, errors.ThrowInvalidArgument(nil, "IDP-Sfrgs", "Errors.Intent.NotStarted")
+ return nil, zerrors.ThrowInvalidArgument(nil, "IDP-Sfrgs", "Errors.Intent.NotStarted")
}
return intent, nil
}
diff --git a/internal/command/idp_intent_test.go b/internal/command/idp_intent_test.go
index f930530c3d..a297548f6b 100644
--- a/internal/command/idp_intent_test.go
+++ b/internal/command/idp_intent_test.go
@@ -16,7 +16,6 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- z_errors "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/id"
"github.com/zitadel/zitadel/internal/id/mock"
@@ -29,6 +28,7 @@ import (
rep_idp "github.com/zitadel/zitadel/internal/repository/idp"
"github.com/zitadel/zitadel/internal/repository/idpintent"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommands_CreateIntent(t *testing.T) {
@@ -58,7 +58,7 @@ func TestCommands_CreateIntent(t *testing.T) {
"error no id generator",
fields{
eventstore: eventstoreExpect(t),
- idGenerator: mock.NewIDGeneratorExpectError(t, z_errors.ThrowInternal(nil, "", "error id")),
+ idGenerator: mock.NewIDGeneratorExpectError(t, zerrors.ThrowInternal(nil, "", "error id")),
},
args{
ctx: authz.SetCtxData(context.Background(), authz.CtxData{OrgID: "ro"}),
@@ -67,7 +67,7 @@ func TestCommands_CreateIntent(t *testing.T) {
failureURL: "https://failure.url",
},
res{
- err: z_errors.ThrowInternal(nil, "", "error id"),
+ err: zerrors.ThrowInternal(nil, "", "error id"),
},
},
{
@@ -83,7 +83,7 @@ func TestCommands_CreateIntent(t *testing.T) {
failureURL: "https://failure.url",
},
res{
- err: z_errors.ThrowInvalidArgument(nil, "COMMAND-x8j2bk", "Errors.Intent.IDPMissing"),
+ err: zerrors.ThrowInvalidArgument(nil, "COMMAND-x8j2bk", "Errors.Intent.IDPMissing"),
},
},
{
@@ -99,7 +99,7 @@ func TestCommands_CreateIntent(t *testing.T) {
failureURL: "https://failure.url",
},
res{
- err: z_errors.ThrowInvalidArgument(nil, "COMMAND-x8j3bk", "Errors.Intent.SuccessURLMissing"),
+ err: zerrors.ThrowInvalidArgument(nil, "COMMAND-x8j3bk", "Errors.Intent.SuccessURLMissing"),
},
},
{
@@ -115,7 +115,7 @@ func TestCommands_CreateIntent(t *testing.T) {
failureURL: ":",
},
res{
- err: z_errors.ThrowInvalidArgument(nil, "COMMAND-x8j4bk", "Errors.Intent.FailureURLMissing"),
+ err: zerrors.ThrowInvalidArgument(nil, "COMMAND-x8j4bk", "Errors.Intent.FailureURLMissing"),
},
},
{
@@ -135,7 +135,7 @@ func TestCommands_CreateIntent(t *testing.T) {
failureURL: "https://failure.url",
},
res{
- err: z_errors.ThrowPreconditionFailed(nil, "COMMAND-39n221fs", "Errors.IDPConfig.NotExisting"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-39n221fs", "Errors.IDPConfig.NotExisting"),
},
},
{
@@ -249,7 +249,7 @@ func TestCommands_AuthFromProvider(t *testing.T) {
callbackURL: "url",
},
res{
- err: z_errors.ThrowPreconditionFailed(nil, "", ""),
+ err: zerrors.ThrowPreconditionFailed(nil, "", ""),
},
},
{
@@ -293,7 +293,7 @@ func TestCommands_AuthFromProvider(t *testing.T) {
callbackURL: "url",
},
res{
- err: z_errors.ThrowInternal(nil, "COMMAND-xw921211", "Errors.IDPConfig.NotExisting"),
+ err: zerrors.ThrowInternal(nil, "COMMAND-xw921211", "Errors.IDPConfig.NotExisting"),
},
},
{
@@ -620,7 +620,7 @@ func TestCommands_SucceedIDPIntent(t *testing.T) {
fields{
idpConfigEncryption: func() crypto.EncryptionAlgorithm {
m := crypto.NewMockEncryptionAlgorithm(gomock.NewController(t))
- m.EXPECT().Encrypt(gomock.Any()).Return(nil, z_errors.ThrowInternal(nil, "id", "encryption failed"))
+ m.EXPECT().Encrypt(gomock.Any()).Return(nil, zerrors.ThrowInternal(nil, "id", "encryption failed"))
return m
}(),
},
@@ -629,7 +629,7 @@ func TestCommands_SucceedIDPIntent(t *testing.T) {
writeModel: NewIDPIntentWriteModel("id", "ro"),
},
res{
- err: z_errors.ThrowInternal(nil, "id", "encryption failed"),
+ err: zerrors.ThrowInternal(nil, "id", "encryption failed"),
},
},
{
@@ -640,7 +640,7 @@ func TestCommands_SucceedIDPIntent(t *testing.T) {
m.EXPECT().Encrypt(gomock.Any()).DoAndReturn(func(value []byte) ([]byte, error) {
return value, nil
})
- m.EXPECT().Encrypt(gomock.Any()).Return(nil, z_errors.ThrowInternal(nil, "id", "encryption failed"))
+ m.EXPECT().Encrypt(gomock.Any()).Return(nil, zerrors.ThrowInternal(nil, "id", "encryption failed"))
return m
}(),
},
@@ -656,7 +656,7 @@ func TestCommands_SucceedIDPIntent(t *testing.T) {
},
},
res{
- err: z_errors.ThrowInternal(nil, "id", "encryption failed"),
+ err: zerrors.ThrowInternal(nil, "id", "encryption failed"),
},
},
{
@@ -749,7 +749,7 @@ func TestCommands_SucceedSAMLIDPIntent(t *testing.T) {
fields{
idpConfigEncryption: func() crypto.EncryptionAlgorithm {
m := crypto.NewMockEncryptionAlgorithm(gomock.NewController(t))
- m.EXPECT().Encrypt(gomock.Any()).Return(nil, z_errors.ThrowInternal(nil, "id", "encryption failed"))
+ m.EXPECT().Encrypt(gomock.Any()).Return(nil, zerrors.ThrowInternal(nil, "id", "encryption failed"))
return m
}(),
},
@@ -758,7 +758,7 @@ func TestCommands_SucceedSAMLIDPIntent(t *testing.T) {
writeModel: NewIDPIntentWriteModel("id", "ro"),
},
res{
- err: z_errors.ThrowInternal(nil, "id", "encryption failed"),
+ err: zerrors.ThrowInternal(nil, "id", "encryption failed"),
},
},
{
@@ -930,7 +930,7 @@ func TestCommands_SucceedLDAPIDPIntent(t *testing.T) {
fields{
idpConfigEncryption: func() crypto.EncryptionAlgorithm {
m := crypto.NewMockEncryptionAlgorithm(gomock.NewController(t))
- m.EXPECT().Encrypt(gomock.Any()).Return(nil, z_errors.ThrowInternal(nil, "id", "encryption failed"))
+ m.EXPECT().Encrypt(gomock.Any()).Return(nil, zerrors.ThrowInternal(nil, "id", "encryption failed"))
return m
}(),
},
@@ -939,7 +939,7 @@ func TestCommands_SucceedLDAPIDPIntent(t *testing.T) {
writeModel: NewIDPIntentWriteModel("id", "ro"),
},
res{
- err: z_errors.ThrowInternal(nil, "id", "encryption failed"),
+ err: zerrors.ThrowInternal(nil, "id", "encryption failed"),
},
},
{
@@ -1089,14 +1089,14 @@ func Test_tokensForSucceededIDPIntent(t *testing.T) {
},
func() crypto.EncryptionAlgorithm {
m := crypto.NewMockEncryptionAlgorithm(gomock.NewController(t))
- m.EXPECT().Encrypt(gomock.Any()).Return(nil, z_errors.ThrowInternal(nil, "id", "encryption failed"))
+ m.EXPECT().Encrypt(gomock.Any()).Return(nil, zerrors.ThrowInternal(nil, "id", "encryption failed"))
return m
}(),
},
res{
accessToken: nil,
idToken: "",
- err: z_errors.ThrowInternal(nil, "id", "encryption failed"),
+ err: zerrors.ThrowInternal(nil, "id", "encryption failed"),
},
},
{
diff --git a/internal/command/idp_model.go b/internal/command/idp_model.go
index e9949fb406..a71391d511 100644
--- a/internal/command/idp_model.go
+++ b/internal/command/idp_model.go
@@ -12,7 +12,6 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
providers "github.com/zitadel/zitadel/internal/idp"
"github.com/zitadel/zitadel/internal/idp/providers/apple"
@@ -30,6 +29,7 @@ import (
"github.com/zitadel/zitadel/internal/repository/idpconfig"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type OAuthIDPWriteModel struct {
@@ -2172,7 +2172,7 @@ func NewAllIDPWriteModel(resourceOwner string, instanceBool bool, id string, idp
case domain.IDPTypeUnspecified:
fallthrough
default:
- return nil, errors.ThrowInternal(nil, "COMMAND-xw921211", "Errors.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowInternal(nil, "COMMAND-xw921211", "Errors.IDPConfig.NotExisting")
}
} else {
switch idpType {
@@ -2203,7 +2203,7 @@ func NewAllIDPWriteModel(resourceOwner string, instanceBool bool, id string, idp
case domain.IDPTypeUnspecified:
fallthrough
default:
- return nil, errors.ThrowInternal(nil, "COMMAND-xw921111", "Errors.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowInternal(nil, "COMMAND-xw921111", "Errors.IDPConfig.NotExisting")
}
}
return writeModel, nil
@@ -2233,7 +2233,7 @@ func (wm *AllIDPWriteModel) AppendEvents(events ...eventstore.Event) {
func (wm *AllIDPWriteModel) ToProvider(callbackURL string, idpAlg crypto.EncryptionAlgorithm) (providers.Provider, error) {
if wm.model == nil {
- return nil, errors.ThrowInternal(nil, "COMMAND-afvf0gc9sa", "ErrorsIDPConfig.NotExisting")
+ return nil, zerrors.ThrowInternal(nil, "COMMAND-afvf0gc9sa", "ErrorsIDPConfig.NotExisting")
}
return wm.model.ToProvider(callbackURL, idpAlg)
}
@@ -2247,7 +2247,7 @@ func (wm *AllIDPWriteModel) GetProviderOptions() idp.Options {
func (wm *AllIDPWriteModel) ToSAMLProvider(callbackURL string, idpAlg crypto.EncryptionAlgorithm, getRequest requesttracker.GetRequest, addRequest requesttracker.AddRequest) (providers.Provider, error) {
if wm.samlModel == nil {
- return nil, errors.ThrowInternal(nil, "COMMAND-csi30hdscv", "ErrorsIDPConfig.NotExisting")
+ return nil, zerrors.ThrowInternal(nil, "COMMAND-csi30hdscv", "ErrorsIDPConfig.NotExisting")
}
return wm.samlModel.ToProvider(callbackURL, idpAlg, getRequest, addRequest)
}
diff --git a/internal/command/idp_model_test.go b/internal/command/idp_model_test.go
index 42c2112bf9..423bff39b4 100644
--- a/internal/command/idp_model_test.go
+++ b/internal/command/idp_model_test.go
@@ -7,7 +7,7 @@ import (
"github.com/stretchr/testify/require"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommands_AllIDPWriteModel(t *testing.T) {
@@ -179,7 +179,7 @@ func TestCommands_AllIDPWriteModel(t *testing.T) {
idpType: domain.IDPTypeUnspecified,
},
res: res{
- err: errors.ThrowInternal(nil, "COMMAND-xw921211", "Errors.IDPConfig.NotExisting"),
+ err: zerrors.ThrowInternal(nil, "COMMAND-xw921211", "Errors.IDPConfig.NotExisting"),
},
},
{
@@ -334,7 +334,7 @@ func TestCommands_AllIDPWriteModel(t *testing.T) {
idpType: domain.IDPTypeUnspecified,
},
res: res{
- err: errors.ThrowInternal(nil, "COMMAND-xw921111", "Errors.IDPConfig.NotExisting"),
+ err: zerrors.ThrowInternal(nil, "COMMAND-xw921111", "Errors.IDPConfig.NotExisting"),
},
},
}
diff --git a/internal/command/instance.go b/internal/command/instance.go
index 75325b5b32..ce660bc137 100644
--- a/internal/command/instance.go
+++ b/internal/command/instance.go
@@ -11,8 +11,8 @@ import (
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/i18n"
"github.com/zitadel/zitadel/internal/id"
"github.com/zitadel/zitadel/internal/notification/channels/smtp"
"github.com/zitadel/zitadel/internal/repository/feature"
@@ -23,6 +23,7 @@ import (
"github.com/zitadel/zitadel/internal/repository/quota"
"github.com/zitadel/zitadel/internal/repository/restrictions"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -107,18 +108,22 @@ type InstanceSetup struct {
EmailTemplate []byte
MessageTexts []*domain.CustomMessageText
SMTPConfiguration *smtp.Config
- OIDCSettings *struct {
- AccessTokenLifetime time.Duration
- IdTokenLifetime time.Duration
- RefreshTokenIdleExpiration time.Duration
- RefreshTokenExpiration time.Duration
- }
- Quotas *struct {
- Items []*SetQuota
- }
- Features map[domain.Feature]any
- Limits *SetLimits
- Restrictions *SetRestrictions
+ OIDCSettings *OIDCSettings
+ Quotas *SetQuotas
+ Features map[domain.Feature]any
+ Limits *SetLimits
+ Restrictions *SetRestrictions
+}
+
+type OIDCSettings struct {
+ AccessTokenLifetime time.Duration
+ IdTokenLifetime time.Duration
+ RefreshTokenIdleExpiration time.Duration
+ RefreshTokenExpiration time.Duration
+}
+
+type SetQuotas struct {
+ Items []*SetQuota
}
type SecretGenerators struct {
@@ -289,183 +294,32 @@ func (c *Commands) SetUpInstance(ctx context.Context, setup *InstanceSetup) (str
prepareAddDefaultEmailTemplate(instanceAgg, setup.EmailTemplate),
}
-
- if setup.Quotas != nil {
- for _, q := range setup.Quotas.Items {
- quotaId, err := c.idGenerator.Next()
- if err != nil {
- return "", "", nil, nil, err
- }
- validations = append(validations, c.SetQuotaCommand(quota.NewAggregate(quotaId, instanceID), nil, true, q))
- }
+ if err := setupQuotas(c, &validations, setup.Quotas, instanceID); err != nil {
+ return "", "", nil, nil, err
}
-
- for _, msg := range setup.MessageTexts {
- validations = append(validations, prepareSetInstanceCustomMessageTexts(instanceAgg, msg))
- }
-
- console := &addOIDCApp{
- AddApp: AddApp{
- Aggregate: *projectAgg,
- ID: setup.zitadel.consoleAppID,
- Name: consoleAppName,
- },
- Version: domain.OIDCVersionV1,
- RedirectUris: []string{},
- ResponseTypes: []domain.OIDCResponseType{domain.OIDCResponseTypeCode},
- GrantTypes: []domain.OIDCGrantType{domain.OIDCGrantTypeAuthorizationCode},
- ApplicationType: domain.OIDCApplicationTypeUserAgent,
- AuthMethodType: domain.OIDCAuthMethodTypeNone,
- PostLogoutRedirectUris: []string{},
- DevMode: !c.externalSecure,
- AccessTokenType: domain.OIDCTokenTypeBearer,
- AccessTokenRoleAssertion: false,
- IDTokenRoleAssertion: false,
- IDTokenUserinfoAssertion: false,
- ClockSkew: 0,
- }
-
+ setupMessageTexts(&validations, setup.MessageTexts, instanceAgg)
validations = append(validations,
AddOrgCommand(ctx, orgAgg, setup.Org.Name),
c.prepareSetDefaultOrg(instanceAgg, orgAgg.ID),
)
-
- var pat *PersonalAccessToken
- var machineKey *MachineKey
- // only a human or a machine user should be created as owner
- if setup.Org.Machine != nil && setup.Org.Machine.Machine != nil && !setup.Org.Machine.Machine.IsZero() {
- validations = append(validations,
- AddMachineCommand(userAgg, setup.Org.Machine.Machine),
- )
- if setup.Org.Machine.Pat != nil {
- pat = NewPersonalAccessToken(orgID, userID, setup.Org.Machine.Pat.ExpirationDate, setup.Org.Machine.Pat.Scopes, domain.UserTypeMachine)
- pat.TokenID, err = c.idGenerator.Next()
- if err != nil {
- return "", "", nil, nil, err
- }
- validations = append(validations, prepareAddPersonalAccessToken(pat, c.keyAlgorithm))
- }
- if setup.Org.Machine.MachineKey != nil {
- machineKey = NewMachineKey(orgID, userID, setup.Org.Machine.MachineKey.ExpirationDate, setup.Org.Machine.MachineKey.Type)
- machineKey.KeyID, err = c.idGenerator.Next()
- if err != nil {
- return "", "", nil, nil, err
- }
- validations = append(validations, prepareAddUserMachineKey(machineKey, c.machineKeySize))
- }
- } else if setup.Org.Human != nil {
- setup.Org.Human.ID = userID
- validations = append(validations,
- c.AddHumanCommand(setup.Org.Human, orgID, c.userPasswordHasher, c.userEncryption, true),
- )
- }
-
- validations = append(validations,
- c.AddOrgMemberCommand(orgAgg, userID, domain.RoleOrgOwner),
- c.AddInstanceMemberCommand(instanceAgg, userID, domain.RoleIAMOwner),
- AddProjectCommand(projectAgg, zitadelProjectName, userID, false, false, false, domain.PrivateLabelingSettingUnspecified),
- SetIAMProject(instanceAgg, projectAgg.ID),
-
- c.AddAPIAppCommand(
- &addAPIApp{
- AddApp: AddApp{
- Aggregate: *projectAgg,
- ID: setup.zitadel.mgmtAppID,
- Name: mgmtAppName,
- },
- AuthMethodType: domain.APIAuthMethodTypePrivateKeyJWT,
- },
- nil,
- ),
-
- c.AddAPIAppCommand(
- &addAPIApp{
- AddApp: AddApp{
- Aggregate: *projectAgg,
- ID: setup.zitadel.adminAppID,
- Name: adminAppName,
- },
- AuthMethodType: domain.APIAuthMethodTypePrivateKeyJWT,
- },
- nil,
- ),
-
- c.AddAPIAppCommand(
- &addAPIApp{
- AddApp: AddApp{
- Aggregate: *projectAgg,
- ID: setup.zitadel.authAppID,
- Name: authAppName,
- },
- AuthMethodType: domain.APIAuthMethodTypePrivateKeyJWT,
- },
- nil,
- ),
-
- c.AddOIDCAppCommand(console, nil),
- SetIAMConsoleID(instanceAgg, &console.ClientID, &setup.zitadel.consoleAppID),
- )
-
- addGeneratedDomain, err := c.addGeneratedInstanceDomain(ctx, instanceAgg, setup.InstanceName)
+ pat, machineKey, err := setupAdmin(c, &validations, setup.Org.Machine, setup.Org.Human, orgID, userID, userAgg)
if err != nil {
return "", "", nil, nil, err
}
- validations = append(validations, addGeneratedDomain...)
- if setup.CustomDomain != "" {
- validations = append(validations,
- c.addInstanceDomain(instanceAgg, setup.CustomDomain, false),
- setPrimaryInstanceDomain(instanceAgg, setup.CustomDomain),
- )
+ setupMinimalInterfaces(c, &validations, instanceAgg, projectAgg, orgAgg, userID, setup.zitadel)
+ if err := setupGeneratedDomain(ctx, c, &validations, instanceAgg, setup.InstanceName); err != nil {
+ return "", "", nil, nil, err
}
-
- if setup.SMTPConfiguration != nil {
- validations = append(validations,
- c.prepareAddSMTPConfig(
- instanceAgg,
- setup.SMTPConfiguration.From,
- setup.SMTPConfiguration.FromName,
- setup.SMTPConfiguration.ReplyToAddress,
- setup.SMTPConfiguration.SMTP.Host,
- setup.SMTPConfiguration.SMTP.User,
- []byte(setup.SMTPConfiguration.SMTP.Password),
- setup.SMTPConfiguration.Tls,
- ),
- )
- }
-
- if setup.OIDCSettings != nil {
- validations = append(validations,
- c.prepareAddOIDCSettings(
- instanceAgg,
- setup.OIDCSettings.AccessTokenLifetime,
- setup.OIDCSettings.IdTokenLifetime,
- setup.OIDCSettings.RefreshTokenIdleExpiration,
- setup.OIDCSettings.RefreshTokenExpiration,
- ),
- )
- }
-
- for f, value := range setup.Features {
- switch v := value.(type) {
- case bool:
- wm, err := NewInstanceFeatureWriteModel[feature.Boolean](instanceID, f)
- if err != nil {
- return "", "", nil, nil, err
- }
- validations = append(validations, prepareSetFeature(wm, feature.Boolean{Boolean: v}, c.idGenerator))
- default:
- return "", "", nil, nil, errors.ThrowInvalidArgument(nil, "INST-GE4tg", "Errors.Feature.TypeNotSupported")
- }
- }
-
- if setup.Limits != nil {
- validations = append(validations, c.SetLimitsCommand(limitsAgg, &limitsWriteModel{}, setup.Limits))
- }
-
- if setup.Restrictions != nil {
- validations = append(validations, c.SetRestrictionsCommand(restrictionsAgg, &restrictionsWriteModel{}, setup.Restrictions))
+ setupCustomDomain(c, &validations, instanceAgg, setup.CustomDomain)
+ setupSMTPSettings(c, &validations, setup.SMTPConfiguration, instanceAgg)
+ setupOIDCSettings(c, &validations, setup.OIDCSettings, instanceAgg)
+ if err := setupFeatures(c, &validations, setup.Features, instanceID); err != nil {
+ return "", "", nil, nil, err
}
+ setupLimits(c, &validations, limitsAgg, setup.Limits)
+ setupRestrictions(c, &validations, restrictionsAgg, setup.Restrictions)
+ //nolint:staticcheck
cmds, err := preparation.PrepareCommands(ctx, c.eventstore.Filter, validations...)
if err != nil {
return "", "", nil, nil, err
@@ -488,6 +342,205 @@ func (c *Commands) SetUpInstance(ctx context.Context, setup *InstanceSetup) (str
}, nil
}
+func setupLimits(commands *Commands, validations *[]preparation.Validation, limitsAgg *limits.Aggregate, setLimits *SetLimits) {
+ if setLimits != nil {
+ *validations = append(*validations, commands.SetLimitsCommand(limitsAgg, &limitsWriteModel{}, setLimits))
+ }
+}
+
+func setupRestrictions(commands *Commands, validations *[]preparation.Validation, restrictionsAgg *restrictions.Aggregate, setRestrictions *SetRestrictions) {
+ if setRestrictions != nil {
+ *validations = append(*validations, commands.SetRestrictionsCommand(restrictionsAgg, &restrictionsWriteModel{}, setRestrictions))
+ }
+}
+
+func setupQuotas(commands *Commands, validations *[]preparation.Validation, setQuotas *SetQuotas, instanceID string) error {
+ if setQuotas == nil {
+ return nil
+ }
+ for _, q := range setQuotas.Items {
+ quotaId, err := commands.idGenerator.Next()
+ if err != nil {
+ return err
+ }
+ *validations = append(*validations, commands.SetQuotaCommand(quota.NewAggregate(quotaId, instanceID), nil, true, q))
+ }
+ return nil
+}
+
+func setupFeatures(commands *Commands, validations *[]preparation.Validation, enableFeatures map[domain.Feature]any, instanceID string) error {
+ for f, value := range enableFeatures {
+ switch v := value.(type) {
+ case bool:
+ wm, err := NewInstanceFeatureWriteModel[feature.Boolean](instanceID, f)
+ if err != nil {
+ return err
+ }
+ *validations = append(*validations, prepareSetFeature(wm, feature.Boolean{Boolean: v}, commands.idGenerator))
+ default:
+ return zerrors.ThrowInvalidArgument(nil, "INST-GE4tg", "Errors.Feature.TypeNotSupported")
+ }
+ }
+ return nil
+}
+
+func setupOIDCSettings(commands *Commands, validations *[]preparation.Validation, oidcSettings *OIDCSettings, instanceAgg *instance.Aggregate) {
+ if oidcSettings == nil {
+ return
+ }
+ *validations = append(*validations,
+ commands.prepareAddOIDCSettings(
+ instanceAgg,
+ oidcSettings.AccessTokenLifetime,
+ oidcSettings.IdTokenLifetime,
+ oidcSettings.RefreshTokenIdleExpiration,
+ oidcSettings.RefreshTokenExpiration,
+ ),
+ )
+}
+
+func setupSMTPSettings(commands *Commands, validations *[]preparation.Validation, smtpConfig *smtp.Config, instanceAgg *instance.Aggregate) {
+ if smtpConfig == nil {
+ return
+ }
+ *validations = append(*validations,
+ commands.prepareAddSMTPConfig(
+ instanceAgg,
+ smtpConfig.From,
+ smtpConfig.FromName,
+ smtpConfig.ReplyToAddress,
+ smtpConfig.SMTP.Host,
+ smtpConfig.SMTP.User,
+ []byte(smtpConfig.SMTP.Password),
+ smtpConfig.Tls,
+ ),
+ )
+}
+
+func setupCustomDomain(commands *Commands, validations *[]preparation.Validation, instanceAgg *instance.Aggregate, customDomain string) {
+ if customDomain == "" {
+ return
+ }
+ *validations = append(*validations,
+ commands.addInstanceDomain(instanceAgg, customDomain, false),
+ setPrimaryInstanceDomain(instanceAgg, customDomain),
+ )
+}
+
+func setupGeneratedDomain(ctx context.Context, commands *Commands, validations *[]preparation.Validation, instanceAgg *instance.Aggregate, instanceName string) error {
+ addGeneratedDomain, err := commands.addGeneratedInstanceDomain(ctx, instanceAgg, instanceName)
+ if err != nil {
+ return err
+ }
+ *validations = append(*validations, addGeneratedDomain...)
+ return nil
+}
+
+func setupMinimalInterfaces(commands *Commands, validations *[]preparation.Validation, instanceAgg *instance.Aggregate, projectAgg *project.Aggregate, orgAgg *org.Aggregate, userID string, ids ZitadelConfig) {
+ cnsl := &addOIDCApp{
+ AddApp: AddApp{
+ Aggregate: *projectAgg,
+ ID: ids.consoleAppID,
+ Name: consoleAppName,
+ },
+ Version: domain.OIDCVersionV1,
+ RedirectUris: []string{},
+ ResponseTypes: []domain.OIDCResponseType{domain.OIDCResponseTypeCode},
+ GrantTypes: []domain.OIDCGrantType{domain.OIDCGrantTypeAuthorizationCode},
+ ApplicationType: domain.OIDCApplicationTypeUserAgent,
+ AuthMethodType: domain.OIDCAuthMethodTypeNone,
+ PostLogoutRedirectUris: []string{},
+ DevMode: !commands.externalSecure,
+ AccessTokenType: domain.OIDCTokenTypeBearer,
+ AccessTokenRoleAssertion: false,
+ IDTokenRoleAssertion: false,
+ IDTokenUserinfoAssertion: false,
+ ClockSkew: 0,
+ }
+ *validations = append(*validations,
+ commands.AddOrgMemberCommand(orgAgg, userID, domain.RoleOrgOwner),
+ commands.AddInstanceMemberCommand(instanceAgg, userID, domain.RoleIAMOwner),
+ AddProjectCommand(projectAgg, zitadelProjectName, userID, false, false, false, domain.PrivateLabelingSettingUnspecified),
+ SetIAMProject(instanceAgg, projectAgg.ID),
+
+ commands.AddAPIAppCommand(
+ &addAPIApp{
+ AddApp: AddApp{
+ Aggregate: *projectAgg,
+ ID: ids.mgmtAppID,
+ Name: mgmtAppName,
+ },
+ AuthMethodType: domain.APIAuthMethodTypePrivateKeyJWT,
+ },
+ nil,
+ ),
+
+ commands.AddAPIAppCommand(
+ &addAPIApp{
+ AddApp: AddApp{
+ Aggregate: *projectAgg,
+ ID: ids.adminAppID,
+ Name: adminAppName,
+ },
+ AuthMethodType: domain.APIAuthMethodTypePrivateKeyJWT,
+ },
+ nil,
+ ),
+
+ commands.AddAPIAppCommand(
+ &addAPIApp{
+ AddApp: AddApp{
+ Aggregate: *projectAgg,
+ ID: ids.authAppID,
+ Name: authAppName,
+ },
+ AuthMethodType: domain.APIAuthMethodTypePrivateKeyJWT,
+ },
+ nil,
+ ),
+
+ commands.AddOIDCAppCommand(cnsl, nil),
+ SetIAMConsoleID(instanceAgg, &cnsl.ClientID, &ids.consoleAppID),
+ )
+}
+
+func setupAdmin(commands *Commands, validations *[]preparation.Validation, machine *AddMachine, human *AddHuman, orgID, userID string, userAgg *user.Aggregate) (pat *PersonalAccessToken, machineKey *MachineKey, err error) {
+ // only a human or a machine user should be created as owner
+ if machine != nil && machine.Machine != nil && !machine.Machine.IsZero() {
+ *validations = append(*validations,
+ AddMachineCommand(userAgg, machine.Machine),
+ )
+ if machine.Pat != nil {
+ pat = NewPersonalAccessToken(orgID, userID, machine.Pat.ExpirationDate, machine.Pat.Scopes, domain.UserTypeMachine)
+ pat.TokenID, err = commands.idGenerator.Next()
+ if err != nil {
+ return nil, nil, err
+ }
+ *validations = append(*validations, prepareAddPersonalAccessToken(pat, commands.keyAlgorithm))
+ }
+ if machine.MachineKey != nil {
+ machineKey = NewMachineKey(orgID, userID, machine.MachineKey.ExpirationDate, machine.MachineKey.Type)
+ machineKey.KeyID, err = commands.idGenerator.Next()
+ if err != nil {
+ return nil, nil, err
+ }
+ *validations = append(*validations, prepareAddUserMachineKey(machineKey, commands.machineKeySize))
+ }
+ } else if human != nil {
+ human.ID = userID
+ *validations = append(*validations,
+ commands.AddHumanCommand(human, orgID, commands.userPasswordHasher, commands.userEncryption, true),
+ )
+ }
+ return pat, machineKey, nil
+}
+
+func setupMessageTexts(validations *[]preparation.Validation, setupMessageTexts []*domain.CustomMessageText, instanceAgg *instance.Aggregate) {
+ for _, msg := range setupMessageTexts {
+ *validations = append(*validations, prepareSetInstanceCustomMessageTexts(instanceAgg, msg))
+ }
+}
+
func (c *Commands) UpdateInstance(ctx context.Context, name string) (*domain.ObjectDetails, error) {
instanceAgg := instance.NewAggregate(authz.GetInstance(ctx).InstanceID())
validation := c.prepareUpdateInstance(instanceAgg, name)
@@ -604,7 +657,7 @@ func SetIAMConsoleID(a *instance.Aggregate, clientID, appID *string) preparation
func (c *Commands) prepareSetDefaultOrg(a *instance.Aggregate, orgID string) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if orgID == "" {
- return nil, errors.ThrowInvalidArgument(nil, "INST-SWffe", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-SWffe", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
writeModel, err := getInstanceWriteModel(ctx, filter)
@@ -612,10 +665,10 @@ func (c *Commands) prepareSetDefaultOrg(a *instance.Aggregate, orgID string) pre
return nil, err
}
if writeModel.DefaultOrgID == orgID {
- return nil, errors.ThrowPreconditionFailed(nil, "INST-SDfw2", "Errors.Instance.NotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "INST-SDfw2", "Errors.Instance.NotChanged")
}
if exists, err := ExistsOrg(ctx, filter, orgID); err != nil || !exists {
- return nil, errors.ThrowPreconditionFailed(err, "INSTA-Wfe21", "Errors.Org.NotFound")
+ return nil, zerrors.ThrowPreconditionFailed(err, "INSTA-Wfe21", "Errors.Org.NotFound")
}
return []eventstore.Command{instance.NewDefaultOrgSetEventEvent(ctx, &a.Aggregate, orgID)}, nil
}, nil
@@ -628,7 +681,7 @@ func (c *Commands) setIAMProject(ctx context.Context, iamAgg *eventstore.Aggrega
return nil, err
}
if iamWriteModel.ProjectID != "" {
- return nil, errors.ThrowPreconditionFailed(nil, "IAM-EGbw2", "Errors.IAM.IAMProjectAlreadySet")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "IAM-EGbw2", "Errors.IAM.IAMProjectAlreadySet")
}
return instance.NewIAMProjectSetEvent(ctx, iamAgg, projectID), nil
}
@@ -636,7 +689,7 @@ func (c *Commands) setIAMProject(ctx context.Context, iamAgg *eventstore.Aggrega
func (c *Commands) prepareUpdateInstance(a *instance.Aggregate, name string) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if name == "" {
- return nil, errors.ThrowInvalidArgument(nil, "INST-092mid", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-092mid", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
writeModel, err := getInstanceWriteModel(ctx, filter)
@@ -644,10 +697,10 @@ func (c *Commands) prepareUpdateInstance(a *instance.Aggregate, name string) pre
return nil, err
}
if !writeModel.State.Exists() {
- return nil, errors.ThrowNotFound(nil, "INST-nuso2m", "Errors.Instance.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INST-nuso2m", "Errors.Instance.NotFound")
}
if writeModel.Name == name {
- return nil, errors.ThrowPreconditionFailed(nil, "INST-alpxism", "Errors.Instance.NotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "INST-alpxism", "Errors.Instance.NotChanged")
}
return []eventstore.Command{instance.NewInstanceChangedEvent(ctx, &a.Aggregate, name)}, nil
}, nil
@@ -656,16 +709,27 @@ func (c *Commands) prepareUpdateInstance(a *instance.Aggregate, name string) pre
func (c *Commands) prepareSetDefaultLanguage(a *instance.Aggregate, defaultLanguage language.Tag) preparation.Validation {
return func() (preparation.CreateCommands, error) {
- if defaultLanguage == language.Und {
- return nil, errors.ThrowInvalidArgument(nil, "INST-28nlD", "Errors.Invalid.Argument")
+ if err := domain.LanguageIsDefined(defaultLanguage); err != nil {
+ return nil, err
+ }
+ if err := domain.LanguagesAreSupported(i18n.SupportedLanguages(), defaultLanguage); err != nil {
+ return nil, err
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
writeModel, err := getInstanceWriteModel(ctx, filter)
+ if writeModel.DefaultLanguage == defaultLanguage {
+ return nil, zerrors.ThrowPreconditionFailed(nil, "INST-DS3rq", "Errors.Instance.NotChanged")
+ }
+ instanceID := authz.GetInstance(ctx).InstanceID()
+ restrictionsWM, err := c.getRestrictionsWriteModel(ctx, instanceID, instanceID)
if err != nil {
return nil, err
}
- if writeModel.DefaultLanguage == defaultLanguage {
- return nil, errors.ThrowPreconditionFailed(nil, "INST-DS3rq", "Errors.Instance.NotChanged")
+ if err := domain.LanguageIsAllowed(false, restrictionsWM.allowedLanguages, defaultLanguage); err != nil {
+ return nil, err
+ }
+ if err != nil {
+ return nil, err
}
return []eventstore.Command{instance.NewDefaultLanguageSetEvent(ctx, &a.Aggregate, defaultLanguage)}, nil
}, nil
@@ -724,10 +788,10 @@ func (c *Commands) prepareRemoveInstance(a *instance.Aggregate) preparation.Vali
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
writeModel, err := c.getInstanceWriteModelByID(ctx, a.ID)
if err != nil {
- return nil, errors.ThrowNotFound(err, "COMMA-pax9m3", "Errors.Instance.NotFound")
+ return nil, zerrors.ThrowNotFound(err, "COMMA-pax9m3", "Errors.Instance.NotFound")
}
if !writeModel.State.Exists() {
- return nil, errors.ThrowNotFound(err, "COMMA-AE3GS", "Errors.Instance.NotFound")
+ return nil, zerrors.ThrowNotFound(err, "COMMA-AE3GS", "Errors.Instance.NotFound")
}
return []eventstore.Command{instance.NewInstanceRemovedEvent(ctx,
&a.Aggregate,
diff --git a/internal/command/instance_custom_login_text.go b/internal/command/instance_custom_login_text.go
index 7b332b0a15..ca86a48290 100644
--- a/internal/command/instance_custom_login_text.go
+++ b/internal/command/instance_custom_login_text.go
@@ -3,15 +3,18 @@ package command
import (
"context"
- "github.com/zitadel/zitadel/internal/api/authz"
"golang.org/x/text/language"
+ "github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/i18n"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
+// SetCustomInstanceLoginText only validates if the language is supported, not if it is allowed.
+// This enables setting texts before allowing a language
func (c *Commands) SetCustomInstanceLoginText(ctx context.Context, loginText *domain.CustomLoginText) (*domain.ObjectDetails, error) {
iamAgg := instance.NewAggregate(authz.GetInstance(ctx).InstanceID())
events, existingMailText, err := c.setCustomInstanceLoginText(ctx, &iamAgg.Aggregate, loginText)
@@ -31,14 +34,14 @@ func (c *Commands) SetCustomInstanceLoginText(ctx context.Context, loginText *do
func (c *Commands) RemoveCustomInstanceLoginTexts(ctx context.Context, lang language.Tag) (*domain.ObjectDetails, error) {
if lang == language.Und {
- return nil, caos_errs.ThrowInvalidArgument(nil, "IAM-Gfbg3", "Errors.CustomText.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "IAM-Gfbg3", "Errors.CustomText.Invalid")
}
customText, err := c.defaultLoginTextWriteModelByID(ctx, lang)
if err != nil {
return nil, err
}
if customText.State == domain.PolicyStateUnspecified || customText.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "IAM-fru44", "Errors.CustomText.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "IAM-fru44", "Errors.CustomText.NotFound")
}
iamAgg := InstanceAggregateFromWriteModel(&customText.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, instance.NewCustomTextTemplateRemovedEvent(ctx, iamAgg, domain.LoginCustomText, lang))
@@ -53,8 +56,8 @@ func (c *Commands) RemoveCustomInstanceLoginTexts(ctx context.Context, lang lang
}
func (c *Commands) setCustomInstanceLoginText(ctx context.Context, instanceAgg *eventstore.Aggregate, text *domain.CustomLoginText) ([]eventstore.Command, *InstanceCustomLoginTextReadModel, error) {
- if !text.IsValid() {
- return nil, nil, caos_errs.ThrowInvalidArgument(nil, "Instance-kd9fs", "Errors.CustomText.Invalid")
+ if err := text.IsValid(i18n.SupportedLanguages()); err != nil {
+ return nil, nil, err
}
existingLoginText, err := c.defaultLoginTextWriteModelByID(ctx, text.Language)
if err != nil {
diff --git a/internal/command/instance_custom_login_text_test.go b/internal/command/instance_custom_login_text_test.go
index fdb47dff17..4ec29acab4 100644
--- a/internal/command/instance_custom_login_text_test.go
+++ b/internal/command/instance_custom_login_text_test.go
@@ -9,9 +9,9 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_SetCustomIAMLoginText(t *testing.T) {
@@ -33,18 +33,52 @@ func TestCommandSide_SetCustomIAMLoginText(t *testing.T) {
res res
}{
{
- name: "invalid custom login text, error",
+ name: "empty custom login text, success",
fields: fields{
eventstore: eventstoreExpect(
t,
+ expectFilter(),
+ expectPush(),
),
},
args: args{
- ctx: context.Background(),
+ ctx: authz.WithInstanceID(context.Background(), "INSTANCE"),
+ config: &domain.CustomLoginText{
+ Language: AllowedLanguage,
+ },
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ ResourceOwner: "INSTANCE",
+ },
+ },
+ },
+ {
+ name: "undefined language, error",
+ fields: fields{
+ eventstore: eventstoreExpect(t),
+ },
+ args: args{
+ ctx: authz.WithInstanceID(context.Background(), "INSTANCE"),
config: &domain.CustomLoginText{},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
+ },
+ },
+ {
+ name: "unsupported language, error",
+ fields: fields{
+ eventstore: eventstoreExpect(t),
+ },
+ args: args{
+ ctx: authz.WithInstanceID(context.Background(), "INSTANCE"),
+ config: &domain.CustomLoginText{
+ Language: UnsupportedLanguage,
+ },
+ },
+ res: res{
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
diff --git a/internal/command/instance_custom_message_text.go b/internal/command/instance_custom_message_text.go
index a70b6c5de8..03c073e4d3 100644
--- a/internal/command/instance_custom_message_text.go
+++ b/internal/command/instance_custom_message_text.go
@@ -7,11 +7,14 @@ import (
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/i18n"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
+// SetDefaultMessageText only validates if the language is supported, not if it is allowed.
+// This enables setting texts before allowing a language
func (c *Commands) SetDefaultMessageText(ctx context.Context, instanceID string, messageText *domain.CustomMessageText) (*domain.ObjectDetails, error) {
instanceAgg := instance.NewAggregate(instanceID)
events, existingMessageText, err := c.setDefaultMessageText(ctx, &instanceAgg.Aggregate, messageText)
@@ -30,8 +33,8 @@ func (c *Commands) SetDefaultMessageText(ctx context.Context, instanceID string,
}
func (c *Commands) setDefaultMessageText(ctx context.Context, instanceAgg *eventstore.Aggregate, msg *domain.CustomMessageText) ([]eventstore.Command, *InstanceCustomMessageTextWriteModel, error) {
- if !msg.IsValid() {
- return nil, nil, caos_errs.ThrowInvalidArgument(nil, "INSTANCE-kd9fs", "Errors.CustomMessageText.Invalid")
+ if err := msg.IsValid(i18n.SupportedLanguages()); err != nil {
+ return nil, nil, err
}
existingMessageText, err := c.defaultCustomMessageTextWriteModelByID(ctx, msg.MessageTextType, msg.Language)
@@ -94,14 +97,14 @@ func (c *Commands) setDefaultMessageText(ctx context.Context, instanceAgg *event
func (c *Commands) RemoveInstanceMessageTexts(ctx context.Context, messageTextType string, lang language.Tag) (*domain.ObjectDetails, error) {
if messageTextType == "" || lang == language.Und {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INSTANCE-fjw9b", "Errors.CustomMessageText.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INSTANCE-fjw9b", "Errors.CustomMessageText.Invalid")
}
customText, err := c.defaultCustomMessageTextWriteModelByID(ctx, messageTextType, lang)
if err != nil {
return nil, err
}
if customText.State == domain.PolicyStateUnspecified || customText.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "INSTANCE-fju90", "Errors.CustomMessageText.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-fju90", "Errors.CustomMessageText.NotFound")
}
instanceAgg := InstanceAggregateFromWriteModel(&customText.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, instance.NewCustomTextTemplateRemovedEvent(ctx, instanceAgg, messageTextType, lang))
@@ -129,8 +132,8 @@ func prepareSetInstanceCustomMessageTexts(
msg *domain.CustomMessageText,
) preparation.Validation {
return func() (preparation.CreateCommands, error) {
- if !msg.IsValid() {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INSTANCE-kd9fs", "Errors.CustomMessageText.Invalid")
+ if err := msg.IsValid(i18n.SupportedLanguages()); err != nil {
+ return nil, err
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
existing, err := existingInstanceCustomMessageText(ctx, filter, msg.MessageTextType, msg.Language)
diff --git a/internal/command/instance_custom_message_text_test.go b/internal/command/instance_custom_message_text_test.go
index b1c8539cab..edb330c6a3 100644
--- a/internal/command/instance_custom_message_text_test.go
+++ b/internal/command/instance_custom_message_text_test.go
@@ -9,9 +9,9 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_SetDefaultMessageText(t *testing.T) {
@@ -34,19 +34,68 @@ func TestCommandSide_SetDefaultMessageText(t *testing.T) {
res res
}{
{
- name: "invalid custom text, error",
+ name: "empty message type, error",
+ fields: fields{
+ eventstore: eventstoreExpect(t),
+ },
+ args: args{
+ ctx: authz.WithInstanceID(context.Background(), "INSTANCE"),
+ config: &domain.CustomMessageText{
+ Language: AllowedLanguage,
+ },
+ },
+ res: res{
+ err: zerrors.IsErrorInvalidArgument,
+ },
+ },
+ {
+ name: "empty custom message text, success",
fields: fields{
eventstore: eventstoreExpect(
t,
+ expectFilter(),
+ expectPush(),
),
},
args: args{
- ctx: context.Background(),
- instanceID: "INSTANCE",
- config: &domain.CustomMessageText{},
+ ctx: authz.WithInstanceID(context.Background(), "INSTANCE"),
+ config: &domain.CustomMessageText{
+ MessageTextType: "Some type", // TODO: check the type!
+ Language: AllowedLanguage,
+ },
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ want: &domain.ObjectDetails{
+ ResourceOwner: "INSTANCE",
+ },
+ },
+ },
+ {
+ name: "undefined language, error",
+ fields: fields{
+ eventstore: eventstoreExpect(t),
+ },
+ args: args{
+ ctx: authz.WithInstanceID(context.Background(), "INSTANCE"),
+ config: &domain.CustomMessageText{},
+ },
+ res: res{
+ err: zerrors.IsErrorInvalidArgument,
+ },
+ },
+ {
+ name: "unsupported language, error",
+ fields: fields{
+ eventstore: eventstoreExpect(t),
+ },
+ args: args{
+ ctx: authz.WithInstanceID(context.Background(), "INSTANCE"),
+ config: &domain.CustomMessageText{
+ Language: UnsupportedLanguage,
+ },
+ },
+ res: res{
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
diff --git a/internal/command/instance_debug_notification_file.go b/internal/command/instance_debug_notification_file.go
index 830b4e1b63..6bb58a85a3 100644
--- a/internal/command/instance_debug_notification_file.go
+++ b/internal/command/instance_debug_notification_file.go
@@ -4,11 +4,11 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/notification/channels/fs"
iam_repo "github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddDebugNotificationProviderFile(ctx context.Context, fileSystemProvider *fs.Config) (*domain.ObjectDetails, error) {
@@ -35,7 +35,7 @@ func (c *Commands) addDefaultDebugNotificationFile(ctx context.Context, instance
return nil, err
}
if addedWriteModel.State.Exists() {
- return nil, caos_errs.ThrowAlreadyExists(nil, "INSTANCE-d93nfs", "Errors.IAM.DebugNotificationProvider.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "INSTANCE-d93nfs", "Errors.IAM.DebugNotificationProvider.AlreadyExists")
}
events := []eventstore.Command{
@@ -70,7 +70,7 @@ func (c *Commands) changeDefaultDebugNotificationProviderFile(ctx context.Contex
return nil, err
}
if !existingProvider.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "INSTANCE-fm9wl", "Errors.IAM.DebugNotificationProvider.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-fm9wl", "Errors.IAM.DebugNotificationProvider.NotFound")
}
events := make([]eventstore.Command, 0)
changedEvent, hasChanged := existingProvider.NewChangedEvent(ctx,
@@ -80,7 +80,7 @@ func (c *Commands) changeDefaultDebugNotificationProviderFile(ctx context.Contex
events = append(events, changedEvent)
}
if len(events) == 0 {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "INSTANCE-5M9vdd", "Errors.IAM.LoginPolicy.NotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "INSTANCE-5M9vdd", "Errors.IAM.LoginPolicy.NotChanged")
}
return events, nil
@@ -94,7 +94,7 @@ func (c *Commands) RemoveDefaultNotificationFile(ctx context.Context) (*domain.O
return nil, err
}
if !existingProvider.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "INSTANCE-dj9ew", "Errors.IAM.DebugNotificationProvider.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-dj9ew", "Errors.IAM.DebugNotificationProvider.NotFound")
}
events, err := c.eventstore.Push(ctx, iam_repo.NewDebugNotificationProviderFileRemovedEvent(ctx, instanceAgg))
diff --git a/internal/command/instance_debug_notification_file_test.go b/internal/command/instance_debug_notification_file_test.go
index 10c75e193a..73e8b6bc26 100644
--- a/internal/command/instance_debug_notification_file_test.go
+++ b/internal/command/instance_debug_notification_file_test.go
@@ -8,11 +8,11 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/notification/channels/fs"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/settings"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddDefaultDebugNotificationProviderFile(t *testing.T) {
@@ -57,7 +57,7 @@ func TestCommandSide_AddDefaultDebugNotificationProviderFile(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -140,7 +140,7 @@ func TestCommandSide_ChangeDebugNotificationProviderFile(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -166,7 +166,7 @@ func TestCommandSide_ChangeDebugNotificationProviderFile(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -192,7 +192,7 @@ func TestCommandSide_ChangeDebugNotificationProviderFile(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -277,7 +277,7 @@ func TestCommandSide_RemoveDebugNotificationProviderFile(t *testing.T) {
ctx: context.Background(),
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
diff --git a/internal/command/instance_debug_notification_log.go b/internal/command/instance_debug_notification_log.go
index fd4c42cb18..907dfab429 100644
--- a/internal/command/instance_debug_notification_log.go
+++ b/internal/command/instance_debug_notification_log.go
@@ -4,11 +4,11 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/notification/channels/fs"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddDebugNotificationProviderLog(ctx context.Context, fileSystemProvider *fs.Config) (*domain.ObjectDetails, error) {
@@ -35,7 +35,7 @@ func (c *Commands) addDefaultDebugNotificationLog(ctx context.Context, instanceA
return nil, err
}
if addedWriteModel.State.Exists() {
- return nil, caos_errs.ThrowAlreadyExists(nil, "INSTANCE-3h0fs", "Errors.IAM.DebugNotificationProvider.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "INSTANCE-3h0fs", "Errors.IAM.DebugNotificationProvider.AlreadyExists")
}
events := []eventstore.Command{
@@ -70,13 +70,13 @@ func (c *Commands) changeDefaultDebugNotificationProviderLog(ctx context.Context
return nil, err
}
if !existingProvider.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "INSTANCE-2h0s3", "Errors.IAM.DebugNotificationProvider.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-2h0s3", "Errors.IAM.DebugNotificationProvider.NotFound")
}
changedEvent, hasChanged := existingProvider.NewChangedEvent(ctx,
instanceAgg,
fileSystemProvider.Compact)
if !hasChanged {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "INSTANCE-fn9p3", "Errors.IAM.LoginPolicy.NotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "INSTANCE-fn9p3", "Errors.IAM.LoginPolicy.NotChanged")
}
return changedEvent, nil
}
@@ -89,7 +89,7 @@ func (c *Commands) RemoveDefaultNotificationLog(ctx context.Context) (*domain.Ob
return nil, err
}
if !existingProvider.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "INSTANCE-39lse", "Errors.IAM.DebugNotificationProvider.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-39lse", "Errors.IAM.DebugNotificationProvider.NotFound")
}
events, err := c.eventstore.Push(ctx, instance.NewDebugNotificationProviderLogRemovedEvent(ctx, instanceAgg))
diff --git a/internal/command/instance_debug_notification_log_test.go b/internal/command/instance_debug_notification_log_test.go
index cb7031febe..bac9186023 100644
--- a/internal/command/instance_debug_notification_log_test.go
+++ b/internal/command/instance_debug_notification_log_test.go
@@ -8,11 +8,11 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/notification/channels/fs"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/settings"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddDefaultDebugNotificationProviderLog(t *testing.T) {
@@ -58,7 +58,7 @@ func TestCommandSide_AddDefaultDebugNotificationProviderLog(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -169,7 +169,7 @@ func TestCommandSide_ChangeDebugNotificationProviderLog(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -195,7 +195,7 @@ func TestCommandSide_ChangeDebugNotificationProviderLog(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -313,7 +313,7 @@ func TestCommandSide_RemoveDebugNotificationProviderLog(t *testing.T) {
ctx: ctx,
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
diff --git a/internal/command/instance_domain.go b/internal/command/instance_domain.go
index 02ff63d405..d5f6808cfb 100644
--- a/internal/command/instance_domain.go
+++ b/internal/command/instance_domain.go
@@ -9,10 +9,10 @@ import (
"github.com/zitadel/zitadel/internal/api/http"
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/project"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -87,10 +87,10 @@ func (c *Commands) addGeneratedInstanceDomain(ctx context.Context, a *instance.A
func (c *Commands) addInstanceDomain(a *instance.Aggregate, instanceDomain string, generated bool) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if instanceDomain = strings.TrimSpace(instanceDomain); instanceDomain == "" {
- return nil, errors.ThrowInvalidArgument(nil, "INST-28nlD", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-28nlD", "Errors.Invalid.Argument")
}
if !allowDomainRunes.MatchString(instanceDomain) {
- return nil, errors.ThrowInvalidArgument(nil, "INST-S3v3w", "Errors.Instance.Domain.InvalidCharacter")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-S3v3w", "Errors.Instance.Domain.InvalidCharacter")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
domainWriteModel, err := getInstanceDomainWriteModel(ctx, filter, instanceDomain)
@@ -98,7 +98,7 @@ func (c *Commands) addInstanceDomain(a *instance.Aggregate, instanceDomain strin
return nil, err
}
if domainWriteModel.State == domain.InstanceDomainStateActive {
- return nil, errors.ThrowAlreadyExists(nil, "INST-i2nl", "Errors.Instance.Domain.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "INST-i2nl", "Errors.Instance.Domain.AlreadyExists")
}
events := []eventstore.Command{
instance.NewDomainAddedEvent(ctx, &a.Aggregate, instanceDomain, generated),
@@ -118,7 +118,7 @@ func (c *Commands) addInstanceDomain(a *instance.Aggregate, instanceDomain strin
func (c *Commands) prepareUpdateConsoleRedirectURIs(instanceDomain string) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if instanceDomain = strings.TrimSpace(instanceDomain); instanceDomain == "" {
- return nil, errors.ThrowInvalidArgument(nil, "INST-E3j3s", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-E3j3s", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
consoleChangeEvent, err := c.updateConsoleRedirectURIs(ctx, filter, instanceDomain)
@@ -166,7 +166,7 @@ func (c *Commands) updateConsoleRedirectURIs(ctx context.Context, filter prepara
func setPrimaryInstanceDomain(a *instance.Aggregate, instanceDomain string) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if instanceDomain = strings.TrimSpace(instanceDomain); instanceDomain == "" {
- return nil, errors.ThrowInvalidArgument(nil, "INST-9mWjf", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-9mWjf", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
domainWriteModel, err := getInstanceDomainWriteModel(ctx, filter, instanceDomain)
@@ -174,7 +174,7 @@ func setPrimaryInstanceDomain(a *instance.Aggregate, instanceDomain string) prep
return nil, err
}
if !domainWriteModel.State.Exists() {
- return nil, errors.ThrowNotFound(nil, "INSTANCE-9nkWf", "Errors.Instance.Domain.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-9nkWf", "Errors.Instance.Domain.NotFound")
}
return []eventstore.Command{instance.NewDomainPrimarySetEvent(ctx, &a.Aggregate, instanceDomain)}, nil
}, nil
@@ -184,7 +184,7 @@ func setPrimaryInstanceDomain(a *instance.Aggregate, instanceDomain string) prep
func removeInstanceDomain(a *instance.Aggregate, instanceDomain string) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if instanceDomain = strings.TrimSpace(instanceDomain); instanceDomain == "" {
- return nil, errors.ThrowInvalidArgument(nil, "INST-39nls", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-39nls", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
domainWriteModel, err := getInstanceDomainWriteModel(ctx, filter, instanceDomain)
@@ -192,10 +192,10 @@ func removeInstanceDomain(a *instance.Aggregate, instanceDomain string) preparat
return nil, err
}
if domainWriteModel.State != domain.InstanceDomainStateActive {
- return nil, errors.ThrowNotFound(nil, "INSTANCE-8ls9f", "Errors.Instance.Domain.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-8ls9f", "Errors.Instance.Domain.NotFound")
}
if domainWriteModel.Generated {
- return nil, errors.ThrowPreconditionFailed(nil, "INSTANCE-9hn3n", "Errors.Instance.Domain.GeneratedNotRemovable")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "INSTANCE-9hn3n", "Errors.Instance.Domain.GeneratedNotRemovable")
}
return []eventstore.Command{instance.NewDomainRemovedEvent(ctx, &a.Aggregate, instanceDomain)}, nil
}, nil
diff --git a/internal/command/instance_domain_test.go b/internal/command/instance_domain_test.go
index abeab0f3b4..97129ec4ee 100644
--- a/internal/command/instance_domain_test.go
+++ b/internal/command/instance_domain_test.go
@@ -10,10 +10,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/project"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddInstanceDomain(t *testing.T) {
@@ -47,7 +47,7 @@ func TestCommandSide_AddInstanceDomain(t *testing.T) {
domain: "",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -62,7 +62,7 @@ func TestCommandSide_AddInstanceDomain(t *testing.T) {
domain: "hodor's-org.localhost",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -77,7 +77,7 @@ func TestCommandSide_AddInstanceDomain(t *testing.T) {
domain: "bücher.ch",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -92,7 +92,7 @@ func TestCommandSide_AddInstanceDomain(t *testing.T) {
domain: "🦒.ch",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -116,7 +116,7 @@ func TestCommandSide_AddInstanceDomain(t *testing.T) {
domain: "domain.ch",
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -239,7 +239,7 @@ func TestCommandSide_SetPrimaryInstanceDomain(t *testing.T) {
domain: "",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -255,7 +255,7 @@ func TestCommandSide_SetPrimaryInstanceDomain(t *testing.T) {
domain: "domain.ch",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -341,7 +341,7 @@ func TestCommandSide_RemoveInstanceDomain(t *testing.T) {
domain: "",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -357,7 +357,7 @@ func TestCommandSide_RemoveInstanceDomain(t *testing.T) {
domain: "domain.ch",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -414,7 +414,7 @@ func TestCommandSide_RemoveInstanceDomain(t *testing.T) {
domain: "domain.ch",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
}
diff --git a/internal/command/instance_feature.go b/internal/command/instance_feature.go
index 6aee52c09b..4ee36b94c2 100644
--- a/internal/command/instance_feature.go
+++ b/internal/command/instance_feature.go
@@ -6,10 +6,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/id"
"github.com/zitadel/zitadel/internal/repository/feature"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) SetBooleanInstanceFeature(ctx context.Context, f domain.Feature, value bool) (*domain.ObjectDetails, error) {
@@ -36,7 +36,7 @@ func (c *Commands) SetBooleanInstanceFeature(ctx context.Context, f domain.Featu
func prepareSetFeature[T feature.SetEventType](writeModel *InstanceFeatureWriteModel[T], value T, idGenerator id.Generator) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if !writeModel.feature.IsAFeature() || writeModel.feature == domain.FeatureUnspecified {
- return nil, errors.ThrowPreconditionFailed(nil, "FEAT-JK3td", "Errors.Feature.NotExisting")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "FEAT-JK3td", "Errors.Feature.NotExisting")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
diff --git a/internal/command/instance_feature_model.go b/internal/command/instance_feature_model.go
index 1389735ca5..5014b1c76a 100644
--- a/internal/command/instance_feature_model.go
+++ b/internal/command/instance_feature_model.go
@@ -4,9 +4,9 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/feature"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type FeatureWriteModel[T feature.SetEventType] struct {
@@ -26,7 +26,7 @@ func NewFeatureWriteModel[T feature.SetEventType](instanceID, resourceOwner stri
feature: feature,
}
if wm.Value.FeatureType() != feature.Type() {
- return nil, errors.ThrowPreconditionFailed(nil, "FEAT-AS4k1", "Errors.Feature.InvalidValue")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "FEAT-AS4k1", "Errors.Feature.InvalidValue")
}
return wm, nil
}
@@ -56,7 +56,7 @@ func (wm *FeatureWriteModel[T]) Reduce() error {
case *feature.SetEvent[T]:
wm.Value = e.Value
default:
- return errors.ThrowPreconditionFailed(nil, "FEAT-SDfjk", "Errors.Feature.TypeNotSupported")
+ return zerrors.ThrowPreconditionFailed(nil, "FEAT-SDfjk", "Errors.Feature.TypeNotSupported")
}
}
return wm.WriteModel.Reduce()
diff --git a/internal/command/instance_feature_test.go b/internal/command/instance_feature_test.go
index 31ccb58886..56933b9003 100644
--- a/internal/command/instance_feature_test.go
+++ b/internal/command/instance_feature_test.go
@@ -8,12 +8,12 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/id"
"github.com/zitadel/zitadel/internal/id/mock"
"github.com/zitadel/zitadel/internal/repository/feature"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommands_SetBooleanInstanceFeature(t *testing.T) {
@@ -47,7 +47,7 @@ func TestCommands_SetBooleanInstanceFeature(t *testing.T) {
value: true,
},
res{
- err: errors.ThrowPreconditionFailed(nil, "FEAT-AS4k1", "Errors.Feature.InvalidValue"),
+ err: zerrors.ThrowPreconditionFailed(nil, "FEAT-AS4k1", "Errors.Feature.InvalidValue"),
},
},
{
@@ -71,7 +71,7 @@ func TestCommands_SetBooleanInstanceFeature(t *testing.T) {
value: true,
},
res{
- err: errors.ThrowPreconditionFailed(nil, "FEAT-SDfjk", "Errors.Feature.TypeNotSupported"),
+ err: zerrors.ThrowPreconditionFailed(nil, "FEAT-SDfjk", "Errors.Feature.TypeNotSupported"),
},
},
{
diff --git a/internal/command/instance_idp.go b/internal/command/instance_idp.go
index 31b284f8c5..ed8d458e18 100644
--- a/internal/command/instance_idp.go
+++ b/internal/command/instance_idp.go
@@ -10,9 +10,9 @@ import (
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddInstanceGenericOAuthProvider(ctx context.Context, provider GenericOAuthProvider) (string, *domain.ObjectDetails, error) {
@@ -119,7 +119,7 @@ func (c *Commands) migrateInstanceGenericOIDC(ctx context.Context, id string, pr
case GoogleProvider:
validation = c.prepareMigrateInstanceOIDCToGoogleProvider(instanceAgg, writeModel, p)
default:
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-s9219", "Errors.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-s9219", "Errors.IDPConfig.NotExisting")
}
cmds, err := preparation.PrepareCommands(ctx, c.eventstore.Filter, validation)
@@ -609,25 +609,25 @@ func ExistsInstanceIDP(ctx context.Context, filter preparation.FilterToQueryRedu
func (c *Commands) prepareAddInstanceOAuthProvider(a *instance.Aggregate, writeModel *InstanceOAuthIDPWriteModel, provider GenericOAuthProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-D32ef", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-D32ef", "Errors.Invalid.Argument")
}
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-Dbgzf", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-Dbgzf", "Errors.Invalid.Argument")
}
if provider.ClientSecret = strings.TrimSpace(provider.ClientSecret); provider.ClientSecret == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-DF4ga", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-DF4ga", "Errors.Invalid.Argument")
}
if provider.AuthorizationEndpoint = strings.TrimSpace(provider.AuthorizationEndpoint); provider.AuthorizationEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-B23bs", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-B23bs", "Errors.Invalid.Argument")
}
if provider.TokenEndpoint = strings.TrimSpace(provider.TokenEndpoint); provider.TokenEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-D2gj8", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-D2gj8", "Errors.Invalid.Argument")
}
if provider.UserEndpoint = strings.TrimSpace(provider.UserEndpoint); provider.UserEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-Fb8jk", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-Fb8jk", "Errors.Invalid.Argument")
}
if provider.IDAttribute = strings.TrimSpace(provider.IDAttribute); provider.IDAttribute == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-sdf3f", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-sdf3f", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -665,25 +665,25 @@ func (c *Commands) prepareAddInstanceOAuthProvider(a *instance.Aggregate, writeM
func (c *Commands) prepareUpdateInstanceOAuthProvider(a *instance.Aggregate, writeModel *InstanceOAuthIDPWriteModel, provider GenericOAuthProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if writeModel.ID = strings.TrimSpace(writeModel.ID); writeModel.ID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-SAffg", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-SAffg", "Errors.Invalid.Argument")
}
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-Sf3gh", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-Sf3gh", "Errors.Invalid.Argument")
}
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-SHJ3ui", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-SHJ3ui", "Errors.Invalid.Argument")
}
if provider.AuthorizationEndpoint = strings.TrimSpace(provider.AuthorizationEndpoint); provider.AuthorizationEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-SVrgh", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-SVrgh", "Errors.Invalid.Argument")
}
if provider.TokenEndpoint = strings.TrimSpace(provider.TokenEndpoint); provider.TokenEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-DJKeio", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-DJKeio", "Errors.Invalid.Argument")
}
if provider.UserEndpoint = strings.TrimSpace(provider.UserEndpoint); provider.UserEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-ILSJi", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-ILSJi", "Errors.Invalid.Argument")
}
if provider.IDAttribute = strings.TrimSpace(provider.IDAttribute); provider.IDAttribute == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-JKD3h", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-JKD3h", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -695,7 +695,7 @@ func (c *Commands) prepareUpdateInstanceOAuthProvider(a *instance.Aggregate, wri
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "INST-D3r1s", "Errors.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "INST-D3r1s", "Errors.IDPConfig.NotExisting")
}
event, err := writeModel.NewChangedEvent(
ctx,
@@ -723,16 +723,16 @@ func (c *Commands) prepareUpdateInstanceOAuthProvider(a *instance.Aggregate, wri
func (c *Commands) prepareAddInstanceOIDCProvider(a *instance.Aggregate, writeModel *InstanceOIDCIDPWriteModel, provider GenericOIDCProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-Sgtj5", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-Sgtj5", "Errors.Invalid.Argument")
}
if provider.Issuer = strings.TrimSpace(provider.Issuer); provider.Issuer == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-Hz6zj", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-Hz6zj", "Errors.Invalid.Argument")
}
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-fb5jm", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-fb5jm", "Errors.Invalid.Argument")
}
if provider.ClientSecret = strings.TrimSpace(provider.ClientSecret); provider.ClientSecret == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-Sfdf4", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-Sfdf4", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -768,16 +768,16 @@ func (c *Commands) prepareAddInstanceOIDCProvider(a *instance.Aggregate, writeMo
func (c *Commands) prepareUpdateInstanceOIDCProvider(a *instance.Aggregate, writeModel *InstanceOIDCIDPWriteModel, provider GenericOIDCProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if writeModel.ID = strings.TrimSpace(writeModel.ID); writeModel.ID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-SAfd3", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-SAfd3", "Errors.Invalid.Argument")
}
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-Dvf4f", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-Dvf4f", "Errors.Invalid.Argument")
}
if provider.Issuer = strings.TrimSpace(provider.Issuer); provider.Issuer == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-BDfr3", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-BDfr3", "Errors.Invalid.Argument")
}
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-Db3bs", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-Db3bs", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -789,7 +789,7 @@ func (c *Commands) prepareUpdateInstanceOIDCProvider(a *instance.Aggregate, writ
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "INST-Dg331", "Errors.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "INST-Dg331", "Errors.IDPConfig.NotExisting")
}
event, err := writeModel.NewChangedEvent(
ctx,
@@ -815,13 +815,13 @@ func (c *Commands) prepareUpdateInstanceOIDCProvider(a *instance.Aggregate, writ
func (c *Commands) prepareMigrateInstanceOIDCToAzureADProvider(a *instance.Aggregate, writeModel *InstanceOIDCIDPWriteModel, provider AzureADProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-sdf3g", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-sdf3g", "Errors.Invalid.Argument")
}
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-Fhbr2", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-Fhbr2", "Errors.Invalid.Argument")
}
if provider.ClientSecret = strings.TrimSpace(provider.ClientSecret); provider.ClientSecret == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-Dzh3g", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-Dzh3g", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -833,7 +833,7 @@ func (c *Commands) prepareMigrateInstanceOIDCToAzureADProvider(a *instance.Aggre
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "INST-Dg29201", "Errors.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "INST-Dg29201", "Errors.IDPConfig.NotExisting")
}
secret, err := crypto.Encrypt([]byte(provider.ClientSecret), c.idpConfigEncryption)
if err != nil {
@@ -860,10 +860,10 @@ func (c *Commands) prepareMigrateInstanceOIDCToAzureADProvider(a *instance.Aggre
func (c *Commands) prepareMigrateInstanceOIDCToGoogleProvider(a *instance.Aggregate, writeModel *InstanceOIDCIDPWriteModel, provider GoogleProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-D3fvs", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-D3fvs", "Errors.Invalid.Argument")
}
if provider.ClientSecret = strings.TrimSpace(provider.ClientSecret); provider.ClientSecret == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-W2vqs", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-W2vqs", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -875,7 +875,7 @@ func (c *Commands) prepareMigrateInstanceOIDCToGoogleProvider(a *instance.Aggreg
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "INST-Dg29202", "Errors.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "INST-Dg29202", "Errors.IDPConfig.NotExisting")
}
secret, err := crypto.Encrypt([]byte(provider.ClientSecret), c.idpConfigEncryption)
if err != nil {
@@ -900,19 +900,19 @@ func (c *Commands) prepareMigrateInstanceOIDCToGoogleProvider(a *instance.Aggreg
func (c *Commands) prepareAddInstanceJWTProvider(a *instance.Aggregate, writeModel *InstanceJWTIDPWriteModel, provider JWTProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-JLKef", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-JLKef", "Errors.Invalid.Argument")
}
if provider.Issuer = strings.TrimSpace(provider.Issuer); provider.Issuer == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-WNJK3", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-WNJK3", "Errors.Invalid.Argument")
}
if provider.JWTEndpoint = strings.TrimSpace(provider.JWTEndpoint); provider.JWTEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-NJKSD", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-NJKSD", "Errors.Invalid.Argument")
}
if provider.KeyEndpoint = strings.TrimSpace(provider.KeyEndpoint); provider.KeyEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-NJKE3", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-NJKE3", "Errors.Invalid.Argument")
}
if provider.HeaderName = strings.TrimSpace(provider.HeaderName); provider.HeaderName == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-2rlks", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-2rlks", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -943,22 +943,22 @@ func (c *Commands) prepareAddInstanceJWTProvider(a *instance.Aggregate, writeMod
func (c *Commands) prepareUpdateInstanceJWTProvider(a *instance.Aggregate, writeModel *InstanceJWTIDPWriteModel, provider JWTProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if writeModel.ID = strings.TrimSpace(writeModel.ID); writeModel.ID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-HUe3q", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-HUe3q", "Errors.Invalid.Argument")
}
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-JKLS2", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-JKLS2", "Errors.Invalid.Argument")
}
if provider.Issuer = strings.TrimSpace(provider.Issuer); provider.Issuer == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-JKs3f", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-JKs3f", "Errors.Invalid.Argument")
}
if provider.JWTEndpoint = strings.TrimSpace(provider.JWTEndpoint); provider.JWTEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-NJKS2", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-NJKS2", "Errors.Invalid.Argument")
}
if provider.KeyEndpoint = strings.TrimSpace(provider.KeyEndpoint); provider.KeyEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-SJk2d", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-SJk2d", "Errors.Invalid.Argument")
}
if provider.HeaderName = strings.TrimSpace(provider.HeaderName); provider.HeaderName == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-SJK2f", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-SJK2f", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -970,7 +970,7 @@ func (c *Commands) prepareUpdateInstanceJWTProvider(a *instance.Aggregate, write
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "INST-Bhju5", "Errors.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "INST-Bhju5", "Errors.IDPConfig.NotExisting")
}
event, err := writeModel.NewChangedEvent(
ctx,
@@ -994,13 +994,13 @@ func (c *Commands) prepareUpdateInstanceJWTProvider(a *instance.Aggregate, write
func (c *Commands) prepareAddInstanceAzureADProvider(a *instance.Aggregate, writeModel *InstanceAzureADIDPWriteModel, provider AzureADProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-sdf3g", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-sdf3g", "Errors.Invalid.Argument")
}
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-Fhbr2", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-Fhbr2", "Errors.Invalid.Argument")
}
if provider.ClientSecret = strings.TrimSpace(provider.ClientSecret); provider.ClientSecret == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-Dzh3g", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-Dzh3g", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1036,13 +1036,13 @@ func (c *Commands) prepareAddInstanceAzureADProvider(a *instance.Aggregate, writ
func (c *Commands) prepareUpdateInstanceAzureADProvider(a *instance.Aggregate, writeModel *InstanceAzureADIDPWriteModel, provider AzureADProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if writeModel.ID = strings.TrimSpace(writeModel.ID); writeModel.ID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-SAgh2", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-SAgh2", "Errors.Invalid.Argument")
}
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-fh3h1", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-fh3h1", "Errors.Invalid.Argument")
}
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-dmitg", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-dmitg", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1054,7 +1054,7 @@ func (c *Commands) prepareUpdateInstanceAzureADProvider(a *instance.Aggregate, w
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "INST-BHz3q", "Errors.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "INST-BHz3q", "Errors.IDPConfig.NotExisting")
}
event, err := writeModel.NewChangedEvent(
ctx,
@@ -1080,10 +1080,10 @@ func (c *Commands) prepareUpdateInstanceAzureADProvider(a *instance.Aggregate, w
func (c *Commands) prepareAddInstanceGitHubProvider(a *instance.Aggregate, writeModel *InstanceGitHubIDPWriteModel, provider GitHubProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-Jdsgf", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-Jdsgf", "Errors.Invalid.Argument")
}
if provider.ClientSecret = strings.TrimSpace(provider.ClientSecret); provider.ClientSecret == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-dsgz3", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-dsgz3", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1117,10 +1117,10 @@ func (c *Commands) prepareAddInstanceGitHubProvider(a *instance.Aggregate, write
func (c *Commands) prepareUpdateInstanceGitHubProvider(a *instance.Aggregate, writeModel *InstanceGitHubIDPWriteModel, provider GitHubProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if writeModel.ID = strings.TrimSpace(writeModel.ID); writeModel.ID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-sdf4h", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-sdf4h", "Errors.Invalid.Argument")
}
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-fdh5z", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-fdh5z", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1132,7 +1132,7 @@ func (c *Commands) prepareUpdateInstanceGitHubProvider(a *instance.Aggregate, wr
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "INST-Dr1gs", "Errors.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "INST-Dr1gs", "Errors.IDPConfig.NotExisting")
}
event, err := writeModel.NewChangedEvent(
ctx,
@@ -1156,22 +1156,22 @@ func (c *Commands) prepareUpdateInstanceGitHubProvider(a *instance.Aggregate, wr
func (c *Commands) prepareAddInstanceGitHubEnterpriseProvider(a *instance.Aggregate, writeModel *InstanceGitHubEnterpriseIDPWriteModel, provider GitHubEnterpriseProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-Dg4td", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-Dg4td", "Errors.Invalid.Argument")
}
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-dgj53", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-dgj53", "Errors.Invalid.Argument")
}
if provider.ClientSecret = strings.TrimSpace(provider.ClientSecret); provider.ClientSecret == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-Ghjjs", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-Ghjjs", "Errors.Invalid.Argument")
}
if provider.AuthorizationEndpoint = strings.TrimSpace(provider.AuthorizationEndpoint); provider.AuthorizationEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-sani2", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-sani2", "Errors.Invalid.Argument")
}
if provider.TokenEndpoint = strings.TrimSpace(provider.TokenEndpoint); provider.TokenEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-agj42", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-agj42", "Errors.Invalid.Argument")
}
if provider.UserEndpoint = strings.TrimSpace(provider.UserEndpoint); provider.UserEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-sd5hn", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-sd5hn", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1208,22 +1208,22 @@ func (c *Commands) prepareAddInstanceGitHubEnterpriseProvider(a *instance.Aggreg
func (c *Commands) prepareUpdateInstanceGitHubEnterpriseProvider(a *instance.Aggregate, writeModel *InstanceGitHubEnterpriseIDPWriteModel, provider GitHubEnterpriseProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if writeModel.ID = strings.TrimSpace(writeModel.ID); writeModel.ID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-sdfh3", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-sdfh3", "Errors.Invalid.Argument")
}
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-shj42", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-shj42", "Errors.Invalid.Argument")
}
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-sdh73", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-sdh73", "Errors.Invalid.Argument")
}
if provider.AuthorizationEndpoint = strings.TrimSpace(provider.AuthorizationEndpoint); provider.AuthorizationEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-acx2w", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-acx2w", "Errors.Invalid.Argument")
}
if provider.TokenEndpoint = strings.TrimSpace(provider.TokenEndpoint); provider.TokenEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-dgj6q", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-dgj6q", "Errors.Invalid.Argument")
}
if provider.UserEndpoint = strings.TrimSpace(provider.UserEndpoint); provider.UserEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-ybj62", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-ybj62", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1235,7 +1235,7 @@ func (c *Commands) prepareUpdateInstanceGitHubEnterpriseProvider(a *instance.Agg
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "INST-GBr42", "Errors.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "INST-GBr42", "Errors.IDPConfig.NotExisting")
}
event, err := writeModel.NewChangedEvent(
ctx,
@@ -1262,10 +1262,10 @@ func (c *Commands) prepareUpdateInstanceGitHubEnterpriseProvider(a *instance.Agg
func (c *Commands) prepareAddInstanceGitLabProvider(a *instance.Aggregate, writeModel *InstanceGitLabIDPWriteModel, provider GitLabProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-adsg2", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-adsg2", "Errors.Invalid.Argument")
}
if provider.ClientSecret = strings.TrimSpace(provider.ClientSecret); provider.ClientSecret == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-GD1j2", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-GD1j2", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1299,10 +1299,10 @@ func (c *Commands) prepareAddInstanceGitLabProvider(a *instance.Aggregate, write
func (c *Commands) prepareUpdateInstanceGitLabProvider(a *instance.Aggregate, writeModel *InstanceGitLabIDPWriteModel, provider GitLabProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if writeModel.ID = strings.TrimSpace(writeModel.ID); writeModel.ID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-HJK91", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-HJK91", "Errors.Invalid.Argument")
}
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-D12t6", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-D12t6", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1314,7 +1314,7 @@ func (c *Commands) prepareUpdateInstanceGitLabProvider(a *instance.Aggregate, wr
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "INST-HBReq", "Errors.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "INST-HBReq", "Errors.IDPConfig.NotExisting")
}
event, err := writeModel.NewChangedEvent(
ctx,
@@ -1338,16 +1338,16 @@ func (c *Commands) prepareUpdateInstanceGitLabProvider(a *instance.Aggregate, wr
func (c *Commands) prepareAddInstanceGitLabSelfHostedProvider(a *instance.Aggregate, writeModel *InstanceGitLabSelfHostedIDPWriteModel, provider GitLabSelfHostedProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-jw4ZT", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-jw4ZT", "Errors.Invalid.Argument")
}
if provider.Issuer = strings.TrimSpace(provider.Issuer); provider.Issuer == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-AST4S", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-AST4S", "Errors.Invalid.Argument")
}
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-DBZHJ", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-DBZHJ", "Errors.Invalid.Argument")
}
if provider.ClientSecret = strings.TrimSpace(provider.ClientSecret); provider.ClientSecret == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-SDGJ4", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-SDGJ4", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1382,16 +1382,16 @@ func (c *Commands) prepareAddInstanceGitLabSelfHostedProvider(a *instance.Aggreg
func (c *Commands) prepareUpdateInstanceGitLabSelfHostedProvider(a *instance.Aggregate, writeModel *InstanceGitLabSelfHostedIDPWriteModel, provider GitLabSelfHostedProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if writeModel.ID = strings.TrimSpace(writeModel.ID); writeModel.ID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-SAFG4", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-SAFG4", "Errors.Invalid.Argument")
}
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-DG4H", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-DG4H", "Errors.Invalid.Argument")
}
if provider.Issuer = strings.TrimSpace(provider.Issuer); provider.Issuer == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-SD4eb", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-SD4eb", "Errors.Invalid.Argument")
}
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-GHWE3", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-GHWE3", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1403,7 +1403,7 @@ func (c *Commands) prepareUpdateInstanceGitLabSelfHostedProvider(a *instance.Agg
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "INST-D2tg1", "Errors.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "INST-D2tg1", "Errors.IDPConfig.NotExisting")
}
event, err := writeModel.NewChangedEvent(
ctx,
@@ -1428,10 +1428,10 @@ func (c *Commands) prepareUpdateInstanceGitLabSelfHostedProvider(a *instance.Agg
func (c *Commands) prepareAddInstanceGoogleProvider(a *instance.Aggregate, writeModel *InstanceGoogleIDPWriteModel, provider GoogleProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-D3fvs", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-D3fvs", "Errors.Invalid.Argument")
}
if provider.ClientSecret = strings.TrimSpace(provider.ClientSecret); provider.ClientSecret == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-W2vqs", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-W2vqs", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1465,10 +1465,10 @@ func (c *Commands) prepareAddInstanceGoogleProvider(a *instance.Aggregate, write
func (c *Commands) prepareUpdateInstanceGoogleProvider(a *instance.Aggregate, writeModel *InstanceGoogleIDPWriteModel, provider GoogleProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if writeModel.ID = strings.TrimSpace(writeModel.ID); writeModel.ID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-S32t1", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-S32t1", "Errors.Invalid.Argument")
}
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-ds432", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-ds432", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1480,7 +1480,7 @@ func (c *Commands) prepareUpdateInstanceGoogleProvider(a *instance.Aggregate, wr
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "INST-D3r1s", "Errors.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "INST-D3r1s", "Errors.IDPConfig.NotExisting")
}
event, err := writeModel.NewChangedEvent(
ctx,
@@ -1504,28 +1504,28 @@ func (c *Commands) prepareUpdateInstanceGoogleProvider(a *instance.Aggregate, wr
func (c *Commands) prepareAddInstanceLDAPProvider(a *instance.Aggregate, writeModel *InstanceLDAPIDPWriteModel, provider LDAPProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-SAfdd", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-SAfdd", "Errors.Invalid.Argument")
}
if provider.BaseDN = strings.TrimSpace(provider.BaseDN); provider.BaseDN == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-sv31s", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-sv31s", "Errors.Invalid.Argument")
}
if provider.BindDN = strings.TrimSpace(provider.BindDN); provider.BindDN == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-sdgf4", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-sdgf4", "Errors.Invalid.Argument")
}
if provider.BindPassword = strings.TrimSpace(provider.BindPassword); provider.BindPassword == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-AEG2w", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-AEG2w", "Errors.Invalid.Argument")
}
if provider.UserBase = strings.TrimSpace(provider.UserBase); provider.UserBase == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-SAD5n", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-SAD5n", "Errors.Invalid.Argument")
}
if len(provider.Servers) == 0 {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-SAx905n", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-SAx905n", "Errors.Invalid.Argument")
}
if len(provider.UserObjectClasses) == 0 {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-S1x905n", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-S1x905n", "Errors.Invalid.Argument")
}
if len(provider.UserFilters) == 0 {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-aAx905n", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-aAx905n", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1566,28 +1566,28 @@ func (c *Commands) prepareAddInstanceLDAPProvider(a *instance.Aggregate, writeMo
func (c *Commands) prepareUpdateInstanceLDAPProvider(a *instance.Aggregate, writeModel *InstanceLDAPIDPWriteModel, provider LDAPProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if writeModel.ID = strings.TrimSpace(writeModel.ID); writeModel.ID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-Dgdbs", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-Dgdbs", "Errors.Invalid.Argument")
}
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-Sffgd", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-Sffgd", "Errors.Invalid.Argument")
}
if provider.BaseDN = strings.TrimSpace(provider.BaseDN); provider.BaseDN == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-vb3ss", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-vb3ss", "Errors.Invalid.Argument")
}
if provider.BindDN = strings.TrimSpace(provider.BindDN); provider.BindDN == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-hbere", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-hbere", "Errors.Invalid.Argument")
}
if provider.UserBase = strings.TrimSpace(provider.UserBase); provider.UserBase == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-DG45z", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-DG45z", "Errors.Invalid.Argument")
}
if len(provider.Servers) == 0 {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-SAx945n", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-SAx945n", "Errors.Invalid.Argument")
}
if len(provider.UserObjectClasses) == 0 {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-S1x605n", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-S1x605n", "Errors.Invalid.Argument")
}
if len(provider.UserFilters) == 0 {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-aAx901n", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-aAx901n", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1599,7 +1599,7 @@ func (c *Commands) prepareUpdateInstanceLDAPProvider(a *instance.Aggregate, writ
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "INST-ASF3F", "Errors.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "INST-ASF3F", "Errors.IDPConfig.NotExisting")
}
event, err := writeModel.NewChangedEvent(
ctx,
@@ -1630,16 +1630,16 @@ func (c *Commands) prepareUpdateInstanceLDAPProvider(a *instance.Aggregate, writ
func (c *Commands) prepareAddInstanceAppleProvider(a *instance.Aggregate, writeModel *InstanceAppleIDPWriteModel, provider AppleProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-jkn3w", "Errors.IDP.ClientIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-jkn3w", "Errors.IDP.ClientIDMissing")
}
if provider.TeamID = strings.TrimSpace(provider.TeamID); provider.TeamID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-Ffg32", "Errors.IDP.TeamIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-Ffg32", "Errors.IDP.TeamIDMissing")
}
if provider.KeyID = strings.TrimSpace(provider.KeyID); provider.KeyID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-GDjm5", "Errors.IDP.KeyIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-GDjm5", "Errors.IDP.KeyIDMissing")
}
if len(provider.PrivateKey) == 0 {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-GVD4n", "Errors.IDP.PrivateKeyMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-GVD4n", "Errors.IDP.PrivateKeyMissing")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1675,16 +1675,16 @@ func (c *Commands) prepareAddInstanceAppleProvider(a *instance.Aggregate, writeM
func (c *Commands) prepareUpdateInstanceAppleProvider(a *instance.Aggregate, writeModel *InstanceAppleIDPWriteModel, provider AppleProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if writeModel.ID = strings.TrimSpace(writeModel.ID); writeModel.ID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-FRHBH", "Errors.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-FRHBH", "Errors.IDMissing")
}
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-SFm4l", "Errors.IDP.ClientIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-SFm4l", "Errors.IDP.ClientIDMissing")
}
if provider.TeamID = strings.TrimSpace(provider.TeamID); provider.TeamID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-SG34t", "Errors.IDP.TeamIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-SG34t", "Errors.IDP.TeamIDMissing")
}
if provider.KeyID = strings.TrimSpace(provider.KeyID); provider.KeyID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-Gh4z2", "Errors.IDP.KeyIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-Gh4z2", "Errors.IDP.KeyIDMissing")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1696,7 +1696,7 @@ func (c *Commands) prepareUpdateInstanceAppleProvider(a *instance.Aggregate, wri
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "INST-SG3bh", "Errors.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "INST-SG3bh", "Errors.IDPConfig.NotExisting")
}
event, err := writeModel.NewChangedEvent(
ctx,
@@ -1722,17 +1722,17 @@ func (c *Commands) prepareUpdateInstanceAppleProvider(a *instance.Aggregate, wri
func (c *Commands) prepareAddInstanceSAMLProvider(a *instance.Aggregate, writeModel *InstanceSAMLIDPWriteModel, provider SAMLProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-o07zjotgnd", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-o07zjotgnd", "Errors.Invalid.Argument")
}
if provider.Metadata == nil && provider.MetadataURL != "" {
data, err := xml.ReadMetadataFromURL(c.httpClient, provider.MetadataURL)
if err != nil {
- return nil, caos_errs.ThrowInvalidArgument(err, "INST-8vam1khq22", "Errors.Project.App.SAMLMetadataMissing")
+ return nil, zerrors.ThrowInvalidArgument(err, "INST-8vam1khq22", "Errors.Project.App.SAMLMetadataMissing")
}
provider.Metadata = data
}
if provider.Metadata == nil {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-3bi3esi16t", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-3bi3esi16t", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1773,18 +1773,18 @@ func (c *Commands) prepareAddInstanceSAMLProvider(a *instance.Aggregate, writeMo
func (c *Commands) prepareUpdateInstanceSAMLProvider(a *instance.Aggregate, writeModel *InstanceSAMLIDPWriteModel, provider SAMLProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if writeModel.ID = strings.TrimSpace(writeModel.ID); writeModel.ID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-7o3rq1owpm", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-7o3rq1owpm", "Errors.Invalid.Argument")
}
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-q2s9rak7o9", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-q2s9rak7o9", "Errors.Invalid.Argument")
}
if provider.Metadata == nil && provider.MetadataURL == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-iw1rxnf4sf", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-iw1rxnf4sf", "Errors.Invalid.Argument")
}
if provider.Metadata == nil && provider.MetadataURL != "" {
data, err := xml.ReadMetadataFromURL(c.httpClient, provider.MetadataURL)
if err != nil {
- return nil, caos_errs.ThrowInvalidArgument(err, "INST-iijz4h01if", "Errors.Project.App.SAMLMetadataMissing")
+ return nil, zerrors.ThrowInvalidArgument(err, "INST-iijz4h01if", "Errors.Project.App.SAMLMetadataMissing")
}
provider.Metadata = data
}
@@ -1798,7 +1798,7 @@ func (c *Commands) prepareUpdateInstanceSAMLProvider(a *instance.Aggregate, writ
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "INST-D3r1s", "Errors.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "INST-D3r1s", "Errors.IDPConfig.NotExisting")
}
event, err := writeModel.NewChangedEvent(
ctx,
@@ -1824,7 +1824,7 @@ func (c *Commands) prepareUpdateInstanceSAMLProvider(a *instance.Aggregate, writ
func (c *Commands) prepareRegenerateInstanceSAMLProviderCertificate(a *instance.Aggregate, writeModel *InstanceSAMLIDPWriteModel) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if writeModel.ID = strings.TrimSpace(writeModel.ID); writeModel.ID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INST-7de108gqya", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-7de108gqya", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1836,7 +1836,7 @@ func (c *Commands) prepareRegenerateInstanceSAMLProviderCertificate(a *instance.
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "INST-76dbwsv9vm", "Errors.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "INST-76dbwsv9vm", "Errors.IDPConfig.NotExisting")
}
key, cert, err := c.samlCertificateAndKeyGenerator(writeModel.ID)
@@ -1877,7 +1877,7 @@ func (c *Commands) prepareDeleteInstanceProvider(a *instance.Aggregate, id strin
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "INST-Se3tg", "Errors.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "INST-Se3tg", "Errors.IDPConfig.NotExisting")
}
return []eventstore.Command{instance.NewIDPRemovedEvent(ctx, &a.Aggregate, id)}, nil
}, nil
diff --git a/internal/command/instance_idp_config.go b/internal/command/instance_idp_config.go
index 69ee99168e..31a302ff66 100644
--- a/internal/command/instance_idp_config.go
+++ b/internal/command/instance_idp_config.go
@@ -6,15 +6,15 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddDefaultIDPConfig(ctx context.Context, config *domain.IDPConfig) (*domain.IDPConfig, error) {
if config.OIDCConfig == nil && config.JWTConfig == nil {
- return nil, errors.ThrowInvalidArgument(nil, "IDP-s8nn3", "Errors.IDPConfig.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "IDP-s8nn3", "Errors.IDPConfig.Invalid")
}
idpConfigID, err := c.idGenerator.Next()
if err != nil {
@@ -77,20 +77,20 @@ func (c *Commands) AddDefaultIDPConfig(ctx context.Context, config *domain.IDPCo
func (c *Commands) ChangeDefaultIDPConfig(ctx context.Context, config *domain.IDPConfig) (*domain.IDPConfig, error) {
if config.IDPConfigID == "" {
- return nil, errors.ThrowInvalidArgument(nil, "INSTANCE-4m9gs", "Errors.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INSTANCE-4m9gs", "Errors.IDMissing")
}
existingIDP, err := c.instanceIDPConfigWriteModelByID(ctx, config.IDPConfigID)
if err != nil {
return nil, err
}
if existingIDP.State == domain.IDPConfigStateRemoved || existingIDP.State == domain.IDPConfigStateUnspecified {
- return nil, errors.ThrowNotFound(nil, "INSTANCE-m0e3r", "Errors.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-m0e3r", "Errors.IDPConfig.NotExisting")
}
instanceAgg := InstanceAggregateFromWriteModel(&existingIDP.WriteModel)
changedEvent, hasChanged := existingIDP.NewChangedEvent(ctx, instanceAgg, config.IDPConfigID, config.Name, config.StylingType, config.AutoRegister)
if !hasChanged {
- return nil, errors.ThrowPreconditionFailed(nil, "INSTANCE-3k0fs", "Errors.IAM.IDPConfig.NotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "INSTANCE-3k0fs", "Errors.IAM.IDPConfig.NotChanged")
}
pushedEvents, err := c.eventstore.Push(ctx, changedEvent)
if err != nil {
@@ -109,7 +109,7 @@ func (c *Commands) DeactivateDefaultIDPConfig(ctx context.Context, idpID string)
return nil, err
}
if existingIDP.State != domain.IDPConfigStateActive {
- return nil, errors.ThrowPreconditionFailed(nil, "INSTANCE-2n0fs", "Errors.IAM.IDPConfig.NotActive")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "INSTANCE-2n0fs", "Errors.IAM.IDPConfig.NotActive")
}
instanceAgg := InstanceAggregateFromWriteModel(&existingIDP.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, instance.NewIDPConfigDeactivatedEvent(ctx, instanceAgg, idpID))
@@ -129,7 +129,7 @@ func (c *Commands) ReactivateDefaultIDPConfig(ctx context.Context, idpID string)
return nil, err
}
if existingIDP.State != domain.IDPConfigStateInactive {
- return nil, errors.ThrowPreconditionFailed(nil, "INSTANCE-5Mo0d", "Errors.IAM.IDPConfig.NotInactive")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "INSTANCE-5Mo0d", "Errors.IAM.IDPConfig.NotInactive")
}
instanceAgg := InstanceAggregateFromWriteModel(&existingIDP.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, instance.NewIDPConfigReactivatedEvent(ctx, instanceAgg, idpID))
@@ -149,7 +149,7 @@ func (c *Commands) RemoveDefaultIDPConfig(ctx context.Context, idpID string, idp
return nil, err
}
if existingIDP.State == domain.IDPConfigStateRemoved || existingIDP.State == domain.IDPConfigStateUnspecified {
- return nil, errors.ThrowNotFound(nil, "INSTANCE-4M0xy", "Errors.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-4M0xy", "Errors.IDPConfig.NotExisting")
}
instanceAgg := InstanceAggregateFromWriteModel(&existingIDP.WriteModel)
@@ -163,7 +163,7 @@ func (c *Commands) RemoveDefaultIDPConfig(ctx context.Context, idpID string, idp
events = append(events, userEvents...)
}
orgAgg := OrgAggregateFromWriteModel(&NewOrgIdentityProviderWriteModel(idpProvider.AggregateID, idpID).WriteModel)
- orgEvents := c.removeIDPFromLoginPolicy(ctx, orgAgg, idpID, true)
+ orgEvents := c.removeIDPFromLoginPolicy(ctx, orgAgg, idpID, true, externalIDPs...)
events = append(events, orgEvents...)
}
@@ -184,7 +184,7 @@ func (c *Commands) getInstanceIDPConfigByID(ctx context.Context, idpID string) (
return nil, err
}
if !config.State.Exists() {
- return nil, errors.ThrowNotFound(nil, "INSTANCE-p0pFF", "Errors.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-p0pFF", "Errors.IDPConfig.NotExisting")
}
return writeModelToIDPConfig(&config.IDPConfigWriteModel), nil
}
diff --git a/internal/command/instance_idp_config_test.go b/internal/command/instance_idp_config_test.go
index 3c6b829cad..5930db3619 100644
--- a/internal/command/instance_idp_config_test.go
+++ b/internal/command/instance_idp_config_test.go
@@ -10,13 +10,13 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/id"
id_mock "github.com/zitadel/zitadel/internal/id/mock"
"github.com/zitadel/zitadel/internal/repository/idpconfig"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddDefaultIDPConfig(t *testing.T) {
@@ -51,7 +51,7 @@ func TestCommandSide_AddDefaultIDPConfig(t *testing.T) {
config: &domain.IDPConfig{},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -228,7 +228,7 @@ func TestCommandSide_ChangeDefaultIDPConfig(t *testing.T) {
config: &domain.IDPConfig{},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -246,7 +246,7 @@ func TestCommandSide_ChangeDefaultIDPConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
diff --git a/internal/command/instance_idp_jwt_config.go b/internal/command/instance_idp_jwt_config.go
index e13d429cbe..f2fdc376f5 100644
--- a/internal/command/instance_idp_jwt_config.go
+++ b/internal/command/instance_idp_jwt_config.go
@@ -4,12 +4,12 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) ChangeDefaultIDPJWTConfig(ctx context.Context, config *domain.JWTIDPConfig) (*domain.JWTIDPConfig, error) {
if config.IDPConfigID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INSTANCE-m9322", "Errors.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INSTANCE-m9322", "Errors.IDMissing")
}
existingConfig := NewInstanceIDPJWTConfigWriteModel(ctx, config.IDPConfigID)
err := c.eventstore.FilterToQueryReducer(ctx, existingConfig)
@@ -18,7 +18,7 @@ func (c *Commands) ChangeDefaultIDPJWTConfig(ctx context.Context, config *domain
}
if existingConfig.State == domain.IDPConfigStateRemoved || existingConfig.State == domain.IDPConfigStateUnspecified {
- return nil, caos_errs.ThrowNotFound(nil, "INSTANCE-2m00d", "Errors.IAM.IDPConfig.AlreadyExists")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-2m00d", "Errors.IAM.IDPConfig.AlreadyExists")
}
instanceAgg := InstanceAggregateFromWriteModel(&existingConfig.WriteModel)
@@ -34,7 +34,7 @@ func (c *Commands) ChangeDefaultIDPJWTConfig(ctx context.Context, config *domain
return nil, err
}
if !hasChanged {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "INSTANCE-3n9gg", "Errors.IAM.IDPConfig.NotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "INSTANCE-3n9gg", "Errors.IAM.IDPConfig.NotChanged")
}
pushedEvents, err := c.eventstore.Push(ctx, changedEvent)
diff --git a/internal/command/instance_idp_jwt_config_test.go b/internal/command/instance_idp_jwt_config_test.go
index 37c32c4d33..da82a6e970 100644
--- a/internal/command/instance_idp_jwt_config_test.go
+++ b/internal/command/instance_idp_jwt_config_test.go
@@ -9,11 +9,11 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/idpconfig"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_ChangeDefaultIDPJWTConfig(t *testing.T) {
@@ -51,7 +51,7 @@ func TestCommandSide_ChangeDefaultIDPJWTConfig(t *testing.T) {
config: &domain.JWTIDPConfig{},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -70,7 +70,7 @@ func TestCommandSide_ChangeDefaultIDPJWTConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -117,7 +117,7 @@ func TestCommandSide_ChangeDefaultIDPJWTConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -162,7 +162,7 @@ func TestCommandSide_ChangeDefaultIDPJWTConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
diff --git a/internal/command/instance_idp_oidc_config.go b/internal/command/instance_idp_oidc_config.go
index ae659bc513..b9963c605a 100644
--- a/internal/command/instance_idp_oidc_config.go
+++ b/internal/command/instance_idp_oidc_config.go
@@ -4,12 +4,12 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) ChangeDefaultIDPOIDCConfig(ctx context.Context, config *domain.OIDCIDPConfig) (*domain.OIDCIDPConfig, error) {
if config.IDPConfigID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INSTANCE-9djf8", "Errors.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INSTANCE-9djf8", "Errors.IDMissing")
}
existingConfig := NewInstanceIDPOIDCConfigWriteModel(ctx, config.IDPConfigID)
err := c.eventstore.FilterToQueryReducer(ctx, existingConfig)
@@ -18,7 +18,7 @@ func (c *Commands) ChangeDefaultIDPOIDCConfig(ctx context.Context, config *domai
}
if existingConfig.State == domain.IDPConfigStateRemoved || existingConfig.State == domain.IDPConfigStateUnspecified {
- return nil, caos_errs.ThrowNotFound(nil, "INSTANCE-67J9d", "Errors.IAM.IDPConfig.AlreadyExists")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-67J9d", "Errors.IAM.IDPConfig.AlreadyExists")
}
instanceAgg := InstanceAggregateFromWriteModel(&existingConfig.WriteModel)
@@ -39,7 +39,7 @@ func (c *Commands) ChangeDefaultIDPOIDCConfig(ctx context.Context, config *domai
return nil, err
}
if !hasChanged {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "INSTANCE-d8kwF", "Errors.IAM.IDPConfig.NotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "INSTANCE-d8kwF", "Errors.IAM.IDPConfig.NotChanged")
}
pushedEvents, err := c.eventstore.Push(ctx, changedEvent)
diff --git a/internal/command/instance_idp_oidc_config_test.go b/internal/command/instance_idp_oidc_config_test.go
index b74842868d..410c5d2ac0 100644
--- a/internal/command/instance_idp_oidc_config_test.go
+++ b/internal/command/instance_idp_oidc_config_test.go
@@ -9,11 +9,11 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/idpconfig"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_ChangeDefaultIDPOIDCConfig(t *testing.T) {
@@ -51,7 +51,7 @@ func TestCommandSide_ChangeDefaultIDPOIDCConfig(t *testing.T) {
config: &domain.OIDCIDPConfig{},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -70,7 +70,7 @@ func TestCommandSide_ChangeDefaultIDPOIDCConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -126,7 +126,7 @@ func TestCommandSide_ChangeDefaultIDPOIDCConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -183,7 +183,7 @@ func TestCommandSide_ChangeDefaultIDPOIDCConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
diff --git a/internal/command/instance_idp_test.go b/internal/command/instance_idp_test.go
index fe46dcd030..3ff14610dc 100644
--- a/internal/command/instance_idp_test.go
+++ b/internal/command/instance_idp_test.go
@@ -13,12 +13,12 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errors "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/id"
id_mock "github.com/zitadel/zitadel/internal/id/mock"
"github.com/zitadel/zitadel/internal/repository/idp"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddInstanceGenericOAuthIDP(t *testing.T) {
@@ -54,7 +54,7 @@ func TestCommandSide_AddInstanceGenericOAuthIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-D32ef", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-D32ef", ""))
},
},
},
@@ -72,7 +72,7 @@ func TestCommandSide_AddInstanceGenericOAuthIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-Dbgzf", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-Dbgzf", ""))
},
},
},
@@ -91,7 +91,7 @@ func TestCommandSide_AddInstanceGenericOAuthIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-DF4ga", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-DF4ga", ""))
},
},
},
@@ -111,7 +111,7 @@ func TestCommandSide_AddInstanceGenericOAuthIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-B23bs", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-B23bs", ""))
},
},
},
@@ -132,7 +132,7 @@ func TestCommandSide_AddInstanceGenericOAuthIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-D2gj8", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-D2gj8", ""))
},
},
},
@@ -154,7 +154,7 @@ func TestCommandSide_AddInstanceGenericOAuthIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-Fb8jk", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-Fb8jk", ""))
},
},
},
@@ -177,7 +177,7 @@ func TestCommandSide_AddInstanceGenericOAuthIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-sdf3f", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-sdf3f", ""))
},
},
},
@@ -337,7 +337,7 @@ func TestCommandSide_UpdateInstanceGenericOAuthIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-SAffg", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-SAffg", ""))
},
},
},
@@ -353,7 +353,7 @@ func TestCommandSide_UpdateInstanceGenericOAuthIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-Sf3gh", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-Sf3gh", ""))
},
},
},
@@ -371,7 +371,7 @@ func TestCommandSide_UpdateInstanceGenericOAuthIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-SHJ3ui", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-SHJ3ui", ""))
},
},
},
@@ -390,7 +390,7 @@ func TestCommandSide_UpdateInstanceGenericOAuthIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-SVrgh", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-SVrgh", ""))
},
},
},
@@ -410,7 +410,7 @@ func TestCommandSide_UpdateInstanceGenericOAuthIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-DJKeio", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-DJKeio", ""))
},
},
},
@@ -431,7 +431,7 @@ func TestCommandSide_UpdateInstanceGenericOAuthIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-ILSJi", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-ILSJi", ""))
},
},
},
@@ -453,7 +453,7 @@ func TestCommandSide_UpdateInstanceGenericOAuthIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-JKD3h", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-JKD3h", ""))
},
},
},
@@ -477,7 +477,7 @@ func TestCommandSide_UpdateInstanceGenericOAuthIDP(t *testing.T) {
},
},
res: res{
- err: caos_errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -657,7 +657,7 @@ func TestCommandSide_AddInstanceGenericOIDCIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-Sgtj5", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-Sgtj5", ""))
},
},
},
@@ -675,7 +675,7 @@ func TestCommandSide_AddInstanceGenericOIDCIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-Hz6zj", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-Hz6zj", ""))
},
},
},
@@ -694,7 +694,7 @@ func TestCommandSide_AddInstanceGenericOIDCIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-fb5jm", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-fb5jm", ""))
},
},
},
@@ -714,7 +714,7 @@ func TestCommandSide_AddInstanceGenericOIDCIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-Sfdf4", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-Sfdf4", ""))
},
},
},
@@ -865,7 +865,7 @@ func TestCommandSide_UpdateInstanceGenericOIDCIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-SAfd3", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-SAfd3", ""))
},
},
},
@@ -881,7 +881,7 @@ func TestCommandSide_UpdateInstanceGenericOIDCIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-Dvf4f", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-Dvf4f", ""))
},
},
},
@@ -899,7 +899,7 @@ func TestCommandSide_UpdateInstanceGenericOIDCIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-BDfr3", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-BDfr3", ""))
},
},
},
@@ -918,7 +918,7 @@ func TestCommandSide_UpdateInstanceGenericOIDCIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-Db3bs", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-Db3bs", ""))
},
},
},
@@ -939,7 +939,7 @@ func TestCommandSide_UpdateInstanceGenericOIDCIDP(t *testing.T) {
},
},
res: res{
- err: caos_errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1107,7 +1107,7 @@ func TestCommandSide_MigrateInstanceGenericOIDCToAzureADProvider(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-sdf3g", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-sdf3g", ""))
},
},
},
@@ -1124,7 +1124,7 @@ func TestCommandSide_MigrateInstanceGenericOIDCToAzureADProvider(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-Fhbr2", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-Fhbr2", ""))
},
},
},
@@ -1142,7 +1142,7 @@ func TestCommandSide_MigrateInstanceGenericOIDCToAzureADProvider(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-Dzh3g", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-Dzh3g", ""))
},
},
},
@@ -1163,7 +1163,7 @@ func TestCommandSide_MigrateInstanceGenericOIDCToAzureADProvider(t *testing.T) {
},
},
res: res{
- err: caos_errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1348,7 +1348,7 @@ func TestCommandSide_MigrateInstanceOIDCToGoogleIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-D3fvs", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-D3fvs", ""))
},
},
},
@@ -1365,7 +1365,7 @@ func TestCommandSide_MigrateInstanceOIDCToGoogleIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-W2vqs", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-W2vqs", ""))
},
},
},
@@ -1385,7 +1385,7 @@ func TestCommandSide_MigrateInstanceOIDCToGoogleIDP(t *testing.T) {
},
},
res: res{
- err: caos_errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1558,7 +1558,7 @@ func TestCommandSide_AddInstanceAzureADIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-sdf3g", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-sdf3g", ""))
},
},
},
@@ -1576,7 +1576,7 @@ func TestCommandSide_AddInstanceAzureADIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-Fhbr2", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-Fhbr2", ""))
},
},
},
@@ -1595,7 +1595,7 @@ func TestCommandSide_AddInstanceAzureADIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-Dzh3g", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-Dzh3g", ""))
},
},
},
@@ -1745,7 +1745,7 @@ func TestCommandSide_UpdateInstanceAzureADIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-SAgh2", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-SAgh2", ""))
},
},
},
@@ -1761,7 +1761,7 @@ func TestCommandSide_UpdateInstanceAzureADIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-fh3h1", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-fh3h1", ""))
},
},
},
@@ -1779,7 +1779,7 @@ func TestCommandSide_UpdateInstanceAzureADIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-dmitg", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-dmitg", ""))
},
},
},
@@ -1799,7 +1799,7 @@ func TestCommandSide_UpdateInstanceAzureADIDP(t *testing.T) {
},
},
res: res{
- err: caos_errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1967,7 +1967,7 @@ func TestCommandSide_AddInstanceGitHubIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-Jdsgf", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-Jdsgf", ""))
},
},
},
@@ -1985,7 +1985,7 @@ func TestCommandSide_AddInstanceGitHubIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-dsgz3", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-dsgz3", ""))
},
},
},
@@ -2128,7 +2128,7 @@ func TestCommandSide_UpdateInstanceGitHubIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-sdf4h", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-sdf4h", ""))
},
},
},
@@ -2144,7 +2144,7 @@ func TestCommandSide_UpdateInstanceGitHubIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-fdh5z", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-fdh5z", ""))
},
},
},
@@ -2163,7 +2163,7 @@ func TestCommandSide_UpdateInstanceGitHubIDP(t *testing.T) {
},
},
res: res{
- err: caos_errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -2322,7 +2322,7 @@ func TestCommandSide_AddInstanceGitHubEnterpriseIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-Dg4td", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-Dg4td", ""))
},
},
},
@@ -2340,7 +2340,7 @@ func TestCommandSide_AddInstanceGitHubEnterpriseIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-dgj53", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-dgj53", ""))
},
},
},
@@ -2359,7 +2359,7 @@ func TestCommandSide_AddInstanceGitHubEnterpriseIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-Ghjjs", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-Ghjjs", ""))
},
},
},
@@ -2379,7 +2379,7 @@ func TestCommandSide_AddInstanceGitHubEnterpriseIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-sani2", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-sani2", ""))
},
},
},
@@ -2400,7 +2400,7 @@ func TestCommandSide_AddInstanceGitHubEnterpriseIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-agj42", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-agj42", ""))
},
},
},
@@ -2422,7 +2422,7 @@ func TestCommandSide_AddInstanceGitHubEnterpriseIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-sd5hn", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-sd5hn", ""))
},
},
},
@@ -2578,7 +2578,7 @@ func TestCommandSide_UpdateInstanceGitHubEnterpriseIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-sdfh3", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-sdfh3", ""))
},
},
},
@@ -2594,7 +2594,7 @@ func TestCommandSide_UpdateInstanceGitHubEnterpriseIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-shj42", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-shj42", ""))
},
},
},
@@ -2612,7 +2612,7 @@ func TestCommandSide_UpdateInstanceGitHubEnterpriseIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-sdh73", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-sdh73", ""))
},
},
},
@@ -2631,7 +2631,7 @@ func TestCommandSide_UpdateInstanceGitHubEnterpriseIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-acx2w", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-acx2w", ""))
},
},
},
@@ -2651,7 +2651,7 @@ func TestCommandSide_UpdateInstanceGitHubEnterpriseIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-dgj6q", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-dgj6q", ""))
},
},
},
@@ -2672,7 +2672,7 @@ func TestCommandSide_UpdateInstanceGitHubEnterpriseIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-ybj62", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-ybj62", ""))
},
},
},
@@ -2695,7 +2695,7 @@ func TestCommandSide_UpdateInstanceGitHubEnterpriseIDP(t *testing.T) {
},
},
res: res{
- err: caos_errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -2870,7 +2870,7 @@ func TestCommandSide_AddInstanceGitLabIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-adsg2", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-adsg2", ""))
},
},
},
@@ -2888,7 +2888,7 @@ func TestCommandSide_AddInstanceGitLabIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-GD1j2", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-GD1j2", ""))
},
},
},
@@ -3030,7 +3030,7 @@ func TestCommandSide_UpdateInstanceGitLabIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-HJK91", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-HJK91", ""))
},
},
},
@@ -3046,7 +3046,7 @@ func TestCommandSide_UpdateInstanceGitLabIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-D12t6", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-D12t6", ""))
},
},
},
@@ -3065,7 +3065,7 @@ func TestCommandSide_UpdateInstanceGitLabIDP(t *testing.T) {
},
},
res: res{
- err: caos_errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -3222,7 +3222,7 @@ func TestCommandSide_AddInstanceGitLabSelfHostedIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-jw4ZT", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-jw4ZT", ""))
},
},
},
@@ -3240,7 +3240,7 @@ func TestCommandSide_AddInstanceGitLabSelfHostedIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-AST4S", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-AST4S", ""))
},
},
},
@@ -3259,7 +3259,7 @@ func TestCommandSide_AddInstanceGitLabSelfHostedIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-DBZHJ", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-DBZHJ", ""))
},
},
},
@@ -3279,7 +3279,7 @@ func TestCommandSide_AddInstanceGitLabSelfHostedIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-SDGJ4", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-SDGJ4", ""))
},
},
},
@@ -3427,7 +3427,7 @@ func TestCommandSide_UpdateInstanceGitLabSelfHostedIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-SAFG4", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-SAFG4", ""))
},
},
},
@@ -3443,7 +3443,7 @@ func TestCommandSide_UpdateInstanceGitLabSelfHostedIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-DG4H", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-DG4H", ""))
},
},
},
@@ -3461,7 +3461,7 @@ func TestCommandSide_UpdateInstanceGitLabSelfHostedIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-SD4eb", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-SD4eb", ""))
},
},
},
@@ -3480,7 +3480,7 @@ func TestCommandSide_UpdateInstanceGitLabSelfHostedIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-GHWE3", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-GHWE3", ""))
},
},
},
@@ -3501,7 +3501,7 @@ func TestCommandSide_UpdateInstanceGitLabSelfHostedIDP(t *testing.T) {
},
},
res: res{
- err: caos_errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -3666,7 +3666,7 @@ func TestCommandSide_AddInstanceGoogleIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-D3fvs", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-D3fvs", ""))
},
},
},
@@ -3684,7 +3684,7 @@ func TestCommandSide_AddInstanceGoogleIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-W2vqs", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-W2vqs", ""))
},
},
},
@@ -3826,7 +3826,7 @@ func TestCommandSide_UpdateInstanceGoogleIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-S32t1", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-S32t1", ""))
},
},
},
@@ -3842,7 +3842,7 @@ func TestCommandSide_UpdateInstanceGoogleIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-ds432", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-ds432", ""))
},
},
},
@@ -3861,7 +3861,7 @@ func TestCommandSide_UpdateInstanceGoogleIDP(t *testing.T) {
},
},
res: res{
- err: caos_errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -4018,7 +4018,7 @@ func TestCommandSide_AddInstanceLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-SAfdd", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-SAfdd", ""))
},
},
},
@@ -4036,7 +4036,7 @@ func TestCommandSide_AddInstanceLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-sv31s", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-sv31s", ""))
},
},
},
@@ -4055,7 +4055,7 @@ func TestCommandSide_AddInstanceLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-sdgf4", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-sdgf4", ""))
},
},
},
@@ -4075,7 +4075,7 @@ func TestCommandSide_AddInstanceLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-AEG2w", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-AEG2w", ""))
},
},
},
@@ -4096,7 +4096,7 @@ func TestCommandSide_AddInstanceLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-SAD5n", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-SAD5n", ""))
},
},
},
@@ -4118,7 +4118,7 @@ func TestCommandSide_AddInstanceLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-SAx905n", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-SAx905n", ""))
},
},
},
@@ -4141,7 +4141,7 @@ func TestCommandSide_AddInstanceLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-S1x905n", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-S1x905n", ""))
},
},
},
@@ -4165,7 +4165,7 @@ func TestCommandSide_AddInstanceLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-aAx905n", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-aAx905n", ""))
},
},
},
@@ -4365,7 +4365,7 @@ func TestCommandSide_UpdateInstanceLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-Dgdbs", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-Dgdbs", ""))
},
},
},
@@ -4381,7 +4381,7 @@ func TestCommandSide_UpdateInstanceLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-Sffgd", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-Sffgd", ""))
},
},
},
@@ -4399,7 +4399,7 @@ func TestCommandSide_UpdateInstanceLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-vb3ss", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-vb3ss", ""))
},
},
},
@@ -4418,7 +4418,7 @@ func TestCommandSide_UpdateInstanceLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-hbere", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-hbere", ""))
},
},
},
@@ -4438,7 +4438,7 @@ func TestCommandSide_UpdateInstanceLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-DG45z", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-DG45z", ""))
},
},
},
@@ -4459,7 +4459,7 @@ func TestCommandSide_UpdateInstanceLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-SAx945n", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-SAx945n", ""))
},
},
},
@@ -4481,7 +4481,7 @@ func TestCommandSide_UpdateInstanceLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-S1x605n", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-S1x605n", ""))
},
},
},
@@ -4504,7 +4504,7 @@ func TestCommandSide_UpdateInstanceLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-aAx901n", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-aAx901n", ""))
},
},
},
@@ -4531,7 +4531,7 @@ func TestCommandSide_UpdateInstanceLDAPIDP(t *testing.T) {
},
res: res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowNotFound(nil, "INST-ASF3F", ""))
+ return errors.Is(err, zerrors.ThrowNotFound(nil, "INST-ASF3F", ""))
},
},
},
@@ -4755,7 +4755,7 @@ func TestCommandSide_AddInstanceAppleIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-jkn3w", "Errors.IDP.ClientIDMissing"))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-jkn3w", "Errors.IDP.ClientIDMissing"))
},
},
},
@@ -4773,7 +4773,7 @@ func TestCommandSide_AddInstanceAppleIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-Ffg32", "Errors.IDP.TeamIDMissing"))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-Ffg32", "Errors.IDP.TeamIDMissing"))
},
},
},
@@ -4792,7 +4792,7 @@ func TestCommandSide_AddInstanceAppleIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-GDjm5", "Errors.IDP.KeyIDMissing"))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-GDjm5", "Errors.IDP.KeyIDMissing"))
},
},
},
@@ -4812,7 +4812,7 @@ func TestCommandSide_AddInstanceAppleIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-GVD4n", "Errors.IDP.PrivateKeyMissing"))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-GVD4n", "Errors.IDP.PrivateKeyMissing"))
},
},
},
@@ -4962,7 +4962,7 @@ func TestCommandSide_UpdateInstanceAppleIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-FRHBH", "Errors.IDMissing"))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-FRHBH", "Errors.IDMissing"))
},
},
},
@@ -4978,7 +4978,7 @@ func TestCommandSide_UpdateInstanceAppleIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-SFm4l", "Errors.IDP.ClientIDMissing"))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-SFm4l", "Errors.IDP.ClientIDMissing"))
},
},
},
@@ -4996,7 +4996,7 @@ func TestCommandSide_UpdateInstanceAppleIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-SG34t", "Errors.IDP.TeamIDMissing"))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-SG34t", "Errors.IDP.TeamIDMissing"))
},
},
},
@@ -5015,7 +5015,7 @@ func TestCommandSide_UpdateInstanceAppleIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-Gh4z2", "Errors.IDP.KeyIDMissing"))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-Gh4z2", "Errors.IDP.KeyIDMissing"))
},
},
},
@@ -5036,7 +5036,7 @@ func TestCommandSide_UpdateInstanceAppleIDP(t *testing.T) {
},
},
res: res{
- err: caos_errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -5204,7 +5204,7 @@ func TestCommandSide_AddInstanceSAMLIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-o07zjotgnd", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-o07zjotgnd", ""))
},
},
},
@@ -5222,7 +5222,7 @@ func TestCommandSide_AddInstanceSAMLIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-3bi3esi16t", "Errors.Invalid.Argument"))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-3bi3esi16t", "Errors.Invalid.Argument"))
},
},
},
@@ -5372,7 +5372,7 @@ func TestCommandSide_UpdateInstanceGenericSAMLIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-7o3rq1owpm", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-7o3rq1owpm", ""))
},
},
},
@@ -5388,7 +5388,7 @@ func TestCommandSide_UpdateInstanceGenericSAMLIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-q2s9rak7o9", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-q2s9rak7o9", ""))
},
},
},
@@ -5406,7 +5406,7 @@ func TestCommandSide_UpdateInstanceGenericSAMLIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-iw1rxnf4sf", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-iw1rxnf4sf", ""))
},
},
},
@@ -5426,7 +5426,7 @@ func TestCommandSide_UpdateInstanceGenericSAMLIDP(t *testing.T) {
},
},
res: res{
- err: caos_errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -5582,7 +5582,7 @@ func TestCommandSide_RegenerateInstanceSAMLProviderCertificate(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "INST-7de108gqya", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "INST-7de108gqya", ""))
},
},
},
@@ -5598,7 +5598,7 @@ func TestCommandSide_RegenerateInstanceSAMLProviderCertificate(t *testing.T) {
id: "id1",
},
res: res{
- err: caos_errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
diff --git a/internal/command/instance_member.go b/internal/command/instance_member.go
index b7d78a939a..ee9bf15f84 100644
--- a/internal/command/instance_member.go
+++ b/internal/command/instance_member.go
@@ -7,26 +7,26 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddInstanceMemberCommand(a *instance.Aggregate, userID string, roles ...string) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if userID == "" {
- return nil, errors.ThrowInvalidArgument(nil, "INSTA-SDSfs", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INSTA-SDSfs", "Errors.Invalid.Argument")
}
if len(domain.CheckForInvalidRoles(roles, domain.IAMRolePrefix, c.zitadelRoles)) > 0 {
- return nil, errors.ThrowInvalidArgument(nil, "INSTANCE-4m0fS", "Errors.IAM.MemberInvalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INSTANCE-4m0fS", "Errors.IAM.MemberInvalid")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
if exists, err := ExistsUser(ctx, filter, userID, ""); err != nil || !exists {
- return nil, errors.ThrowPreconditionFailed(err, "INSTA-GSXOn", "Errors.User.NotFound")
+ return nil, zerrors.ThrowPreconditionFailed(err, "INSTA-GSXOn", "Errors.User.NotFound")
}
if isMember, err := IsInstanceMember(ctx, filter, a.ID, userID); err != nil || isMember {
- return nil, errors.ThrowAlreadyExists(err, "INSTA-pFDwe", "Errors.Instance.Member.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(err, "INSTA-pFDwe", "Errors.Instance.Member.AlreadyExists")
}
return []eventstore.Command{instance.NewMemberAddedEvent(ctx, &a.Aggregate, userID, roles...)}, nil
},
@@ -90,10 +90,10 @@ func (c *Commands) AddInstanceMember(ctx context.Context, userID string, roles .
// ChangeInstanceMember updates an existing member
func (c *Commands) ChangeInstanceMember(ctx context.Context, member *domain.Member) (*domain.Member, error) {
if !member.IsIAMValid() {
- return nil, errors.ThrowInvalidArgument(nil, "INSTANCE-LiaZi", "Errors.IAM.MemberInvalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INSTANCE-LiaZi", "Errors.IAM.MemberInvalid")
}
if len(domain.CheckForInvalidRoles(member.Roles, domain.IAMRolePrefix, c.zitadelRoles)) > 0 {
- return nil, errors.ThrowInvalidArgument(nil, "INSTANCE-3m9fs", "Errors.IAM.MemberInvalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INSTANCE-3m9fs", "Errors.IAM.MemberInvalid")
}
existingMember, err := c.instanceMemberWriteModelByID(ctx, member.UserID)
@@ -102,7 +102,7 @@ func (c *Commands) ChangeInstanceMember(ctx context.Context, member *domain.Memb
}
if reflect.DeepEqual(existingMember.Roles, member.Roles) {
- return nil, errors.ThrowPreconditionFailed(nil, "INSTANCE-LiaZi", "Errors.IAM.Member.RolesNotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "INSTANCE-LiaZi", "Errors.IAM.Member.RolesNotChanged")
}
instanceAgg := InstanceAggregateFromWriteModel(&existingMember.MemberWriteModel.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, instance.NewMemberChangedEvent(ctx, instanceAgg, member.UserID, member.Roles...))
@@ -119,13 +119,13 @@ func (c *Commands) ChangeInstanceMember(ctx context.Context, member *domain.Memb
func (c *Commands) RemoveInstanceMember(ctx context.Context, userID string) (*domain.ObjectDetails, error) {
if userID == "" {
- return nil, errors.ThrowInvalidArgument(nil, "INSTANCE-LiaZi", "Errors.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INSTANCE-LiaZi", "Errors.IDMissing")
}
memberWriteModel, err := c.instanceMemberWriteModelByID(ctx, userID)
- if err != nil && !errors.IsNotFound(err) {
+ if err != nil && !zerrors.IsNotFound(err) {
return nil, err
}
- if errors.IsNotFound(err) {
+ if zerrors.IsNotFound(err) {
// empty response because we have no data that match the request
return &domain.ObjectDetails{}, nil
}
@@ -166,7 +166,7 @@ func (c *Commands) instanceMemberWriteModelByID(ctx context.Context, userID stri
}
if writeModel.State == domain.MemberStateUnspecified || writeModel.State == domain.MemberStateRemoved {
- return nil, errors.ThrowNotFound(nil, "INSTANCE-D8JxR", "Errors.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-D8JxR", "Errors.NotFound")
}
return writeModel, nil
diff --git a/internal/command/instance_member_test.go b/internal/command/instance_member_test.go
index 384fdecae4..f520bc3240 100644
--- a/internal/command/instance_member_test.go
+++ b/internal/command/instance_member_test.go
@@ -9,11 +9,11 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddIAMMember(t *testing.T) {
@@ -47,7 +47,7 @@ func TestCommandSide_AddIAMMember(t *testing.T) {
ctx: context.Background(),
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -63,7 +63,7 @@ func TestCommandSide_AddIAMMember(t *testing.T) {
roles: []string{"IAM_OWNER"},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -85,7 +85,7 @@ func TestCommandSide_AddIAMMember(t *testing.T) {
roles: []string{"IAM_OWNER"},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -130,7 +130,7 @@ func TestCommandSide_AddIAMMember(t *testing.T) {
roles: []string{"IAM_OWNER"},
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -155,7 +155,7 @@ func TestCommandSide_AddIAMMember(t *testing.T) {
),
),
expectFilter(),
- expectPushFailed(caos_errs.ThrowAlreadyExists(nil, "ERROR", "internal"),
+ expectPushFailed(zerrors.ThrowAlreadyExists(nil, "ERROR", "internal"),
instance.NewMemberAddedEvent(context.Background(),
&instance.NewAggregate("INSTANCE").Aggregate,
"user1",
@@ -175,7 +175,7 @@ func TestCommandSide_AddIAMMember(t *testing.T) {
roles: []string{"IAM_OWNER"},
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -285,7 +285,7 @@ func TestCommandSide_ChangeIAMMember(t *testing.T) {
member: &domain.Member{},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -303,7 +303,7 @@ func TestCommandSide_ChangeIAMMember(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -327,7 +327,7 @@ func TestCommandSide_ChangeIAMMember(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -359,7 +359,7 @@ func TestCommandSide_ChangeIAMMember(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -464,7 +464,7 @@ func TestCommandSide_RemoveIAMMember(t *testing.T) {
userID: "",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
diff --git a/internal/command/instance_oidc_settings.go b/internal/command/instance_oidc_settings.go
index c44fc3b567..009198dfe5 100644
--- a/internal/command/instance_oidc_settings.go
+++ b/internal/command/instance_oidc_settings.go
@@ -7,9 +7,9 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) prepareAddOIDCSettings(a *instance.Aggregate, accessTokenLifetime, idTokenLifetime, refreshTokenIdleExpiration, refreshTokenExpiration time.Duration) preparation.Validation {
@@ -18,7 +18,7 @@ func (c *Commands) prepareAddOIDCSettings(a *instance.Aggregate, accessTokenLife
idTokenLifetime == time.Duration(0) ||
refreshTokenIdleExpiration == time.Duration(0) ||
refreshTokenExpiration == time.Duration(0) {
- return nil, errors.ThrowInvalidArgument(nil, "INST-10s82j", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-10s82j", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
@@ -27,7 +27,7 @@ func (c *Commands) prepareAddOIDCSettings(a *instance.Aggregate, accessTokenLife
return nil, err
}
if writeModel.State == domain.OIDCSettingsStateActive {
- return nil, errors.ThrowAlreadyExists(nil, "INST-0aaj1o", "Errors.OIDCSettings.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "INST-0aaj1o", "Errors.OIDCSettings.AlreadyExists")
}
return []eventstore.Command{
instance.NewOIDCSettingsAddedEvent(
@@ -49,7 +49,7 @@ func (c *Commands) prepareUpdateOIDCSettings(a *instance.Aggregate, accessTokenL
idTokenLifetime == time.Duration(0) ||
refreshTokenIdleExpiration == time.Duration(0) ||
refreshTokenExpiration == time.Duration(0) {
- return nil, errors.ThrowInvalidArgument(nil, "INST-10sxks", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-10sxks", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
@@ -58,7 +58,7 @@ func (c *Commands) prepareUpdateOIDCSettings(a *instance.Aggregate, accessTokenL
return nil, err
}
if writeModel.State != domain.OIDCSettingsStateActive {
- return nil, errors.ThrowNotFound(nil, "INST-90s32oj", "Errors.OIDCSettings.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INST-90s32oj", "Errors.OIDCSettings.NotFound")
}
changedEvent, hasChanged, err := writeModel.NewChangedEvent(
ctx,
@@ -72,7 +72,7 @@ func (c *Commands) prepareUpdateOIDCSettings(a *instance.Aggregate, accessTokenL
return nil, err
}
if !hasChanged {
- return nil, errors.ThrowPreconditionFailed(nil, "COMMAND-0pk2nu", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-0pk2nu", "Errors.NoChangesFound")
}
return []eventstore.Command{
changedEvent,
diff --git a/internal/command/instance_oidc_settings_test.go b/internal/command/instance_oidc_settings_test.go
index ebd04982e7..353efa5813 100644
--- a/internal/command/instance_oidc_settings_test.go
+++ b/internal/command/instance_oidc_settings_test.go
@@ -9,9 +9,9 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddOIDCConfig(t *testing.T) {
@@ -60,7 +60,7 @@ func TestCommandSide_AddOIDCConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -113,7 +113,7 @@ func TestCommandSide_AddOIDCConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -133,7 +133,7 @@ func TestCommandSide_AddOIDCConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -153,7 +153,7 @@ func TestCommandSide_AddOIDCConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -173,7 +173,7 @@ func TestCommandSide_AddOIDCConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
}
@@ -232,7 +232,7 @@ func TestCommandSide_ChangeOIDCConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -252,7 +252,7 @@ func TestCommandSide_ChangeOIDCConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -272,7 +272,7 @@ func TestCommandSide_ChangeOIDCConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -292,7 +292,7 @@ func TestCommandSide_ChangeOIDCConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -312,7 +312,7 @@ func TestCommandSide_ChangeOIDCConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -344,7 +344,7 @@ func TestCommandSide_ChangeOIDCConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
diff --git a/internal/command/instance_policy_domain.go b/internal/command/instance_policy_domain.go
index 13941b6929..969bc219fe 100644
--- a/internal/command/instance_policy_domain.go
+++ b/internal/command/instance_policy_domain.go
@@ -6,10 +6,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddDefaultDomainPolicy(ctx context.Context, userLoginMustBeDomain, validateOrgDomains, smtpSenderAddressMatchesInstanceDomain bool) (*domain.ObjectDetails, error) {
@@ -44,19 +44,19 @@ func (c *Commands) ChangeDefaultDomainPolicy(ctx context.Context, userLoginMustB
}
func (c *Commands) getDefaultDomainPolicy(ctx context.Context) (*domain.DomainPolicy, error) {
- policyWriteModel, err := c.defaultDomainPolicyWriteModelByID(ctx)
+ policyWriteModel, err := c.instanceDomainPolicyWriteModel(ctx)
if err != nil {
return nil, err
}
if !policyWriteModel.State.Exists() {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INSTANCE-3n8fs", "Errors.IAM.PasswordComplexityPolicy.NotFound")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INSTANCE-3n8fs", "Errors.IAM.PasswordComplexityPolicy.NotFound")
}
policy := writeModelToDomainPolicy(policyWriteModel)
policy.Default = true
return policy, nil
}
-func (c *Commands) defaultDomainPolicyWriteModelByID(ctx context.Context) (policy *InstanceDomainPolicyWriteModel, err error) {
+func (c *Commands) instanceDomainPolicyWriteModel(ctx context.Context) (policy *InstanceDomainPolicyWriteModel, err error) {
ctx, span := tracing.NewSpan(ctx)
defer func() { span.EndWithError(err) }()
@@ -81,7 +81,7 @@ func prepareAddDefaultDomainPolicy(
return nil, err
}
if writeModel.State == domain.PolicyStateActive {
- return nil, caos_errs.ThrowAlreadyExists(nil, "INSTANCE-Lk0dS", "Errors.Instance.DomainPolicy.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "INSTANCE-Lk0dS", "Errors.Instance.DomainPolicy.AlreadyExists")
}
return []eventstore.Command{
instance.NewDomainPolicyAddedEvent(ctx, &a.Aggregate,
@@ -107,7 +107,7 @@ func prepareChangeDefaultDomainPolicy(
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "INSTANCE-0Pl0d", "Errors.Instance.DomainPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-0Pl0d", "Errors.Instance.DomainPolicy.NotFound")
}
changedEvent, usernameChange, err := writeModel.NewChangedEvent(ctx, &a.Aggregate,
userLoginMustBeDomain,
diff --git a/internal/command/instance_policy_domain_model.go b/internal/command/instance_policy_domain_model.go
index 9ce7665283..0ae6015dc1 100644
--- a/internal/command/instance_policy_domain_model.go
+++ b/internal/command/instance_policy_domain_model.go
@@ -4,11 +4,11 @@ import (
"context"
"github.com/zitadel/zitadel/internal/api/authz"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/policy"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type InstanceDomainPolicyWriteModel struct {
@@ -71,7 +71,7 @@ func (wm *InstanceDomainPolicyWriteModel) NewChangedEvent(
changes = append(changes, policy.ChangeSMTPSenderAddressMatchesInstanceDomain(smtpSenderAddresssMatchesInstanceDomain))
}
if len(changes) == 0 {
- return nil, false, caos_errs.ThrowPreconditionFailed(nil, "INSTANCE-pl9fN", "Errors.IAM.DomainPolicy.NotChanged")
+ return nil, false, zerrors.ThrowPreconditionFailed(nil, "INSTANCE-pl9fN", "Errors.IAM.DomainPolicy.NotChanged")
}
changedEvent, err = instance.NewDomainPolicyChangedEvent(ctx, aggregate, changes)
return changedEvent, usernameChange, err
diff --git a/internal/command/instance_policy_domain_test.go b/internal/command/instance_policy_domain_test.go
index 22bca56ef4..e2b5c2ccce 100644
--- a/internal/command/instance_policy_domain_test.go
+++ b/internal/command/instance_policy_domain_test.go
@@ -9,12 +9,12 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/policy"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddDefaultDomainPolicy(t *testing.T) {
@@ -61,7 +61,7 @@ func TestCommandSide_AddDefaultDomainPolicy(t *testing.T) {
smtpSenderAddressMatchesInstanceDomain: true,
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -147,7 +147,7 @@ func TestCommandSide_ChangeDefaultDomainPolicy(t *testing.T) {
smtpSenderAddressMatchesInstanceDomain: true,
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -174,7 +174,7 @@ func TestCommandSide_ChangeDefaultDomainPolicy(t *testing.T) {
smtpSenderAddressMatchesInstanceDomain: true,
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
diff --git a/internal/command/instance_policy_label.go b/internal/command/instance_policy_label.go
index 4a083fce27..8392a7d564 100644
--- a/internal/command/instance_policy_label.go
+++ b/internal/command/instance_policy_label.go
@@ -6,10 +6,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddDefaultLabelPolicy(
@@ -54,7 +54,7 @@ func (c *Commands) ChangeDefaultLabelPolicy(ctx context.Context, policy *domain.
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "INSTANCE-0K9dq", "Errors.IAM.LabelPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-0K9dq", "Errors.IAM.LabelPolicy.NotFound")
}
instanceAgg := InstanceAggregateFromWriteModel(&existingPolicy.LabelPolicyWriteModel.WriteModel)
changedEvent, hasChanged := existingPolicy.NewChangedEvent(
@@ -73,7 +73,7 @@ func (c *Commands) ChangeDefaultLabelPolicy(ctx context.Context, policy *domain.
policy.DisableWatermark,
policy.ThemeMode)
if !hasChanged {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "INSTANCE-28fHe", "Errors.IAM.LabelPolicy.NotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "INSTANCE-28fHe", "Errors.IAM.LabelPolicy.NotChanged")
}
pushedEvents, err := c.eventstore.Push(ctx, changedEvent)
@@ -107,11 +107,11 @@ func (c *Commands) AddLogoDefaultLabelPolicy(ctx context.Context, upload *AssetU
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "INSTANCE-Qw0pd", "Errors.IAM.LabelPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-Qw0pd", "Errors.IAM.LabelPolicy.NotFound")
}
asset, err := c.uploadAsset(ctx, upload)
if err != nil {
- return nil, caos_errs.ThrowInternal(err, "INSTANCE-3m20c", "Errors.Assets.Object.PutFailed")
+ return nil, zerrors.ThrowInternal(err, "INSTANCE-3m20c", "Errors.Assets.Object.PutFailed")
}
instanceAgg := InstanceAggregateFromWriteModel(&existingPolicy.LabelPolicyWriteModel.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, instance.NewLabelPolicyLogoAddedEvent(ctx, instanceAgg, asset.Name))
@@ -132,7 +132,7 @@ func (c *Commands) RemoveLogoDefaultLabelPolicy(ctx context.Context) (*domain.Ob
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "INSTANCE-Xc8Kf", "Errors.IAM.LabelPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-Xc8Kf", "Errors.IAM.LabelPolicy.NotFound")
}
err = c.removeAsset(ctx, authz.GetInstance(ctx).InstanceID(), existingPolicy.LogoKey)
@@ -158,11 +158,11 @@ func (c *Commands) AddIconDefaultLabelPolicy(ctx context.Context, upload *AssetU
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "INSTANCE-1yMx0", "Errors.IAM.LabelPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-1yMx0", "Errors.IAM.LabelPolicy.NotFound")
}
asset, err := c.uploadAsset(ctx, upload)
if err != nil {
- return nil, caos_errs.ThrowInternal(err, "INSTANCE-yxE4f", "Errors.Assets.Object.PutFailed")
+ return nil, zerrors.ThrowInternal(err, "INSTANCE-yxE4f", "Errors.Assets.Object.PutFailed")
}
instanceAgg := InstanceAggregateFromWriteModel(&existingPolicy.LabelPolicyWriteModel.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, instance.NewLabelPolicyIconAddedEvent(ctx, instanceAgg, asset.Name))
@@ -183,7 +183,7 @@ func (c *Commands) RemoveIconDefaultLabelPolicy(ctx context.Context) (*domain.Ob
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "INSTANCE-4M0qw", "Errors.IAM.LabelPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-4M0qw", "Errors.IAM.LabelPolicy.NotFound")
}
err = c.removeAsset(ctx, authz.GetInstance(ctx).InstanceID(), existingPolicy.IconKey)
if err != nil {
@@ -208,11 +208,11 @@ func (c *Commands) AddLogoDarkDefaultLabelPolicy(ctx context.Context, upload *As
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "INSTANCE-ZR9fs", "Errors.Instance.LabelPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-ZR9fs", "Errors.Instance.LabelPolicy.NotFound")
}
asset, err := c.uploadAsset(ctx, upload)
if err != nil {
- return nil, caos_errs.ThrowInternal(err, "INSTANCE-4fMs9", "Errors.Assets.Object.PutFailed")
+ return nil, zerrors.ThrowInternal(err, "INSTANCE-4fMs9", "Errors.Assets.Object.PutFailed")
}
instanceAgg := InstanceAggregateFromWriteModel(&existingPolicy.LabelPolicyWriteModel.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, instance.NewLabelPolicyLogoDarkAddedEvent(ctx, instanceAgg, asset.Name))
@@ -233,7 +233,7 @@ func (c *Commands) RemoveLogoDarkDefaultLabelPolicy(ctx context.Context) (*domai
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "INSTANCE-3FGds", "Errors.Instance.LabelPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-3FGds", "Errors.Instance.LabelPolicy.NotFound")
}
err = c.removeAsset(ctx, authz.GetInstance(ctx).InstanceID(), existingPolicy.LogoDarkKey)
if err != nil {
@@ -258,11 +258,11 @@ func (c *Commands) AddIconDarkDefaultLabelPolicy(ctx context.Context, upload *As
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "INSTANCE-vMsf9", "Errors.Instance.LabelPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-vMsf9", "Errors.Instance.LabelPolicy.NotFound")
}
asset, err := c.uploadAsset(ctx, upload)
if err != nil {
- return nil, caos_errs.ThrowInternal(err, "INSTANCE-1cxM3", "Errors.Assets.Object.PutFailed")
+ return nil, zerrors.ThrowInternal(err, "INSTANCE-1cxM3", "Errors.Assets.Object.PutFailed")
}
instanceAgg := InstanceAggregateFromWriteModel(&existingPolicy.LabelPolicyWriteModel.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, instance.NewLabelPolicyIconDarkAddedEvent(ctx, instanceAgg, asset.Name))
@@ -283,7 +283,7 @@ func (c *Commands) RemoveIconDarkDefaultLabelPolicy(ctx context.Context) (*domai
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "INSTANCE-2nc7F", "Errors.Instance.LabelPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-2nc7F", "Errors.Instance.LabelPolicy.NotFound")
}
err = c.removeAsset(ctx, authz.GetInstance(ctx).InstanceID(), existingPolicy.IconDarkKey)
if err != nil {
@@ -308,11 +308,11 @@ func (c *Commands) AddFontDefaultLabelPolicy(ctx context.Context, upload *AssetU
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "INSTANCE-1N8fE", "Errors.Instance.LabelPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-1N8fE", "Errors.Instance.LabelPolicy.NotFound")
}
asset, err := c.uploadAsset(ctx, upload)
if err != nil {
- return nil, caos_errs.ThrowInternal(nil, "INSTANCE-1N8fs", "Errors.Assets.Object.PutFailed")
+ return nil, zerrors.ThrowInternal(nil, "INSTANCE-1N8fs", "Errors.Assets.Object.PutFailed")
}
instanceAgg := InstanceAggregateFromWriteModel(&existingPolicy.LabelPolicyWriteModel.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, instance.NewLabelPolicyFontAddedEvent(ctx, instanceAgg, asset.Name))
@@ -333,7 +333,7 @@ func (c *Commands) RemoveFontDefaultLabelPolicy(ctx context.Context) (*domain.Ob
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "INSTANCE-Tk0gw", "Errors.Instance.LabelPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-Tk0gw", "Errors.Instance.LabelPolicy.NotFound")
}
err = c.removeAsset(ctx, authz.GetInstance(ctx).InstanceID(), existingPolicy.FontKey)
if err != nil {
@@ -400,7 +400,7 @@ func prepareAddDefaultLabelPolicy(
return nil, err
}
if writeModel.State == domain.PolicyStateActive {
- return nil, caos_errs.ThrowAlreadyExists(nil, "INSTANCE-2B0ps", "Errors.Instance.LabelPolicy.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "INSTANCE-2B0ps", "Errors.Instance.LabelPolicy.AlreadyExists")
}
return []eventstore.Command{
instance.NewLabelPolicyAddedEvent(ctx, &a.Aggregate,
@@ -437,7 +437,7 @@ func prepareActivateDefaultLabelPolicy(
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "INSTANCE-6M23e", "Errors.Instance.LabelPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-6M23e", "Errors.Instance.LabelPolicy.NotFound")
}
return []eventstore.Command{
instance.NewLabelPolicyActivatedEvent(ctx, &a.Aggregate),
diff --git a/internal/command/instance_policy_label_test.go b/internal/command/instance_policy_label_test.go
index 35afb8bf89..ca508d414b 100644
--- a/internal/command/instance_policy_label_test.go
+++ b/internal/command/instance_policy_label_test.go
@@ -10,13 +10,13 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/policy"
"github.com/zitadel/zitadel/internal/static"
"github.com/zitadel/zitadel/internal/static/mock"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddDefaultLabelPolicy(t *testing.T) {
@@ -90,7 +90,7 @@ func TestCommandSide_AddDefaultLabelPolicy(t *testing.T) {
themeMode: domain.LabelPolicyThemeAuto,
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -208,7 +208,7 @@ func TestCommandSide_ChangeDefaultLabelPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -255,7 +255,7 @@ func TestCommandSide_ChangeDefaultLabelPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -388,7 +388,7 @@ func TestCommandSide_ActivateDefaultLabelPolicy(t *testing.T) {
ctx: authz.WithInstanceID(context.Background(), "INSTANCE"),
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -490,7 +490,7 @@ func TestCommandSide_AddLogoDefaultLabelPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -532,7 +532,7 @@ func TestCommandSide_AddLogoDefaultLabelPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsInternal,
+ err: zerrors.IsInternal,
},
},
{
@@ -636,7 +636,7 @@ func TestCommandSide_RemoveLogoDefaultLabelPolicy(t *testing.T) {
ctx: context.Background(),
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -676,7 +676,7 @@ func TestCommandSide_RemoveLogoDefaultLabelPolicy(t *testing.T) {
ctx: context.Background(),
},
res: res{
- err: caos_errs.IsInternal,
+ err: zerrors.IsInternal,
},
},
{
@@ -787,7 +787,7 @@ func TestCommandSide_AddIconDefaultLabelPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -829,7 +829,7 @@ func TestCommandSide_AddIconDefaultLabelPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsInternal,
+ err: zerrors.IsInternal,
},
},
{
@@ -933,7 +933,7 @@ func TestCommandSide_RemoveIconDefaultLabelPolicy(t *testing.T) {
ctx: context.Background(),
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1046,7 +1046,7 @@ func TestCommandSide_AddLogoDarkDefaultLabelPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1089,7 +1089,7 @@ func TestCommandSide_AddLogoDarkDefaultLabelPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsInternal,
+ err: zerrors.IsInternal,
},
},
{
@@ -1193,7 +1193,7 @@ func TestCommandSide_RemoveLogoDarkDefaultLabelPolicy(t *testing.T) {
ctx: context.Background(),
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1233,7 +1233,7 @@ func TestCommandSide_RemoveLogoDarkDefaultLabelPolicy(t *testing.T) {
ctx: context.Background(),
},
res: res{
- err: caos_errs.IsInternal,
+ err: zerrors.IsInternal,
},
},
{
@@ -1344,7 +1344,7 @@ func TestCommandSide_AddIconDarkDefaultLabelPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1386,7 +1386,7 @@ func TestCommandSide_AddIconDarkDefaultLabelPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsInternal,
+ err: zerrors.IsInternal,
},
},
{
@@ -1490,7 +1490,7 @@ func TestCommandSide_RemoveIconDarkDefaultLabelPolicy(t *testing.T) {
ctx: context.Background(),
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1530,7 +1530,7 @@ func TestCommandSide_RemoveIconDarkDefaultLabelPolicy(t *testing.T) {
ctx: context.Background(),
},
res: res{
- err: caos_errs.IsInternal,
+ err: zerrors.IsInternal,
},
},
{
@@ -1641,7 +1641,7 @@ func TestCommandSide_AddFontDefaultLabelPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1683,7 +1683,7 @@ func TestCommandSide_AddFontDefaultLabelPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsInternal,
+ err: zerrors.IsInternal,
},
},
{
@@ -1787,7 +1787,7 @@ func TestCommandSide_RemoveFontDefaultLabelPolicy(t *testing.T) {
ctx: context.Background(),
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1827,7 +1827,7 @@ func TestCommandSide_RemoveFontDefaultLabelPolicy(t *testing.T) {
ctx: context.Background(),
},
res: res{
- err: caos_errs.IsInternal,
+ err: zerrors.IsInternal,
},
},
{
diff --git a/internal/command/instance_policy_login.go b/internal/command/instance_policy_login.go
index 6e6ce70e6a..3a5cfda5f5 100644
--- a/internal/command/instance_policy_login.go
+++ b/internal/command/instance_policy_login.go
@@ -9,10 +9,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) ChangeDefaultLoginPolicy(ctx context.Context, policy *ChangeLoginPolicy) (*domain.ObjectDetails, error) {
@@ -30,7 +30,7 @@ func (c *Commands) ChangeDefaultLoginPolicy(ctx context.Context, policy *ChangeL
func (c *Commands) AddIDPProviderToDefaultLoginPolicy(ctx context.Context, idpProvider *domain.IDPProvider) (*domain.IDPProvider, error) {
if !idpProvider.IsValid() {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INSTANCE-9nf88", "Errors.IAM.LoginPolicy.IDP.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INSTANCE-9nf88", "Errors.IAM.LoginPolicy.IDP.Invalid")
}
existingPolicy := NewInstanceLoginPolicyWriteModel(ctx)
err := c.defaultLoginPolicyWriteModelByID(ctx, existingPolicy)
@@ -38,12 +38,12 @@ func (c *Commands) AddIDPProviderToDefaultLoginPolicy(ctx context.Context, idpPr
return nil, err
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "INSTANCE-GVDfe", "Errors.IAM.LoginPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-GVDfe", "Errors.IAM.LoginPolicy.NotFound")
}
exists, err := ExistsInstanceIDP(ctx, c.eventstore.Filter, idpProvider.IDPConfigID)
if err != nil || !exists {
- return nil, caos_errs.ThrowPreconditionFailed(err, "INSTANCE-m8fsd", "Errors.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowPreconditionFailed(err, "INSTANCE-m8fsd", "Errors.IDPConfig.NotExisting")
}
idpModel := NewInstanceIdentityProviderWriteModel(ctx, idpProvider.IDPConfigID)
err = c.eventstore.FilterToQueryReducer(ctx, idpModel)
@@ -51,7 +51,7 @@ func (c *Commands) AddIDPProviderToDefaultLoginPolicy(ctx context.Context, idpPr
return nil, err
}
if idpModel.State == domain.IdentityProviderStateActive {
- return nil, caos_errs.ThrowAlreadyExists(nil, "INSTANCE-2B0ps", "Errors.IAM.LoginPolicy.IDP.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "INSTANCE-2B0ps", "Errors.IAM.LoginPolicy.IDP.AlreadyExists")
}
instanceAgg := InstanceAggregateFromWriteModel(&idpModel.WriteModel)
@@ -66,9 +66,9 @@ func (c *Commands) AddIDPProviderToDefaultLoginPolicy(ctx context.Context, idpPr
return writeModelToIDPProvider(&idpModel.IdentityProviderWriteModel), nil
}
-func (c *Commands) RemoveIDPProviderFromDefaultLoginPolicy(ctx context.Context, idpProvider *domain.IDPProvider, cascadeExternalIDPs ...*domain.UserIDPLink) (*domain.ObjectDetails, error) {
+func (c *Commands) RemoveIDPProviderFromDefaultLoginPolicy(ctx context.Context, idpProvider *domain.IDPProvider) (*domain.ObjectDetails, error) {
if !idpProvider.IsValid() {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INSTANCE-66m9s", "Errors.IAM.LoginPolicy.IDP.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INSTANCE-66m9s", "Errors.IAM.LoginPolicy.IDP.Invalid")
}
existingPolicy := NewInstanceLoginPolicyWriteModel(ctx)
err := c.defaultLoginPolicyWriteModelByID(ctx, existingPolicy)
@@ -76,7 +76,7 @@ func (c *Commands) RemoveIDPProviderFromDefaultLoginPolicy(ctx context.Context,
return nil, err
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "INSTANCE-Dfg4t", "Errors.IAM.LoginPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-Dfg4t", "Errors.IAM.LoginPolicy.NotFound")
}
idpModel := NewInstanceIdentityProviderWriteModel(ctx, idpProvider.IDPConfigID)
@@ -85,11 +85,11 @@ func (c *Commands) RemoveIDPProviderFromDefaultLoginPolicy(ctx context.Context,
return nil, err
}
if idpModel.State == domain.IdentityProviderStateUnspecified || idpModel.State == domain.IdentityProviderStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "INSTANCE-39fjs", "Errors.IAM.LoginPolicy.IDP.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-39fjs", "Errors.IAM.LoginPolicy.IDP.NotExisting")
}
instanceAgg := InstanceAggregateFromWriteModel(&idpModel.IdentityProviderWriteModel.WriteModel)
- events := c.removeIDPProviderFromDefaultLoginPolicy(ctx, instanceAgg, idpProvider, false, cascadeExternalIDPs...)
+ events := c.removeIDPProviderFromDefaultLoginPolicy(ctx, instanceAgg, idpProvider, false)
pushedEvents, err := c.eventstore.Push(ctx, events...)
if err != nil {
return nil, err
@@ -135,7 +135,7 @@ func (c *Commands) AddSecondFactorToDefaultLoginPolicy(ctx context.Context, seco
func (c *Commands) RemoveSecondFactorFromDefaultLoginPolicy(ctx context.Context, secondFactor domain.SecondFactorType) (*domain.ObjectDetails, error) {
if !secondFactor.Valid() {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INSTANCE-55n8s", "Errors.IAM.LoginPolicy.MFA.Unspecified")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INSTANCE-55n8s", "Errors.IAM.LoginPolicy.MFA.Unspecified")
}
secondFactorModel := NewInstanceSecondFactorWriteModel(ctx, secondFactor)
err := c.eventstore.FilterToQueryReducer(ctx, secondFactorModel)
@@ -143,7 +143,7 @@ func (c *Commands) RemoveSecondFactorFromDefaultLoginPolicy(ctx context.Context,
return nil, err
}
if secondFactorModel.State == domain.FactorStateUnspecified || secondFactorModel.State == domain.FactorStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "INSTANCE-3M9od", "Errors.IAM.LoginPolicy.MFA.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-3M9od", "Errors.IAM.LoginPolicy.MFA.NotExisting")
}
instanceAgg := InstanceAggregateFromWriteModel(&secondFactorModel.SecondFactorWriteModel.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, instance.NewLoginPolicySecondFactorRemovedEvent(ctx, instanceAgg, secondFactor))
@@ -172,7 +172,7 @@ func (c *Commands) AddMultiFactorToDefaultLoginPolicy(ctx context.Context, multi
func (c *Commands) RemoveMultiFactorFromDefaultLoginPolicy(ctx context.Context, multiFactor domain.MultiFactorType) (*domain.ObjectDetails, error) {
if !multiFactor.Valid() {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INSTANCE-33m9F", "Errors.IAM.LoginPolicy.MFA.Unspecified")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INSTANCE-33m9F", "Errors.IAM.LoginPolicy.MFA.Unspecified")
}
multiFactorModel := NewInstanceMultiFactorWriteModel(ctx, multiFactor)
err := c.eventstore.FilterToQueryReducer(ctx, multiFactorModel)
@@ -180,7 +180,7 @@ func (c *Commands) RemoveMultiFactorFromDefaultLoginPolicy(ctx context.Context,
return nil, err
}
if multiFactorModel.State == domain.FactorStateUnspecified || multiFactorModel.State == domain.FactorStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "INSTANCE-3M9df", "Errors.IAM.LoginPolicy.MFA.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-3M9df", "Errors.IAM.LoginPolicy.MFA.NotExisting")
}
instanceAgg := InstanceAggregateFromWriteModel(&multiFactorModel.MultiFactorWriteModel.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, instance.NewLoginPolicyMultiFactorRemovedEvent(ctx, instanceAgg, multiFactor))
@@ -215,7 +215,7 @@ func (c *Commands) getDefaultLoginPolicy(ctx context.Context) (*domain.LoginPoli
func prepareChangeDefaultLoginPolicy(a *instance.Aggregate, policy *ChangeLoginPolicy) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if ok := domain.ValidateDefaultRedirectURI(policy.DefaultRedirectURI); !ok {
- return nil, caos_errs.ThrowInvalidArgument(nil, "IAM-SFdqd", "Errors.IAM.LoginPolicy.RedirectURIInvalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "IAM-SFdqd", "Errors.IAM.LoginPolicy.RedirectURIInvalid")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
wm := NewInstanceLoginPolicyWriteModel(ctx)
@@ -223,7 +223,7 @@ func prepareChangeDefaultLoginPolicy(a *instance.Aggregate, policy *ChangeLoginP
return nil, err
}
if !wm.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "INSTANCE-M0sif", "Errors.IAM.LoginPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-M0sif", "Errors.IAM.LoginPolicy.NotFound")
}
changedEvent, hasChanged := wm.NewChangedEvent(ctx, &a.Aggregate,
policy.AllowUsernamePassword,
@@ -244,7 +244,7 @@ func prepareChangeDefaultLoginPolicy(a *instance.Aggregate, policy *ChangeLoginP
policy.SecondFactorCheckLifetime,
policy.MultiFactorCheckLifetime)
if !hasChanged {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "INSTANCE-5M9vdd", "Errors.IAM.LoginPolicy.NotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "INSTANCE-5M9vdd", "Errors.IAM.LoginPolicy.NotChanged")
}
return []eventstore.Command{changedEvent}, nil
}, nil
@@ -283,7 +283,7 @@ func prepareAddDefaultLoginPolicy(
return nil, err
}
if writeModel.State == domain.PolicyStateActive {
- return nil, caos_errs.ThrowAlreadyExists(nil, "INSTANCE-2B0ps", "Errors.Instance.LoginPolicy.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "INSTANCE-2B0ps", "Errors.Instance.LoginPolicy.AlreadyExists")
}
return []eventstore.Command{
instance.NewLoginPolicyAddedEvent(ctx, &a.Aggregate,
@@ -313,7 +313,7 @@ func prepareAddDefaultLoginPolicy(
func prepareAddSecondFactorToDefaultLoginPolicy(a *instance.Aggregate, factor domain.SecondFactorType) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if !factor.Valid() {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INSTANCE-5m9fs", "Errors.Instance.LoginPolicy.MFA.Unspecified")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INSTANCE-5m9fs", "Errors.Instance.LoginPolicy.MFA.Unspecified")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
writeModel := NewInstanceSecondFactorWriteModel(ctx, factor)
@@ -326,7 +326,7 @@ func prepareAddSecondFactorToDefaultLoginPolicy(a *instance.Aggregate, factor do
return nil, err
}
if writeModel.State == domain.FactorStateActive {
- return nil, caos_errs.ThrowAlreadyExists(nil, "INSTANCE-2B0ps", "Errors.Instance.MFA.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "INSTANCE-2B0ps", "Errors.Instance.MFA.AlreadyExists")
}
return []eventstore.Command{
instance.NewLoginPolicySecondFactorAddedEvent(ctx, &a.Aggregate, factor),
@@ -338,7 +338,7 @@ func prepareAddSecondFactorToDefaultLoginPolicy(a *instance.Aggregate, factor do
func prepareAddMultiFactorToDefaultLoginPolicy(a *instance.Aggregate, factor domain.MultiFactorType) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if !factor.Valid() {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INSTANCE-5m9fs", "Errors.Instance.LoginPolicy.MFA.Unspecified")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INSTANCE-5m9fs", "Errors.Instance.LoginPolicy.MFA.Unspecified")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
writeModel := NewInstanceMultiFactorWriteModel(ctx, factor)
@@ -351,7 +351,7 @@ func prepareAddMultiFactorToDefaultLoginPolicy(a *instance.Aggregate, factor dom
return nil, err
}
if writeModel.State == domain.FactorStateActive {
- return nil, caos_errs.ThrowAlreadyExists(nil, "INSTANCE-3M9od", "Errors.Instance.MFA.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "INSTANCE-3M9od", "Errors.Instance.MFA.AlreadyExists")
}
return []eventstore.Command{
instance.NewLoginPolicyMultiFactorAddedEvent(ctx, &a.Aggregate, factor),
diff --git a/internal/command/instance_policy_login_test.go b/internal/command/instance_policy_login_test.go
index bd472da15a..a3f9a936b8 100644
--- a/internal/command/instance_policy_login_test.go
+++ b/internal/command/instance_policy_login_test.go
@@ -9,12 +9,11 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/policy"
- "github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_ChangeDefaultLoginPolicy(t *testing.T) {
@@ -51,7 +50,7 @@ func TestCommandSide_ChangeDefaultLoginPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -108,7 +107,7 @@ func TestCommandSide_ChangeDefaultLoginPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -241,7 +240,7 @@ func TestCommandSide_AddIDPProviderDefaultLoginPolicy(t *testing.T) {
provider: &domain.IDPProvider{},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -259,7 +258,7 @@ func TestCommandSide_AddIDPProviderDefaultLoginPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -301,7 +300,7 @@ func TestCommandSide_AddIDPProviderDefaultLoginPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -362,7 +361,7 @@ func TestCommandSide_AddIDPProviderDefaultLoginPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -458,9 +457,8 @@ func TestCommandSide_RemoveIDPProviderDefaultLoginPolicy(t *testing.T) {
eventstore *eventstore.Eventstore
}
type args struct {
- ctx context.Context
- provider *domain.IDPProvider
- cascadeExternalIDPs []*domain.UserIDPLink
+ ctx context.Context
+ provider *domain.IDPProvider
}
type res struct {
want *domain.ObjectDetails
@@ -484,7 +482,7 @@ func TestCommandSide_RemoveIDPProviderDefaultLoginPolicy(t *testing.T) {
provider: &domain.IDPProvider{},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -502,7 +500,7 @@ func TestCommandSide_RemoveIDPProviderDefaultLoginPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -544,7 +542,7 @@ func TestCommandSide_RemoveIDPProviderDefaultLoginPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -599,7 +597,7 @@ func TestCommandSide_RemoveIDPProviderDefaultLoginPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -707,89 +705,6 @@ func TestCommandSide_RemoveIDPProviderDefaultLoginPolicy(t *testing.T) {
provider: &domain.IDPProvider{
IDPConfigID: "config1",
},
- cascadeExternalIDPs: []*domain.UserIDPLink{
- {
- ObjectRoot: models.ObjectRoot{
- AggregateID: "user1",
- },
- IDPConfigID: "config1",
- },
- },
- },
- res: res{
- want: &domain.ObjectDetails{
- ResourceOwner: "INSTANCE",
- },
- },
- },
- {
- name: "remove provider with external idps, ok",
- fields: fields{
- eventstore: eventstoreExpect(
- t,
- expectFilter(
- eventFromEventPusher(
- instance.NewLoginPolicyAddedEvent(context.Background(),
- &instance.NewAggregate("INSTANCE").Aggregate,
- true,
- true,
- true,
- true,
- true,
- true,
- true,
- true,
- true,
- true,
- domain.PasswordlessTypeAllowed,
- "",
- time.Hour*1,
- time.Hour*2,
- time.Hour*3,
- time.Hour*4,
- time.Hour*5,
- ),
- ),
- ),
- expectFilter(
- eventFromEventPusher(
- instance.NewIdentityProviderAddedEvent(context.Background(),
- &instance.NewAggregate("INSTANCE").Aggregate,
- "config1",
- ),
- ),
- ),
- expectFilter(
- eventFromEventPusher(
- user.NewUserIDPLinkAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- "config1", "", "externaluser1"),
- ),
- ),
- expectPush(
- instance.NewIdentityProviderRemovedEvent(context.Background(),
- &instance.NewAggregate("INSTANCE").Aggregate,
- "config1"),
- user.NewUserIDPLinkCascadeRemovedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- "config1", "externaluser1"),
- ),
- ),
- },
- args: args{
- ctx: context.Background(),
- provider: &domain.IDPProvider{
- IDPConfigID: "config1",
- },
- cascadeExternalIDPs: []*domain.UserIDPLink{
- {
- ObjectRoot: models.ObjectRoot{
- AggregateID: "user1",
- },
- IDPConfigID: "config1",
- ExternalUserID: "externaluser1",
- },
- },
},
res: res{
want: &domain.ObjectDetails{
@@ -803,7 +718,7 @@ func TestCommandSide_RemoveIDPProviderDefaultLoginPolicy(t *testing.T) {
r := &Commands{
eventstore: tt.fields.eventstore,
}
- got, err := r.RemoveIDPProviderFromDefaultLoginPolicy(tt.args.ctx, tt.args.provider, tt.args.cascadeExternalIDPs...)
+ got, err := r.RemoveIDPProviderFromDefaultLoginPolicy(tt.args.ctx, tt.args.provider)
if tt.res.err == nil {
assert.NoError(t, err)
}
@@ -847,7 +762,7 @@ func TestCommandSide_AddSecondFactorDefaultLoginPolicy(t *testing.T) {
factor: domain.SecondFactorTypeUnspecified,
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -870,7 +785,7 @@ func TestCommandSide_AddSecondFactorDefaultLoginPolicy(t *testing.T) {
factor: domain.SecondFactorTypeTOTP,
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -1022,7 +937,7 @@ func TestCommandSide_RemoveSecondFactorDefaultLoginPolicy(t *testing.T) {
factor: domain.SecondFactorTypeUnspecified,
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1038,7 +953,7 @@ func TestCommandSide_RemoveSecondFactorDefaultLoginPolicy(t *testing.T) {
factor: domain.SecondFactorTypeTOTP,
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1067,7 +982,7 @@ func TestCommandSide_RemoveSecondFactorDefaultLoginPolicy(t *testing.T) {
factor: domain.SecondFactorTypeTOTP,
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1096,7 +1011,7 @@ func TestCommandSide_RemoveSecondFactorDefaultLoginPolicy(t *testing.T) {
factor: domain.SecondFactorTypeOTPEmail,
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1125,7 +1040,7 @@ func TestCommandSide_RemoveSecondFactorDefaultLoginPolicy(t *testing.T) {
factor: domain.SecondFactorTypeOTPSMS,
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1238,7 +1153,7 @@ func TestCommandSide_RemoveSecondFactorDefaultLoginPolicy(t *testing.T) {
factor: domain.SecondFactorTypeOTPSMS,
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
}
@@ -1291,7 +1206,7 @@ func TestCommandSide_AddMultiFactorDefaultLoginPolicy(t *testing.T) {
factor: domain.MultiFactorTypeUnspecified,
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1314,7 +1229,7 @@ func TestCommandSide_AddMultiFactorDefaultLoginPolicy(t *testing.T) {
factor: domain.MultiFactorTypeU2FWithPIN,
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -1390,7 +1305,7 @@ func TestCommandSide_RemoveMultiFactorDefaultLoginPolicy(t *testing.T) {
factor: domain.MultiFactorTypeUnspecified,
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1406,7 +1321,7 @@ func TestCommandSide_RemoveMultiFactorDefaultLoginPolicy(t *testing.T) {
factor: domain.MultiFactorTypeU2FWithPIN,
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1435,7 +1350,7 @@ func TestCommandSide_RemoveMultiFactorDefaultLoginPolicy(t *testing.T) {
factor: domain.MultiFactorTypeU2FWithPIN,
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
diff --git a/internal/command/instance_policy_mail_template.go b/internal/command/instance_policy_mail_template.go
index 78ee0ec273..4bef54f936 100644
--- a/internal/command/instance_policy_mail_template.go
+++ b/internal/command/instance_policy_mail_template.go
@@ -5,10 +5,10 @@ import (
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddDefaultMailTemplate(ctx context.Context, policy *domain.MailTemplate) (*domain.MailTemplate, error) {
@@ -32,14 +32,14 @@ func (c *Commands) AddDefaultMailTemplate(ctx context.Context, policy *domain.Ma
func (c *Commands) addDefaultMailTemplate(ctx context.Context, instanceAgg *eventstore.Aggregate, addedPolicy *InstanceMailTemplateWriteModel, policy *domain.MailTemplate) (eventstore.Command, error) {
if !policy.IsValid() {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INSTANCE-fm9sd", "Errors.IAM.MailTemplate.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INSTANCE-fm9sd", "Errors.IAM.MailTemplate.Invalid")
}
err := c.eventstore.FilterToQueryReducer(ctx, addedPolicy)
if err != nil {
return nil, err
}
if addedPolicy.State == domain.PolicyStateActive {
- return nil, caos_errs.ThrowAlreadyExists(nil, "INSTANCE-5n8fs", "Errors.IAM.MailTemplate.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "INSTANCE-5n8fs", "Errors.IAM.MailTemplate.AlreadyExists")
}
return instance.NewMailTemplateAddedEvent(ctx, instanceAgg, policy.Template), nil
@@ -63,7 +63,7 @@ func (c *Commands) ChangeDefaultMailTemplate(ctx context.Context, policy *domain
func (c *Commands) changeDefaultMailTemplate(ctx context.Context, policy *domain.MailTemplate) (*InstanceMailTemplateWriteModel, eventstore.Command, error) {
if !policy.IsValid() {
- return nil, nil, caos_errs.ThrowInvalidArgument(nil, "INSTANCE-4m9ds", "Errors.IAM.MailTemplate.Invalid")
+ return nil, nil, zerrors.ThrowInvalidArgument(nil, "INSTANCE-4m9ds", "Errors.IAM.MailTemplate.Invalid")
}
existingPolicy, err := c.defaultMailTemplateWriteModelByID(ctx)
if err != nil {
@@ -71,13 +71,13 @@ func (c *Commands) changeDefaultMailTemplate(ctx context.Context, policy *domain
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, nil, caos_errs.ThrowNotFound(nil, "INSTANCE-2N8fs", "Errors.IAM.MailTemplate.NotFound")
+ return nil, nil, zerrors.ThrowNotFound(nil, "INSTANCE-2N8fs", "Errors.IAM.MailTemplate.NotFound")
}
instanceAgg := InstanceAggregateFromWriteModel(&existingPolicy.MailTemplateWriteModel.WriteModel)
changedEvent, hasChanged := existingPolicy.NewChangedEvent(ctx, instanceAgg, policy.Template)
if !hasChanged {
- return nil, nil, caos_errs.ThrowPreconditionFailed(nil, "INSTANCE-3nfsG", "Errors.IAM.MailTemplate.NotChanged")
+ return nil, nil, zerrors.ThrowPreconditionFailed(nil, "INSTANCE-3nfsG", "Errors.IAM.MailTemplate.NotChanged")
}
return existingPolicy, changedEvent, nil
@@ -101,7 +101,7 @@ func prepareAddDefaultEmailTemplate(
) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if template == nil {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INSTANCE-fm9sd", "Errors.Instance.MailTemplate.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INSTANCE-fm9sd", "Errors.Instance.MailTemplate.Invalid")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
writeModel := NewInstanceMailTemplateWriteModel(ctx)
@@ -114,7 +114,7 @@ func prepareAddDefaultEmailTemplate(
return nil, err
}
if writeModel.State == domain.PolicyStateActive {
- return nil, caos_errs.ThrowAlreadyExists(nil, "INSTANCE-5n8fs", "Errors.Instance.MailTemplate.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "INSTANCE-5n8fs", "Errors.Instance.MailTemplate.AlreadyExists")
}
return []eventstore.Command{
instance.NewMailTemplateAddedEvent(ctx, &a.Aggregate,
diff --git a/internal/command/instance_policy_mail_template_test.go b/internal/command/instance_policy_mail_template_test.go
index 3f90b1bf59..4a5d9cf9a0 100644
--- a/internal/command/instance_policy_mail_template_test.go
+++ b/internal/command/instance_policy_mail_template_test.go
@@ -7,11 +7,11 @@ import (
"github.com/stretchr/testify/assert"
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/policy"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddDefaultMailTemplatePolicy(t *testing.T) {
@@ -44,7 +44,7 @@ func TestCommandSide_AddDefaultMailTemplatePolicy(t *testing.T) {
policy: &domain.MailTemplate{},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -69,7 +69,7 @@ func TestCommandSide_AddDefaultMailTemplatePolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -154,7 +154,7 @@ func TestCommandSide_ChangeDefaultMailTemplatePolicy(t *testing.T) {
policy: &domain.MailTemplate{},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -172,7 +172,7 @@ func TestCommandSide_ChangeDefaultMailTemplatePolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -197,7 +197,7 @@ func TestCommandSide_ChangeDefaultMailTemplatePolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
diff --git a/internal/command/instance_policy_notification.go b/internal/command/instance_policy_notification.go
index c3a6574357..3d9f271499 100644
--- a/internal/command/instance_policy_notification.go
+++ b/internal/command/instance_policy_notification.go
@@ -5,9 +5,9 @@ import (
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddDefaultNotificationPolicy(ctx context.Context, resourceOwner string, passwordChange bool) (*domain.ObjectDetails, error) {
@@ -52,7 +52,7 @@ func prepareAddDefaultNotificationPolicy(
return nil, err
}
if writeModel.State == domain.PolicyStateActive {
- return nil, caos_errs.ThrowAlreadyExists(nil, "INSTANCE-xpo1bj", "Errors.Instance.NotificationPolicy.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "INSTANCE-xpo1bj", "Errors.Instance.NotificationPolicy.AlreadyExists")
}
return []eventstore.Command{
instance.NewNotificationPolicyAddedEvent(ctx, &a.Aggregate, passwordChange),
@@ -78,11 +78,11 @@ func prepareChangeDefaultNotificationPolicy(
}
if writeModel.State == domain.PolicyStateUnspecified || writeModel.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "INSTANCE-x891na", "Errors.IAM.NotificationPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-x891na", "Errors.IAM.NotificationPolicy.NotFound")
}
change, hasChanged := writeModel.NewChangedEvent(ctx, &a.Aggregate, passwordChange)
if !hasChanged {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "INSTANCE-29x02n", "Errors.IAM.NotificationPolicy.NotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "INSTANCE-29x02n", "Errors.IAM.NotificationPolicy.NotChanged")
}
return []eventstore.Command{
change,
diff --git a/internal/command/instance_policy_notification_test.go b/internal/command/instance_policy_notification_test.go
index 339e28fd6e..f864e42751 100644
--- a/internal/command/instance_policy_notification_test.go
+++ b/internal/command/instance_policy_notification_test.go
@@ -7,10 +7,10 @@ import (
"github.com/stretchr/testify/assert"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/policy"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddDefaultNotificationPolicy(t *testing.T) {
@@ -53,7 +53,7 @@ func TestCommandSide_AddDefaultNotificationPolicy(t *testing.T) {
passwordChange: true,
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -159,7 +159,7 @@ func TestCommandSide_ChangeDefaultNotificationPolicy(t *testing.T) {
passwordChange: true,
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -183,7 +183,7 @@ func TestCommandSide_ChangeDefaultNotificationPolicy(t *testing.T) {
passwordChange: true,
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
diff --git a/internal/command/instance_policy_password_age.go b/internal/command/instance_policy_password_age.go
index e1044c269c..400d003bb3 100644
--- a/internal/command/instance_policy_password_age.go
+++ b/internal/command/instance_policy_password_age.go
@@ -6,10 +6,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddDefaultPasswordAgePolicy(ctx context.Context, expireWarnDays, maxAgeDays uint64) (*domain.ObjectDetails, error) {
@@ -31,13 +31,13 @@ func (c *Commands) ChangeDefaultPasswordAgePolicy(ctx context.Context, policy *d
return nil, err
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "INSTANCE-0oPew", "Errors.IAM.PasswordAgePolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-0oPew", "Errors.IAM.PasswordAgePolicy.NotFound")
}
instanceAgg := InstanceAggregateFromWriteModel(&existingPolicy.PasswordAgePolicyWriteModel.WriteModel)
changedEvent, hasChanged := existingPolicy.NewChangedEvent(ctx, instanceAgg, policy.ExpireWarnDays, policy.MaxAgeDays)
if !hasChanged {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "INSTANCE-180sf", "Errors.IAM.PasswordAgePolicy.NotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "INSTANCE-180sf", "Errors.IAM.PasswordAgePolicy.NotChanged")
}
pushedEvents, err := c.eventstore.Push(ctx, changedEvent)
@@ -81,7 +81,7 @@ func prepareAddDefaultPasswordAgePolicy(
return nil, err
}
if writeModel.State == domain.PolicyStateActive {
- return nil, caos_errs.ThrowAlreadyExists(nil, "INSTANCE-Lk0dS", "Errors.Instance.PasswordAgePolicy.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "INSTANCE-Lk0dS", "Errors.Instance.PasswordAgePolicy.AlreadyExists")
}
return []eventstore.Command{
instance.NewPasswordAgePolicyAddedEvent(ctx, &a.Aggregate,
diff --git a/internal/command/instance_policy_password_age_test.go b/internal/command/instance_policy_password_age_test.go
index e1850fc353..6380325edd 100644
--- a/internal/command/instance_policy_password_age_test.go
+++ b/internal/command/instance_policy_password_age_test.go
@@ -8,11 +8,11 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/policy"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddDefaultPasswordAgePolicy(t *testing.T) {
@@ -56,7 +56,7 @@ func TestCommandSide_AddDefaultPasswordAgePolicy(t *testing.T) {
expireWarnDays: 10,
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -139,7 +139,7 @@ func TestCommandSide_ChangeDefaultPasswordAgePolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -166,7 +166,7 @@ func TestCommandSide_ChangeDefaultPasswordAgePolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
diff --git a/internal/command/instance_policy_password_complexity.go b/internal/command/instance_policy_password_complexity.go
index c2af1064b5..cad220eae0 100644
--- a/internal/command/instance_policy_password_complexity.go
+++ b/internal/command/instance_policy_password_complexity.go
@@ -6,10 +6,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddDefaultPasswordComplexityPolicy(ctx context.Context, minLength uint64, hasLowercase, hasUppercase, hasNumber, hasSymbol bool) (*domain.ObjectDetails, error) {
@@ -35,13 +35,13 @@ func (c *Commands) ChangeDefaultPasswordComplexityPolicy(ctx context.Context, po
return nil, err
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "INSTANCE-0oPew", "Errors.IAM.PasswordComplexityPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-0oPew", "Errors.IAM.PasswordComplexityPolicy.NotFound")
}
instanceAgg := InstanceAggregateFromWriteModel(&existingPolicy.PasswordComplexityPolicyWriteModel.WriteModel)
changedEvent, hasChanged := existingPolicy.NewChangedEvent(ctx, instanceAgg, policy.MinLength, policy.HasLowercase, policy.HasUppercase, policy.HasNumber, policy.HasSymbol)
if !hasChanged {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "INSTANCE-9jlsf", "Errors.IAM.PasswordComplexityPolicy.NotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "INSTANCE-9jlsf", "Errors.IAM.PasswordComplexityPolicy.NotChanged")
}
pushedEvents, err := c.eventstore.Push(ctx, changedEvent)
if err != nil {
@@ -64,7 +64,7 @@ func prepareAddDefaultPasswordComplexityPolicy(
) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if minLength == 0 || minLength > 72 {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INSTANCE-Lsp0e", "Errors.Instance.PasswordComplexityPolicy.MinLengthNotAllowed")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INSTANCE-Lsp0e", "Errors.Instance.PasswordComplexityPolicy.MinLengthNotAllowed")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
writeModel := NewInstancePasswordComplexityPolicyWriteModel(ctx)
@@ -77,7 +77,7 @@ func prepareAddDefaultPasswordComplexityPolicy(
return nil, err
}
if writeModel.State == domain.PolicyStateActive {
- return nil, caos_errs.ThrowAlreadyExists(nil, "INSTANCE-Lk0dS", "Errors.Instance.PasswordComplexityPolicy.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "INSTANCE-Lk0dS", "Errors.Instance.PasswordComplexityPolicy.AlreadyExists")
}
return []eventstore.Command{
instance.NewPasswordComplexityPolicyAddedEvent(ctx, &a.Aggregate,
@@ -99,7 +99,7 @@ func (c *Commands) getDefaultPasswordComplexityPolicy(ctx context.Context) (*dom
return nil, err
}
if !policyWriteModel.State.Exists() {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INSTANCE-M0gsf", "Errors.IAM.PasswordComplexityPolicy.NotFound")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INSTANCE-M0gsf", "Errors.IAM.PasswordComplexityPolicy.NotFound")
}
policy := writeModelToPasswordComplexityPolicy(&policyWriteModel.PasswordComplexityPolicyWriteModel)
policy.Default = true
diff --git a/internal/command/instance_policy_password_complexity_test.go b/internal/command/instance_policy_password_complexity_test.go
index f696341f2d..0c10c0c7f7 100644
--- a/internal/command/instance_policy_password_complexity_test.go
+++ b/internal/command/instance_policy_password_complexity_test.go
@@ -8,11 +8,11 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/policy"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddDefaultPasswordComplexityPolicy(t *testing.T) {
@@ -53,7 +53,7 @@ func TestCommandSide_AddDefaultPasswordComplexityPolicy(t *testing.T) {
hasSymbol: true,
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -81,7 +81,7 @@ func TestCommandSide_AddDefaultPasswordComplexityPolicy(t *testing.T) {
hasSymbol: true,
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -169,7 +169,7 @@ func TestCommandSide_ChangeDefaultPasswordComplexityPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -191,7 +191,7 @@ func TestCommandSide_ChangeDefaultPasswordComplexityPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -221,7 +221,7 @@ func TestCommandSide_ChangeDefaultPasswordComplexityPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
diff --git a/internal/command/instance_policy_password_lockout.go b/internal/command/instance_policy_password_lockout.go
index 5b0b95949f..2ed88b997f 100644
--- a/internal/command/instance_policy_password_lockout.go
+++ b/internal/command/instance_policy_password_lockout.go
@@ -6,10 +6,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddDefaultLockoutPolicy(ctx context.Context, maxAttempts uint64, showLockoutFailure bool) (*domain.ObjectDetails, error) {
@@ -31,13 +31,13 @@ func (c *Commands) ChangeDefaultLockoutPolicy(ctx context.Context, policy *domai
return nil, err
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "INSTANCE-0oPew", "Errors.IAM.LockoutPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-0oPew", "Errors.IAM.LockoutPolicy.NotFound")
}
instanceAgg := InstanceAggregateFromWriteModel(&existingPolicy.LockoutPolicyWriteModel.WriteModel)
changedEvent, hasChanged := existingPolicy.NewChangedEvent(ctx, instanceAgg, policy.MaxPasswordAttempts, policy.ShowLockOutFailures)
if !hasChanged {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "INSTANCE-0psjF", "Errors.IAM.LockoutPolicy.NotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "INSTANCE-0psjF", "Errors.IAM.LockoutPolicy.NotChanged")
}
pushedEvents, err := c.eventstore.Push(ctx, changedEvent)
@@ -80,7 +80,7 @@ func prepareAddDefaultLockoutPolicy(
return nil, err
}
if writeModel.State == domain.PolicyStateActive {
- return nil, caos_errs.ThrowAlreadyExists(nil, "INSTANCE-0olDf", "Errors.Instance.LockoutPolicy.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "INSTANCE-0olDf", "Errors.Instance.LockoutPolicy.AlreadyExists")
}
return []eventstore.Command{
instance.NewLockoutPolicyAddedEvent(ctx, &a.Aggregate, maxAttempts, showLockoutFailure),
diff --git a/internal/command/instance_policy_password_lockout_test.go b/internal/command/instance_policy_password_lockout_test.go
index 1eb0a651ab..02d5ab488d 100644
--- a/internal/command/instance_policy_password_lockout_test.go
+++ b/internal/command/instance_policy_password_lockout_test.go
@@ -8,11 +8,11 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/policy"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddDefaultLockoutPolicy(t *testing.T) {
@@ -56,7 +56,7 @@ func TestCommandSide_AddDefaultLockoutPolicy(t *testing.T) {
showLockOutFailures: true,
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -139,7 +139,7 @@ func TestCommandSide_ChangeDefaultLockoutPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -166,7 +166,7 @@ func TestCommandSide_ChangeDefaultLockoutPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
diff --git a/internal/command/instance_policy_privacy.go b/internal/command/instance_policy_privacy.go
index 5768108475..f239bad144 100644
--- a/internal/command/instance_policy_privacy.go
+++ b/internal/command/instance_policy_privacy.go
@@ -6,10 +6,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddDefaultPrivacyPolicy(ctx context.Context, tosLink, privacyLink, helpLink string, supportEmail domain.EmailAddress) (*domain.ObjectDetails, error) {
@@ -38,13 +38,13 @@ func (c *Commands) ChangeDefaultPrivacyPolicy(ctx context.Context, policy *domai
return nil, err
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "INSTANCE-0oPew", "Errors.IAM.PrivacyPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INSTANCE-0oPew", "Errors.IAM.PrivacyPolicy.NotFound")
}
instanceAgg := InstanceAggregateFromWriteModel(&existingPolicy.PrivacyPolicyWriteModel.WriteModel)
changedEvent, hasChanged := existingPolicy.NewChangedEvent(ctx, instanceAgg, policy.TOSLink, policy.PrivacyLink, policy.HelpLink, policy.SupportEmail)
if !hasChanged {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "INSTANCE-9jJfs", "Errors.IAM.PrivacyPolicy.NotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "INSTANCE-9jJfs", "Errors.IAM.PrivacyPolicy.NotChanged")
}
pushedEvents, err := c.eventstore.Push(ctx, changedEvent)
if err != nil {
@@ -76,7 +76,7 @@ func (c *Commands) getDefaultPrivacyPolicy(ctx context.Context) (*domain.Privacy
return nil, err
}
if !policyWriteModel.State.Exists() {
- return nil, caos_errs.ThrowInvalidArgument(nil, "INSTANCE-559os", "Errors.IAM.PrivacyPolicy.NotFound")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INSTANCE-559os", "Errors.IAM.PrivacyPolicy.NotFound")
}
policy := writeModelToPrivacyPolicy(&policyWriteModel.PrivacyPolicyWriteModel)
policy.Default = true
@@ -108,7 +108,7 @@ func prepareAddDefaultPrivacyPolicy(
return nil, err
}
if writeModel.State == domain.PolicyStateActive {
- return nil, caos_errs.ThrowAlreadyExists(nil, "INSTANCE-M00rJ", "Errors.Instance.PrivacyPolicy.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "INSTANCE-M00rJ", "Errors.Instance.PrivacyPolicy.AlreadyExists")
}
return []eventstore.Command{
instance.NewPrivacyPolicyAddedEvent(ctx, &a.Aggregate, tosLink, privacyLink, helpLink, supportEmail),
diff --git a/internal/command/instance_policy_privacy_test.go b/internal/command/instance_policy_privacy_test.go
index ad7bbfb15c..a5b8932b38 100644
--- a/internal/command/instance_policy_privacy_test.go
+++ b/internal/command/instance_policy_privacy_test.go
@@ -8,11 +8,11 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/policy"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddDefaultPrivacyPolicy(t *testing.T) {
@@ -62,7 +62,7 @@ func TestCommandSide_AddDefaultPrivacyPolicy(t *testing.T) {
supportEmail: "support@example.com",
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -110,7 +110,7 @@ func TestCommandSide_AddDefaultPrivacyPolicy(t *testing.T) {
supportEmail: "wrong email",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -199,7 +199,7 @@ func TestCommandSide_ChangeDefaultPrivacyPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -230,7 +230,7 @@ func TestCommandSide_ChangeDefaultPrivacyPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -250,7 +250,7 @@ func TestCommandSide_ChangeDefaultPrivacyPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
diff --git a/internal/command/instance_settings.go b/internal/command/instance_settings.go
index 497bc99e14..93bbdc8314 100644
--- a/internal/command/instance_settings.go
+++ b/internal/command/instance_settings.go
@@ -7,9 +7,9 @@ import (
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddSecretGeneratorConfig(ctx context.Context, typ domain.SecretGeneratorType, config *crypto.GeneratorConfig) (*domain.ObjectDetails, error) {
@@ -33,10 +33,10 @@ func (c *Commands) AddSecretGeneratorConfig(ctx context.Context, typ domain.Secr
func prepareAddSecretGeneratorConfig(a *instance.Aggregate, typ domain.SecretGeneratorType, config *crypto.GeneratorConfig) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if !typ.Valid() {
- return nil, errors.ThrowInvalidArgument(nil, "V2-FGqVj", "Errors.InvalidArgument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "V2-FGqVj", "Errors.InvalidArgument")
}
if config.Length < 1 {
- return nil, errors.ThrowInvalidArgument(nil, "V2-jEqCt", "Errors.InvalidArgument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "V2-jEqCt", "Errors.InvalidArgument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
writeModel := NewInstanceSecretGeneratorConfigWriteModel(ctx, typ)
@@ -50,7 +50,7 @@ func prepareAddSecretGeneratorConfig(a *instance.Aggregate, typ domain.SecretGen
}
if writeModel.State == domain.SecretGeneratorStateActive {
- return nil, errors.ThrowAlreadyExists(nil, "V2-6CqKo", "Errors.SecretGenerator.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "V2-6CqKo", "Errors.SecretGenerator.AlreadyExists")
}
return []eventstore.Command{
@@ -72,7 +72,7 @@ func prepareAddSecretGeneratorConfig(a *instance.Aggregate, typ domain.SecretGen
func (c *Commands) ChangeSecretGeneratorConfig(ctx context.Context, generatorType domain.SecretGeneratorType, config *crypto.GeneratorConfig) (*domain.ObjectDetails, error) {
if generatorType == domain.SecretGeneratorTypeUnspecified {
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-33k9f", "Errors.SecretGenerator.TypeMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-33k9f", "Errors.SecretGenerator.TypeMissing")
}
generatorWriteModel, err := c.getSecretConfig(ctx, generatorType)
@@ -114,7 +114,7 @@ func (c *Commands) ChangeSecretGeneratorConfig(ctx context.Context, generatorTyp
return nil, err
}
if !hasChanged {
- return nil, errors.ThrowPreconditionFailed(nil, "COMMAND-m0o3f", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-m0o3f", "Errors.NoChangesFound")
}
if err = c.pushAppendAndReduce(ctx, generatorWriteModel, changedEvent); err != nil {
return nil, err
@@ -124,7 +124,7 @@ func (c *Commands) ChangeSecretGeneratorConfig(ctx context.Context, generatorTyp
func (c *Commands) RemoveSecretGeneratorConfig(ctx context.Context, generatorType domain.SecretGeneratorType) (*domain.ObjectDetails, error) {
if generatorType == domain.SecretGeneratorTypeUnspecified {
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-2j9lw", "Errors.SecretGenerator.TypeMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-2j9lw", "Errors.SecretGenerator.TypeMissing")
}
generatorWriteModel, err := c.getSecretConfig(ctx, generatorType)
@@ -132,7 +132,7 @@ func (c *Commands) RemoveSecretGeneratorConfig(ctx context.Context, generatorTyp
return nil, err
}
if generatorWriteModel.State == domain.SecretGeneratorStateUnspecified || generatorWriteModel.State == domain.SecretGeneratorStateRemoved {
- return nil, errors.ThrowNotFound(nil, "COMMAND-b8les", "Errors.SecretGenerator.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-b8les", "Errors.SecretGenerator.NotFound")
}
instanceAgg := InstanceAggregateFromWriteModel(&generatorWriteModel.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, instance.NewSecretGeneratorRemovedEvent(ctx, instanceAgg, generatorType))
diff --git a/internal/command/instance_settings_test.go b/internal/command/instance_settings_test.go
index 19ca9c5d43..ddb82f709b 100644
--- a/internal/command/instance_settings_test.go
+++ b/internal/command/instance_settings_test.go
@@ -10,9 +10,9 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddSecretGenerator(t *testing.T) {
@@ -47,7 +47,7 @@ func TestCommandSide_AddSecretGenerator(t *testing.T) {
generatorType: domain.SecretGeneratorTypeUnspecified,
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -84,7 +84,7 @@ func TestCommandSide_AddSecretGenerator(t *testing.T) {
generatorType: domain.SecretGeneratorTypeInitCode,
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -177,7 +177,7 @@ func TestCommandSide_ChangeSecretGenerator(t *testing.T) {
generatorType: domain.SecretGeneratorTypeUnspecified,
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -309,7 +309,7 @@ func TestCommandSide_ChangeSecretGenerator(t *testing.T) {
generatorType: domain.SecretGeneratorTypeInitCode,
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -413,7 +413,7 @@ func TestCommandSide_RemoveSecretGenerator(t *testing.T) {
generatorType: domain.SecretGeneratorTypeUnspecified,
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -429,7 +429,7 @@ func TestCommandSide_RemoveSecretGenerator(t *testing.T) {
generatorType: domain.SecretGeneratorTypeInitCode,
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -464,7 +464,7 @@ func TestCommandSide_RemoveSecretGenerator(t *testing.T) {
generatorType: domain.SecretGeneratorTypeInitCode,
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
diff --git a/internal/command/instance_test.go b/internal/command/instance_test.go
index 18007637d9..8f4f5b68e3 100644
--- a/internal/command/instance_test.go
+++ b/internal/command/instance_test.go
@@ -8,9 +8,9 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_UpdateInstance(t *testing.T) {
@@ -43,7 +43,7 @@ func TestCommandSide_UpdateInstance(t *testing.T) {
name: "",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -59,7 +59,7 @@ func TestCommandSide_UpdateInstance(t *testing.T) {
name: "INSTANCE_CHANGED",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -90,7 +90,7 @@ func TestCommandSide_UpdateInstance(t *testing.T) {
name: "INSTANCE_CHANGED",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -114,7 +114,7 @@ func TestCommandSide_UpdateInstance(t *testing.T) {
name: "INSTANCE",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -200,7 +200,7 @@ func TestCommandSide_RemoveInstance(t *testing.T) {
instanceID: "INSTANCE",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -231,7 +231,7 @@ func TestCommandSide_RemoveInstance(t *testing.T) {
instanceID: "INSTANCE",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
diff --git a/internal/command/limits.go b/internal/command/limits.go
index ca4fb0be49..2bfa90dc8a 100644
--- a/internal/command/limits.go
+++ b/internal/command/limits.go
@@ -7,9 +7,9 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/limits"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type SetLimits struct {
@@ -62,7 +62,7 @@ func (c *Commands) ResetLimits(ctx context.Context, resourceOwner string) (*doma
return nil, err
}
if wm.AggregateID == "" {
- return nil, errors.ThrowNotFound(nil, "COMMAND-9JToT", "Errors.Limits.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-9JToT", "Errors.Limits.NotFound")
}
aggregate := limits.NewAggregate(wm.AggregateID, instanceId, resourceOwner)
events := []eventstore.Command{limits.NewResetEvent(ctx, &aggregate.Aggregate)}
@@ -85,7 +85,7 @@ func (c *Commands) getLimitsWriteModel(ctx context.Context, instanceId, resource
func (c *Commands) SetLimitsCommand(a *limits.Aggregate, wm *limitsWriteModel, setLimits *SetLimits) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if setLimits == nil || setLimits.AuditLogRetention == nil {
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-4M9vs", "Errors.Limits.NoneSpecified")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-4M9vs", "Errors.Limits.NoneSpecified")
}
return func(ctx context.Context, _ preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
changes := wm.NewChanges(setLimits)
diff --git a/internal/command/limits_test.go b/internal/command/limits_test.go
index 1b315ca130..56ef181d70 100644
--- a/internal/command/limits_test.go
+++ b/internal/command/limits_test.go
@@ -11,11 +11,11 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- caos_errors "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/id"
id_mock "github.com/zitadel/zitadel/internal/id/mock"
"github.com/zitadel/zitadel/internal/repository/limits"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestLimits_SetLimits(t *testing.T) {
@@ -217,7 +217,7 @@ func TestLimits_ResetLimits(t *testing.T) {
},
res: res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowNotFound(nil, "COMMAND-9JToT", "Errors.Limits.NotFound"))
+ return errors.Is(err, zerrors.ThrowNotFound(nil, "COMMAND-9JToT", "Errors.Limits.NotFound"))
},
},
},
@@ -251,7 +251,7 @@ func TestLimits_ResetLimits(t *testing.T) {
},
res: res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowNotFound(nil, "COMMAND-9JToT", "Errors.Limits.NotFound"))
+ return errors.Is(err, zerrors.ThrowNotFound(nil, "COMMAND-9JToT", "Errors.Limits.NotFound"))
},
},
},
diff --git a/internal/command/main_test.go b/internal/command/main_test.go
index 6c34dfa1e9..649a0085d9 100644
--- a/internal/command/main_test.go
+++ b/internal/command/main_test.go
@@ -14,12 +14,12 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/repository"
"github.com/zitadel/zitadel/internal/eventstore/repository/mock"
action_repo "github.com/zitadel/zitadel/internal/repository/action"
"github.com/zitadel/zitadel/internal/repository/authrequest"
+ "github.com/zitadel/zitadel/internal/repository/deviceauth"
"github.com/zitadel/zitadel/internal/repository/feature"
"github.com/zitadel/zitadel/internal/repository/idpintent"
iam_repo "github.com/zitadel/zitadel/internal/repository/instance"
@@ -33,6 +33,7 @@ import (
"github.com/zitadel/zitadel/internal/repository/session"
usr_repo "github.com/zitadel/zitadel/internal/repository/user"
"github.com/zitadel/zitadel/internal/repository/usergrant"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type expect func(mockRepository *mock.MockRepository)
@@ -63,6 +64,7 @@ func eventstoreExpect(t *testing.T, expects ...expect) *eventstore.Eventstore {
limits.RegisterEventMappers(es)
restrictions.RegisterEventMappers(es)
feature.RegisterEventMappers(es)
+ deviceauth.RegisterEventMappers(es)
return es
}
@@ -95,7 +97,13 @@ func eventPusherToEvents(eventsPushes ...eventstore.Command) []*repository.Event
func expectPush(commands ...eventstore.Command) expect {
return func(m *mock.MockRepository) {
- m.ExpectPush(commands)
+ m.ExpectPush(commands, 0)
+ }
+}
+
+func expectPushSlow(sleep time.Duration, commands ...eventstore.Command) expect {
+ return func(m *mock.MockRepository) {
+ m.ExpectPush(commands, sleep)
}
}
@@ -212,7 +220,7 @@ func (m *mockInstance) ConsoleApplicationID() string {
}
func (m *mockInstance) DefaultLanguage() language.Tag {
- return language.English
+ return AllowedLanguage
}
func (m *mockInstance) DefaultOrganisationID() string {
@@ -239,7 +247,7 @@ func newMockPermissionCheckAllowed() domain.PermissionCheck {
func newMockPermissionCheckNotAllowed() domain.PermissionCheck {
return func(ctx context.Context, permission, orgID, resourceID string) (err error) {
- return errors.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied")
+ return zerrors.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied")
}
}
@@ -250,7 +258,7 @@ func newMockTokenVerifierValid() func(ctx context.Context, sessionToken, session
}
func newMockTokenVerifierInvalid() func(ctx context.Context, sessionToken, sessionID, tokenID string) (err error) {
return func(ctx context.Context, sessionToken, sessionID, tokenID string) (err error) {
- return errors.ThrowPermissionDenied(nil, "COMMAND-sGr42", "Errors.Session.Token.Invalid")
+ return zerrors.ThrowPermissionDenied(nil, "COMMAND-sGr42", "Errors.Session.Token.Invalid")
}
}
diff --git a/internal/command/oidc_session.go b/internal/command/oidc_session.go
index 5854423110..afc4c5b5ae 100644
--- a/internal/command/oidc_session.go
+++ b/internal/command/oidc_session.go
@@ -11,12 +11,12 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/crypto"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/id"
"github.com/zitadel/zitadel/internal/repository/authrequest"
"github.com/zitadel/zitadel/internal/repository/oidcsession"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -88,7 +88,7 @@ func (c *Commands) OIDCSessionByRefreshToken(ctx context.Context, refreshToken s
writeModel := NewOIDCSessionWriteModel(oidcSessionID, "")
err = c.eventstore.FilterToQueryReducer(ctx, writeModel)
if err != nil {
- return nil, caos_errs.ThrowPreconditionFailed(err, "OIDCS-SAF31", "Errors.OIDCSession.RefreshTokenInvalid")
+ return nil, zerrors.ThrowPreconditionFailed(err, "OIDCS-SAF31", "Errors.OIDCSession.RefreshTokenInvalid")
}
if err = writeModel.CheckRefreshToken(refreshTokenID); err != nil {
return nil, err
@@ -99,7 +99,7 @@ func (c *Commands) OIDCSessionByRefreshToken(ctx context.Context, refreshToken s
func oidcSessionTokenIDsFromToken(token string) (oidcSessionID, refreshTokenID, accessTokenID string, err error) {
split := strings.Split(token, TokenDelimiter)
if len(split) != 2 {
- return "", "", "", caos_errs.ThrowPreconditionFailed(nil, "OIDCS-S87kl", "Errors.OIDCSession.Token.Invalid")
+ return "", "", "", zerrors.ThrowPreconditionFailed(nil, "OIDCS-S87kl", "Errors.OIDCSession.Token.Invalid")
}
if strings.HasPrefix(split[1], RefreshTokenPrefix) {
return split[0], split[1], "", nil
@@ -107,7 +107,7 @@ func oidcSessionTokenIDsFromToken(token string) (oidcSessionID, refreshTokenID,
if strings.HasPrefix(split[1], AccessTokenPrefix) {
return split[0], "", split[1], nil
}
- return "", "", "", caos_errs.ThrowPreconditionFailed(nil, "OIDCS-S87kl", "Errors.OIDCSession.Token.Invalid")
+ return "", "", "", zerrors.ThrowPreconditionFailed(nil, "OIDCS-S87kl", "Errors.OIDCSession.Token.Invalid")
}
// RevokeOIDCSessionToken revokes an access_token or refresh_token
@@ -124,7 +124,7 @@ func (c *Commands) RevokeOIDCSessionToken(ctx context.Context, token, clientID s
writeModel := NewOIDCSessionWriteModel(oidcSessionID, "")
err = c.eventstore.FilterToQueryReducer(ctx, writeModel)
if err != nil {
- return caos_errs.ThrowInternal(err, "OIDCS-NB3t2", "Errors.Internal")
+ return zerrors.ThrowInternal(err, "OIDCS-NB3t2", "Errors.Internal")
}
if err = writeModel.CheckClient(clientID); err != nil {
return err
@@ -198,7 +198,7 @@ func (c *Commands) getResourceOwnerOfSessionUser(ctx context.Context, userID, in
AggregateIDs(userID).
Builder())
if err != nil || len(events) != 1 {
- return "", caos_errs.ThrowInternal(err, "OIDCS-sferh", "Errors.Internal")
+ return "", zerrors.ThrowInternal(err, "OIDCS-sferh", "Errors.Internal")
}
return events[0].Aggregate().ResourceOwner, nil
}
@@ -219,7 +219,7 @@ func (c *Commands) decryptRefreshToken(refreshToken string) (refreshTokenID stri
func parseRefreshToken(refreshToken string) (oidcSessionID, refreshTokenID string, err error) {
split := strings.Split(refreshToken, TokenDelimiter)
if len(split) < 2 || !strings.HasPrefix(split[1], RefreshTokenPrefix) {
- return "", "", caos_errs.ThrowPreconditionFailed(nil, "OIDCS-JOI23", "Errors.OIDCSession.RefreshTokenInvalid")
+ return "", "", zerrors.ThrowPreconditionFailed(nil, "OIDCS-JOI23", "Errors.OIDCSession.RefreshTokenInvalid")
}
// the oidc library requires that every token has the format of
:
// the V2 tokens don't use the userID anymore, so let's just remove it
diff --git a/internal/command/oidc_session_model.go b/internal/command/oidc_session_model.go
index 94725d933e..64f9d5490f 100644
--- a/internal/command/oidc_session_model.go
+++ b/internal/command/oidc_session_model.go
@@ -4,9 +4,9 @@ import (
"time"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/oidcsession"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type OIDCSessionWriteModel struct {
@@ -128,27 +128,27 @@ func (wm *OIDCSessionWriteModel) reduceRefreshTokenRevoked(e *oidcsession.Refres
func (wm *OIDCSessionWriteModel) CheckRefreshToken(refreshTokenID string) error {
if wm.State != domain.OIDCSessionStateActive {
- return caos_errs.ThrowPreconditionFailed(nil, "OIDCS-s3hjk", "Errors.OIDCSession.RefreshTokenInvalid")
+ return zerrors.ThrowPreconditionFailed(nil, "OIDCS-s3hjk", "Errors.OIDCSession.RefreshTokenInvalid")
}
if wm.RefreshTokenID != refreshTokenID {
- return caos_errs.ThrowPreconditionFailed(nil, "OIDCS-28ubl", "Errors.OIDCSession.RefreshTokenInvalid")
+ return zerrors.ThrowPreconditionFailed(nil, "OIDCS-28ubl", "Errors.OIDCSession.RefreshTokenInvalid")
}
now := time.Now()
if wm.RefreshTokenExpiration.Before(now) || wm.RefreshTokenIdleExpiration.Before(now) {
- return caos_errs.ThrowPreconditionFailed(nil, "OIDCS-3jt2w", "Errors.OIDCSession.RefreshTokenInvalid")
+ return zerrors.ThrowPreconditionFailed(nil, "OIDCS-3jt2w", "Errors.OIDCSession.RefreshTokenInvalid")
}
return nil
}
func (wm *OIDCSessionWriteModel) CheckAccessToken(accessTokenID string) error {
if wm.State != domain.OIDCSessionStateActive {
- return caos_errs.ThrowPreconditionFailed(nil, "OIDCS-KL2pk", "Errors.OIDCSession.Token.Invalid")
+ return zerrors.ThrowPreconditionFailed(nil, "OIDCS-KL2pk", "Errors.OIDCSession.Token.Invalid")
}
if wm.AccessTokenID != accessTokenID {
- return caos_errs.ThrowPreconditionFailed(nil, "OIDCS-JLKW2", "Errors.OIDCSession.Token.Invalid")
+ return zerrors.ThrowPreconditionFailed(nil, "OIDCS-JLKW2", "Errors.OIDCSession.Token.Invalid")
}
if wm.AccessTokenExpiration.Before(time.Now()) {
- return caos_errs.ThrowPreconditionFailed(nil, "OIDCS-3j3md", "Errors.OIDCSession.Token.Invalid")
+ return zerrors.ThrowPreconditionFailed(nil, "OIDCS-3j3md", "Errors.OIDCSession.Token.Invalid")
}
return nil
}
@@ -159,7 +159,7 @@ func (wm *OIDCSessionWriteModel) CheckClient(clientID string) error {
return nil
}
}
- return caos_errs.ThrowPreconditionFailed(nil, "OIDCS-SKjl3", "Errors.OIDCSession.InvalidClient")
+ return zerrors.ThrowPreconditionFailed(nil, "OIDCS-SKjl3", "Errors.OIDCSession.InvalidClient")
}
func (wm *OIDCSessionWriteModel) OIDCRefreshTokenID(refreshTokenID string) string {
diff --git a/internal/command/oidc_session_test.go b/internal/command/oidc_session_test.go
index 68d97dbdf3..d43aab0d8e 100644
--- a/internal/command/oidc_session_test.go
+++ b/internal/command/oidc_session_test.go
@@ -16,7 +16,6 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/id"
"github.com/zitadel/zitadel/internal/id/mock"
@@ -24,6 +23,7 @@ import (
"github.com/zitadel/zitadel/internal/repository/oidcsession"
"github.com/zitadel/zitadel/internal/repository/session"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -67,7 +67,7 @@ func TestCommands_AddOIDCSessionAccessToken(t *testing.T) {
authRequestID: "V2_authRequestID",
},
res{
- err: caos_errs.ThrowPreconditionFailed(nil, "AUTHR-SF2r2", "Errors.AuthRequest.NotAuthenticated"),
+ err: zerrors.ThrowPreconditionFailed(nil, "AUTHR-SF2r2", "Errors.AuthRequest.NotAuthenticated"),
},
},
{
@@ -119,7 +119,7 @@ func TestCommands_AddOIDCSessionAccessToken(t *testing.T) {
authRequestID: "V2_authRequestID",
},
res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Flk38", "Errors.Session.NotExisting"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-Flk38", "Errors.Session.NotExisting"),
},
},
{
@@ -268,7 +268,7 @@ func TestCommands_AddOIDCSessionRefreshAndAccessToken(t *testing.T) {
authRequestID: "V2_authRequestID",
},
res{
- err: caos_errs.ThrowPreconditionFailed(nil, "AUTHR-SF2r2", "Errors.AuthRequest.NotAuthenticated"),
+ err: zerrors.ThrowPreconditionFailed(nil, "AUTHR-SF2r2", "Errors.AuthRequest.NotAuthenticated"),
},
},
{
@@ -320,7 +320,7 @@ func TestCommands_AddOIDCSessionRefreshAndAccessToken(t *testing.T) {
authRequestID: "V2_authRequestID",
},
res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Flk38", "Errors.Session.NotExisting"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-Flk38", "Errors.Session.NotExisting"),
},
},
{
@@ -478,7 +478,7 @@ func TestCommands_ExchangeOIDCSessionRefreshAndAccessToken(t *testing.T) {
refreshToken: "aW52YWxpZA", // invalid
},
res{
- err: caos_errs.ThrowPreconditionFailed(nil, "OIDCS-JOI23", "Errors.OIDCSession.RefreshTokenInvalid"),
+ err: zerrors.ThrowPreconditionFailed(nil, "OIDCS-JOI23", "Errors.OIDCSession.RefreshTokenInvalid"),
},
},
{
@@ -495,7 +495,7 @@ func TestCommands_ExchangeOIDCSessionRefreshAndAccessToken(t *testing.T) {
refreshToken: "VjJfb2lkY1Nlc3Npb25JRC1ydF9yZWZyZXNoVG9rZW5JRDp1c2VySUQ", //V2_oidcSessionID:rt_refreshTokenID:userID
},
res{
- err: caos_errs.ThrowPreconditionFailed(nil, "OIDCS-s3hjk", "Errors.OIDCSession.RefreshTokenInvalid"),
+ err: zerrors.ThrowPreconditionFailed(nil, "OIDCS-s3hjk", "Errors.OIDCSession.RefreshTokenInvalid"),
},
},
{
@@ -521,7 +521,7 @@ func TestCommands_ExchangeOIDCSessionRefreshAndAccessToken(t *testing.T) {
refreshToken: "VjJfb2lkY1Nlc3Npb25JRC1ydF9yZWZyZXNoVG9rZW5JRDp1c2VySUQ", //V2_oidcSessionID:rt_refreshTokenID:userID
},
res{
- err: caos_errs.ThrowPreconditionFailed(nil, "OIDCS-28ubl", "Errors.OIDCSession.RefreshTokenInvalid"),
+ err: zerrors.ThrowPreconditionFailed(nil, "OIDCS-28ubl", "Errors.OIDCSession.RefreshTokenInvalid"),
},
},
{
@@ -551,7 +551,7 @@ func TestCommands_ExchangeOIDCSessionRefreshAndAccessToken(t *testing.T) {
refreshToken: "VjJfb2lkY1Nlc3Npb25JRC1ydF9yZWZyZXNoVG9rZW5JRDp1c2VySUQ", //V2_oidcSessionID:rt_refreshTokenID:userID
},
res{
- err: caos_errs.ThrowPreconditionFailed(nil, "OIDCS-3jt2w", "Errors.OIDCSession.RefreshTokenInvalid"),
+ err: zerrors.ThrowPreconditionFailed(nil, "OIDCS-3jt2w", "Errors.OIDCSession.RefreshTokenInvalid"),
},
},
{
@@ -652,7 +652,7 @@ func TestCommands_OIDCSessionByRefreshToken(t *testing.T) {
refreshToken: "invalid",
},
res{
- err: caos_errs.ThrowPreconditionFailed(nil, "OIDCS-JOI23", "Errors.OIDCSession.RefreshTokenInvalid"),
+ err: zerrors.ThrowPreconditionFailed(nil, "OIDCS-JOI23", "Errors.OIDCSession.RefreshTokenInvalid"),
},
},
{
@@ -668,7 +668,7 @@ func TestCommands_OIDCSessionByRefreshToken(t *testing.T) {
refreshToken: "V2_oidcSessionID-rt_refreshTokenID:userID",
},
res{
- err: caos_errs.ThrowPreconditionFailed(nil, "OIDCS-s3hjk", "Errors.OIDCSession.RefreshTokenInvalid"),
+ err: zerrors.ThrowPreconditionFailed(nil, "OIDCS-s3hjk", "Errors.OIDCSession.RefreshTokenInvalid"),
},
},
{
@@ -693,7 +693,7 @@ func TestCommands_OIDCSessionByRefreshToken(t *testing.T) {
refreshToken: "V2_oidcSessionID-rt_refreshTokenID:userID",
},
res{
- err: caos_errs.ThrowPreconditionFailed(nil, "OIDCS-28ubl", "Errors.OIDCSession.RefreshTokenInvalid"),
+ err: zerrors.ThrowPreconditionFailed(nil, "OIDCS-28ubl", "Errors.OIDCSession.RefreshTokenInvalid"),
},
},
{
@@ -722,7 +722,7 @@ func TestCommands_OIDCSessionByRefreshToken(t *testing.T) {
refreshToken: "V2_oidcSessionID-rt_refreshTokenID:userID",
},
res{
- err: caos_errs.ThrowPreconditionFailed(nil, "OIDCS-3jt2w", "Errors.OIDCSession.RefreshTokenInvalid"),
+ err: zerrors.ThrowPreconditionFailed(nil, "OIDCS-3jt2w", "Errors.OIDCSession.RefreshTokenInvalid"),
},
},
{
@@ -878,7 +878,7 @@ func TestCommands_RevokeOIDCSessionToken(t *testing.T) {
clientID: "clientID",
},
res{
- err: caos_errs.ThrowPreconditionFailed(nil, "OIDCS-SKjl3", "Errors.OIDCSession.InvalidClient"),
+ err: zerrors.ThrowPreconditionFailed(nil, "OIDCS-SKjl3", "Errors.OIDCSession.InvalidClient"),
},
},
{
@@ -955,7 +955,7 @@ func TestCommands_RevokeOIDCSessionToken(t *testing.T) {
clientID: "clientID",
},
res{
- err: caos_errs.ThrowPreconditionFailed(nil, "OIDCS-SKjl3", "Errors.OIDCSession.InvalidClient"),
+ err: zerrors.ThrowPreconditionFailed(nil, "OIDCS-SKjl3", "Errors.OIDCSession.InvalidClient"),
},
},
{
diff --git a/internal/command/org.go b/internal/command/org.go
index 137b1a65cd..5f997183af 100644
--- a/internal/command/org.go
+++ b/internal/command/org.go
@@ -7,11 +7,11 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/project"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
// InstanceOrgSetup is used for the first organisation in the instance setup.
@@ -236,7 +236,7 @@ func (c *Commands) SetUpOrg(ctx context.Context, o *OrgSetup, allowInitialMail b
func AddOrgCommand(ctx context.Context, a *org.Aggregate, name string, userIDs ...string) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if name = strings.TrimSpace(name); name == "" {
- return nil, errors.ThrowInvalidArgument(nil, "ORG-mruNY", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-mruNY", "Errors.Invalid.Argument")
}
defaultDomain, err := domain.NewIAMDomainName(name, authz.GetInstance(ctx).RequestedDomain())
if err != nil {
@@ -259,7 +259,7 @@ func (c *Commands) getOrg(ctx context.Context, orgID string) (*domain.Org, error
return nil, err
}
if !isOrgStateExists(writeModel.State) {
- return nil, errors.ThrowInternal(err, "COMMAND-4M9sf", "Errors.Org.NotFound")
+ return nil, zerrors.ThrowInternal(err, "COMMAND-4M9sf", "Errors.Org.NotFound")
}
return orgWriteModelToOrg(writeModel), nil
}
@@ -270,7 +270,7 @@ func (c *Commands) checkOrgExists(ctx context.Context, orgID string) error {
return err
}
if !isOrgStateExists(orgWriteModel.State) {
- return errors.ThrowPreconditionFailed(nil, "COMMAND-QXPGs", "Errors.Org.NotFound")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-QXPGs", "Errors.Org.NotFound")
}
return nil
}
@@ -281,7 +281,7 @@ func (c *Commands) AddOrgWithID(ctx context.Context, name, userID, resourceOwner
return nil, err
}
if existingOrg.State != domain.OrgStateUnspecified {
- return nil, errors.ThrowNotFound(nil, "ORG-lapo2m", "Errors.Org.AlreadyExisting")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-lapo2m", "Errors.Org.AlreadyExisting")
}
return c.addOrgWithIDAndMember(ctx, name, userID, resourceOwner, orgID, claimedUserIDs)
@@ -289,12 +289,12 @@ func (c *Commands) AddOrgWithID(ctx context.Context, name, userID, resourceOwner
func (c *Commands) AddOrg(ctx context.Context, name, userID, resourceOwner string, claimedUserIDs []string) (*domain.Org, error) {
if name = strings.TrimSpace(name); name == "" {
- return nil, errors.ThrowInvalidArgument(nil, "EVENT-Mf9sd", "Errors.Org.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "EVENT-Mf9sd", "Errors.Org.Invalid")
}
orgID, err := c.idGenerator.Next()
if err != nil {
- return nil, errors.ThrowInternal(err, "COMMA-OwciI", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "COMMA-OwciI", "Errors.Internal")
}
return c.addOrgWithIDAndMember(ctx, name, userID, resourceOwner, orgID, claimedUserIDs)
@@ -329,7 +329,7 @@ func (c *Commands) addOrgWithIDAndMember(ctx context.Context, name, userID, reso
func (c *Commands) ChangeOrg(ctx context.Context, orgID, name string) (*domain.ObjectDetails, error) {
name = strings.TrimSpace(name)
if orgID == "" || name == "" {
- return nil, errors.ThrowInvalidArgument(nil, "EVENT-Mf9sd", "Errors.Org.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "EVENT-Mf9sd", "Errors.Org.Invalid")
}
orgWriteModel, err := c.getOrgWriteModelByID(ctx, orgID)
@@ -337,10 +337,10 @@ func (c *Commands) ChangeOrg(ctx context.Context, orgID, name string) (*domain.O
return nil, err
}
if !isOrgStateExists(orgWriteModel.State) {
- return nil, errors.ThrowNotFound(nil, "ORG-1MRds", "Errors.Org.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-1MRds", "Errors.Org.NotFound")
}
if orgWriteModel.Name == name {
- return nil, errors.ThrowPreconditionFailed(nil, "ORG-4VSdf", "Errors.Org.NotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "ORG-4VSdf", "Errors.Org.NotChanged")
}
orgAgg := OrgAggregateFromWriteModel(&orgWriteModel.WriteModel)
events := make([]eventstore.Command, 0)
@@ -369,10 +369,10 @@ func (c *Commands) DeactivateOrg(ctx context.Context, orgID string) (*domain.Obj
return nil, err
}
if !isOrgStateExists(orgWriteModel.State) {
- return nil, errors.ThrowNotFound(nil, "ORG-oL9nT", "Errors.Org.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-oL9nT", "Errors.Org.NotFound")
}
if orgWriteModel.State == domain.OrgStateInactive {
- return nil, errors.ThrowPreconditionFailed(nil, "EVENT-Dbs2g", "Errors.Org.AlreadyDeactivated")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "EVENT-Dbs2g", "Errors.Org.AlreadyDeactivated")
}
orgAgg := OrgAggregateFromWriteModel(&orgWriteModel.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, org.NewOrgDeactivatedEvent(ctx, orgAgg))
@@ -392,10 +392,10 @@ func (c *Commands) ReactivateOrg(ctx context.Context, orgID string) (*domain.Obj
return nil, err
}
if !isOrgStateExists(orgWriteModel.State) {
- return nil, errors.ThrowNotFound(nil, "ORG-Dgf3g", "Errors.Org.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-Dgf3g", "Errors.Org.NotFound")
}
if orgWriteModel.State == domain.OrgStateActive {
- return nil, errors.ThrowPreconditionFailed(nil, "EVENT-bfnrh", "Errors.Org.AlreadyActive")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "EVENT-bfnrh", "Errors.Org.AlreadyActive")
}
orgAgg := OrgAggregateFromWriteModel(&orgWriteModel.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, org.NewOrgReactivatedEvent(ctx, orgAgg))
@@ -434,26 +434,26 @@ func (c *Commands) prepareRemoveOrg(a *org.Aggregate) preparation.Validation {
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
instance := authz.GetInstance(ctx)
if a.ID == instance.DefaultOrganisationID() {
- return nil, errors.ThrowPreconditionFailed(nil, "COMMA-wG9p1", "Errors.Org.DefaultOrgNotDeletable")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMA-wG9p1", "Errors.Org.DefaultOrgNotDeletable")
}
err := c.checkProjectExists(ctx, instance.ProjectID(), a.ID)
// if there is no error, the ZITADEL project was found on the org to be deleted
if err == nil {
- return nil, errors.ThrowPreconditionFailed(err, "COMMA-AF3JW", "Errors.Org.ZitadelOrgNotDeletable")
+ return nil, zerrors.ThrowPreconditionFailed(err, "COMMA-AF3JW", "Errors.Org.ZitadelOrgNotDeletable")
}
// "precondition failed" error means the project does not exist, return other errors
- if !errors.IsPreconditionFailed(err) {
+ if !zerrors.IsPreconditionFailed(err) {
return nil, err
}
writeModel, err := c.getOrgWriteModelByID(ctx, a.ID)
if err != nil {
- return nil, errors.ThrowPreconditionFailed(err, "COMMA-wG9p1", "Errors.Org.NotFound")
+ return nil, zerrors.ThrowPreconditionFailed(err, "COMMA-wG9p1", "Errors.Org.NotFound")
}
if !isOrgStateExists(writeModel.State) {
- return nil, errors.ThrowNotFound(nil, "COMMA-aps2n", "Errors.Org.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMA-aps2n", "Errors.Org.NotFound")
}
- domainPolicy, err := c.getOrgDomainPolicy(ctx, a.ID)
+ domainPolicy, err := c.domainPolicyWriteModel(ctx, a.ID)
if err != nil {
return nil, err
}
@@ -696,7 +696,7 @@ func ExistsOrg(ctx context.Context, filter preparation.FilterToQueryReducer, id
func (c *Commands) addOrgWithID(ctx context.Context, organisation *domain.Org, orgID string, claimedUserIDs []string) (_ *eventstore.Aggregate, _ *OrgWriteModel, _ []eventstore.Command, err error) {
if !organisation.IsValid() {
- return nil, nil, nil, errors.ThrowInvalidArgument(nil, "COMM-deLSk", "Errors.Org.Invalid")
+ return nil, nil, nil, zerrors.ThrowInvalidArgument(nil, "COMM-deLSk", "Errors.Org.Invalid")
}
organisation.AggregateID = orgID
diff --git a/internal/command/org_action.go b/internal/command/org_action.go
index 45cf13acfa..945fd929de 100644
--- a/internal/command/org_action.go
+++ b/internal/command/org_action.go
@@ -5,10 +5,10 @@ import (
"sort"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/action"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddActionWithID(ctx context.Context, addAction *domain.Action, resourceOwner, actionID string) (_ string, _ *domain.ObjectDetails, err error) {
@@ -17,7 +17,7 @@ func (c *Commands) AddActionWithID(ctx context.Context, addAction *domain.Action
return "", nil, err
}
if existingAction.State != domain.ActionStateUnspecified {
- return "", nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-nau2k", "Errors.Action.AlreadyExisting")
+ return "", nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-nau2k", "Errors.Action.AlreadyExisting")
}
return c.addActionWithID(ctx, addAction, resourceOwner, actionID)
@@ -25,7 +25,7 @@ func (c *Commands) AddActionWithID(ctx context.Context, addAction *domain.Action
func (c *Commands) AddAction(ctx context.Context, addAction *domain.Action, resourceOwner string) (_ string, _ *domain.ObjectDetails, err error) {
if !addAction.IsValid() {
- return "", nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-eg2gf", "Errors.Action.Invalid")
+ return "", nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-eg2gf", "Errors.Action.Invalid")
}
actionID, err := c.idGenerator.Next()
@@ -61,7 +61,7 @@ func (c *Commands) addActionWithID(ctx context.Context, addAction *domain.Action
func (c *Commands) ChangeAction(ctx context.Context, actionChange *domain.Action, resourceOwner string) (*domain.ObjectDetails, error) {
if !actionChange.IsValid() || actionChange.AggregateID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-Df2f3", "Errors.Action.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-Df2f3", "Errors.Action.Invalid")
}
existingAction, err := c.getActionWriteModelByID(ctx, actionChange.AggregateID, resourceOwner)
@@ -69,7 +69,7 @@ func (c *Commands) ChangeAction(ctx context.Context, actionChange *domain.Action
return nil, err
}
if !existingAction.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-Sfg2t", "Errors.Action.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-Sfg2t", "Errors.Action.NotFound")
}
actionAgg := ActionAggregateFromWriteModel(&existingAction.WriteModel)
@@ -96,7 +96,7 @@ func (c *Commands) ChangeAction(ctx context.Context, actionChange *domain.Action
func (c *Commands) DeactivateAction(ctx context.Context, actionID string, resourceOwner string) (*domain.ObjectDetails, error) {
if actionID == "" || resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-DAhk5", "Errors.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-DAhk5", "Errors.IDMissing")
}
existingAction, err := c.getActionWriteModelByID(ctx, actionID, resourceOwner)
@@ -104,10 +104,10 @@ func (c *Commands) DeactivateAction(ctx context.Context, actionID string, resour
return nil, err
}
if !existingAction.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-NRmhu", "Errors.Action.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-NRmhu", "Errors.Action.NotFound")
}
if existingAction.State != domain.ActionStateActive {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Dgj92", "Errors.Action.NotActive")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-Dgj92", "Errors.Action.NotActive")
}
actionAgg := ActionAggregateFromWriteModel(&existingAction.WriteModel)
events := []eventstore.Command{
@@ -126,7 +126,7 @@ func (c *Commands) DeactivateAction(ctx context.Context, actionID string, resour
func (c *Commands) ReactivateAction(ctx context.Context, actionID string, resourceOwner string) (*domain.ObjectDetails, error) {
if actionID == "" || resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-BNm56", "Errors.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-BNm56", "Errors.IDMissing")
}
existingAction, err := c.getActionWriteModelByID(ctx, actionID, resourceOwner)
@@ -134,10 +134,10 @@ func (c *Commands) ReactivateAction(ctx context.Context, actionID string, resour
return nil, err
}
if !existingAction.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-Aa22g", "Errors.Action.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-Aa22g", "Errors.Action.NotFound")
}
if existingAction.State != domain.ActionStateInactive {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-J53zh", "Errors.Action.NotInactive")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-J53zh", "Errors.Action.NotInactive")
}
actionAgg := ActionAggregateFromWriteModel(&existingAction.WriteModel)
@@ -157,7 +157,7 @@ func (c *Commands) ReactivateAction(ctx context.Context, actionID string, resour
func (c *Commands) DeleteAction(ctx context.Context, actionID, resourceOwner string, flowTypes ...domain.FlowType) (*domain.ObjectDetails, error) {
if actionID == "" || resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-Gfg3g", "Errors.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-Gfg3g", "Errors.IDMissing")
}
existingAction, err := c.getActionWriteModelByID(ctx, actionID, resourceOwner)
@@ -165,7 +165,7 @@ func (c *Commands) DeleteAction(ctx context.Context, actionID, resourceOwner str
return nil, err
}
if !existingAction.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-Dgh4h", "Errors.Action.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-Dgh4h", "Errors.Action.NotFound")
}
actionAgg := ActionAggregateFromWriteModel(&existingAction.WriteModel)
events := []eventstore.Command{
diff --git a/internal/command/org_action_test.go b/internal/command/org_action_test.go
index 58d5d1bf6d..e3f1a8afc8 100644
--- a/internal/command/org_action_test.go
+++ b/internal/command/org_action_test.go
@@ -7,13 +7,13 @@ import (
"github.com/stretchr/testify/assert"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/id"
"github.com/zitadel/zitadel/internal/id/mock"
"github.com/zitadel/zitadel/internal/repository/action"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommands_AddAction(t *testing.T) {
@@ -50,7 +50,7 @@ func TestCommands_AddAction(t *testing.T) {
resourceOwner: "org1",
},
res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -58,7 +58,7 @@ func TestCommands_AddAction(t *testing.T) {
fields{
eventstore: eventstoreExpect(t,
expectPushFailed(
- errors.ThrowPreconditionFailed(nil, "id", "name already exists"),
+ zerrors.ThrowPreconditionFailed(nil, "id", "name already exists"),
action.NewAddedEvent(context.Background(),
&action.NewAggregate("id1", "org1").Aggregate,
"name",
@@ -79,7 +79,7 @@ func TestCommands_AddAction(t *testing.T) {
resourceOwner: "org1",
},
res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -168,7 +168,7 @@ func TestCommands_ChangeAction(t *testing.T) {
resourceOwner: "org1",
},
res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -190,7 +190,7 @@ func TestCommands_ChangeAction(t *testing.T) {
resourceOwner: "org1",
},
res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -222,7 +222,7 @@ func TestCommands_ChangeAction(t *testing.T) {
resourceOwner: "org1",
},
res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -241,7 +241,7 @@ func TestCommands_ChangeAction(t *testing.T) {
),
),
expectPushFailed(
- errors.ThrowPreconditionFailed(nil, "id", "name already exists"),
+ zerrors.ThrowPreconditionFailed(nil, "id", "name already exists"),
func() *action.ChangedEvent {
event, _ := action.NewChangedEvent(context.Background(),
&action.NewAggregate("id1", "org1").Aggregate,
@@ -267,7 +267,7 @@ func TestCommands_ChangeAction(t *testing.T) {
resourceOwner: "org1",
},
res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -366,7 +366,7 @@ func TestCommands_DeactivateAction(t *testing.T) {
resourceOwner: "org1",
},
res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -382,7 +382,7 @@ func TestCommands_DeactivateAction(t *testing.T) {
resourceOwner: "org1",
},
res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -413,7 +413,7 @@ func TestCommands_DeactivateAction(t *testing.T) {
resourceOwner: "org1",
},
res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -499,7 +499,7 @@ func TestCommands_ReactivateAction(t *testing.T) {
resourceOwner: "org1",
},
res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -515,7 +515,7 @@ func TestCommands_ReactivateAction(t *testing.T) {
resourceOwner: "org1",
},
res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -541,7 +541,7 @@ func TestCommands_ReactivateAction(t *testing.T) {
resourceOwner: "org1",
},
res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -633,7 +633,7 @@ func TestCommands_DeleteAction(t *testing.T) {
resourceOwner: "",
},
res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -649,7 +649,7 @@ func TestCommands_DeleteAction(t *testing.T) {
resourceOwner: "org1",
},
res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
diff --git a/internal/command/org_custom_login_text.go b/internal/command/org_custom_login_text.go
index 83a846d247..b3d52c669a 100644
--- a/internal/command/org_custom_login_text.go
+++ b/internal/command/org_custom_login_text.go
@@ -6,14 +6,17 @@ import (
"golang.org/x/text/language"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/i18n"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
+// SetOrgLoginText only validates if the language is supported, not if it is allowed.
+// This enables setting texts before allowing a language
func (c *Commands) SetOrgLoginText(ctx context.Context, resourceOwner string, loginText *domain.CustomLoginText) (*domain.ObjectDetails, error) {
if resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-m29rF", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-m29rF", "Errors.ResourceOwnerMissing")
}
iamAgg := org.NewAggregate(resourceOwner)
events, existingLoginText, err := c.setOrgLoginText(ctx, &iamAgg.Aggregate, loginText)
@@ -32,10 +35,9 @@ func (c *Commands) SetOrgLoginText(ctx context.Context, resourceOwner string, lo
}
func (c *Commands) setOrgLoginText(ctx context.Context, orgAgg *eventstore.Aggregate, loginText *domain.CustomLoginText) ([]eventstore.Command, *OrgCustomLoginTextReadModel, error) {
- if !loginText.IsValid() {
- return nil, nil, caos_errs.ThrowInvalidArgument(nil, "ORG-PPo2w", "Errors.CustomText.Invalid")
+ if err := loginText.IsValid(i18n.SupportedLanguages()); err != nil {
+ return nil, nil, err
}
-
existingLoginText, err := c.orgCustomLoginTextWriteModelByID(ctx, orgAgg.ID, loginText.Language)
if err != nil {
return nil, nil, err
@@ -46,17 +48,17 @@ func (c *Commands) setOrgLoginText(ctx context.Context, orgAgg *eventstore.Aggre
func (c *Commands) RemoveOrgLoginTexts(ctx context.Context, resourceOwner string, lang language.Tag) (*domain.ObjectDetails, error) {
if resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-1B8dw", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-1B8dw", "Errors.ResourceOwnerMissing")
}
if lang == language.Und {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-5ZZmo", "Errors.CustomText.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-5ZZmo", "Errors.CustomText.Invalid")
}
customText, err := c.orgCustomLoginTextWriteModelByID(ctx, resourceOwner, lang)
if err != nil {
return nil, err
}
if customText.State == domain.PolicyStateUnspecified || customText.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "Org-9ru44", "Errors.CustomText.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "Org-9ru44", "Errors.CustomText.NotFound")
}
orgAgg := OrgAggregateFromWriteModel(&customText.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, org.NewCustomTextTemplateRemovedEvent(ctx, orgAgg, domain.LoginCustomText, lang))
diff --git a/internal/command/org_custom_login_text_test.go b/internal/command/org_custom_login_text_test.go
index 19ddb189cf..ede20ef5c0 100644
--- a/internal/command/org_custom_login_text_test.go
+++ b/internal/command/org_custom_login_text_test.go
@@ -7,10 +7,11 @@ import (
"github.com/stretchr/testify/assert"
"golang.org/x/text/language"
+ "github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_SetCustomOrgLoginText(t *testing.T) {
@@ -40,27 +41,65 @@ func TestCommandSide_SetCustomOrgLoginText(t *testing.T) {
),
},
args: args{
- ctx: context.Background(),
- config: &domain.CustomLoginText{},
+ ctx: authz.WithInstanceID(context.Background(), "org1"),
+ config: &domain.CustomLoginText{
+ Language: AllowedLanguage,
+ },
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
- name: "invalid custom login text, error",
+ name: "empty custom login text, success",
fields: fields{
eventstore: eventstoreExpect(
t,
+ expectFilter(),
+ expectPush(),
),
},
args: args{
- ctx: context.Background(),
+ ctx: authz.WithInstanceID(context.Background(), "org1"),
+ resourceOwner: "org1",
+ config: &domain.CustomLoginText{
+ Language: AllowedLanguage,
+ },
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ ResourceOwner: "org1",
+ },
+ },
+ },
+ {
+ name: "undefined language, error",
+ fields: fields{
+ eventstore: eventstoreExpect(t),
+ },
+ args: args{
+ ctx: authz.WithInstanceID(context.Background(), "org1"),
resourceOwner: "org1",
config: &domain.CustomLoginText{},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
+ },
+ },
+ {
+ name: "unsupported language, error",
+ fields: fields{
+ eventstore: eventstoreExpect(t),
+ },
+ args: args{
+ ctx: authz.WithInstanceID(context.Background(), "org1"),
+ resourceOwner: "org1",
+ config: &domain.CustomLoginText{
+ Language: UnsupportedLanguage,
+ },
+ },
+ res: res{
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
diff --git a/internal/command/org_custom_message_text.go b/internal/command/org_custom_message_text.go
index 7aacd6a35a..cd9fc2da9c 100644
--- a/internal/command/org_custom_message_text.go
+++ b/internal/command/org_custom_message_text.go
@@ -6,14 +6,17 @@ import (
"golang.org/x/text/language"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/i18n"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
+// SetOrgMessageText only validates if the language is supported, not if it is allowed.
+// This enables setting texts before allowing a language
func (c *Commands) SetOrgMessageText(ctx context.Context, resourceOwner string, messageText *domain.CustomMessageText) (*domain.ObjectDetails, error) {
if resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-2biiR", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-2biiR", "Errors.ResourceOwnerMissing")
}
orgAgg := org.NewAggregate(resourceOwner)
events, existingMessageText, err := c.setOrgMessageText(ctx, &orgAgg.Aggregate, messageText)
@@ -32,10 +35,9 @@ func (c *Commands) SetOrgMessageText(ctx context.Context, resourceOwner string,
}
func (c *Commands) setOrgMessageText(ctx context.Context, orgAgg *eventstore.Aggregate, message *domain.CustomMessageText) ([]eventstore.Command, *OrgCustomMessageTextReadModel, error) {
- if !message.IsValid() {
- return nil, nil, caos_errs.ThrowInvalidArgument(nil, "ORG-2jfsf", "Errors.CustomText.Invalid")
+ if err := message.IsValid(i18n.SupportedLanguages()); err != nil {
+ return nil, nil, err
}
-
existingMessageText, err := c.orgCustomMessageTextWriteModelByID(ctx, orgAgg.ID, message.MessageTextType, message.Language)
if err != nil {
return nil, nil, err
@@ -95,17 +97,17 @@ func (c *Commands) setOrgMessageText(ctx context.Context, orgAgg *eventstore.Agg
func (c *Commands) RemoveOrgMessageTexts(ctx context.Context, resourceOwner, messageTextType string, lang language.Tag) (*domain.ObjectDetails, error) {
if resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-3mfsf", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-3mfsf", "Errors.ResourceOwnerMissing")
}
if messageTextType == "" || lang == language.Und {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-j59f", "Errors.CustomMessageText.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-j59f", "Errors.CustomMessageText.Invalid")
}
customText, err := c.orgCustomMessageTextWriteModelByID(ctx, resourceOwner, messageTextType, lang)
if err != nil {
return nil, err
}
if customText.State == domain.PolicyStateUnspecified || customText.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "Org-3b8Jf", "Errors.CustomMessageText.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "Org-3b8Jf", "Errors.CustomMessageText.NotFound")
}
orgAgg := OrgAggregateFromWriteModel(&customText.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, org.NewCustomTextTemplateRemovedEvent(ctx, orgAgg, messageTextType, lang))
diff --git a/internal/command/org_custom_message_text_test.go b/internal/command/org_custom_message_text_test.go
index 61a562e456..424a887794 100644
--- a/internal/command/org_custom_message_text_test.go
+++ b/internal/command/org_custom_message_text_test.go
@@ -8,9 +8,9 @@ import (
"golang.org/x/text/language"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_SetCustomMessageText(t *testing.T) {
@@ -35,32 +35,83 @@ func TestCommandSide_SetCustomMessageText(t *testing.T) {
{
name: "no resource owner, error",
fields: fields{
- eventstore: eventstoreExpect(
- t,
- ),
+ eventstore: eventstoreExpect(t),
},
args: args{
ctx: context.Background(),
config: &domain.CustomMessageText{},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
- name: "invalid custom text, error",
+ name: "empty message type, error",
+ fields: fields{
+ eventstore: eventstoreExpect(t),
+ },
+ args: args{
+ ctx: context.Background(),
+ resourceOwner: "org1",
+ config: &domain.CustomMessageText{
+ Language: AllowedLanguage,
+ },
+ },
+ res: res{
+ err: zerrors.IsErrorInvalidArgument,
+ },
+ },
+ {
+ name: "empty custom message text, success",
fields: fields{
eventstore: eventstoreExpect(
t,
+ expectFilter(),
+ expectPush(),
),
},
+ args: args{
+ ctx: context.Background(),
+ resourceOwner: "org1",
+ config: &domain.CustomMessageText{
+ MessageTextType: "Some type", // TODO: check the type!
+ Language: AllowedLanguage,
+ },
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ ResourceOwner: "org1",
+ },
+ },
+ },
+ {
+ name: "undefined language, error",
+ fields: fields{
+ eventstore: eventstoreExpect(t),
+ },
args: args{
ctx: context.Background(),
resourceOwner: "org1",
config: &domain.CustomMessageText{},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
+ },
+ },
+ {
+ name: "unsupported language, error",
+ fields: fields{
+ eventstore: eventstoreExpect(t),
+ },
+ args: args{
+ ctx: context.Background(),
+ resourceOwner: "org1",
+ config: &domain.CustomMessageText{
+ Language: UnsupportedLanguage,
+ },
+ },
+ res: res{
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -345,7 +396,7 @@ func TestCommandSide_RemoveCustomMessageText(t *testing.T) {
lang: language.English,
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -361,7 +412,7 @@ func TestCommandSide_RemoveCustomMessageText(t *testing.T) {
lang: language.English,
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -377,7 +428,7 @@ func TestCommandSide_RemoveCustomMessageText(t *testing.T) {
mailTextType: "Template",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -471,6 +522,43 @@ func TestCommandSide_RemoveCustomMessageText(t *testing.T) {
},
},
},
+ {
+ name: "remove unsupported language ok, especially because we never validated whether a language is supported in previous ZITADEL versions",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ org.NewCustomTextSetEvent(context.Background(),
+ &org.NewAggregate("org1").Aggregate,
+ "Template",
+ domain.MessageGreeting,
+ "Greeting",
+ UnsupportedLanguage,
+ ),
+ ),
+ ),
+ expectPush(
+ org.NewCustomTextTemplateRemovedEvent(context.Background(),
+ &org.NewAggregate("org1").Aggregate,
+ "Template",
+ UnsupportedLanguage,
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ resourceOwner: "org1",
+ mailTextType: "Template",
+ lang: UnsupportedLanguage,
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ ResourceOwner: "org1",
+ },
+ },
+ },
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
diff --git a/internal/command/org_domain.go b/internal/command/org_domain.go
index 6ae30baeb2..98519bfc5d 100644
--- a/internal/command/org_domain.go
+++ b/internal/command/org_domain.go
@@ -2,7 +2,7 @@ package command
import (
"context"
- errs "errors"
+ "errors"
"strings"
"github.com/zitadel/logging"
@@ -12,23 +12,23 @@ import (
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) prepareAddOrgDomain(a *org.Aggregate, addDomain string, userIDs []string) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if addDomain = strings.TrimSpace(addDomain); addDomain == "" {
- return nil, errors.ThrowInvalidArgument(nil, "ORG-r3h4J", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-r3h4J", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
existing, err := orgDomain(ctx, filter, a.ID, addDomain)
- if err != nil && !errs.Is(err, errors.ThrowNotFound(nil, "", "")) {
+ if err != nil && !errors.Is(err, zerrors.ThrowNotFound(nil, "", "")) {
return nil, err
}
if existing != nil && existing.State == domain.OrgDomainStateActive {
- return nil, errors.ThrowAlreadyExists(nil, "V2-e1wse", "Errors.Already.Exists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "V2-e1wse", "Errors.Already.Exists")
}
domainPolicy, err := domainPolicyWriteModel(ctx, filter, a.ID)
if err != nil {
@@ -54,7 +54,7 @@ func (c *Commands) prepareAddOrgDomain(a *org.Aggregate, addDomain string, userI
func verifyOrgDomain(a *org.Aggregate, domain string) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if domain = strings.TrimSpace(domain); domain == "" {
- return nil, errors.ThrowInvalidArgument(nil, "ORG-yqlVQ", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-yqlVQ", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
// no checks required because unique constraints handle it
@@ -66,18 +66,18 @@ func verifyOrgDomain(a *org.Aggregate, domain string) preparation.Validation {
func setPrimaryOrgDomain(a *org.Aggregate, domain string) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if domain = strings.TrimSpace(domain); domain == "" {
- return nil, errors.ThrowInvalidArgument(nil, "ORG-gmNqY", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-gmNqY", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
existing, err := orgDomain(ctx, filter, a.ID, domain)
if err != nil {
- return nil, errors.ThrowAlreadyExists(err, "V2-d0Gyw", "Errors.Already.Exists")
+ return nil, zerrors.ThrowAlreadyExists(err, "V2-d0Gyw", "Errors.Already.Exists")
}
if existing.Primary {
- return nil, errors.ThrowPreconditionFailed(nil, "COMMA-FfoZO", "Errors.Org.DomainAlreadyPrimary")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMA-FfoZO", "Errors.Org.DomainAlreadyPrimary")
}
if !existing.Verified {
- return nil, errors.ThrowPreconditionFailed(nil, "COMMA-yKA80", "Errors.Org.DomainNotVerified")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMA-yKA80", "Errors.Org.DomainNotVerified")
}
return []eventstore.Command{org.NewDomainPrimarySetEvent(ctx, &a.Aggregate, domain)}, nil
}, nil
@@ -91,7 +91,7 @@ func orgDomain(ctx context.Context, filter preparation.FilterToQueryReducer, org
return nil, err
}
if len(events) == 0 {
- return nil, errors.ThrowNotFound(nil, "COMMA-kFHpQ", "Errors.Org.DomainNotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMA-kFHpQ", "Errors.Org.DomainNotFound")
}
wm.AppendEvents(events...)
if err = wm.Reduce(); err != nil {
@@ -129,21 +129,21 @@ func (c *Commands) AddOrgDomain(ctx context.Context, orgID, domain string, claim
func (c *Commands) GenerateOrgDomainValidation(ctx context.Context, orgDomain *domain.OrgDomain) (token, url string, err error) {
if orgDomain == nil || !orgDomain.IsValid() || orgDomain.AggregateID == "" {
- return "", "", errors.ThrowInvalidArgument(nil, "ORG-R24hb", "Errors.Org.InvalidDomain")
+ return "", "", zerrors.ThrowInvalidArgument(nil, "ORG-R24hb", "Errors.Org.InvalidDomain")
}
checkType, ok := orgDomain.ValidationType.CheckType()
if !ok {
- return "", "", errors.ThrowInvalidArgument(nil, "ORG-Gsw31", "Errors.Org.DomainVerificationTypeInvalid")
+ return "", "", zerrors.ThrowInvalidArgument(nil, "ORG-Gsw31", "Errors.Org.DomainVerificationTypeInvalid")
}
domainWriteModel, err := c.getOrgDomainWriteModel(ctx, orgDomain.AggregateID, orgDomain.Domain)
if err != nil {
return "", "", err
}
if domainWriteModel.State != domain.OrgDomainStateActive {
- return "", "", errors.ThrowNotFound(nil, "ORG-AGD31", "Errors.Org.DomainNotOnOrg")
+ return "", "", zerrors.ThrowNotFound(nil, "ORG-AGD31", "Errors.Org.DomainNotOnOrg")
}
if domainWriteModel.Verified {
- return "", "", errors.ThrowPreconditionFailed(nil, "ORG-HGw21", "Errors.Org.DomainAlreadyVerified")
+ return "", "", zerrors.ThrowPreconditionFailed(nil, "ORG-HGw21", "Errors.Org.DomainAlreadyVerified")
}
token, err = orgDomain.GenerateVerificationCode(c.domainVerificationGenerator)
if err != nil {
@@ -151,7 +151,7 @@ func (c *Commands) GenerateOrgDomainValidation(ctx context.Context, orgDomain *d
}
url, err = http_utils.TokenUrl(orgDomain.Domain, token, checkType)
if err != nil {
- return "", "", errors.ThrowPreconditionFailed(err, "ORG-Bae21", "Errors.Org.DomainVerificationTypeInvalid")
+ return "", "", zerrors.ThrowPreconditionFailed(err, "ORG-Bae21", "Errors.Org.DomainVerificationTypeInvalid")
}
orgAgg := OrgAggregateFromWriteModel(&domainWriteModel.WriteModel)
@@ -167,20 +167,20 @@ func (c *Commands) GenerateOrgDomainValidation(ctx context.Context, orgDomain *d
func (c *Commands) ValidateOrgDomain(ctx context.Context, orgDomain *domain.OrgDomain, claimedUserIDs []string) (*domain.ObjectDetails, error) {
if orgDomain == nil || !orgDomain.IsValid() || orgDomain.AggregateID == "" {
- return nil, errors.ThrowInvalidArgument(nil, "ORG-R24hb", "Errors.Org.InvalidDomain")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-R24hb", "Errors.Org.InvalidDomain")
}
domainWriteModel, err := c.getOrgDomainWriteModel(ctx, orgDomain.AggregateID, orgDomain.Domain)
if err != nil {
return nil, err
}
if domainWriteModel.State != domain.OrgDomainStateActive {
- return nil, errors.ThrowNotFound(nil, "ORG-Sjdi3", "Errors.Org.DomainNotOnOrg")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-Sjdi3", "Errors.Org.DomainNotOnOrg")
}
if domainWriteModel.Verified {
- return nil, errors.ThrowPreconditionFailed(nil, "ORG-HGw21", "Errors.Org.DomainAlreadyVerified")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "ORG-HGw21", "Errors.Org.DomainAlreadyVerified")
}
if domainWriteModel.ValidationCode == nil || domainWriteModel.ValidationType == domain.OrgDomainValidationTypeUnspecified {
- return nil, errors.ThrowPreconditionFailed(nil, "ORG-SFBB3", "Errors.Org.DomainVerificationMissing")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "ORG-SFBB3", "Errors.Org.DomainVerificationMissing")
}
validationCode, err := crypto.DecryptString(domainWriteModel.ValidationCode, c.domainVerificationAlg)
@@ -222,17 +222,17 @@ func (c *Commands) ValidateOrgDomain(ctx context.Context, orgDomain *domain.OrgD
func (c *Commands) SetPrimaryOrgDomain(ctx context.Context, orgDomain *domain.OrgDomain) (*domain.ObjectDetails, error) {
if orgDomain == nil || !orgDomain.IsValid() || orgDomain.AggregateID == "" {
- return nil, errors.ThrowInvalidArgument(nil, "ORG-SsDG2", "Errors.Org.InvalidDomain")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-SsDG2", "Errors.Org.InvalidDomain")
}
domainWriteModel, err := c.getOrgDomainWriteModel(ctx, orgDomain.AggregateID, orgDomain.Domain)
if err != nil {
return nil, err
}
if domainWriteModel.State != domain.OrgDomainStateActive {
- return nil, errors.ThrowNotFound(nil, "ORG-GDfA3", "Errors.Org.DomainNotOnOrg")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-GDfA3", "Errors.Org.DomainNotOnOrg")
}
if !domainWriteModel.Verified {
- return nil, errors.ThrowPreconditionFailed(nil, "ORG-Ggd32", "Errors.Org.DomainNotVerified")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "ORG-Ggd32", "Errors.Org.DomainNotVerified")
}
orgAgg := OrgAggregateFromWriteModel(&domainWriteModel.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, org.NewDomainPrimarySetEvent(ctx, orgAgg, orgDomain.Domain))
@@ -248,17 +248,17 @@ func (c *Commands) SetPrimaryOrgDomain(ctx context.Context, orgDomain *domain.Or
func (c *Commands) RemoveOrgDomain(ctx context.Context, orgDomain *domain.OrgDomain) (*domain.ObjectDetails, error) {
if orgDomain == nil || !orgDomain.IsValid() || orgDomain.AggregateID == "" {
- return nil, errors.ThrowInvalidArgument(nil, "ORG-SJsK3", "Errors.Org.InvalidDomain")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-SJsK3", "Errors.Org.InvalidDomain")
}
domainWriteModel, err := c.getOrgDomainWriteModel(ctx, orgDomain.AggregateID, orgDomain.Domain)
if err != nil {
return nil, err
}
if domainWriteModel.State != domain.OrgDomainStateActive {
- return nil, errors.ThrowNotFound(nil, "ORG-GDfA3", "Errors.Org.DomainNotOnOrg")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-GDfA3", "Errors.Org.DomainNotOnOrg")
}
if domainWriteModel.Primary {
- return nil, errors.ThrowPreconditionFailed(nil, "ORG-Sjdi3", "Errors.Org.PrimaryDomainNotDeletable")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "ORG-Sjdi3", "Errors.Org.PrimaryDomainNotDeletable")
}
orgAgg := OrgAggregateFromWriteModel(&domainWriteModel.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, org.NewDomainRemovedEvent(ctx, orgAgg, orgDomain.Domain, domainWriteModel.Verified))
@@ -278,7 +278,7 @@ func (c *Commands) addOrgDomain(ctx context.Context, orgAgg *eventstore.Aggregat
return nil, err
}
if addedDomain.State == domain.OrgDomainStateActive {
- return nil, errors.ThrowAlreadyExists(nil, "COMMA-Bd2jj", "Errors.Org.Domain.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "COMMA-Bd2jj", "Errors.Org.Domain.AlreadyExists")
}
events := []eventstore.Command{
diff --git a/internal/command/org_domain_test.go b/internal/command/org_domain_test.go
index acbb35d648..8af38098c5 100644
--- a/internal/command/org_domain_test.go
+++ b/internal/command/org_domain_test.go
@@ -13,13 +13,13 @@ import (
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/id"
id_mock "github.com/zitadel/zitadel/internal/id/mock"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestAddDomain(t *testing.T) {
@@ -45,7 +45,7 @@ func TestAddDomain(t *testing.T) {
domain: "",
},
want: Want{
- ValidationErr: errors.ThrowInvalidArgument(nil, "ORG-r3h4J", "Errors.Invalid.Argument"),
+ ValidationErr: zerrors.ThrowInvalidArgument(nil, "ORG-r3h4J", "Errors.Invalid.Argument"),
},
},
{
@@ -124,7 +124,7 @@ func TestAddDomain(t *testing.T) {
},
},
want: Want{
- CreateErr: errors.ThrowAlreadyExists(nil, "", ""),
+ CreateErr: zerrors.ThrowAlreadyExists(nil, "", ""),
},
},
}
@@ -159,7 +159,7 @@ func TestVerifyDomain(t *testing.T) {
domain: "",
},
want: Want{
- ValidationErr: errors.ThrowInvalidArgument(nil, "ORG-yqlVQ", "Errors.Invalid.Argument"),
+ ValidationErr: zerrors.ThrowInvalidArgument(nil, "ORG-yqlVQ", "Errors.Invalid.Argument"),
},
},
{
@@ -203,7 +203,7 @@ func TestSetDomainPrimary(t *testing.T) {
domain: "",
},
want: Want{
- ValidationErr: errors.ThrowInvalidArgument(nil, "ORG-gmNqY", "Errors.Invalid.Argument"),
+ ValidationErr: zerrors.ThrowInvalidArgument(nil, "ORG-gmNqY", "Errors.Invalid.Argument"),
},
},
{
@@ -216,7 +216,7 @@ func TestSetDomainPrimary(t *testing.T) {
},
},
want: Want{
- CreateErr: errors.ThrowNotFound(nil, "", ""),
+ CreateErr: zerrors.ThrowNotFound(nil, "", ""),
},
},
{
@@ -229,7 +229,7 @@ func TestSetDomainPrimary(t *testing.T) {
},
},
want: Want{
- CreateErr: errors.ThrowPreconditionFailed(nil, "", ""),
+ CreateErr: zerrors.ThrowPreconditionFailed(nil, "", ""),
},
},
{
@@ -247,7 +247,7 @@ func TestSetDomainPrimary(t *testing.T) {
},
},
want: Want{
- CreateErr: errors.ThrowPreconditionFailed(nil, "", ""),
+ CreateErr: zerrors.ThrowPreconditionFailed(nil, "", ""),
},
},
{
@@ -308,7 +308,7 @@ func TestCommandSide_AddOrgDomain(t *testing.T) {
ctx: context.Background(),
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -338,7 +338,7 @@ func TestCommandSide_AddOrgDomain(t *testing.T) {
domain: "domain.ch",
},
res: res{
- err: errors.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -439,7 +439,7 @@ func TestCommandSide_GenerateOrgDomainValidation(t *testing.T) {
},
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -456,7 +456,7 @@ func TestCommandSide_GenerateOrgDomainValidation(t *testing.T) {
},
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -476,7 +476,7 @@ func TestCommandSide_GenerateOrgDomainValidation(t *testing.T) {
},
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -505,7 +505,7 @@ func TestCommandSide_GenerateOrgDomainValidation(t *testing.T) {
},
},
res: res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -546,7 +546,7 @@ func TestCommandSide_GenerateOrgDomainValidation(t *testing.T) {
},
},
res: res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -710,7 +710,7 @@ func TestCommandSide_ValidateOrgDomain(t *testing.T) {
},
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -727,7 +727,7 @@ func TestCommandSide_ValidateOrgDomain(t *testing.T) {
},
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -756,7 +756,7 @@ func TestCommandSide_ValidateOrgDomain(t *testing.T) {
},
},
res: res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -797,7 +797,7 @@ func TestCommandSide_ValidateOrgDomain(t *testing.T) {
},
},
res: res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -832,7 +832,7 @@ func TestCommandSide_ValidateOrgDomain(t *testing.T) {
},
},
res: res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -888,7 +888,7 @@ func TestCommandSide_ValidateOrgDomain(t *testing.T) {
},
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1154,7 +1154,7 @@ func TestCommandSide_SetPrimaryDomain(t *testing.T) {
},
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1171,7 +1171,7 @@ func TestCommandSide_SetPrimaryDomain(t *testing.T) {
},
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1200,7 +1200,7 @@ func TestCommandSide_SetPrimaryDomain(t *testing.T) {
},
},
res: res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1234,7 +1234,7 @@ func TestCommandSide_SetPrimaryDomain(t *testing.T) {
},
},
res: res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -1339,7 +1339,7 @@ func TestCommandSide_RemoveOrgDomain(t *testing.T) {
},
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1356,7 +1356,7 @@ func TestCommandSide_RemoveOrgDomain(t *testing.T) {
},
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1385,7 +1385,7 @@ func TestCommandSide_RemoveOrgDomain(t *testing.T) {
},
},
res: res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1431,7 +1431,7 @@ func TestCommandSide_RemoveOrgDomain(t *testing.T) {
},
},
res: res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -1545,7 +1545,7 @@ func TestCommandSide_RemoveOrgDomain(t *testing.T) {
}
func invalidDomainVerification(domain, token, verifier string, checkType http.CheckType) error {
- return errors.ThrowInvalidArgument(nil, "HTTP-GH422", "Errors.Internal")
+ return zerrors.ThrowInvalidArgument(nil, "HTTP-GH422", "Errors.Internal")
}
func validDomainVerification(domain, token, verifier string, checkType http.CheckType) error {
diff --git a/internal/command/org_flow.go b/internal/command/org_flow.go
index e127517ca0..9a9d47c966 100644
--- a/internal/command/org_flow.go
+++ b/internal/command/org_flow.go
@@ -5,20 +5,20 @@ import (
"reflect"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) ClearFlow(ctx context.Context, flowType domain.FlowType, resourceOwner string) (*domain.ObjectDetails, error) {
if !flowType.Valid() || resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-Dfw2h", "Errors.Flow.FlowTypeMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-Dfw2h", "Errors.Flow.FlowTypeMissing")
}
existingFlow, err := c.getOrgFlowWriteModelByType(ctx, flowType, resourceOwner)
if err != nil {
return nil, err
}
if len(existingFlow.Triggers) == 0 {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-DgGh3", "Errors.Flow.Empty")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-DgGh3", "Errors.Flow.Empty")
}
orgAgg := OrgAggregateFromWriteModel(&existingFlow.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, org.NewFlowClearedEvent(ctx, orgAgg, flowType))
@@ -34,17 +34,17 @@ func (c *Commands) ClearFlow(ctx context.Context, flowType domain.FlowType, reso
func (c *Commands) SetTriggerActions(ctx context.Context, flowType domain.FlowType, triggerType domain.TriggerType, actionIDs []string, resourceOwner string) (*domain.ObjectDetails, error) {
if !flowType.Valid() || !triggerType.Valid() || resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-Dfhj5", "Errors.Flow.FlowTypeMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-Dfhj5", "Errors.Flow.FlowTypeMissing")
}
if !flowType.HasTrigger(triggerType) {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-Dfgh6", "Errors.Flow.WrongTriggerType")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-Dfgh6", "Errors.Flow.WrongTriggerType")
}
existingFlow, err := c.getOrgFlowWriteModelByType(ctx, flowType, resourceOwner)
if err != nil {
return nil, err
}
if reflect.DeepEqual(existingFlow.Triggers[triggerType], actionIDs) {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Nfh52", "Errors.Flow.NoChanges")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-Nfh52", "Errors.Flow.NoChanges")
}
if len(actionIDs) > 0 {
exists, err := c.actionsIDsExist(ctx, actionIDs, resourceOwner)
@@ -52,7 +52,7 @@ func (c *Commands) SetTriggerActions(ctx context.Context, flowType domain.FlowTy
return nil, err
}
if !exists {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-dg422", "Errors.Flow.ActionIDsNotExist")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-dg422", "Errors.Flow.ActionIDsNotExist")
}
}
orgAgg := OrgAggregateFromWriteModel(&existingFlow.WriteModel)
diff --git a/internal/command/org_flow_test.go b/internal/command/org_flow_test.go
index 178cfd44ad..36961bc6e5 100644
--- a/internal/command/org_flow_test.go
+++ b/internal/command/org_flow_test.go
@@ -7,10 +7,10 @@ import (
"github.com/stretchr/testify/assert"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/action"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommands_ClearFlow(t *testing.T) {
@@ -44,7 +44,7 @@ func TestCommands_ClearFlow(t *testing.T) {
},
res{
details: nil,
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -61,7 +61,7 @@ func TestCommands_ClearFlow(t *testing.T) {
},
res{
details: nil,
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -153,7 +153,7 @@ func TestCommands_SetTriggerActions(t *testing.T) {
},
res{
details: nil,
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
//TODO: combination not possible at the moment, add when more flow types available
@@ -199,7 +199,7 @@ func TestCommands_SetTriggerActions(t *testing.T) {
},
res{
details: nil,
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -219,7 +219,7 @@ func TestCommands_SetTriggerActions(t *testing.T) {
},
res{
details: nil,
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
diff --git a/internal/command/org_idp.go b/internal/command/org_idp.go
index 22479465c1..f9d83ff9c5 100644
--- a/internal/command/org_idp.go
+++ b/internal/command/org_idp.go
@@ -9,9 +9,9 @@ import (
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddOrgGenericOAuthProvider(ctx context.Context, resourceOwner string, provider GenericOAuthProvider) (string, *domain.ObjectDetails, error) {
@@ -113,7 +113,7 @@ func (c *Commands) migrateOrgGenericOIDC(ctx context.Context, resourceOwner, id
case GoogleProvider:
validation = c.prepareMigrateOrgOIDCToGoogleProvider(orgAgg, writeModel, p)
default:
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-s9s2919", "Errors.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-s9s2919", "Errors.IDPConfig.NotExisting")
}
cmds, err := preparation.PrepareCommands(ctx, c.eventstore.Filter, validation)
@@ -581,25 +581,25 @@ func ExistsOrgIDP(ctx context.Context, filter preparation.FilterToQueryReducer,
func (c *Commands) prepareAddOrgOAuthProvider(a *org.Aggregate, writeModel *OrgOAuthIDPWriteModel, provider GenericOAuthProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-D32ef", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-D32ef", "Errors.Invalid.Argument")
}
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-Dbgzf", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-Dbgzf", "Errors.Invalid.Argument")
}
if provider.ClientSecret = strings.TrimSpace(provider.ClientSecret); provider.ClientSecret == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-DF4ga", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-DF4ga", "Errors.Invalid.Argument")
}
if provider.AuthorizationEndpoint = strings.TrimSpace(provider.AuthorizationEndpoint); provider.AuthorizationEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-B23bs", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-B23bs", "Errors.Invalid.Argument")
}
if provider.TokenEndpoint = strings.TrimSpace(provider.TokenEndpoint); provider.TokenEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-D2gj8", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-D2gj8", "Errors.Invalid.Argument")
}
if provider.UserEndpoint = strings.TrimSpace(provider.UserEndpoint); provider.UserEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-Fb8jk", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-Fb8jk", "Errors.Invalid.Argument")
}
if provider.IDAttribute = strings.TrimSpace(provider.IDAttribute); provider.IDAttribute == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-sadf3d", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-sadf3d", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -637,25 +637,25 @@ func (c *Commands) prepareAddOrgOAuthProvider(a *org.Aggregate, writeModel *OrgO
func (c *Commands) prepareUpdateOrgOAuthProvider(a *org.Aggregate, writeModel *OrgOAuthIDPWriteModel, provider GenericOAuthProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if writeModel.ID = strings.TrimSpace(writeModel.ID); writeModel.ID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-asfsa", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-asfsa", "Errors.Invalid.Argument")
}
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-D32ef", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-D32ef", "Errors.Invalid.Argument")
}
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-Dbgzf", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-Dbgzf", "Errors.Invalid.Argument")
}
if provider.AuthorizationEndpoint = strings.TrimSpace(provider.AuthorizationEndpoint); provider.AuthorizationEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-B23bs", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-B23bs", "Errors.Invalid.Argument")
}
if provider.TokenEndpoint = strings.TrimSpace(provider.TokenEndpoint); provider.TokenEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-D2gj8", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-D2gj8", "Errors.Invalid.Argument")
}
if provider.UserEndpoint = strings.TrimSpace(provider.UserEndpoint); provider.UserEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-Fb8jk", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-Fb8jk", "Errors.Invalid.Argument")
}
if provider.IDAttribute = strings.TrimSpace(provider.IDAttribute); provider.IDAttribute == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-SAe4gh", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-SAe4gh", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -667,7 +667,7 @@ func (c *Commands) prepareUpdateOrgOAuthProvider(a *org.Aggregate, writeModel *O
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-JNsd3", "Errors.Org.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-JNsd3", "Errors.Org.IDPConfig.NotExisting")
}
event, err := writeModel.NewChangedEvent(
ctx,
@@ -695,16 +695,16 @@ func (c *Commands) prepareUpdateOrgOAuthProvider(a *org.Aggregate, writeModel *O
func (c *Commands) prepareAddOrgOIDCProvider(a *org.Aggregate, writeModel *OrgOIDCIDPWriteModel, provider GenericOIDCProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-Sgtj5", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-Sgtj5", "Errors.Invalid.Argument")
}
if provider.Issuer = strings.TrimSpace(provider.Issuer); provider.Issuer == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-Hz6zj", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-Hz6zj", "Errors.Invalid.Argument")
}
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-fb5jm", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-fb5jm", "Errors.Invalid.Argument")
}
if provider.ClientSecret = strings.TrimSpace(provider.ClientSecret); provider.ClientSecret == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-Sfdf4", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-Sfdf4", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -740,16 +740,16 @@ func (c *Commands) prepareAddOrgOIDCProvider(a *org.Aggregate, writeModel *OrgOI
func (c *Commands) prepareUpdateOrgOIDCProvider(a *org.Aggregate, writeModel *OrgOIDCIDPWriteModel, provider GenericOIDCProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if writeModel.ID = strings.TrimSpace(writeModel.ID); writeModel.ID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-SAfd3", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-SAfd3", "Errors.Invalid.Argument")
}
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-Dvf4f", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-Dvf4f", "Errors.Invalid.Argument")
}
if provider.Issuer = strings.TrimSpace(provider.Issuer); provider.Issuer == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-BDfr3", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-BDfr3", "Errors.Invalid.Argument")
}
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-Db3bs", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-Db3bs", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -761,7 +761,7 @@ func (c *Commands) prepareUpdateOrgOIDCProvider(a *org.Aggregate, writeModel *Or
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-Dg331", "Errors.Org.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-Dg331", "Errors.Org.IDPConfig.NotExisting")
}
event, err := writeModel.NewChangedEvent(
ctx,
@@ -787,13 +787,13 @@ func (c *Commands) prepareUpdateOrgOIDCProvider(a *org.Aggregate, writeModel *Or
func (c *Commands) prepareMigrateOrgOIDCToAzureADProvider(a *org.Aggregate, writeModel *OrgOIDCIDPWriteModel, provider AzureADProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-sdf3g", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-sdf3g", "Errors.Invalid.Argument")
}
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-Fhbr2", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-Fhbr2", "Errors.Invalid.Argument")
}
if provider.ClientSecret = strings.TrimSpace(provider.ClientSecret); provider.ClientSecret == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-Dzh3g", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-Dzh3g", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -805,7 +805,7 @@ func (c *Commands) prepareMigrateOrgOIDCToAzureADProvider(a *org.Aggregate, writ
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "INST-Dg239201", "Errors.Instance.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "INST-Dg239201", "Errors.Instance.IDPConfig.NotExisting")
}
secret, err := crypto.Encrypt([]byte(provider.ClientSecret), c.idpConfigEncryption)
if err != nil {
@@ -832,10 +832,10 @@ func (c *Commands) prepareMigrateOrgOIDCToAzureADProvider(a *org.Aggregate, writ
func (c *Commands) prepareMigrateOrgOIDCToGoogleProvider(a *org.Aggregate, writeModel *OrgOIDCIDPWriteModel, provider GoogleProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-D3fvs", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-D3fvs", "Errors.Invalid.Argument")
}
if provider.ClientSecret = strings.TrimSpace(provider.ClientSecret); provider.ClientSecret == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-W2vqs", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-W2vqs", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -847,7 +847,7 @@ func (c *Commands) prepareMigrateOrgOIDCToGoogleProvider(a *org.Aggregate, write
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "INST-x09981", "Errors.Instance.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "INST-x09981", "Errors.Instance.IDPConfig.NotExisting")
}
secret, err := crypto.Encrypt([]byte(provider.ClientSecret), c.idpConfigEncryption)
if err != nil {
@@ -872,19 +872,19 @@ func (c *Commands) prepareMigrateOrgOIDCToGoogleProvider(a *org.Aggregate, write
func (c *Commands) prepareAddOrgJWTProvider(a *org.Aggregate, writeModel *OrgJWTIDPWriteModel, provider JWTProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-JLKef", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-JLKef", "Errors.Invalid.Argument")
}
if provider.Issuer = strings.TrimSpace(provider.Issuer); provider.Issuer == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-WNJK3", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-WNJK3", "Errors.Invalid.Argument")
}
if provider.JWTEndpoint = strings.TrimSpace(provider.JWTEndpoint); provider.JWTEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-NJKSD", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-NJKSD", "Errors.Invalid.Argument")
}
if provider.KeyEndpoint = strings.TrimSpace(provider.KeyEndpoint); provider.KeyEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-NJKE3", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-NJKE3", "Errors.Invalid.Argument")
}
if provider.HeaderName = strings.TrimSpace(provider.HeaderName); provider.HeaderName == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-2rlks", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-2rlks", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -915,22 +915,22 @@ func (c *Commands) prepareAddOrgJWTProvider(a *org.Aggregate, writeModel *OrgJWT
func (c *Commands) prepareUpdateOrgJWTProvider(a *org.Aggregate, writeModel *OrgJWTIDPWriteModel, provider JWTProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if writeModel.ID = strings.TrimSpace(writeModel.ID); writeModel.ID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-HUe3q", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-HUe3q", "Errors.Invalid.Argument")
}
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-JKLS2", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-JKLS2", "Errors.Invalid.Argument")
}
if provider.Issuer = strings.TrimSpace(provider.Issuer); provider.Issuer == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-JKs3f", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-JKs3f", "Errors.Invalid.Argument")
}
if provider.JWTEndpoint = strings.TrimSpace(provider.JWTEndpoint); provider.JWTEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-NJKS2", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-NJKS2", "Errors.Invalid.Argument")
}
if provider.KeyEndpoint = strings.TrimSpace(provider.KeyEndpoint); provider.KeyEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-SJk2d", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-SJk2d", "Errors.Invalid.Argument")
}
if provider.HeaderName = strings.TrimSpace(provider.HeaderName); provider.HeaderName == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-SJK2f", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-SJK2f", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -942,7 +942,7 @@ func (c *Commands) prepareUpdateOrgJWTProvider(a *org.Aggregate, writeModel *Org
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-Bhju5", "Errors.Org.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-Bhju5", "Errors.Org.IDPConfig.NotExisting")
}
event, err := writeModel.NewChangedEvent(
ctx,
@@ -966,13 +966,13 @@ func (c *Commands) prepareUpdateOrgJWTProvider(a *org.Aggregate, writeModel *Org
func (c *Commands) prepareAddOrgAzureADProvider(a *org.Aggregate, writeModel *OrgAzureADIDPWriteModel, provider AzureADProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-sdf3g", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-sdf3g", "Errors.Invalid.Argument")
}
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-Fhbr2", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-Fhbr2", "Errors.Invalid.Argument")
}
if provider.ClientSecret = strings.TrimSpace(provider.ClientSecret); provider.ClientSecret == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-Dzh3g", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-Dzh3g", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1008,13 +1008,13 @@ func (c *Commands) prepareAddOrgAzureADProvider(a *org.Aggregate, writeModel *Or
func (c *Commands) prepareUpdateOrgAzureADProvider(a *org.Aggregate, writeModel *OrgAzureADIDPWriteModel, provider AzureADProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if writeModel.ID = strings.TrimSpace(writeModel.ID); writeModel.ID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-SAgh2", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-SAgh2", "Errors.Invalid.Argument")
}
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-fh3h1", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-fh3h1", "Errors.Invalid.Argument")
}
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-dmitg", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-dmitg", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1026,7 +1026,7 @@ func (c *Commands) prepareUpdateOrgAzureADProvider(a *org.Aggregate, writeModel
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-BHz3q", "Errors.Org.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-BHz3q", "Errors.Org.IDPConfig.NotExisting")
}
event, err := writeModel.NewChangedEvent(
ctx,
@@ -1052,10 +1052,10 @@ func (c *Commands) prepareUpdateOrgAzureADProvider(a *org.Aggregate, writeModel
func (c *Commands) prepareAddOrgGitHubProvider(a *org.Aggregate, writeModel *OrgGitHubIDPWriteModel, provider GitHubProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-Jdsgf", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-Jdsgf", "Errors.Invalid.Argument")
}
if provider.ClientSecret = strings.TrimSpace(provider.ClientSecret); provider.ClientSecret == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-dsgz3", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-dsgz3", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1089,10 +1089,10 @@ func (c *Commands) prepareAddOrgGitHubProvider(a *org.Aggregate, writeModel *Org
func (c *Commands) prepareUpdateOrgGitHubProvider(a *org.Aggregate, writeModel *OrgGitHubIDPWriteModel, provider GitHubProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if writeModel.ID = strings.TrimSpace(writeModel.ID); writeModel.ID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-sdf4h", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-sdf4h", "Errors.Invalid.Argument")
}
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-fdh5z", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-fdh5z", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1104,7 +1104,7 @@ func (c *Commands) prepareUpdateOrgGitHubProvider(a *org.Aggregate, writeModel *
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-Dr1gs", "Errors.Org.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-Dr1gs", "Errors.Org.IDPConfig.NotExisting")
}
event, err := writeModel.NewChangedEvent(
ctx,
@@ -1131,22 +1131,22 @@ func (c *Commands) prepareUpdateOrgGitHubProvider(a *org.Aggregate, writeModel *
func (c *Commands) prepareAddOrgGitHubEnterpriseProvider(a *org.Aggregate, writeModel *OrgGitHubEnterpriseIDPWriteModel, provider GitHubEnterpriseProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-Dg4td", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-Dg4td", "Errors.Invalid.Argument")
}
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-dgj53", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-dgj53", "Errors.Invalid.Argument")
}
if provider.ClientSecret = strings.TrimSpace(provider.ClientSecret); provider.ClientSecret == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-Ghjjs", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-Ghjjs", "Errors.Invalid.Argument")
}
if provider.AuthorizationEndpoint = strings.TrimSpace(provider.AuthorizationEndpoint); provider.AuthorizationEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-sani2", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-sani2", "Errors.Invalid.Argument")
}
if provider.TokenEndpoint = strings.TrimSpace(provider.TokenEndpoint); provider.TokenEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-agj42", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-agj42", "Errors.Invalid.Argument")
}
if provider.UserEndpoint = strings.TrimSpace(provider.UserEndpoint); provider.UserEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-sd5hn", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-sd5hn", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1183,22 +1183,22 @@ func (c *Commands) prepareAddOrgGitHubEnterpriseProvider(a *org.Aggregate, write
func (c *Commands) prepareUpdateOrgGitHubEnterpriseProvider(a *org.Aggregate, writeModel *OrgGitHubEnterpriseIDPWriteModel, provider GitHubEnterpriseProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if writeModel.ID = strings.TrimSpace(writeModel.ID); writeModel.ID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-sdfh3", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-sdfh3", "Errors.Invalid.Argument")
}
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-shj42", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-shj42", "Errors.Invalid.Argument")
}
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-sdh73", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-sdh73", "Errors.Invalid.Argument")
}
if provider.AuthorizationEndpoint = strings.TrimSpace(provider.AuthorizationEndpoint); provider.AuthorizationEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-acx2w", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-acx2w", "Errors.Invalid.Argument")
}
if provider.TokenEndpoint = strings.TrimSpace(provider.TokenEndpoint); provider.TokenEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-dgj6q", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-dgj6q", "Errors.Invalid.Argument")
}
if provider.UserEndpoint = strings.TrimSpace(provider.UserEndpoint); provider.UserEndpoint == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-ybj62", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-ybj62", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1210,7 +1210,7 @@ func (c *Commands) prepareUpdateOrgGitHubEnterpriseProvider(a *org.Aggregate, wr
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-GBr42", "Errors.Org.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-GBr42", "Errors.Org.IDPConfig.NotExisting")
}
event, err := writeModel.NewChangedEvent(
ctx,
@@ -1240,10 +1240,10 @@ func (c *Commands) prepareUpdateOrgGitHubEnterpriseProvider(a *org.Aggregate, wr
func (c *Commands) prepareAddOrgGitLabProvider(a *org.Aggregate, writeModel *OrgGitLabIDPWriteModel, provider GitLabProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-adsg2", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-adsg2", "Errors.Invalid.Argument")
}
if provider.ClientSecret = strings.TrimSpace(provider.ClientSecret); provider.ClientSecret == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-GD1j2", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-GD1j2", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1277,10 +1277,10 @@ func (c *Commands) prepareAddOrgGitLabProvider(a *org.Aggregate, writeModel *Org
func (c *Commands) prepareUpdateOrgGitLabProvider(a *org.Aggregate, writeModel *OrgGitLabIDPWriteModel, provider GitLabProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if writeModel.ID = strings.TrimSpace(writeModel.ID); writeModel.ID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-HJK91", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-HJK91", "Errors.Invalid.Argument")
}
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-D12t6", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-D12t6", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1292,7 +1292,7 @@ func (c *Commands) prepareUpdateOrgGitLabProvider(a *org.Aggregate, writeModel *
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-HBReq", "Errors.Org.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-HBReq", "Errors.Org.IDPConfig.NotExisting")
}
event, err := writeModel.NewChangedEvent(
ctx,
@@ -1319,16 +1319,16 @@ func (c *Commands) prepareUpdateOrgGitLabProvider(a *org.Aggregate, writeModel *
func (c *Commands) prepareAddOrgGitLabSelfHostedProvider(a *org.Aggregate, writeModel *OrgGitLabSelfHostedIDPWriteModel, provider GitLabSelfHostedProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-jw4ZT", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-jw4ZT", "Errors.Invalid.Argument")
}
if provider.Issuer = strings.TrimSpace(provider.Issuer); provider.Issuer == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-AST4S", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-AST4S", "Errors.Invalid.Argument")
}
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-DBZHJ", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-DBZHJ", "Errors.Invalid.Argument")
}
if provider.ClientSecret = strings.TrimSpace(provider.ClientSecret); provider.ClientSecret == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-SDGJ4", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-SDGJ4", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1363,16 +1363,16 @@ func (c *Commands) prepareAddOrgGitLabSelfHostedProvider(a *org.Aggregate, write
func (c *Commands) prepareUpdateOrgGitLabSelfHostedProvider(a *org.Aggregate, writeModel *OrgGitLabSelfHostedIDPWriteModel, provider GitLabSelfHostedProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if writeModel.ID = strings.TrimSpace(writeModel.ID); writeModel.ID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-SAFG4", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-SAFG4", "Errors.Invalid.Argument")
}
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-DG4H", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-DG4H", "Errors.Invalid.Argument")
}
if provider.Issuer = strings.TrimSpace(provider.Issuer); provider.Issuer == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-SD4eb", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-SD4eb", "Errors.Invalid.Argument")
}
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-GHWE3", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-GHWE3", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1384,7 +1384,7 @@ func (c *Commands) prepareUpdateOrgGitLabSelfHostedProvider(a *org.Aggregate, wr
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-D2tg1", "Errors.Org.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-D2tg1", "Errors.Org.IDPConfig.NotExisting")
}
event, err := writeModel.NewChangedEvent(
ctx,
@@ -1412,10 +1412,10 @@ func (c *Commands) prepareUpdateOrgGitLabSelfHostedProvider(a *org.Aggregate, wr
func (c *Commands) prepareAddOrgGoogleProvider(a *org.Aggregate, writeModel *OrgGoogleIDPWriteModel, provider GoogleProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-D3fvs", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-D3fvs", "Errors.Invalid.Argument")
}
if provider.ClientSecret = strings.TrimSpace(provider.ClientSecret); provider.ClientSecret == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-W2vqs", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-W2vqs", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1449,10 +1449,10 @@ func (c *Commands) prepareAddOrgGoogleProvider(a *org.Aggregate, writeModel *Org
func (c *Commands) prepareUpdateOrgGoogleProvider(a *org.Aggregate, writeModel *OrgGoogleIDPWriteModel, provider GoogleProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if writeModel.ID = strings.TrimSpace(writeModel.ID); writeModel.ID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-S32t1", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-S32t1", "Errors.Invalid.Argument")
}
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-ds432", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-ds432", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1464,7 +1464,7 @@ func (c *Commands) prepareUpdateOrgGoogleProvider(a *org.Aggregate, writeModel *
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-Dqrg1", "Errors.Org.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-Dqrg1", "Errors.Org.IDPConfig.NotExisting")
}
event, err := writeModel.NewChangedEvent(
ctx,
@@ -1488,28 +1488,28 @@ func (c *Commands) prepareUpdateOrgGoogleProvider(a *org.Aggregate, writeModel *
func (c *Commands) prepareAddOrgLDAPProvider(a *org.Aggregate, writeModel *OrgLDAPIDPWriteModel, provider LDAPProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-SAfdd", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-SAfdd", "Errors.Invalid.Argument")
}
if provider.BaseDN = strings.TrimSpace(provider.BaseDN); provider.BaseDN == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-sv31s", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-sv31s", "Errors.Invalid.Argument")
}
if provider.BindDN = strings.TrimSpace(provider.BindDN); provider.BindDN == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-sdgf4", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-sdgf4", "Errors.Invalid.Argument")
}
if provider.BindPassword = strings.TrimSpace(provider.BindPassword); provider.BindPassword == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-AEG2w", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-AEG2w", "Errors.Invalid.Argument")
}
if provider.UserBase = strings.TrimSpace(provider.UserBase); provider.UserBase == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-SAD5n", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-SAD5n", "Errors.Invalid.Argument")
}
if len(provider.Servers) == 0 {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-SAy945n", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-SAy945n", "Errors.Invalid.Argument")
}
if len(provider.UserObjectClasses) == 0 {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-S1x705n", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-S1x705n", "Errors.Invalid.Argument")
}
if len(provider.UserFilters) == 0 {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-aAx9x1n", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-aAx9x1n", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1550,28 +1550,28 @@ func (c *Commands) prepareAddOrgLDAPProvider(a *org.Aggregate, writeModel *OrgLD
func (c *Commands) prepareUpdateOrgLDAPProvider(a *org.Aggregate, writeModel *OrgLDAPIDPWriteModel, provider LDAPProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if writeModel.ID = strings.TrimSpace(writeModel.ID); writeModel.ID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-Dgdbs", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-Dgdbs", "Errors.Invalid.Argument")
}
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-Sffgd", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-Sffgd", "Errors.Invalid.Argument")
}
if provider.BaseDN = strings.TrimSpace(provider.BaseDN); provider.BaseDN == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-vb3ss", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-vb3ss", "Errors.Invalid.Argument")
}
if provider.BindDN = strings.TrimSpace(provider.BindDN); provider.BindDN == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-hbere", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-hbere", "Errors.Invalid.Argument")
}
if provider.UserBase = strings.TrimSpace(provider.UserBase); provider.UserBase == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-DG45z", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-DG45z", "Errors.Invalid.Argument")
}
if len(provider.Servers) == 0 {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-Sxx945n", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-Sxx945n", "Errors.Invalid.Argument")
}
if len(provider.UserObjectClasses) == 0 {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-S1p605n", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-S1p605n", "Errors.Invalid.Argument")
}
if len(provider.UserFilters) == 0 {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-aBx901n", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-aBx901n", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1583,7 +1583,7 @@ func (c *Commands) prepareUpdateOrgLDAPProvider(a *org.Aggregate, writeModel *Or
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-ASF3F", "Errors.Org.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-ASF3F", "Errors.Org.IDPConfig.NotExisting")
}
event, err := writeModel.NewChangedEvent(
ctx,
@@ -1614,16 +1614,16 @@ func (c *Commands) prepareUpdateOrgLDAPProvider(a *org.Aggregate, writeModel *Or
func (c *Commands) prepareAddOrgAppleProvider(a *org.Aggregate, writeModel *OrgAppleIDPWriteModel, provider AppleProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-jkn3w", "Errors.IDP.ClientIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-jkn3w", "Errors.IDP.ClientIDMissing")
}
if provider.TeamID = strings.TrimSpace(provider.TeamID); provider.TeamID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-Ffg32", "Errors.IDP.TeamIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-Ffg32", "Errors.IDP.TeamIDMissing")
}
if provider.KeyID = strings.TrimSpace(provider.KeyID); provider.KeyID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-GDjm5", "Errors.IDP.KeyIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-GDjm5", "Errors.IDP.KeyIDMissing")
}
if len(provider.PrivateKey) == 0 {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-GVD4n", "Errors.IDP.PrivateKeyMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-GVD4n", "Errors.IDP.PrivateKeyMissing")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1659,16 +1659,16 @@ func (c *Commands) prepareAddOrgAppleProvider(a *org.Aggregate, writeModel *OrgA
func (c *Commands) prepareUpdateOrgAppleProvider(a *org.Aggregate, writeModel *OrgAppleIDPWriteModel, provider AppleProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if writeModel.ID = strings.TrimSpace(writeModel.ID); writeModel.ID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-FRHBH", "Errors.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-FRHBH", "Errors.IDMissing")
}
if provider.ClientID = strings.TrimSpace(provider.ClientID); provider.ClientID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-SFm4l", "Errors.IDP.ClientIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-SFm4l", "Errors.IDP.ClientIDMissing")
}
if provider.TeamID = strings.TrimSpace(provider.TeamID); provider.TeamID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-SG34t", "Errors.IDP.TeamIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-SG34t", "Errors.IDP.TeamIDMissing")
}
if provider.KeyID = strings.TrimSpace(provider.KeyID); provider.KeyID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-Gh4z2", "Errors.IDP.KeyIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-Gh4z2", "Errors.IDP.KeyIDMissing")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1680,7 +1680,7 @@ func (c *Commands) prepareUpdateOrgAppleProvider(a *org.Aggregate, writeModel *O
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-SG3bh", "Errors.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-SG3bh", "Errors.IDPConfig.NotExisting")
}
event, err := writeModel.NewChangedEvent(
ctx,
@@ -1706,15 +1706,15 @@ func (c *Commands) prepareUpdateOrgAppleProvider(a *org.Aggregate, writeModel *O
func (c *Commands) prepareAddOrgSAMLProvider(a *org.Aggregate, writeModel *OrgSAMLIDPWriteModel, provider SAMLProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-957lr0f8u3", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-957lr0f8u3", "Errors.Invalid.Argument")
}
if provider.Metadata == nil && provider.MetadataURL == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-78isv6m53a", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-78isv6m53a", "Errors.Invalid.Argument")
}
if provider.Metadata == nil && provider.MetadataURL != "" {
data, err := xml.ReadMetadataFromURL(c.httpClient, provider.MetadataURL)
if err != nil {
- return nil, caos_errs.ThrowInvalidArgument(err, "ORG-ipzxvf3cv2", "Errors.Project.App.SAMLMetadataMissing")
+ return nil, zerrors.ThrowInvalidArgument(err, "ORG-ipzxvf3cv2", "Errors.Project.App.SAMLMetadataMissing")
}
provider.Metadata = data
}
@@ -1756,20 +1756,20 @@ func (c *Commands) prepareAddOrgSAMLProvider(a *org.Aggregate, writeModel *OrgSA
func (c *Commands) prepareUpdateOrgSAMLProvider(a *org.Aggregate, writeModel *OrgSAMLIDPWriteModel, provider SAMLProvider) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if writeModel.ID = strings.TrimSpace(writeModel.ID); writeModel.ID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-wwdwdlaya0", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-wwdwdlaya0", "Errors.Invalid.Argument")
}
if provider.Name = strings.TrimSpace(provider.Name); provider.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-egixaofgyl", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-egixaofgyl", "Errors.Invalid.Argument")
}
if provider.Metadata == nil && provider.MetadataURL != "" {
data, err := xml.ReadMetadataFromURL(c.httpClient, provider.MetadataURL)
if err != nil {
- return nil, caos_errs.ThrowInvalidArgument(err, "ORG-bkaiyd3rfo", "Errors.Project.App.SAMLMetadataMissing")
+ return nil, zerrors.ThrowInvalidArgument(err, "ORG-bkaiyd3rfo", "Errors.Project.App.SAMLMetadataMissing")
}
provider.Metadata = data
}
if provider.Metadata == nil {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-j6spncd74m", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-j6spncd74m", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1781,7 +1781,7 @@ func (c *Commands) prepareUpdateOrgSAMLProvider(a *org.Aggregate, writeModel *Or
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-z82dddndql", "Errors.Org.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-z82dddndql", "Errors.Org.IDPConfig.NotExisting")
}
event, err := writeModel.NewChangedEvent(
ctx,
@@ -1807,7 +1807,7 @@ func (c *Commands) prepareUpdateOrgSAMLProvider(a *org.Aggregate, writeModel *Or
func (c *Commands) prepareRegenerateOrgSAMLProviderCertificate(a *org.Aggregate, writeModel *OrgSAMLIDPWriteModel) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if writeModel.ID = strings.TrimSpace(writeModel.ID); writeModel.ID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "ORG-arv4vdrb6c", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-arv4vdrb6c", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
events, err := filter(ctx, writeModel.Query())
@@ -1819,7 +1819,7 @@ func (c *Commands) prepareRegenerateOrgSAMLProviderCertificate(a *org.Aggregate,
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-4dw21ch9o9", "Errors.Org.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-4dw21ch9o9", "Errors.Org.IDPConfig.NotExisting")
}
key, cert, err := c.samlCertificateAndKeyGenerator(writeModel.ID)
@@ -1860,7 +1860,7 @@ func (c *Commands) prepareDeleteOrgProvider(a *org.Aggregate, resourceOwner, id
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-Se3tg", "Errors.Org.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-Se3tg", "Errors.Org.IDPConfig.NotExisting")
}
return []eventstore.Command{org.NewIDPRemovedEvent(ctx, &a.Aggregate, id)}, nil
}, nil
diff --git a/internal/command/org_idp_config.go b/internal/command/org_idp_config.go
index f135a4109a..8b4954c015 100644
--- a/internal/command/org_idp_config.go
+++ b/internal/command/org_idp_config.go
@@ -5,10 +5,10 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
org_repo "github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) ImportIDPConfig(ctx context.Context, config *domain.IDPConfig, idpConfigID, resourceOwner string) (*domain.IDPConfig, error) {
@@ -17,17 +17,17 @@ func (c *Commands) ImportIDPConfig(ctx context.Context, config *domain.IDPConfig
return nil, err
}
if existingIDP.State != domain.IDPConfigStateRemoved && existingIDP.State != domain.IDPConfigStateUnspecified {
- return nil, errors.ThrowNotFound(nil, "Org-1J8fs", "Errors.Org.IDPConfig.AlreadyExisting")
+ return nil, zerrors.ThrowNotFound(nil, "Org-1J8fs", "Errors.Org.IDPConfig.AlreadyExisting")
}
return c.addIDPConfig(ctx, config, idpConfigID, resourceOwner)
}
func (c *Commands) AddIDPConfig(ctx context.Context, config *domain.IDPConfig, resourceOwner string) (*domain.IDPConfig, error) {
if resourceOwner == "" {
- return nil, errors.ThrowInvalidArgument(nil, "Org-0j8gs", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-0j8gs", "Errors.ResourceOwnerMissing")
}
if config.OIDCConfig == nil && config.JWTConfig == nil {
- return nil, errors.ThrowInvalidArgument(nil, "Org-eUpQU", "Errors.idp.config.notset")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-eUpQU", "Errors.idp.config.notset")
}
idpConfigID, err := c.idGenerator.Next()
if err != nil {
@@ -94,14 +94,14 @@ func (c *Commands) addIDPConfig(ctx context.Context, config *domain.IDPConfig, i
func (c *Commands) ChangeIDPConfig(ctx context.Context, config *domain.IDPConfig, resourceOwner string) (*domain.IDPConfig, error) {
if resourceOwner == "" {
- return nil, errors.ThrowInvalidArgument(nil, "Org-Gh8ds", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-Gh8ds", "Errors.ResourceOwnerMissing")
}
existingIDP, err := c.orgIDPConfigWriteModelByID(ctx, config.IDPConfigID, resourceOwner)
if err != nil {
return nil, err
}
if existingIDP.State == domain.IDPConfigStateRemoved || existingIDP.State == domain.IDPConfigStateUnspecified {
- return nil, errors.ThrowNotFound(nil, "Org-1J9fs", "Errors.Org.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "Org-1J9fs", "Errors.Org.IDPConfig.NotExisting")
}
orgAgg := OrgAggregateFromWriteModel(&existingIDP.WriteModel)
@@ -114,7 +114,7 @@ func (c *Commands) ChangeIDPConfig(ctx context.Context, config *domain.IDPConfig
config.AutoRegister)
if !hasChanged {
- return nil, errors.ThrowPreconditionFailed(nil, "Org-jf9w", "Errors.Org.IDPConfig.NotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "Org-jf9w", "Errors.Org.IDPConfig.NotChanged")
}
pushedEvents, err := c.eventstore.Push(ctx, changedEvent)
if err != nil {
@@ -133,7 +133,7 @@ func (c *Commands) DeactivateIDPConfig(ctx context.Context, idpID, orgID string)
return nil, err
}
if existingIDP.State != domain.IDPConfigStateActive {
- return nil, errors.ThrowPreconditionFailed(nil, "Org-BBmd0", "Errors.Org.IDPConfig.NotActive")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "Org-BBmd0", "Errors.Org.IDPConfig.NotActive")
}
orgAgg := OrgAggregateFromWriteModel(&existingIDP.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, org_repo.NewIDPConfigDeactivatedEvent(ctx, orgAgg, idpID))
@@ -153,7 +153,7 @@ func (c *Commands) ReactivateIDPConfig(ctx context.Context, idpID, orgID string)
return nil, err
}
if existingIDP.State != domain.IDPConfigStateInactive {
- return nil, errors.ThrowPreconditionFailed(nil, "Org-5Mo0d", "Errors.Org.IDPConfig.NotInactive")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "Org-5Mo0d", "Errors.Org.IDPConfig.NotInactive")
}
orgAgg := OrgAggregateFromWriteModel(&existingIDP.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, org_repo.NewIDPConfigReactivatedEvent(ctx, orgAgg, idpID))
@@ -189,7 +189,7 @@ func (c *Commands) RemoveIDPConfig(ctx context.Context, idpID, orgID string, cas
func (c *Commands) removeIDPConfig(ctx context.Context, existingIDP *OrgIDPConfigWriteModel, cascadeRemoveProvider bool, cascadeExternalIDPs ...*domain.UserIDPLink) ([]eventstore.Command, error) {
if existingIDP.State == domain.IDPConfigStateRemoved || existingIDP.State == domain.IDPConfigStateUnspecified {
- return nil, errors.ThrowNotFound(nil, "Org-Yx9vd", "Errors.Org.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "Org-Yx9vd", "Errors.Org.IDPConfig.NotExisting")
}
orgAgg := OrgAggregateFromWriteModel(&existingIDP.WriteModel)
@@ -210,7 +210,7 @@ func (c *Commands) getOrgIDPConfigByID(ctx context.Context, idpID, orgID string)
return nil, err
}
if !config.State.Exists() {
- return nil, errors.ThrowNotFound(nil, "ORG-2m90f", "Errors.Org.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-2m90f", "Errors.Org.IDPConfig.NotExisting")
}
return writeModelToIDPConfig(&config.IDPConfigWriteModel), nil
}
diff --git a/internal/command/org_idp_config_test.go b/internal/command/org_idp_config_test.go
index 3da55353aa..2897997695 100644
--- a/internal/command/org_idp_config_test.go
+++ b/internal/command/org_idp_config_test.go
@@ -10,7 +10,6 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/id"
@@ -18,6 +17,7 @@ import (
"github.com/zitadel/zitadel/internal/repository/idpconfig"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddIDPConfig(t *testing.T) {
@@ -65,7 +65,7 @@ func TestCommandSide_AddIDPConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -81,7 +81,7 @@ func TestCommandSide_AddIDPConfig(t *testing.T) {
config: &domain.IDPConfig{},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -261,7 +261,7 @@ func TestCommandSide_ChangeIDPConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -276,7 +276,7 @@ func TestCommandSide_ChangeIDPConfig(t *testing.T) {
config: &domain.IDPConfig{},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -295,7 +295,7 @@ func TestCommandSide_ChangeIDPConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -433,7 +433,7 @@ func TestCommands_RemoveIDPConfig(t *testing.T) {
},
res{
nil,
- caos_errs.IsNotFound,
+ zerrors.IsNotFound,
},
},
{
diff --git a/internal/command/org_idp_jwt_config.go b/internal/command/org_idp_jwt_config.go
index 94626420e5..c12ad8ec54 100644
--- a/internal/command/org_idp_jwt_config.go
+++ b/internal/command/org_idp_jwt_config.go
@@ -4,15 +4,15 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) ChangeIDPJWTConfig(ctx context.Context, config *domain.JWTIDPConfig, resourceOwner string) (*domain.JWTIDPConfig, error) {
if resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-ff8NF", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-ff8NF", "Errors.ResourceOwnerMissing")
}
if config.IDPConfigID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-2n99f", "Errors.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-2n99f", "Errors.IDMissing")
}
existingConfig := NewOrgIDPJWTConfigWriteModel(config.IDPConfigID, resourceOwner)
err := c.eventstore.FilterToQueryReducer(ctx, existingConfig)
@@ -21,7 +21,7 @@ func (c *Commands) ChangeIDPJWTConfig(ctx context.Context, config *domain.JWTIDP
}
if existingConfig.State == domain.IDPConfigStateRemoved || existingConfig.State == domain.IDPConfigStateUnspecified {
- return nil, caos_errs.ThrowNotFound(nil, "Org-67J9d", "Errors.Org.IDPConfig.AlreadyExists")
+ return nil, zerrors.ThrowNotFound(nil, "Org-67J9d", "Errors.Org.IDPConfig.AlreadyExists")
}
orgAgg := OrgAggregateFromWriteModel(&existingConfig.WriteModel)
@@ -37,7 +37,7 @@ func (c *Commands) ChangeIDPJWTConfig(ctx context.Context, config *domain.JWTIDP
return nil, err
}
if !hasChanged {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "Org-2k9fs", "Errors.Org.IDPConfig.NotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "Org-2k9fs", "Errors.Org.IDPConfig.NotChanged")
}
pushedEvents, err := c.eventstore.Push(ctx, changedEvent)
diff --git a/internal/command/org_idp_jwt_config_test.go b/internal/command/org_idp_jwt_config_test.go
index 4000f42100..9368cf9892 100644
--- a/internal/command/org_idp_jwt_config_test.go
+++ b/internal/command/org_idp_jwt_config_test.go
@@ -9,11 +9,11 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/idpconfig"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_ChangeIDPJWTConfig(t *testing.T) {
@@ -52,7 +52,7 @@ func TestCommandSide_ChangeIDPJWTConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -68,7 +68,7 @@ func TestCommandSide_ChangeIDPJWTConfig(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -87,7 +87,7 @@ func TestCommandSide_ChangeIDPJWTConfig(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -134,7 +134,7 @@ func TestCommandSide_ChangeIDPJWTConfig(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -179,7 +179,7 @@ func TestCommandSide_ChangeIDPJWTConfig(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
diff --git a/internal/command/org_idp_oidc_config.go b/internal/command/org_idp_oidc_config.go
index b712fa9a13..ed0add4ea8 100644
--- a/internal/command/org_idp_oidc_config.go
+++ b/internal/command/org_idp_oidc_config.go
@@ -4,15 +4,15 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) ChangeIDPOIDCConfig(ctx context.Context, config *domain.OIDCIDPConfig, resourceOwner string) (*domain.OIDCIDPConfig, error) {
if resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-4n8f2", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-4n8f2", "Errors.ResourceOwnerMissing")
}
if config.IDPConfigID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-66Qwj", "Errors.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-66Qwj", "Errors.IDMissing")
}
existingConfig := NewOrgIDPOIDCConfigWriteModel(config.IDPConfigID, resourceOwner)
err := c.eventstore.FilterToQueryReducer(ctx, existingConfig)
@@ -21,7 +21,7 @@ func (c *Commands) ChangeIDPOIDCConfig(ctx context.Context, config *domain.OIDCI
}
if existingConfig.State == domain.IDPConfigStateRemoved || existingConfig.State == domain.IDPConfigStateUnspecified {
- return nil, caos_errs.ThrowNotFound(nil, "Org-67J9d", "Errors.Org.IDPConfig.AlreadyExists")
+ return nil, zerrors.ThrowNotFound(nil, "Org-67J9d", "Errors.Org.IDPConfig.AlreadyExists")
}
orgAgg := OrgAggregateFromWriteModel(&existingConfig.WriteModel)
@@ -42,7 +42,7 @@ func (c *Commands) ChangeIDPOIDCConfig(ctx context.Context, config *domain.OIDCI
return nil, err
}
if !hasChanged {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "Org-10ods", "Errors.Org.IDPConfig.NotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "Org-10ods", "Errors.Org.IDPConfig.NotChanged")
}
pushedEvents, err := c.eventstore.Push(ctx, changedEvent)
diff --git a/internal/command/org_idp_oidc_config_test.go b/internal/command/org_idp_oidc_config_test.go
index fb68f7fac0..b448fb36bd 100644
--- a/internal/command/org_idp_oidc_config_test.go
+++ b/internal/command/org_idp_oidc_config_test.go
@@ -9,11 +9,11 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/idpconfig"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_ChangeIDPOIDCConfig(t *testing.T) {
@@ -52,7 +52,7 @@ func TestCommandSide_ChangeIDPOIDCConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -68,7 +68,7 @@ func TestCommandSide_ChangeIDPOIDCConfig(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -87,7 +87,7 @@ func TestCommandSide_ChangeIDPOIDCConfig(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -143,7 +143,7 @@ func TestCommandSide_ChangeIDPOIDCConfig(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -200,7 +200,7 @@ func TestCommandSide_ChangeIDPOIDCConfig(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
diff --git a/internal/command/org_idp_test.go b/internal/command/org_idp_test.go
index a740aa54a0..ebb8682125 100644
--- a/internal/command/org_idp_test.go
+++ b/internal/command/org_idp_test.go
@@ -12,12 +12,12 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errors "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/id"
id_mock "github.com/zitadel/zitadel/internal/id/mock"
"github.com/zitadel/zitadel/internal/repository/idp"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddOrgGenericOAuthIDP(t *testing.T) {
@@ -55,7 +55,7 @@ func TestCommandSide_AddOrgGenericOAuthIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-D32ef", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-D32ef", ""))
},
},
},
@@ -74,7 +74,7 @@ func TestCommandSide_AddOrgGenericOAuthIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-Dbgzf", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-Dbgzf", ""))
},
},
},
@@ -94,7 +94,7 @@ func TestCommandSide_AddOrgGenericOAuthIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-DF4ga", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-DF4ga", ""))
},
},
},
@@ -115,7 +115,7 @@ func TestCommandSide_AddOrgGenericOAuthIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-B23bs", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-B23bs", ""))
},
},
},
@@ -137,7 +137,7 @@ func TestCommandSide_AddOrgGenericOAuthIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-D2gj8", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-D2gj8", ""))
},
},
},
@@ -160,7 +160,7 @@ func TestCommandSide_AddOrgGenericOAuthIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-Fb8jk", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-Fb8jk", ""))
},
},
},
@@ -184,7 +184,7 @@ func TestCommandSide_AddOrgGenericOAuthIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-sadf3d", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-sadf3d", ""))
},
},
},
@@ -348,7 +348,7 @@ func TestCommandSide_UpdateOrgGenericOAuthIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-asfsa", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-asfsa", ""))
},
},
},
@@ -365,7 +365,7 @@ func TestCommandSide_UpdateOrgGenericOAuthIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-D32ef", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-D32ef", ""))
},
},
},
@@ -384,7 +384,7 @@ func TestCommandSide_UpdateOrgGenericOAuthIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-Dbgzf", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-Dbgzf", ""))
},
},
},
@@ -404,7 +404,7 @@ func TestCommandSide_UpdateOrgGenericOAuthIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-B23bs", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-B23bs", ""))
},
},
},
@@ -425,7 +425,7 @@ func TestCommandSide_UpdateOrgGenericOAuthIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-D2gj8", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-D2gj8", ""))
},
},
},
@@ -447,7 +447,7 @@ func TestCommandSide_UpdateOrgGenericOAuthIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-Fb8jk", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-Fb8jk", ""))
},
},
},
@@ -470,7 +470,7 @@ func TestCommandSide_UpdateOrgGenericOAuthIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-SAe4gh", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-SAe4gh", ""))
},
},
},
@@ -495,7 +495,7 @@ func TestCommandSide_UpdateOrgGenericOAuthIDP(t *testing.T) {
},
},
res: res{
- err: caos_errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -679,7 +679,7 @@ func TestCommandSide_AddOrgGenericOIDCIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-Sgtj5", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-Sgtj5", ""))
},
},
},
@@ -698,7 +698,7 @@ func TestCommandSide_AddOrgGenericOIDCIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-Hz6zj", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-Hz6zj", ""))
},
},
},
@@ -718,7 +718,7 @@ func TestCommandSide_AddOrgGenericOIDCIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-fb5jm", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-fb5jm", ""))
},
},
},
@@ -739,7 +739,7 @@ func TestCommandSide_AddOrgGenericOIDCIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-Sfdf4", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-Sfdf4", ""))
},
},
},
@@ -894,7 +894,7 @@ func TestCommandSide_UpdateOrgGenericOIDCIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-SAfd3", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-SAfd3", ""))
},
},
},
@@ -911,7 +911,7 @@ func TestCommandSide_UpdateOrgGenericOIDCIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-Dvf4f", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-Dvf4f", ""))
},
},
},
@@ -930,7 +930,7 @@ func TestCommandSide_UpdateOrgGenericOIDCIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-BDfr3", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-BDfr3", ""))
},
},
},
@@ -950,7 +950,7 @@ func TestCommandSide_UpdateOrgGenericOIDCIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-Db3bs", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-Db3bs", ""))
},
},
},
@@ -972,7 +972,7 @@ func TestCommandSide_UpdateOrgGenericOIDCIDP(t *testing.T) {
},
},
res: res{
- err: caos_errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1143,7 +1143,7 @@ func TestCommandSide_MigrateOrgGenericOIDCToAzureADProvider(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-sdf3g", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-sdf3g", ""))
},
},
},
@@ -1161,7 +1161,7 @@ func TestCommandSide_MigrateOrgGenericOIDCToAzureADProvider(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-Fhbr2", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-Fhbr2", ""))
},
},
},
@@ -1180,7 +1180,7 @@ func TestCommandSide_MigrateOrgGenericOIDCToAzureADProvider(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-Dzh3g", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-Dzh3g", ""))
},
},
},
@@ -1202,7 +1202,7 @@ func TestCommandSide_MigrateOrgGenericOIDCToAzureADProvider(t *testing.T) {
},
},
res: res{
- err: caos_errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1389,7 +1389,7 @@ func TestCommandSide_MigrateOrgOIDCToGoogleIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-D3fvs", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-D3fvs", ""))
},
},
},
@@ -1408,7 +1408,7 @@ func TestCommandSide_MigrateOrgOIDCToGoogleIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-W2vqs", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-W2vqs", ""))
},
},
},
@@ -1429,7 +1429,7 @@ func TestCommandSide_MigrateOrgOIDCToGoogleIDP(t *testing.T) {
},
},
res{
- err: caos_errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1606,7 +1606,7 @@ func TestCommandSide_AddOrgAzureADIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-sdf3g", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-sdf3g", ""))
},
},
},
@@ -1625,7 +1625,7 @@ func TestCommandSide_AddOrgAzureADIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-Fhbr2", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-Fhbr2", ""))
},
},
},
@@ -1645,7 +1645,7 @@ func TestCommandSide_AddOrgAzureADIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-Dzh3g", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-Dzh3g", ""))
},
},
},
@@ -1799,7 +1799,7 @@ func TestCommandSide_UpdateOrgAzureADIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-SAgh2", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-SAgh2", ""))
},
},
},
@@ -1816,7 +1816,7 @@ func TestCommandSide_UpdateOrgAzureADIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-fh3h1", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-fh3h1", ""))
},
},
},
@@ -1835,7 +1835,7 @@ func TestCommandSide_UpdateOrgAzureADIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-dmitg", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-dmitg", ""))
},
},
},
@@ -1856,7 +1856,7 @@ func TestCommandSide_UpdateOrgAzureADIDP(t *testing.T) {
},
},
res: res{
- err: caos_errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -2028,7 +2028,7 @@ func TestCommandSide_AddOrgGitHubIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-Jdsgf", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-Jdsgf", ""))
},
},
},
@@ -2047,7 +2047,7 @@ func TestCommandSide_AddOrgGitHubIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-dsgz3", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-dsgz3", ""))
},
},
},
@@ -2194,7 +2194,7 @@ func TestCommandSide_UpdateOrgGitHubIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-sdf4h", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-sdf4h", ""))
},
},
},
@@ -2211,7 +2211,7 @@ func TestCommandSide_UpdateOrgGitHubIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-fdh5z", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-fdh5z", ""))
},
},
},
@@ -2231,7 +2231,7 @@ func TestCommandSide_UpdateOrgGitHubIDP(t *testing.T) {
},
},
res: res{
- err: caos_errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -2394,7 +2394,7 @@ func TestCommandSide_AddOrgGitHubEnterpriseIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-Dg4td", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-Dg4td", ""))
},
},
},
@@ -2413,7 +2413,7 @@ func TestCommandSide_AddOrgGitHubEnterpriseIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-dgj53", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-dgj53", ""))
},
},
},
@@ -2433,7 +2433,7 @@ func TestCommandSide_AddOrgGitHubEnterpriseIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-Ghjjs", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-Ghjjs", ""))
},
},
},
@@ -2454,7 +2454,7 @@ func TestCommandSide_AddOrgGitHubEnterpriseIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-sani2", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-sani2", ""))
},
},
},
@@ -2476,7 +2476,7 @@ func TestCommandSide_AddOrgGitHubEnterpriseIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-agj42", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-agj42", ""))
},
},
},
@@ -2499,7 +2499,7 @@ func TestCommandSide_AddOrgGitHubEnterpriseIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-sd5hn", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-sd5hn", ""))
},
},
},
@@ -2659,7 +2659,7 @@ func TestCommandSide_UpdateOrgGitHubEnterpriseIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-sdfh3", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-sdfh3", ""))
},
},
},
@@ -2676,7 +2676,7 @@ func TestCommandSide_UpdateOrgGitHubEnterpriseIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-shj42", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-shj42", ""))
},
},
},
@@ -2695,7 +2695,7 @@ func TestCommandSide_UpdateOrgGitHubEnterpriseIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-sdh73", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-sdh73", ""))
},
},
},
@@ -2715,7 +2715,7 @@ func TestCommandSide_UpdateOrgGitHubEnterpriseIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-acx2w", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-acx2w", ""))
},
},
},
@@ -2736,7 +2736,7 @@ func TestCommandSide_UpdateOrgGitHubEnterpriseIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-dgj6q", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-dgj6q", ""))
},
},
},
@@ -2758,7 +2758,7 @@ func TestCommandSide_UpdateOrgGitHubEnterpriseIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-ybj62", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-ybj62", ""))
},
},
},
@@ -2782,7 +2782,7 @@ func TestCommandSide_UpdateOrgGitHubEnterpriseIDP(t *testing.T) {
},
},
res: res{
- err: caos_errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -2961,7 +2961,7 @@ func TestCommandSide_AddOrgGitLabIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-adsg2", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-adsg2", ""))
},
},
},
@@ -2980,7 +2980,7 @@ func TestCommandSide_AddOrgGitLabIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-GD1j2", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-GD1j2", ""))
},
},
},
@@ -3126,7 +3126,7 @@ func TestCommandSide_UpdateOrgGitLabIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-HJK91", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-HJK91", ""))
},
},
},
@@ -3143,7 +3143,7 @@ func TestCommandSide_UpdateOrgGitLabIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-D12t6", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-D12t6", ""))
},
},
},
@@ -3163,7 +3163,7 @@ func TestCommandSide_UpdateOrgGitLabIDP(t *testing.T) {
},
},
res: res{
- err: caos_errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -3324,7 +3324,7 @@ func TestCommandSide_AddOrgGitLabSelfHostedIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-jw4ZT", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-jw4ZT", ""))
},
},
},
@@ -3343,7 +3343,7 @@ func TestCommandSide_AddOrgGitLabSelfHostedIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-AST4S", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-AST4S", ""))
},
},
},
@@ -3363,7 +3363,7 @@ func TestCommandSide_AddOrgGitLabSelfHostedIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-DBZHJ", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-DBZHJ", ""))
},
},
},
@@ -3384,7 +3384,7 @@ func TestCommandSide_AddOrgGitLabSelfHostedIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-SDGJ4", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-SDGJ4", ""))
},
},
},
@@ -3536,7 +3536,7 @@ func TestCommandSide_UpdateOrgGitLabSelfHostedIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-SAFG4", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-SAFG4", ""))
},
},
},
@@ -3553,7 +3553,7 @@ func TestCommandSide_UpdateOrgGitLabSelfHostedIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-DG4H", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-DG4H", ""))
},
},
},
@@ -3572,7 +3572,7 @@ func TestCommandSide_UpdateOrgGitLabSelfHostedIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-SD4eb", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-SD4eb", ""))
},
},
},
@@ -3592,7 +3592,7 @@ func TestCommandSide_UpdateOrgGitLabSelfHostedIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-GHWE3", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-GHWE3", ""))
},
},
},
@@ -3614,7 +3614,7 @@ func TestCommandSide_UpdateOrgGitLabSelfHostedIDP(t *testing.T) {
},
},
res: res{
- err: caos_errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -3783,7 +3783,7 @@ func TestCommandSide_AddOrgGoogleIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-D3fvs", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-D3fvs", ""))
},
},
},
@@ -3802,7 +3802,7 @@ func TestCommandSide_AddOrgGoogleIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-W2vqs", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-W2vqs", ""))
},
},
},
@@ -3948,7 +3948,7 @@ func TestCommandSide_UpdateOrgGoogleIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-S32t1", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-S32t1", ""))
},
},
},
@@ -3965,7 +3965,7 @@ func TestCommandSide_UpdateOrgGoogleIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-ds432", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-ds432", ""))
},
},
},
@@ -3985,7 +3985,7 @@ func TestCommandSide_UpdateOrgGoogleIDP(t *testing.T) {
},
},
res: res{
- err: caos_errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -4146,7 +4146,7 @@ func TestCommandSide_AddOrgLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-SAfdd", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-SAfdd", ""))
},
},
},
@@ -4165,7 +4165,7 @@ func TestCommandSide_AddOrgLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-sv31s", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-sv31s", ""))
},
},
},
@@ -4185,7 +4185,7 @@ func TestCommandSide_AddOrgLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-sdgf4", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-sdgf4", ""))
},
},
},
@@ -4206,7 +4206,7 @@ func TestCommandSide_AddOrgLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-AEG2w", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-AEG2w", ""))
},
},
},
@@ -4228,7 +4228,7 @@ func TestCommandSide_AddOrgLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-SAD5n", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-SAD5n", ""))
},
},
},
@@ -4251,7 +4251,7 @@ func TestCommandSide_AddOrgLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-SAy945n", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-SAy945n", ""))
},
},
},
@@ -4275,7 +4275,7 @@ func TestCommandSide_AddOrgLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-S1x705n", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-S1x705n", ""))
},
},
},
@@ -4300,7 +4300,7 @@ func TestCommandSide_AddOrgLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-aAx9x1n", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-aAx9x1n", ""))
},
},
},
@@ -4504,7 +4504,7 @@ func TestCommandSide_UpdateOrgLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-Dgdbs", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-Dgdbs", ""))
},
},
},
@@ -4521,7 +4521,7 @@ func TestCommandSide_UpdateOrgLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-Sffgd", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-Sffgd", ""))
},
},
},
@@ -4540,7 +4540,7 @@ func TestCommandSide_UpdateOrgLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-vb3ss", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-vb3ss", ""))
},
},
},
@@ -4560,7 +4560,7 @@ func TestCommandSide_UpdateOrgLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-hbere", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-hbere", ""))
},
},
},
@@ -4581,7 +4581,7 @@ func TestCommandSide_UpdateOrgLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-DG45z", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-DG45z", ""))
},
},
},
@@ -4603,7 +4603,7 @@ func TestCommandSide_UpdateOrgLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-Sxx945n", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-Sxx945n", ""))
},
},
},
@@ -4626,7 +4626,7 @@ func TestCommandSide_UpdateOrgLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-S1p605n", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-S1p605n", ""))
},
},
},
@@ -4650,7 +4650,7 @@ func TestCommandSide_UpdateOrgLDAPIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-aBx901n", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-aBx901n", ""))
},
},
},
@@ -4678,7 +4678,7 @@ func TestCommandSide_UpdateOrgLDAPIDP(t *testing.T) {
},
res: res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowNotFound(nil, "ORG-ASF3F", ""))
+ return errors.Is(err, zerrors.ThrowNotFound(nil, "ORG-ASF3F", ""))
},
},
},
@@ -4905,7 +4905,7 @@ func TestCommandSide_AddOrgAppleIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-jkn3w", "Errors.IDP.ClientIDMissing"))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-jkn3w", "Errors.IDP.ClientIDMissing"))
},
},
},
@@ -4924,7 +4924,7 @@ func TestCommandSide_AddOrgAppleIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-Ffg32", "Errors.IDP.TeamIDMissing"))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-Ffg32", "Errors.IDP.TeamIDMissing"))
},
},
},
@@ -4944,7 +4944,7 @@ func TestCommandSide_AddOrgAppleIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-GDjm5", "Errors.IDP.KeyIDMissing"))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-GDjm5", "Errors.IDP.KeyIDMissing"))
},
},
},
@@ -4965,7 +4965,7 @@ func TestCommandSide_AddOrgAppleIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-GVD4n", "Errors.IDP.PrivateKeyMissing"))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-GVD4n", "Errors.IDP.PrivateKeyMissing"))
},
},
},
@@ -5119,7 +5119,7 @@ func TestCommandSide_UpdateOrgAppleIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-FRHBH", "Errors.IDMissing"))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-FRHBH", "Errors.IDMissing"))
},
},
},
@@ -5136,7 +5136,7 @@ func TestCommandSide_UpdateOrgAppleIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-SFm4l", "Errors.IDP.ClientIDMissing"))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-SFm4l", "Errors.IDP.ClientIDMissing"))
},
},
},
@@ -5155,7 +5155,7 @@ func TestCommandSide_UpdateOrgAppleIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-SG34t", "Errors.IDP.TeamIDMissing"))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-SG34t", "Errors.IDP.TeamIDMissing"))
},
},
},
@@ -5175,7 +5175,7 @@ func TestCommandSide_UpdateOrgAppleIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-Gh4z2", "Errors.IDP.KeyIDMissing"))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-Gh4z2", "Errors.IDP.KeyIDMissing"))
},
},
},
@@ -5197,7 +5197,7 @@ func TestCommandSide_UpdateOrgAppleIDP(t *testing.T) {
},
},
res: res{
- err: caos_errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -5373,7 +5373,7 @@ func TestCommandSide_AddOrgSAMLIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-957lr0f8u3", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-957lr0f8u3", ""))
},
},
},
@@ -5392,7 +5392,7 @@ func TestCommandSide_AddOrgSAMLIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-78isv6m53a", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-78isv6m53a", ""))
},
},
},
@@ -5545,7 +5545,7 @@ func TestCommandSide_UpdateOrgSAMLIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-wwdwdlaya0", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-wwdwdlaya0", ""))
},
},
},
@@ -5562,7 +5562,7 @@ func TestCommandSide_UpdateOrgSAMLIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-egixaofgyl", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-egixaofgyl", ""))
},
},
},
@@ -5581,7 +5581,7 @@ func TestCommandSide_UpdateOrgSAMLIDP(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-j6spncd74m", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-j6spncd74m", ""))
},
},
},
@@ -5603,7 +5603,7 @@ func TestCommandSide_UpdateOrgSAMLIDP(t *testing.T) {
},
res: res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowNotFound(nil, "ORG-z82dddndql", ""))
+ return errors.Is(err, zerrors.ThrowNotFound(nil, "ORG-z82dddndql", ""))
},
},
},
@@ -5764,7 +5764,7 @@ func TestCommandSide_RegenerateOrgSAMLProviderCertificate(t *testing.T) {
},
res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "ORG-arv4vdrb6c", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "ORG-arv4vdrb6c", ""))
},
},
},
@@ -5782,7 +5782,7 @@ func TestCommandSide_RegenerateOrgSAMLProviderCertificate(t *testing.T) {
},
res: res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowNotFound(nil, "ORG-4dw21ch9o9", ""))
+ return errors.Is(err, zerrors.ThrowNotFound(nil, "ORG-4dw21ch9o9", ""))
},
},
},
diff --git a/internal/command/org_member.go b/internal/command/org_member.go
index 3ead7a0685..9ba7ecbfff 100644
--- a/internal/command/org_member.go
+++ b/internal/command/org_member.go
@@ -6,30 +6,30 @@ import (
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddOrgMemberCommand(a *org.Aggregate, userID string, roles ...string) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if userID == "" {
- return nil, errors.ThrowInvalidArgument(nil, "ORG-4Mlfs", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "ORG-4Mlfs", "Errors.Invalid.Argument")
}
if len(roles) == 0 {
- return nil, errors.ThrowInvalidArgument(nil, "V2-PfYhb", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "V2-PfYhb", "Errors.Invalid.Argument")
}
if len(domain.CheckForInvalidRoles(roles, domain.OrgRolePrefix, c.zitadelRoles)) > 0 && len(domain.CheckForInvalidRoles(roles, domain.RoleSelfManagementGlobal, c.zitadelRoles)) > 0 {
- return nil, errors.ThrowInvalidArgument(nil, "Org-4N8es", "Errors.Org.MemberInvalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-4N8es", "Errors.Org.MemberInvalid")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
if exists, err := ExistsUser(ctx, filter, userID, ""); err != nil || !exists {
- return nil, errors.ThrowPreconditionFailed(err, "ORG-GoXOn", "Errors.User.NotFound")
+ return nil, zerrors.ThrowPreconditionFailed(err, "ORG-GoXOn", "Errors.User.NotFound")
}
if isMember, err := IsOrgMember(ctx, filter, a.ID, userID); err != nil || isMember {
- return nil, errors.ThrowAlreadyExists(err, "ORG-poWwe", "Errors.Org.Member.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(err, "ORG-poWwe", "Errors.Org.Member.AlreadyExists")
}
return []eventstore.Command{org.NewMemberAddedEvent(ctx, &a.Aggregate, userID, roles...)}, nil
},
@@ -93,17 +93,17 @@ func (c *Commands) AddOrgMember(ctx context.Context, orgID, userID string, roles
func (c *Commands) addOrgMember(ctx context.Context, orgAgg *eventstore.Aggregate, addedMember *OrgMemberWriteModel, member *domain.Member) (eventstore.Command, error) {
if !member.IsValid() {
- return nil, errors.ThrowInvalidArgument(nil, "Org-W8m4l", "Errors.Org.MemberInvalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-W8m4l", "Errors.Org.MemberInvalid")
}
if len(domain.CheckForInvalidRoles(member.Roles, domain.OrgRolePrefix, c.zitadelRoles)) > 0 && len(domain.CheckForInvalidRoles(member.Roles, domain.RoleSelfManagementGlobal, c.zitadelRoles)) > 0 {
- return nil, errors.ThrowInvalidArgument(nil, "Org-4N8es", "Errors.Org.MemberInvalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-4N8es", "Errors.Org.MemberInvalid")
}
err := c.eventstore.FilterToQueryReducer(ctx, addedMember)
if err != nil {
return nil, err
}
if addedMember.State == domain.MemberStateActive {
- return nil, errors.ThrowAlreadyExists(nil, "Org-PtXi1", "Errors.Org.Member.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "Org-PtXi1", "Errors.Org.Member.AlreadyExists")
}
return org.NewMemberAddedEvent(ctx, orgAgg, member.UserID, member.Roles...), nil
@@ -112,10 +112,10 @@ func (c *Commands) addOrgMember(ctx context.Context, orgAgg *eventstore.Aggregat
// ChangeOrgMember updates an existing member
func (c *Commands) ChangeOrgMember(ctx context.Context, member *domain.Member) (*domain.Member, error) {
if !member.IsValid() {
- return nil, errors.ThrowInvalidArgument(nil, "Org-LiaZi", "Errors.Org.MemberInvalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-LiaZi", "Errors.Org.MemberInvalid")
}
if len(domain.CheckForInvalidRoles(member.Roles, domain.OrgRolePrefix, c.zitadelRoles)) > 0 {
- return nil, errors.ThrowInvalidArgument(nil, "IAM-m9fG8", "Errors.Org.MemberInvalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "IAM-m9fG8", "Errors.Org.MemberInvalid")
}
existingMember, err := c.orgMemberWriteModelByID(ctx, member.AggregateID, member.UserID)
@@ -124,7 +124,7 @@ func (c *Commands) ChangeOrgMember(ctx context.Context, member *domain.Member) (
}
if reflect.DeepEqual(existingMember.Roles, member.Roles) {
- return nil, errors.ThrowPreconditionFailed(nil, "Org-LiaZi", "Errors.Org.Member.RolesNotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "Org-LiaZi", "Errors.Org.Member.RolesNotChanged")
}
orgAgg := OrgAggregateFromWriteModel(&existingMember.MemberWriteModel.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, org.NewMemberChangedEvent(ctx, orgAgg, member.UserID, member.Roles...))
@@ -141,10 +141,10 @@ func (c *Commands) ChangeOrgMember(ctx context.Context, member *domain.Member) (
func (c *Commands) RemoveOrgMember(ctx context.Context, orgID, userID string) (*domain.ObjectDetails, error) {
m, err := c.orgMemberWriteModelByID(ctx, orgID, userID)
- if err != nil && !errors.IsNotFound(err) {
+ if err != nil && !zerrors.IsNotFound(err) {
return nil, err
}
- if errors.IsNotFound(err) {
+ if zerrors.IsNotFound(err) {
// empty response because we have no data that match the request
return &domain.ObjectDetails{}, nil
}
@@ -184,7 +184,7 @@ func (c *Commands) orgMemberWriteModelByID(ctx context.Context, orgID, userID st
}
if writeModel.State == domain.MemberStateUnspecified || writeModel.State == domain.MemberStateRemoved {
- return nil, errors.ThrowNotFound(nil, "Org-D8JxR", "Errors.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "Org-D8JxR", "Errors.NotFound")
}
return writeModel, nil
diff --git a/internal/command/org_member_test.go b/internal/command/org_member_test.go
index db2b9038a2..2c49f3bd73 100644
--- a/internal/command/org_member_test.go
+++ b/internal/command/org_member_test.go
@@ -10,12 +10,12 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/project"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestAddMember(t *testing.T) {
@@ -42,7 +42,7 @@ func TestAddMember(t *testing.T) {
userID: "",
},
want: Want{
- ValidationErr: errors.ThrowInvalidArgument(nil, "ORG-4Mlfs", "Errors.Invalid.Argument"),
+ ValidationErr: zerrors.ThrowInvalidArgument(nil, "ORG-4Mlfs", "Errors.Invalid.Argument"),
},
},
{
@@ -52,7 +52,7 @@ func TestAddMember(t *testing.T) {
userID: "12342",
},
want: Want{
- ValidationErr: errors.ThrowInvalidArgument(nil, "V2-PfYhb", "Errors.Invalid.Argument"),
+ ValidationErr: zerrors.ThrowInvalidArgument(nil, "V2-PfYhb", "Errors.Invalid.Argument"),
},
},
{
@@ -63,7 +63,7 @@ func TestAddMember(t *testing.T) {
roles: []string{"ORG_OWNER"},
},
want: Want{
- ValidationErr: errors.ThrowInvalidArgument(nil, "Org-4N8es", ""),
+ ValidationErr: zerrors.ThrowInvalidArgument(nil, "Org-4N8es", ""),
},
},
{
@@ -83,7 +83,7 @@ func TestAddMember(t *testing.T) {
}).Filter(),
},
want: Want{
- CreateErr: errors.ThrowPreconditionFailed(nil, "ORG-GoXOn", "Errors.User.NotFound"),
+ CreateErr: zerrors.ThrowPreconditionFailed(nil, "ORG-GoXOn", "Errors.User.NotFound"),
},
},
{
@@ -123,7 +123,7 @@ func TestAddMember(t *testing.T) {
Filter(),
},
want: Want{
- CreateErr: errors.ThrowAlreadyExists(nil, "ORG-poWwe", "Errors.Org.Member.AlreadyExists"),
+ CreateErr: zerrors.ThrowAlreadyExists(nil, "ORG-poWwe", "Errors.Org.Member.AlreadyExists"),
},
},
{
@@ -262,7 +262,7 @@ func TestIsMember(t *testing.T) {
name: "error durring filter",
args: args{
filter: func(_ context.Context, _ *eventstore.SearchQueryBuilder) ([]eventstore.Event, error) {
- return nil, errors.ThrowInternal(nil, "PROJE-Op26p", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(nil, "PROJE-Op26p", "Errors.Internal")
},
orgID: "orgID",
userID: "userID",
@@ -318,7 +318,7 @@ func TestCommandSide_AddOrgMember(t *testing.T) {
orgID: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -335,7 +335,7 @@ func TestCommandSide_AddOrgMember(t *testing.T) {
roles: []string{"ORG_OWNER"},
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -358,7 +358,7 @@ func TestCommandSide_AddOrgMember(t *testing.T) {
roles: []string{domain.RoleOrgOwner},
},
res: res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -404,7 +404,7 @@ func TestCommandSide_AddOrgMember(t *testing.T) {
roles: []string{"ORG_OWNER"},
},
res: res{
- err: errors.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -429,7 +429,7 @@ func TestCommandSide_AddOrgMember(t *testing.T) {
),
),
expectFilter(),
- expectPushFailed(errors.ThrowAlreadyExists(nil, "ERROR", "internal"),
+ expectPushFailed(zerrors.ThrowAlreadyExists(nil, "ERROR", "internal"),
org.NewMemberAddedEvent(context.Background(),
&org.NewAggregate("org1").Aggregate,
"user1",
@@ -450,7 +450,7 @@ func TestCommandSide_AddOrgMember(t *testing.T) {
roles: []string{"ORG_OWNER"},
},
res: res{
- err: errors.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -562,7 +562,7 @@ func TestCommandSide_ChangeOrgMember(t *testing.T) {
},
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -583,7 +583,7 @@ func TestCommandSide_ChangeOrgMember(t *testing.T) {
},
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -610,7 +610,7 @@ func TestCommandSide_ChangeOrgMember(t *testing.T) {
},
},
res: res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -645,7 +645,7 @@ func TestCommandSide_ChangeOrgMember(t *testing.T) {
},
},
res: res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -755,7 +755,7 @@ func TestCommandSide_RemoveOrgMember(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -772,7 +772,7 @@ func TestCommandSide_RemoveOrgMember(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
diff --git a/internal/command/org_metadata.go b/internal/command/org_metadata.go
index c1a3784472..e564bb264e 100644
--- a/internal/command/org_metadata.go
+++ b/internal/command/org_metadata.go
@@ -4,9 +4,9 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) SetOrgMetadata(ctx context.Context, orgID string, metadata *domain.Metadata) (_ *domain.Metadata, err error) {
@@ -34,7 +34,7 @@ func (c *Commands) SetOrgMetadata(ctx context.Context, orgID string, metadata *d
func (c *Commands) BulkSetOrgMetadata(ctx context.Context, orgID string, metadatas ...*domain.Metadata) (_ *domain.ObjectDetails, err error) {
if len(metadatas) == 0 {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "META-9mm2d", "Errors.Metadata.NoData")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "META-9mm2d", "Errors.Metadata.NoData")
}
err = c.checkOrgExists(ctx, orgID)
if err != nil {
@@ -66,7 +66,7 @@ func (c *Commands) BulkSetOrgMetadata(ctx context.Context, orgID string, metadat
func (c *Commands) setOrgMetadata(ctx context.Context, orgAgg *eventstore.Aggregate, metadata *domain.Metadata) (command eventstore.Command, err error) {
if !metadata.IsValid() {
- return nil, caos_errs.ThrowInvalidArgument(nil, "META-2ml0f", "Errors.Metadata.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "META-2ml0f", "Errors.Metadata.Invalid")
}
return org.NewMetadataSetEvent(
ctx,
@@ -78,7 +78,7 @@ func (c *Commands) setOrgMetadata(ctx context.Context, orgAgg *eventstore.Aggreg
func (c *Commands) RemoveOrgMetadata(ctx context.Context, orgID, metadataKey string) (_ *domain.ObjectDetails, err error) {
if metadataKey == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "META-2n0f1", "Errors.Metadata.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "META-2n0f1", "Errors.Metadata.Invalid")
}
err = c.checkOrgExists(ctx, orgID)
if err != nil {
@@ -89,7 +89,7 @@ func (c *Commands) RemoveOrgMetadata(ctx context.Context, orgID, metadataKey str
return nil, err
}
if !removeMetadata.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "META-mcnw3", "Errors.Metadata.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "META-mcnw3", "Errors.Metadata.NotFound")
}
orgAgg := OrgAggregateFromWriteModel(&removeMetadata.WriteModel)
event, err := c.removeOrgMetadata(ctx, orgAgg, metadataKey)
@@ -110,7 +110,7 @@ func (c *Commands) RemoveOrgMetadata(ctx context.Context, orgID, metadataKey str
func (c *Commands) BulkRemoveOrgMetadata(ctx context.Context, orgID string, metadataKeys ...string) (_ *domain.ObjectDetails, err error) {
if len(metadataKeys) == 0 {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "META-9mw2d", "Errors.Metadata.NoData")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "META-9mw2d", "Errors.Metadata.NoData")
}
err = c.checkOrgExists(ctx, orgID)
if err != nil {
@@ -125,10 +125,10 @@ func (c *Commands) BulkRemoveOrgMetadata(ctx context.Context, orgID string, meta
orgAgg := OrgAggregateFromWriteModel(&removeMetadata.WriteModel)
for i, key := range metadataKeys {
if key == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-m19ds", "Errors.Metadata.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-m19ds", "Errors.Metadata.Invalid")
}
if _, found := removeMetadata.metadataList[key]; !found {
- return nil, caos_errs.ThrowNotFound(nil, "META-2npds", "Errors.Metadata.KeyNotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "META-2npds", "Errors.Metadata.KeyNotExisting")
}
event, err := c.removeOrgMetadata(ctx, orgAgg, key)
if err != nil {
diff --git a/internal/command/org_metadata_test.go b/internal/command/org_metadata_test.go
index 2f20d12c6f..e52f2480b6 100644
--- a/internal/command/org_metadata_test.go
+++ b/internal/command/org_metadata_test.go
@@ -7,10 +7,10 @@ import (
"github.com/stretchr/testify/assert"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_SetOrgMetadata(t *testing.T) {
@@ -51,7 +51,7 @@ func TestCommandSide_SetOrgMetadata(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -77,7 +77,7 @@ func TestCommandSide_SetOrgMetadata(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -175,7 +175,7 @@ func TestCommandSide_BulkSetOrgMetadata(t *testing.T) {
orgID: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -195,7 +195,7 @@ func TestCommandSide_BulkSetOrgMetadata(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -222,7 +222,7 @@ func TestCommandSide_BulkSetOrgMetadata(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -321,7 +321,7 @@ func TestCommandSide_OrgRemoveMetadata(t *testing.T) {
metadataKey: "key",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -337,7 +337,7 @@ func TestCommandSide_OrgRemoveMetadata(t *testing.T) {
metadataKey: "",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -362,7 +362,7 @@ func TestCommandSide_OrgRemoveMetadata(t *testing.T) {
metadataKey: "key",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -459,7 +459,7 @@ func TestCommandSide_BulkRemoveOrgMetadata(t *testing.T) {
orgID: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -476,7 +476,7 @@ func TestCommandSide_BulkRemoveOrgMetadata(t *testing.T) {
metadataList: []string{"key", "key1"},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -509,7 +509,7 @@ func TestCommandSide_BulkRemoveOrgMetadata(t *testing.T) {
metadataList: []string{"key", "key1"},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -549,7 +549,7 @@ func TestCommandSide_BulkRemoveOrgMetadata(t *testing.T) {
metadataList: []string{""},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
diff --git a/internal/command/org_policy_domain.go b/internal/command/org_policy_domain.go
index 167b51af6c..f4e4b59a93 100644
--- a/internal/command/org_policy_domain.go
+++ b/internal/command/org_policy_domain.go
@@ -5,15 +5,15 @@ import (
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddOrgDomainPolicy(ctx context.Context, resourceOwner string, userLoginMustBeDomain, validateOrgDomains, smtpSenderAddressMatchesInstanceDomain bool) (*domain.ObjectDetails, error) {
if resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-4Jfsf", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-4Jfsf", "Errors.ResourceOwnerMissing")
}
orgAgg := org.NewAggregate(resourceOwner)
cmds, err := preparation.PrepareCommands(ctx, c.eventstore.Filter, prepareAddOrgDomainPolicy(orgAgg, userLoginMustBeDomain, validateOrgDomains, smtpSenderAddressMatchesInstanceDomain))
@@ -29,7 +29,7 @@ func (c *Commands) AddOrgDomainPolicy(ctx context.Context, resourceOwner string,
func (c *Commands) ChangeOrgDomainPolicy(ctx context.Context, resourceOwner string, userLoginMustBeDomain, validateOrgDomains, smtpSenderAddressMatchesInstanceDomain bool) (*domain.ObjectDetails, error) {
if resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-5H8fs", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-5H8fs", "Errors.ResourceOwnerMissing")
}
orgAgg := org.NewAggregate(resourceOwner)
cmds, err := preparation.PrepareCommands(ctx, c.eventstore.Filter, prepareChangeOrgDomainPolicy(orgAgg, userLoginMustBeDomain, validateOrgDomains, smtpSenderAddressMatchesInstanceDomain))
@@ -45,7 +45,7 @@ func (c *Commands) ChangeOrgDomainPolicy(ctx context.Context, resourceOwner stri
func (c *Commands) RemoveOrgDomainPolicy(ctx context.Context, orgID string) (*domain.ObjectDetails, error) {
if orgID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-3H8fs", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-3H8fs", "Errors.ResourceOwnerMissing")
}
orgAgg := org.NewAggregate(orgID)
cmds, err := preparation.PrepareCommands(ctx, c.eventstore.Filter, prepareRemoveOrgDomainPolicy(orgAgg))
@@ -59,18 +59,19 @@ func (c *Commands) RemoveOrgDomainPolicy(ctx context.Context, orgID string) (*do
return pushedEventsToObjectDetails(pushedEvents), nil
}
+// Deprecated: Use commands.domainPolicyWriteModel directly, to remove the domain.DomainPolicy struct
func (c *Commands) getOrgDomainPolicy(ctx context.Context, orgID string) (*domain.DomainPolicy, error) {
- policy, err := c.orgDomainPolicyWriteModelByID(ctx, orgID)
+ policy, err := c.orgDomainPolicyWriteModel(ctx, orgID)
if err != nil {
return nil, err
}
- if policy.State == domain.PolicyStateActive {
+ if policy.State.Exists() {
return orgWriteModelToDomainPolicy(policy), nil
}
return c.getDefaultDomainPolicy(ctx)
}
-func (c *Commands) orgDomainPolicyWriteModelByID(ctx context.Context, orgID string) (policy *OrgDomainPolicyWriteModel, err error) {
+func (c *Commands) orgDomainPolicyWriteModel(ctx context.Context, orgID string) (policy *OrgDomainPolicyWriteModel, err error) {
ctx, span := tracing.NewSpan(ctx)
defer func() { span.EndWithError(err) }()
@@ -95,7 +96,7 @@ func prepareAddOrgDomainPolicy(
return nil, err
}
if writeModel.State == domain.PolicyStateActive {
- return nil, caos_errs.ThrowAlreadyExists(nil, "ORG-1M8ds", "Errors.Org.DomainPolicy.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "ORG-1M8ds", "Errors.Org.DomainPolicy.AlreadyExists")
}
cmds := []eventstore.Command{
org.NewDomainPolicyAddedEvent(ctx, &a.Aggregate,
@@ -138,7 +139,7 @@ func prepareChangeOrgDomainPolicy(
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-2N9sd", "Errors.Org.DomainPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-2N9sd", "Errors.Org.DomainPolicy.NotFound")
}
changedEvent, usernameChange, err := writeModel.NewChangedEvent(ctx, &a.Aggregate,
userLoginMustBeDomain,
@@ -174,7 +175,7 @@ func prepareRemoveOrgDomainPolicy(
return nil, err
}
if !writeModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-Dvsh3", "Errors.Org.DomainPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-Dvsh3", "Errors.Org.DomainPolicy.NotFound")
}
instancePolicy, err := instanceDomainPolicy(ctx, filter)
if err != nil {
diff --git a/internal/command/org_policy_domain_model.go b/internal/command/org_policy_domain_model.go
index 328041ba00..a689835f14 100644
--- a/internal/command/org_policy_domain_model.go
+++ b/internal/command/org_policy_domain_model.go
@@ -3,11 +3,10 @@ package command
import (
"context"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
-
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/policy"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type OrgDomainPolicyWriteModel struct {
@@ -72,7 +71,7 @@ func (wm *OrgDomainPolicyWriteModel) NewChangedEvent(
changes = append(changes, policy.ChangeSMTPSenderAddressMatchesInstanceDomain(smtpSenderAddressMatchesInstanceDomain))
}
if len(changes) == 0 {
- return nil, false, caos_errs.ThrowPreconditionFailed(nil, "ORG-3M9ds", "Errors.Org.LabelPolicy.NotChanged")
+ return nil, false, zerrors.ThrowPreconditionFailed(nil, "ORG-3M9ds", "Errors.Org.LabelPolicy.NotChanged")
}
changedEvent, err = org.NewDomainPolicyChangedEvent(ctx, aggregate, changes)
return changedEvent, usernameChange, err
diff --git a/internal/command/org_policy_domain_test.go b/internal/command/org_policy_domain_test.go
index c431612a56..1cb4c080a6 100644
--- a/internal/command/org_policy_domain_test.go
+++ b/internal/command/org_policy_domain_test.go
@@ -8,12 +8,12 @@ import (
"golang.org/x/text/language"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/policy"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddDomainPolicy(t *testing.T) {
@@ -51,7 +51,7 @@ func TestCommandSide_AddDomainPolicy(t *testing.T) {
smtpSenderAddressMatchesInstanceDomain: true,
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -79,7 +79,7 @@ func TestCommandSide_AddDomainPolicy(t *testing.T) {
smtpSenderAddressMatchesInstanceDomain: true,
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -288,7 +288,7 @@ func TestCommandSide_ChangeDomainPolicy(t *testing.T) {
smtpSenderAddressMatchesInstanceDomain: true,
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -307,7 +307,7 @@ func TestCommandSide_ChangeDomainPolicy(t *testing.T) {
smtpSenderAddressMatchesInstanceDomain: true,
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -335,7 +335,7 @@ func TestCommandSide_ChangeDomainPolicy(t *testing.T) {
smtpSenderAddressMatchesInstanceDomain: true,
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -496,7 +496,7 @@ func TestCommandSide_RemoveDomainPolicy(t *testing.T) {
ctx: context.Background(),
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -512,7 +512,7 @@ func TestCommandSide_RemoveDomainPolicy(t *testing.T) {
orgID: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
diff --git a/internal/command/org_policy_label.go b/internal/command/org_policy_label.go
index 6698baff61..4a1fff05d4 100644
--- a/internal/command/org_policy_label.go
+++ b/internal/command/org_policy_label.go
@@ -4,14 +4,14 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/static"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddLabelPolicy(ctx context.Context, resourceOwner string, policy *domain.LabelPolicy) (*domain.LabelPolicy, error) {
if resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-Fn8ds", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-Fn8ds", "Errors.ResourceOwnerMissing")
}
if err := policy.IsValid(); err != nil {
return nil, err
@@ -22,7 +22,7 @@ func (c *Commands) AddLabelPolicy(ctx context.Context, resourceOwner string, pol
return nil, err
}
if addedPolicy.State == domain.PolicyStateActive {
- return nil, caos_errs.ThrowAlreadyExists(nil, "Org-2B0ps", "Errors.Org.LabelPolicy.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "Org-2B0ps", "Errors.Org.LabelPolicy.AlreadyExists")
}
orgAgg := OrgAggregateFromWriteModel(&addedPolicy.LabelPolicyWriteModel.WriteModel)
@@ -53,7 +53,7 @@ func (c *Commands) AddLabelPolicy(ctx context.Context, resourceOwner string, pol
func (c *Commands) ChangeLabelPolicy(ctx context.Context, resourceOwner string, policy *domain.LabelPolicy) (*domain.LabelPolicy, error) {
if resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-3N9fs", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-3N9fs", "Errors.ResourceOwnerMissing")
}
if err := policy.IsValid(); err != nil {
return nil, err
@@ -64,7 +64,7 @@ func (c *Commands) ChangeLabelPolicy(ctx context.Context, resourceOwner string,
return nil, err
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "Org-0K9dq", "Errors.Org.LabelPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "Org-0K9dq", "Errors.Org.LabelPolicy.NotFound")
}
orgAgg := OrgAggregateFromWriteModel(&existingPolicy.LabelPolicyWriteModel.WriteModel)
@@ -84,7 +84,7 @@ func (c *Commands) ChangeLabelPolicy(ctx context.Context, resourceOwner string,
policy.DisableWatermark,
policy.ThemeMode)
if !hasChanged {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "Org-8nfSr", "Errors.Org.LabelPolicy.NotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "Org-8nfSr", "Errors.Org.LabelPolicy.NotChanged")
}
pushedEvents, err := c.eventstore.Push(ctx, changedEvent)
@@ -100,7 +100,7 @@ func (c *Commands) ChangeLabelPolicy(ctx context.Context, resourceOwner string,
func (c *Commands) ActivateLabelPolicy(ctx context.Context, orgID string) (*domain.ObjectDetails, error) {
if orgID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-KKd4X", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-KKd4X", "Errors.ResourceOwnerMissing")
}
existingPolicy, err := c.orgLabelPolicyWriteModelByID(ctx, orgID)
if err != nil {
@@ -108,7 +108,7 @@ func (c *Commands) ActivateLabelPolicy(ctx context.Context, orgID string) (*doma
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-34mSE", "Errors.Org.LabelPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-34mSE", "Errors.Org.LabelPolicy.NotFound")
}
orgAgg := OrgAggregateFromWriteModel(&existingPolicy.LabelPolicyWriteModel.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, org.NewLabelPolicyActivatedEvent(ctx, orgAgg))
@@ -124,7 +124,7 @@ func (c *Commands) ActivateLabelPolicy(ctx context.Context, orgID string) (*doma
func (c *Commands) AddLogoLabelPolicy(ctx context.Context, orgID string, upload *AssetUpload) (*domain.ObjectDetails, error) {
if orgID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-KKd4X", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-KKd4X", "Errors.ResourceOwnerMissing")
}
existingPolicy, err := c.orgLabelPolicyWriteModelByID(ctx, orgID)
if err != nil {
@@ -132,11 +132,11 @@ func (c *Commands) AddLogoLabelPolicy(ctx context.Context, orgID string, upload
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-23BMs", "Errors.Org.LabelPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-23BMs", "Errors.Org.LabelPolicy.NotFound")
}
asset, err := c.uploadAsset(ctx, upload)
if err != nil {
- return nil, caos_errs.ThrowInternal(err, "IAM-4N3nf", "Errors.Assets.Object.PutFailed")
+ return nil, zerrors.ThrowInternal(err, "IAM-4N3nf", "Errors.Assets.Object.PutFailed")
}
orgAgg := OrgAggregateFromWriteModel(&existingPolicy.LabelPolicyWriteModel.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, org.NewLabelPolicyLogoAddedEvent(ctx, orgAgg, asset.Name))
@@ -152,7 +152,7 @@ func (c *Commands) AddLogoLabelPolicy(ctx context.Context, orgID string, upload
func (c *Commands) RemoveLogoLabelPolicy(ctx context.Context, orgID string) (*domain.ObjectDetails, error) {
if orgID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-2FN8s", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-2FN8s", "Errors.ResourceOwnerMissing")
}
existingPolicy, err := c.orgLabelPolicyWriteModelByID(ctx, orgID)
if err != nil {
@@ -160,7 +160,7 @@ func (c *Commands) RemoveLogoLabelPolicy(ctx context.Context, orgID string) (*do
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-4MVsf", "Errors.Org.LabelPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-4MVsf", "Errors.Org.LabelPolicy.NotFound")
}
err = c.removeAsset(ctx, orgID, existingPolicy.LogoKey)
if err != nil {
@@ -180,7 +180,7 @@ func (c *Commands) RemoveLogoLabelPolicy(ctx context.Context, orgID string) (*do
func (c *Commands) AddIconLabelPolicy(ctx context.Context, orgID string, upload *AssetUpload) (*domain.ObjectDetails, error) {
if orgID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-hMDs3", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-hMDs3", "Errors.ResourceOwnerMissing")
}
existingPolicy, err := c.orgLabelPolicyWriteModelByID(ctx, orgID)
if err != nil {
@@ -188,11 +188,11 @@ func (c *Commands) AddIconLabelPolicy(ctx context.Context, orgID string, upload
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-4nq2f", "Errors.Org.LabelPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-4nq2f", "Errors.Org.LabelPolicy.NotFound")
}
asset, err := c.uploadAsset(ctx, upload)
if err != nil {
- return nil, caos_errs.ThrowInternal(err, "IAM-4BS7f", "Errors.Assets.Object.PutFailed")
+ return nil, zerrors.ThrowInternal(err, "IAM-4BS7f", "Errors.Assets.Object.PutFailed")
}
orgAgg := OrgAggregateFromWriteModel(&existingPolicy.LabelPolicyWriteModel.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, org.NewLabelPolicyIconAddedEvent(ctx, orgAgg, asset.Name))
@@ -208,7 +208,7 @@ func (c *Commands) AddIconLabelPolicy(ctx context.Context, orgID string, upload
func (c *Commands) RemoveIconLabelPolicy(ctx context.Context, orgID string) (*domain.ObjectDetails, error) {
if orgID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-1nd0d", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-1nd0d", "Errors.ResourceOwnerMissing")
}
existingPolicy, err := c.orgLabelPolicyWriteModelByID(ctx, orgID)
if err != nil {
@@ -216,7 +216,7 @@ func (c *Commands) RemoveIconLabelPolicy(ctx context.Context, orgID string) (*do
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-1nd9f", "Errors.Org.LabelPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-1nd9f", "Errors.Org.LabelPolicy.NotFound")
}
err = c.removeAsset(ctx, orgID, existingPolicy.IconKey)
@@ -237,7 +237,7 @@ func (c *Commands) RemoveIconLabelPolicy(ctx context.Context, orgID string) (*do
func (c *Commands) AddLogoDarkLabelPolicy(ctx context.Context, orgID string, upload *AssetUpload) (*domain.ObjectDetails, error) {
if orgID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-67Ms2", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-67Ms2", "Errors.ResourceOwnerMissing")
}
existingPolicy, err := c.orgLabelPolicyWriteModelByID(ctx, orgID)
if err != nil {
@@ -245,11 +245,11 @@ func (c *Commands) AddLogoDarkLabelPolicy(ctx context.Context, orgID string, upl
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-QSqcd", "Errors.Org.LabelPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-QSqcd", "Errors.Org.LabelPolicy.NotFound")
}
asset, err := c.uploadAsset(ctx, upload)
if err != nil {
- return nil, caos_errs.ThrowInternal(err, "IAM-3S7fN", "Errors.Assets.Object.PutFailed")
+ return nil, zerrors.ThrowInternal(err, "IAM-3S7fN", "Errors.Assets.Object.PutFailed")
}
orgAgg := OrgAggregateFromWriteModel(&existingPolicy.LabelPolicyWriteModel.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, org.NewLabelPolicyLogoDarkAddedEvent(ctx, orgAgg, asset.Name))
@@ -265,7 +265,7 @@ func (c *Commands) AddLogoDarkLabelPolicy(ctx context.Context, orgID string, upl
func (c *Commands) RemoveLogoDarkLabelPolicy(ctx context.Context, orgID string) (*domain.ObjectDetails, error) {
if orgID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-4NF0d", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-4NF0d", "Errors.ResourceOwnerMissing")
}
existingPolicy, err := c.orgLabelPolicyWriteModelByID(ctx, orgID)
if err != nil {
@@ -273,7 +273,7 @@ func (c *Commands) RemoveLogoDarkLabelPolicy(ctx context.Context, orgID string)
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-0peQw", "Errors.Org.LabelPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-0peQw", "Errors.Org.LabelPolicy.NotFound")
}
err = c.removeAsset(ctx, orgID, existingPolicy.LogoDarkKey)
if err != nil {
@@ -293,7 +293,7 @@ func (c *Commands) RemoveLogoDarkLabelPolicy(ctx context.Context, orgID string)
func (c *Commands) AddIconDarkLabelPolicy(ctx context.Context, orgID string, upload *AssetUpload) (*domain.ObjectDetails, error) {
if orgID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-tzBfs", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-tzBfs", "Errors.ResourceOwnerMissing")
}
existingPolicy, err := c.orgLabelPolicyWriteModelByID(ctx, orgID)
if err != nil {
@@ -301,11 +301,11 @@ func (c *Commands) AddIconDarkLabelPolicy(ctx context.Context, orgID string, upl
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-4Nf8s", "Errors.Org.LabelPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-4Nf8s", "Errors.Org.LabelPolicy.NotFound")
}
asset, err := c.uploadAsset(ctx, upload)
if err != nil {
- return nil, caos_errs.ThrowInternal(err, "IAM-4B7cs", "Errors.Assets.Object.PutFailed")
+ return nil, zerrors.ThrowInternal(err, "IAM-4B7cs", "Errors.Assets.Object.PutFailed")
}
orgAgg := OrgAggregateFromWriteModel(&existingPolicy.LabelPolicyWriteModel.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, org.NewLabelPolicyIconDarkAddedEvent(ctx, orgAgg, asset.Name))
@@ -321,7 +321,7 @@ func (c *Commands) AddIconDarkLabelPolicy(ctx context.Context, orgID string, upl
func (c *Commands) RemoveIconDarkLabelPolicy(ctx context.Context, orgID string) (*domain.ObjectDetails, error) {
if orgID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-Mv9ds", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-Mv9ds", "Errors.ResourceOwnerMissing")
}
existingPolicy, err := c.orgLabelPolicyWriteModelByID(ctx, orgID)
if err != nil {
@@ -329,7 +329,7 @@ func (c *Commands) RemoveIconDarkLabelPolicy(ctx context.Context, orgID string)
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-3NFos", "Errors.Org.LabelPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-3NFos", "Errors.Org.LabelPolicy.NotFound")
}
orgAgg := OrgAggregateFromWriteModel(&existingPolicy.LabelPolicyWriteModel.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, org.NewLabelPolicyIconDarkRemovedEvent(ctx, orgAgg, existingPolicy.IconDarkKey))
@@ -345,7 +345,7 @@ func (c *Commands) RemoveIconDarkLabelPolicy(ctx context.Context, orgID string)
func (c *Commands) AddFontLabelPolicy(ctx context.Context, orgID string, upload *AssetUpload) (*domain.ObjectDetails, error) {
if orgID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-1Nf9s", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-1Nf9s", "Errors.ResourceOwnerMissing")
}
existingPolicy, err := c.orgLabelPolicyWriteModelByID(ctx, orgID)
if err != nil {
@@ -353,11 +353,11 @@ func (c *Commands) AddFontLabelPolicy(ctx context.Context, orgID string, upload
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-2M9fs", "Errors.Org.LabelPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-2M9fs", "Errors.Org.LabelPolicy.NotFound")
}
asset, err := c.uploadAsset(ctx, upload)
if err != nil {
- return nil, caos_errs.ThrowInternal(err, "ORG-2f9fw", "Errors.Assets.Object.PutFailed")
+ return nil, zerrors.ThrowInternal(err, "ORG-2f9fw", "Errors.Assets.Object.PutFailed")
}
orgAgg := OrgAggregateFromWriteModel(&existingPolicy.LabelPolicyWriteModel.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, org.NewLabelPolicyFontAddedEvent(ctx, orgAgg, asset.Name))
@@ -373,7 +373,7 @@ func (c *Commands) AddFontLabelPolicy(ctx context.Context, orgID string, upload
func (c *Commands) RemoveFontLabelPolicy(ctx context.Context, orgID string) (*domain.ObjectDetails, error) {
if orgID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-2n0fW", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-2n0fW", "Errors.ResourceOwnerMissing")
}
existingPolicy, err := c.orgLabelPolicyWriteModelByID(ctx, orgID)
if err != nil {
@@ -381,7 +381,7 @@ func (c *Commands) RemoveFontLabelPolicy(ctx context.Context, orgID string) (*do
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-4n9SD", "Errors.Org.LabelPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-4n9SD", "Errors.Org.LabelPolicy.NotFound")
}
orgAgg := OrgAggregateFromWriteModel(&existingPolicy.LabelPolicyWriteModel.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, org.NewLabelPolicyFontRemovedEvent(ctx, orgAgg, existingPolicy.FontKey))
@@ -397,7 +397,7 @@ func (c *Commands) RemoveFontLabelPolicy(ctx context.Context, orgID string) (*do
func (c *Commands) RemoveLabelPolicy(ctx context.Context, orgID string) (*domain.ObjectDetails, error) {
if orgID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-Mf9sf", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-Mf9sf", "Errors.ResourceOwnerMissing")
}
existingPolicy := NewOrgLabelPolicyWriteModel(orgID)
removeEvent, err := c.removeLabelPolicy(ctx, existingPolicy)
@@ -421,7 +421,7 @@ func (c *Commands) removeLabelPolicy(ctx context.Context, existingPolicy *OrgLab
return nil, err
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "Org-3M9df", "Errors.Org.LabelPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "Org-3M9df", "Errors.Org.LabelPolicy.NotFound")
}
err = c.removeAssetsFolder(ctx, existingPolicy.AggregateID, static.ObjectTypeStyling)
diff --git a/internal/command/org_policy_label_test.go b/internal/command/org_policy_label_test.go
index 0a1dbc85f2..8fee5e8909 100644
--- a/internal/command/org_policy_label_test.go
+++ b/internal/command/org_policy_label_test.go
@@ -9,13 +9,13 @@ import (
"go.uber.org/mock/gomock"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/policy"
"github.com/zitadel/zitadel/internal/static"
"github.com/zitadel/zitadel/internal/static/mock"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddLabelPolicy(t *testing.T) {
@@ -52,7 +52,7 @@ func TestCommandSide_AddLabelPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -99,7 +99,7 @@ func TestCommandSide_AddLabelPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -220,7 +220,7 @@ func TestCommandSide_ChangeLabelPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -241,7 +241,7 @@ func TestCommandSide_ChangeLabelPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -289,7 +289,7 @@ func TestCommandSide_ChangeLabelPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -422,7 +422,7 @@ func TestCommandSide_ActivateLabelPolicy(t *testing.T) {
ctx: context.Background(),
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -438,7 +438,7 @@ func TestCommandSide_ActivateLabelPolicy(t *testing.T) {
orgID: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -523,7 +523,7 @@ func TestCommandSide_RemoveLabelPolicy(t *testing.T) {
ctx: context.Background(),
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -539,7 +539,7 @@ func TestCommandSide_RemoveLabelPolicy(t *testing.T) {
orgID: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -637,7 +637,7 @@ func TestCommandSide_AddLogoLabelPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -661,7 +661,7 @@ func TestCommandSide_AddLogoLabelPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -704,7 +704,7 @@ func TestCommandSide_AddLogoLabelPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsInternal,
+ err: zerrors.IsInternal,
},
},
{
@@ -811,7 +811,7 @@ func TestCommandSide_RemoveLogoLabelPolicy(t *testing.T) {
storageKey: "key",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -828,7 +828,7 @@ func TestCommandSide_RemoveLogoLabelPolicy(t *testing.T) {
storageKey: "key",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -942,7 +942,7 @@ func TestCommandSide_AddIconLabelPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -966,7 +966,7 @@ func TestCommandSide_AddIconLabelPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1009,7 +1009,7 @@ func TestCommandSide_AddIconLabelPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsInternal,
+ err: zerrors.IsInternal,
},
},
{
@@ -1115,7 +1115,7 @@ func TestCommandSide_RemoveIconLabelPolicy(t *testing.T) {
orgID: "",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1131,7 +1131,7 @@ func TestCommandSide_RemoveIconLabelPolicy(t *testing.T) {
orgID: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1244,7 +1244,7 @@ func TestCommandSide_AddLogoDarkLabelPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1268,7 +1268,7 @@ func TestCommandSide_AddLogoDarkLabelPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1311,7 +1311,7 @@ func TestCommandSide_AddLogoDarkLabelPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsInternal,
+ err: zerrors.IsInternal,
},
},
{
@@ -1418,7 +1418,7 @@ func TestCommandSide_RemoveLogoDarkLabelPolicy(t *testing.T) {
storageKey: "key",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1435,7 +1435,7 @@ func TestCommandSide_RemoveLogoDarkLabelPolicy(t *testing.T) {
storageKey: "key",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1549,7 +1549,7 @@ func TestCommandSide_AddIconDarkLabelPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1573,7 +1573,7 @@ func TestCommandSide_AddIconDarkLabelPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1616,7 +1616,7 @@ func TestCommandSide_AddIconDarkLabelPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsInternal,
+ err: zerrors.IsInternal,
},
},
{
@@ -1721,7 +1721,7 @@ func TestCommandSide_RemoveIconDarkLabelPolicy(t *testing.T) {
ctx: context.Background(),
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1737,7 +1737,7 @@ func TestCommandSide_RemoveIconDarkLabelPolicy(t *testing.T) {
orgID: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1849,7 +1849,7 @@ func TestCommandSide_AddFontLabelPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1865,7 +1865,7 @@ func TestCommandSide_AddFontLabelPolicy(t *testing.T) {
orgID: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1908,7 +1908,7 @@ func TestCommandSide_AddFontLabelPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsInternal,
+ err: zerrors.IsInternal,
},
},
{
@@ -2013,7 +2013,7 @@ func TestCommandSide_RemoveFontLabelPolicy(t *testing.T) {
ctx: context.Background(),
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -2029,7 +2029,7 @@ func TestCommandSide_RemoveFontLabelPolicy(t *testing.T) {
orgID: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
diff --git a/internal/command/org_policy_lockout.go b/internal/command/org_policy_lockout.go
index 72dd286156..47f98d9770 100644
--- a/internal/command/org_policy_lockout.go
+++ b/internal/command/org_policy_lockout.go
@@ -4,20 +4,20 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddLockoutPolicy(ctx context.Context, resourceOwner string, policy *domain.LockoutPolicy) (*domain.LockoutPolicy, error) {
if resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-8fJif", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-8fJif", "Errors.ResourceOwnerMissing")
}
addedPolicy, err := c.orgLockoutPolicyWriteModelByID(ctx, resourceOwner)
if err != nil {
return nil, err
}
if addedPolicy.State == domain.PolicyStateActive {
- return nil, caos_errs.ThrowAlreadyExists(nil, "ORG-0olDf", "Errors.ORG.LockoutPolicy.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "ORG-0olDf", "Errors.ORG.LockoutPolicy.AlreadyExists")
}
orgAgg := OrgAggregateFromWriteModel(&addedPolicy.WriteModel)
@@ -34,20 +34,20 @@ func (c *Commands) AddLockoutPolicy(ctx context.Context, resourceOwner string, p
func (c *Commands) ChangeLockoutPolicy(ctx context.Context, resourceOwner string, policy *domain.LockoutPolicy) (*domain.LockoutPolicy, error) {
if resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-3J9fs", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-3J9fs", "Errors.ResourceOwnerMissing")
}
existingPolicy, err := c.orgLockoutPolicyWriteModelByID(ctx, resourceOwner)
if err != nil {
return nil, err
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-ADfs1", "Errors.Org.LockoutPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-ADfs1", "Errors.Org.LockoutPolicy.NotFound")
}
orgAgg := OrgAggregateFromWriteModel(&existingPolicy.LockoutPolicyWriteModel.WriteModel)
changedEvent, hasChanged := existingPolicy.NewChangedEvent(ctx, orgAgg, policy.MaxPasswordAttempts, policy.ShowLockOutFailures)
if !hasChanged {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "ORG-0JFSr", "Errors.Org.LockoutPolicy.NotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "ORG-0JFSr", "Errors.Org.LockoutPolicy.NotChanged")
}
pushedEvents, err := c.eventstore.Push(ctx, changedEvent)
@@ -63,14 +63,14 @@ func (c *Commands) ChangeLockoutPolicy(ctx context.Context, resourceOwner string
func (c *Commands) RemoveLockoutPolicy(ctx context.Context, orgID string) (*domain.ObjectDetails, error) {
if orgID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-4J9fs", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-4J9fs", "Errors.ResourceOwnerMissing")
}
existingPolicy, err := c.orgLockoutPolicyWriteModelByID(ctx, orgID)
if err != nil {
return nil, err
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-D4zuz", "Errors.Org.LockoutPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-D4zuz", "Errors.Org.LockoutPolicy.NotFound")
}
orgAgg := OrgAggregateFromWriteModel(&existingPolicy.WriteModel)
diff --git a/internal/command/org_policy_lockout_test.go b/internal/command/org_policy_lockout_test.go
index 0cb7c056de..1eda5f348c 100644
--- a/internal/command/org_policy_lockout_test.go
+++ b/internal/command/org_policy_lockout_test.go
@@ -7,11 +7,11 @@ import (
"github.com/stretchr/testify/assert"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/policy"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddPasswordLockoutPolicy(t *testing.T) {
@@ -48,7 +48,7 @@ func TestCommandSide_AddPasswordLockoutPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -76,7 +76,7 @@ func TestCommandSide_AddPasswordLockoutPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -167,7 +167,7 @@ func TestCommandSide_ChangePasswordLockoutPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -187,7 +187,7 @@ func TestCommandSide_ChangePasswordLockoutPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -215,7 +215,7 @@ func TestCommandSide_ChangePasswordLockoutPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -305,7 +305,7 @@ func TestCommandSide_RemovePasswordLockoutPolicy(t *testing.T) {
ctx: context.Background(),
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -321,7 +321,7 @@ func TestCommandSide_RemovePasswordLockoutPolicy(t *testing.T) {
orgID: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
diff --git a/internal/command/org_policy_login.go b/internal/command/org_policy_login.go
index 2c7ccbf93f..96251ad565 100644
--- a/internal/command/org_policy_login.go
+++ b/internal/command/org_policy_login.go
@@ -9,10 +9,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type AddLoginPolicy struct {
@@ -111,7 +111,7 @@ func (c *Commands) ChangeLoginPolicy(ctx context.Context, resourceOwner string,
func (c *Commands) RemoveLoginPolicy(ctx context.Context, orgID string) (*domain.ObjectDetails, error) {
if orgID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-55Mg9", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-55Mg9", "Errors.ResourceOwnerMissing")
}
existingPolicy := NewOrgLoginPolicyWriteModel(orgID)
err := c.eventstore.FilterToQueryReducer(ctx, existingPolicy)
@@ -119,7 +119,7 @@ func (c *Commands) RemoveLoginPolicy(ctx context.Context, orgID string) (*domain
return nil, err
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "Org-GHB37", "Errors.Org.LoginPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "Org-GHB37", "Errors.Org.LoginPolicy.NotFound")
}
orgAgg := OrgAggregateFromWriteModel(&existingPolicy.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, org.NewLoginPolicyRemovedEvent(ctx, orgAgg))
@@ -135,17 +135,17 @@ func (c *Commands) RemoveLoginPolicy(ctx context.Context, orgID string) (*domain
func (c *Commands) AddIDPToLoginPolicy(ctx context.Context, resourceOwner string, idpProvider *domain.IDPProvider) (*domain.IDPProvider, error) {
if resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-M0fs9", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-M0fs9", "Errors.ResourceOwnerMissing")
}
if !idpProvider.IsValid() {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-9nf88", "Errors.Org.LoginPolicy.IDP.")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-9nf88", "Errors.Org.LoginPolicy.IDP.")
}
existingPolicy, err := c.orgLoginPolicyWriteModelByID(ctx, resourceOwner)
if err != nil {
return nil, err
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "Org-Ffgw2", "Errors.Org.LoginPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "Org-Ffgw2", "Errors.Org.LoginPolicy.NotFound")
}
var exists bool
@@ -155,7 +155,7 @@ func (c *Commands) AddIDPToLoginPolicy(ctx context.Context, resourceOwner string
exists, err = ExistsInstanceIDP(ctx, c.eventstore.Filter, idpProvider.IDPConfigID)
}
if !exists || err != nil {
- return nil, caos_errs.ThrowPreconditionFailed(err, "Org-3N9fs", "Errors.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowPreconditionFailed(err, "Org-3N9fs", "Errors.IDPConfig.NotExisting")
}
idpModel := NewOrgIdentityProviderWriteModel(resourceOwner, idpProvider.IDPConfigID)
err = c.eventstore.FilterToQueryReducer(ctx, idpModel)
@@ -163,7 +163,7 @@ func (c *Commands) AddIDPToLoginPolicy(ctx context.Context, resourceOwner string
return nil, err
}
if idpModel.State == domain.IdentityProviderStateActive {
- return nil, caos_errs.ThrowAlreadyExists(nil, "Org-2B0ps", "Errors.Org.LoginPolicy.IDP.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "Org-2B0ps", "Errors.Org.LoginPolicy.IDP.AlreadyExists")
}
orgAgg := OrgAggregateFromWriteModel(&idpModel.WriteModel)
@@ -178,19 +178,19 @@ func (c *Commands) AddIDPToLoginPolicy(ctx context.Context, resourceOwner string
return writeModelToIDPProvider(&idpModel.IdentityProviderWriteModel), nil
}
-func (c *Commands) RemoveIDPFromLoginPolicy(ctx context.Context, resourceOwner string, idpProvider *domain.IDPProvider, cascadeExternalIDPs ...*domain.UserIDPLink) (*domain.ObjectDetails, error) {
+func (c *Commands) RemoveIDPFromLoginPolicy(ctx context.Context, resourceOwner string, idpProvider *domain.IDPProvider) (*domain.ObjectDetails, error) {
if resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-M0fs9", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-M0fs9", "Errors.ResourceOwnerMissing")
}
if !idpProvider.IsValid() {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-66m9s", "Errors.Org.LoginPolicy.IDP.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-66m9s", "Errors.Org.LoginPolicy.IDP.Invalid")
}
existingPolicy, err := c.orgLoginPolicyWriteModelByID(ctx, resourceOwner)
if err != nil {
return nil, err
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "Org-GVDfe", "Errors.Org.LoginPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "Org-GVDfe", "Errors.Org.LoginPolicy.NotFound")
}
idpModel := NewOrgIdentityProviderWriteModel(resourceOwner, idpProvider.IDPConfigID)
@@ -199,11 +199,11 @@ func (c *Commands) RemoveIDPFromLoginPolicy(ctx context.Context, resourceOwner s
return nil, err
}
if idpModel.State == domain.IdentityProviderStateUnspecified || idpModel.State == domain.IdentityProviderStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "Org-39fjs", "Errors.Org.LoginPolicy.IDP.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "Org-39fjs", "Errors.Org.LoginPolicy.IDP.NotExisting")
}
orgAgg := OrgAggregateFromWriteModel(&idpModel.IdentityProviderWriteModel.WriteModel)
- events := c.removeIDPFromLoginPolicy(ctx, orgAgg, idpProvider.IDPConfigID, false, cascadeExternalIDPs...)
+ events := c.removeIDPFromLoginPolicy(ctx, orgAgg, idpProvider.IDPConfigID, false)
pushedEvents, err := c.eventstore.Push(ctx, events...)
if err != nil {
@@ -237,10 +237,10 @@ func (c *Commands) removeIDPFromLoginPolicy(ctx context.Context, orgAgg *eventst
func (c *Commands) AddSecondFactorToLoginPolicy(ctx context.Context, secondFactor domain.SecondFactorType, orgID string) (domain.SecondFactorType, *domain.ObjectDetails, error) {
if orgID == "" {
- return domain.SecondFactorTypeUnspecified, nil, caos_errs.ThrowInvalidArgument(nil, "Org-M0fs9", "Errors.ResourceOwnerMissing")
+ return domain.SecondFactorTypeUnspecified, nil, zerrors.ThrowInvalidArgument(nil, "Org-M0fs9", "Errors.ResourceOwnerMissing")
}
if !secondFactor.Valid() {
- return domain.SecondFactorTypeUnspecified, nil, caos_errs.ThrowInvalidArgument(nil, "Org-5m9fs", "Errors.Org.LoginPolicy.MFA.Unspecified")
+ return domain.SecondFactorTypeUnspecified, nil, zerrors.ThrowInvalidArgument(nil, "Org-5m9fs", "Errors.Org.LoginPolicy.MFA.Unspecified")
}
secondFactorModel := NewOrgSecondFactorWriteModel(orgID, secondFactor)
addedEvent, err := c.addSecondFactorToLoginPolicy(ctx, secondFactorModel, secondFactor)
@@ -267,7 +267,7 @@ func (c *Commands) addSecondFactorToLoginPolicy(ctx context.Context, secondFacto
}
if secondFactorModel.State == domain.FactorStateActive {
- return nil, caos_errs.ThrowAlreadyExists(nil, "Org-2B0ps", "Errors.Org.LoginPolicy.MFA.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "Org-2B0ps", "Errors.Org.LoginPolicy.MFA.AlreadyExists")
}
orgAgg := OrgAggregateFromWriteModel(&secondFactorModel.SecondFactorWriteModel.WriteModel)
@@ -276,10 +276,10 @@ func (c *Commands) addSecondFactorToLoginPolicy(ctx context.Context, secondFacto
func (c *Commands) RemoveSecondFactorFromLoginPolicy(ctx context.Context, secondFactor domain.SecondFactorType, orgID string) (*domain.ObjectDetails, error) {
if orgID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-fM0gs", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-fM0gs", "Errors.ResourceOwnerMissing")
}
if !secondFactor.Valid() {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-55n8s", "Errors.Org.LoginPolicy.MFA.Unspecified")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-55n8s", "Errors.Org.LoginPolicy.MFA.Unspecified")
}
secondFactorModel := NewOrgSecondFactorWriteModel(orgID, secondFactor)
removedEvent, err := c.removeSecondFactorFromLoginPolicy(ctx, secondFactorModel, secondFactor)
@@ -304,7 +304,7 @@ func (c *Commands) removeSecondFactorFromLoginPolicy(ctx context.Context, second
return nil, err
}
if secondFactorModel.State == domain.FactorStateUnspecified || secondFactorModel.State == domain.FactorStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "Org-3M9od", "Errors.Org.LoginPolicy.MFA.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "Org-3M9od", "Errors.Org.LoginPolicy.MFA.NotExisting")
}
orgAgg := OrgAggregateFromWriteModel(&secondFactorModel.SecondFactorWriteModel.WriteModel)
return org.NewLoginPolicySecondFactorRemovedEvent(ctx, orgAgg, secondFactor), nil
@@ -312,10 +312,10 @@ func (c *Commands) removeSecondFactorFromLoginPolicy(ctx context.Context, second
func (c *Commands) AddMultiFactorToLoginPolicy(ctx context.Context, multiFactor domain.MultiFactorType, orgID string) (domain.MultiFactorType, *domain.ObjectDetails, error) {
if orgID == "" {
- return domain.MultiFactorTypeUnspecified, nil, caos_errs.ThrowInvalidArgument(nil, "Org-M0fsf", "Errors.ResourceOwnerMissing")
+ return domain.MultiFactorTypeUnspecified, nil, zerrors.ThrowInvalidArgument(nil, "Org-M0fsf", "Errors.ResourceOwnerMissing")
}
if !multiFactor.Valid() {
- return domain.MultiFactorTypeUnspecified, nil, caos_errs.ThrowInvalidArgument(nil, "Org-5m9fs", "Errors.Org.LoginPolicy.MFA.Unspecified")
+ return domain.MultiFactorTypeUnspecified, nil, zerrors.ThrowInvalidArgument(nil, "Org-5m9fs", "Errors.Org.LoginPolicy.MFA.Unspecified")
}
multiFactorModel := NewOrgMultiFactorWriteModel(orgID, multiFactor)
addedEvent, err := c.addMultiFactorToLoginPolicy(ctx, multiFactorModel, multiFactor)
@@ -340,7 +340,7 @@ func (c *Commands) addMultiFactorToLoginPolicy(ctx context.Context, multiFactorM
return nil, err
}
if multiFactorModel.State == domain.FactorStateActive {
- return nil, caos_errs.ThrowAlreadyExists(nil, "Org-3M9od", "Errors.Org.LoginPolicy.MFA.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "Org-3M9od", "Errors.Org.LoginPolicy.MFA.AlreadyExists")
}
orgAgg := OrgAggregateFromWriteModel(&multiFactorModel.WriteModel)
@@ -349,10 +349,10 @@ func (c *Commands) addMultiFactorToLoginPolicy(ctx context.Context, multiFactorM
func (c *Commands) RemoveMultiFactorFromLoginPolicy(ctx context.Context, multiFactor domain.MultiFactorType, orgID string) (*domain.ObjectDetails, error) {
if orgID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-M0fsf", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-M0fsf", "Errors.ResourceOwnerMissing")
}
if !multiFactor.Valid() {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-5m9fs", "Errors.Org.LoginPolicy.MFA.Unspecified")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-5m9fs", "Errors.Org.LoginPolicy.MFA.Unspecified")
}
multiFactorModel := NewOrgMultiFactorWriteModel(orgID, multiFactor)
removedEvent, err := c.removeMultiFactorFromLoginPolicy(ctx, multiFactorModel, multiFactor)
@@ -377,7 +377,7 @@ func (c *Commands) removeMultiFactorFromLoginPolicy(ctx context.Context, multiFa
return nil, err
}
if multiFactorModel.State == domain.FactorStateUnspecified || multiFactorModel.State == domain.FactorStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "Org-3M9df", "Errors.Org.LoginPolicy.MFA.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "Org-3M9df", "Errors.Org.LoginPolicy.MFA.NotExisting")
}
orgAgg := OrgAggregateFromWriteModel(&multiFactorModel.MultiFactorWriteModel.WriteModel)
@@ -399,26 +399,26 @@ func (c *Commands) orgLoginPolicyAuthFactorsWriteModel(ctx context.Context, orgI
func prepareAddLoginPolicy(a *org.Aggregate, policy *AddLoginPolicy) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if ok := domain.ValidateDefaultRedirectURI(policy.DefaultRedirectURI); !ok {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-WSfdq", "Errors.Org.LoginPolicy.RedirectURIInvalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-WSfdq", "Errors.Org.LoginPolicy.RedirectURIInvalid")
}
for _, factor := range policy.SecondFactors {
if !factor.Valid() {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-SFeea", "Errors.Org.LoginPolicy.MFA.Unspecified")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-SFeea", "Errors.Org.LoginPolicy.MFA.Unspecified")
}
}
for _, factor := range policy.MultiFactors {
if !factor.Valid() {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-WSfrg", "Errors.Org.LoginPolicy.MFA.Unspecified")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-WSfrg", "Errors.Org.LoginPolicy.MFA.Unspecified")
}
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
if exists, err := exists(ctx, filter, NewOrgLoginPolicyWriteModel(a.ID)); exists || err != nil {
- return nil, caos_errs.ThrowAlreadyExists(nil, "Org-Dgfb2", "Errors.Org.LoginPolicy.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "Org-Dgfb2", "Errors.Org.LoginPolicy.AlreadyExists")
}
for _, idp := range policy.IDPProviders {
exists, err := idpExists(ctx, filter, idp)
if !exists || err != nil {
- return nil, caos_errs.ThrowPreconditionFailed(err, "Org-FEd32", "Errors.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowPreconditionFailed(err, "Org-FEd32", "Errors.IDPConfig.NotExisting")
}
}
cmds := make([]eventstore.Command, 0, len(policy.SecondFactors)+len(policy.MultiFactors)+len(policy.IDPProviders)+1)
@@ -458,7 +458,7 @@ func prepareAddLoginPolicy(a *org.Aggregate, policy *AddLoginPolicy) preparation
func prepareChangeLoginPolicy(a *org.Aggregate, policy *ChangeLoginPolicy) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if ok := domain.ValidateDefaultRedirectURI(policy.DefaultRedirectURI); !ok {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-Sfd21", "Errors.Org.LoginPolicy.RedirectURIInvalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-Sfd21", "Errors.Org.LoginPolicy.RedirectURIInvalid")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
wm := NewOrgLoginPolicyWriteModel(a.ID)
@@ -466,7 +466,7 @@ func prepareChangeLoginPolicy(a *org.Aggregate, policy *ChangeLoginPolicy) prepa
return nil, err
}
if !wm.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "Org-M0sif", "Errors.Org.LoginPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "Org-M0sif", "Errors.Org.LoginPolicy.NotFound")
}
changedEvent, hasChanged := wm.NewChangedEvent(ctx, &a.Aggregate,
policy.AllowUsernamePassword,
@@ -487,7 +487,7 @@ func prepareChangeLoginPolicy(a *org.Aggregate, policy *ChangeLoginPolicy) prepa
policy.SecondFactorCheckLifetime,
policy.MultiFactorCheckLifetime)
if !hasChanged {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "Org-5M9vdd", "Errors.Org.LoginPolicy.NotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "Org-5M9vdd", "Errors.Org.LoginPolicy.NotChanged")
}
return []eventstore.Command{changedEvent}, nil
}, nil
diff --git a/internal/command/org_policy_login_test.go b/internal/command/org_policy_login_test.go
index c04e5a7090..38026f72dc 100644
--- a/internal/command/org_policy_login_test.go
+++ b/internal/command/org_policy_login_test.go
@@ -8,13 +8,12 @@ import (
"github.com/stretchr/testify/assert"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/policy"
- "github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -96,7 +95,7 @@ func TestCommandSide_AddLoginPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -190,7 +189,7 @@ func TestCommandSide_AddLoginPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -301,7 +300,7 @@ func TestCommandSide_AddLoginPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -451,7 +450,7 @@ func TestCommandSide_ChangeLoginPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -509,7 +508,7 @@ func TestCommandSide_ChangeLoginPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -642,7 +641,7 @@ func TestCommandSide_RemoveLoginPolicy(t *testing.T) {
ctx: context.Background(),
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -658,7 +657,7 @@ func TestCommandSide_RemoveLoginPolicy(t *testing.T) {
orgID: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -761,7 +760,7 @@ func TestCommandSide_AddIDPProviderLoginPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -777,7 +776,7 @@ func TestCommandSide_AddIDPProviderLoginPolicy(t *testing.T) {
provider: &domain.IDPProvider{},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -798,7 +797,7 @@ func TestCommandSide_AddIDPProviderLoginPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -843,7 +842,7 @@ func TestCommandSide_AddIDPProviderLoginPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -908,7 +907,7 @@ func TestCommandSide_AddIDPProviderLoginPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -1006,10 +1005,9 @@ func TestCommandSide_RemoveIDPProviderLoginPolicy(t *testing.T) {
eventstore *eventstore.Eventstore
}
type args struct {
- ctx context.Context
- resourceOwner string
- provider *domain.IDPProvider
- cascadeExternalIDPs []*domain.UserIDPLink
+ ctx context.Context
+ resourceOwner string
+ provider *domain.IDPProvider
}
type res struct {
want *domain.ObjectDetails
@@ -1037,7 +1035,7 @@ func TestCommandSide_RemoveIDPProviderLoginPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1053,7 +1051,7 @@ func TestCommandSide_RemoveIDPProviderLoginPolicy(t *testing.T) {
provider: &domain.IDPProvider{},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1072,7 +1070,7 @@ func TestCommandSide_RemoveIDPProviderLoginPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1117,7 +1115,7 @@ func TestCommandSide_RemoveIDPProviderLoginPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1174,7 +1172,7 @@ func TestCommandSide_RemoveIDPProviderLoginPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1238,7 +1236,7 @@ func TestCommandSide_RemoveIDPProviderLoginPolicy(t *testing.T) {
},
},
{
- name: "remove provider external idp not found, ok",
+ name: "remove provider from login policy, ok",
fields: fields{
eventstore: eventstoreExpect(
t,
@@ -1290,93 +1288,6 @@ func TestCommandSide_RemoveIDPProviderLoginPolicy(t *testing.T) {
Name: "name",
Type: domain.IdentityProviderTypeOrg,
},
- cascadeExternalIDPs: []*domain.UserIDPLink{
- {
- ObjectRoot: models.ObjectRoot{
- AggregateID: "user1",
- },
- IDPConfigID: "config1",
- },
- },
- },
- res: res{
- want: &domain.ObjectDetails{
- ResourceOwner: "org1",
- },
- },
- },
- {
- name: "remove provider with external idps, ok",
- fields: fields{
- eventstore: eventstoreExpect(
- t,
- expectFilter(
- eventFromEventPusher(
- org.NewLoginPolicyAddedEvent(context.Background(),
- &org.NewAggregate("org1").Aggregate,
- true,
- true,
- true,
- true,
- true,
- true,
- true,
- true,
- true,
- true,
- domain.PasswordlessTypeAllowed,
- "",
- time.Hour*1,
- time.Hour*2,
- time.Hour*3,
- time.Hour*4,
- time.Hour*5,
- ),
- ),
- ),
- expectFilter(
- eventFromEventPusher(
- org.NewIdentityProviderAddedEvent(context.Background(),
- &org.NewAggregate("org1").Aggregate,
- "config1",
- domain.IdentityProviderTypeOrg,
- ),
- ),
- ),
- expectFilter(
- eventFromEventPusher(
- user.NewUserIDPLinkAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- "config1", "", "externaluser1"),
- ),
- ),
- expectPush(
- org.NewIdentityProviderRemovedEvent(context.Background(),
- &org.NewAggregate("org1").Aggregate,
- "config1",
- ),
- user.NewUserIDPLinkCascadeRemovedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- "config1", "externaluser1",
- ),
- ),
- ),
- },
- args: args{
- ctx: context.Background(),
- resourceOwner: "org1",
- provider: &domain.IDPProvider{
- IDPConfigID: "config1",
- },
- cascadeExternalIDPs: []*domain.UserIDPLink{
- {
- ObjectRoot: models.ObjectRoot{
- AggregateID: "user1",
- },
- IDPConfigID: "config1",
- ExternalUserID: "externaluser1",
- },
- },
},
res: res{
want: &domain.ObjectDetails{
@@ -1390,7 +1301,7 @@ func TestCommandSide_RemoveIDPProviderLoginPolicy(t *testing.T) {
r := &Commands{
eventstore: tt.fields.eventstore,
}
- got, err := r.RemoveIDPFromLoginPolicy(tt.args.ctx, tt.args.resourceOwner, tt.args.provider, tt.args.cascadeExternalIDPs...)
+ got, err := r.RemoveIDPFromLoginPolicy(tt.args.ctx, tt.args.resourceOwner, tt.args.provider)
if tt.res.err == nil {
assert.NoError(t, err)
}
@@ -1435,7 +1346,7 @@ func TestCommandSide_AddSecondFactorLoginPolicy(t *testing.T) {
factor: domain.SecondFactorTypeU2F,
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1450,7 +1361,7 @@ func TestCommandSide_AddSecondFactorLoginPolicy(t *testing.T) {
factor: domain.SecondFactorTypeUnspecified,
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1474,7 +1385,7 @@ func TestCommandSide_AddSecondFactorLoginPolicy(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -1623,7 +1534,7 @@ func TestCommandSide_RemoveSecondFactoroginPolicy(t *testing.T) {
factor: domain.SecondFactorTypeTOTP,
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1638,7 +1549,7 @@ func TestCommandSide_RemoveSecondFactoroginPolicy(t *testing.T) {
factor: domain.SecondFactorTypeUnspecified,
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1655,7 +1566,7 @@ func TestCommandSide_RemoveSecondFactoroginPolicy(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1685,7 +1596,7 @@ func TestCommandSide_RemoveSecondFactoroginPolicy(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1715,7 +1626,7 @@ func TestCommandSide_RemoveSecondFactoroginPolicy(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1745,7 +1656,7 @@ func TestCommandSide_RemoveSecondFactoroginPolicy(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1889,7 +1800,7 @@ func TestCommandSide_AddMultiFactorLoginPolicy(t *testing.T) {
factor: domain.MultiFactorTypeU2FWithPIN,
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1904,7 +1815,7 @@ func TestCommandSide_AddMultiFactorLoginPolicy(t *testing.T) {
factor: domain.MultiFactorTypeUnspecified,
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1928,7 +1839,7 @@ func TestCommandSide_AddMultiFactorLoginPolicy(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -2004,7 +1915,7 @@ func TestCommandSide_RemoveMultiFactorLoginPolicy(t *testing.T) {
factor: domain.MultiFactorTypeU2FWithPIN,
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -2019,7 +1930,7 @@ func TestCommandSide_RemoveMultiFactorLoginPolicy(t *testing.T) {
factor: domain.MultiFactorTypeUnspecified,
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -2036,7 +1947,7 @@ func TestCommandSide_RemoveMultiFactorLoginPolicy(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -2066,7 +1977,7 @@ func TestCommandSide_RemoveMultiFactorLoginPolicy(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
diff --git a/internal/command/org_policy_mail_template.go b/internal/command/org_policy_mail_template.go
index 28bc3a382d..9a7fa86e7a 100644
--- a/internal/command/org_policy_mail_template.go
+++ b/internal/command/org_policy_mail_template.go
@@ -4,16 +4,16 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddMailTemplate(ctx context.Context, resourceOwner string, policy *domain.MailTemplate) (*domain.MailTemplate, error) {
if resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-M8dfs", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-M8dfs", "Errors.ResourceOwnerMissing")
}
if !policy.IsValid() {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "ORG-3m9fs", "Errors.Org.MailTemplate.Invalid")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "ORG-3m9fs", "Errors.Org.MailTemplate.Invalid")
}
addedPolicy := NewOrgMailTemplateWriteModel(resourceOwner)
err := c.eventstore.FilterToQueryReducer(ctx, addedPolicy)
@@ -21,7 +21,7 @@ func (c *Commands) AddMailTemplate(ctx context.Context, resourceOwner string, po
return nil, err
}
if addedPolicy.State == domain.PolicyStateActive {
- return nil, caos_errs.ThrowAlreadyExists(nil, "Org-9kufs", "Errors.Org.MailTemplate.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "Org-9kufs", "Errors.Org.MailTemplate.AlreadyExists")
}
orgAgg := OrgAggregateFromWriteModel(&addedPolicy.MailTemplateWriteModel.WriteModel)
@@ -38,10 +38,10 @@ func (c *Commands) AddMailTemplate(ctx context.Context, resourceOwner string, po
func (c *Commands) ChangeMailTemplate(ctx context.Context, resourceOwner string, policy *domain.MailTemplate) (*domain.MailTemplate, error) {
if resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-M9fFs", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-M9fFs", "Errors.ResourceOwnerMissing")
}
if !policy.IsValid() {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "ORG-9f9ds", "Errors.Org.MailTemplate.Invalid")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "ORG-9f9ds", "Errors.Org.MailTemplate.Invalid")
}
existingPolicy := NewOrgMailTemplateWriteModel(resourceOwner)
err := c.eventstore.FilterToQueryReducer(ctx, existingPolicy)
@@ -49,13 +49,13 @@ func (c *Commands) ChangeMailTemplate(ctx context.Context, resourceOwner string,
return nil, err
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "Org-5m9ie", "Errors.Org.MailTemplate.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "Org-5m9ie", "Errors.Org.MailTemplate.NotFound")
}
orgAgg := OrgAggregateFromWriteModel(&existingPolicy.MailTemplateWriteModel.WriteModel)
changedEvent, hasChanged := existingPolicy.NewChangedEvent(ctx, orgAgg, policy.Template)
if !hasChanged {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "Org-49hfj", "Errors.Org.MailTemplate.NotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "Org-49hfj", "Errors.Org.MailTemplate.NotChanged")
}
pushedEvents, err := c.eventstore.Push(ctx, changedEvent)
@@ -71,7 +71,7 @@ func (c *Commands) ChangeMailTemplate(ctx context.Context, resourceOwner string,
func (c *Commands) RemoveMailTemplate(ctx context.Context, orgID string) error {
if orgID == "" {
- return caos_errs.ThrowInvalidArgument(nil, "Org-5Jgis", "Errors.ResourceOwnerMissing")
+ return zerrors.ThrowInvalidArgument(nil, "Org-5Jgis", "Errors.ResourceOwnerMissing")
}
existingPolicy := NewOrgMailTemplateWriteModel(orgID)
err := c.eventstore.FilterToQueryReducer(ctx, existingPolicy)
@@ -79,7 +79,7 @@ func (c *Commands) RemoveMailTemplate(ctx context.Context, orgID string) error {
return err
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return caos_errs.ThrowNotFound(nil, "Org-3b8Jf", "Errors.Org.MailTemplate.NotFound")
+ return zerrors.ThrowNotFound(nil, "Org-3b8Jf", "Errors.Org.MailTemplate.NotFound")
}
orgAgg := OrgAggregateFromWriteModel(&existingPolicy.WriteModel)
diff --git a/internal/command/org_policy_mail_template_test.go b/internal/command/org_policy_mail_template_test.go
index ab4d1b1b9a..a7e0e2aab4 100644
--- a/internal/command/org_policy_mail_template_test.go
+++ b/internal/command/org_policy_mail_template_test.go
@@ -7,11 +7,11 @@ import (
"github.com/stretchr/testify/assert"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/policy"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddMailTemplate(t *testing.T) {
@@ -47,7 +47,7 @@ func TestCommandSide_AddMailTemplate(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -73,7 +73,7 @@ func TestCommandSide_AddMailTemplate(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -160,7 +160,7 @@ func TestCommandSide_ChangeMailTemplate(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -179,7 +179,7 @@ func TestCommandSide_ChangeMailTemplate(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -205,7 +205,7 @@ func TestCommandSide_ChangeMailTemplate(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -292,7 +292,7 @@ func TestCommandSide_RemoveMailTemplate(t *testing.T) {
ctx: context.Background(),
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -308,7 +308,7 @@ func TestCommandSide_RemoveMailTemplate(t *testing.T) {
orgID: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
diff --git a/internal/command/org_policy_notification.go b/internal/command/org_policy_notification.go
index 34613d486e..88228a7ed2 100644
--- a/internal/command/org_policy_notification.go
+++ b/internal/command/org_policy_notification.go
@@ -5,14 +5,14 @@ import (
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddNotificationPolicy(ctx context.Context, resourceOwner string, passwordChange bool) (*domain.ObjectDetails, error) {
if resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-x801sk2i", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-x801sk2i", "Errors.ResourceOwnerMissing")
}
orgAgg := org.NewAggregate(resourceOwner)
cmds, err := preparation.PrepareCommands(ctx, c.eventstore.Filter, prepareAddNotificationPolicy(orgAgg, passwordChange))
@@ -42,7 +42,7 @@ func prepareAddNotificationPolicy(
return nil, err
}
if writeModel.State == domain.PolicyStateActive {
- return nil, caos_errs.ThrowAlreadyExists(nil, "Org-xa08n2", "Errors.Org.NotificationPolicy.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "Org-xa08n2", "Errors.Org.NotificationPolicy.AlreadyExists")
}
return []eventstore.Command{
org.NewNotificationPolicyAddedEvent(ctx, &a.Aggregate, passwordChange),
@@ -53,7 +53,7 @@ func prepareAddNotificationPolicy(
func (c *Commands) ChangeNotificationPolicy(ctx context.Context, resourceOwner string, passwordChange bool) (*domain.ObjectDetails, error) {
if resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-x091n1g", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-x091n1g", "Errors.ResourceOwnerMissing")
}
orgAgg := org.NewAggregate(resourceOwner)
cmds, err := preparation.PrepareCommands(ctx, c.eventstore.Filter, prepareChangeNotificationPolicy(orgAgg, passwordChange))
@@ -84,11 +84,11 @@ func prepareChangeNotificationPolicy(
}
if writeModel.State == domain.PolicyStateUnspecified || writeModel.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-x029n3", "Errors.Org.NotificationPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-x029n3", "Errors.Org.NotificationPolicy.NotFound")
}
change, hasChanged := writeModel.NewChangedEvent(ctx, &a.Aggregate, passwordChange)
if !hasChanged {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "Org-ioqnxz", "Errors.Org.NotificationPolicy.NotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "Org-ioqnxz", "Errors.Org.NotificationPolicy.NotChanged")
}
return []eventstore.Command{
change,
@@ -99,7 +99,7 @@ func prepareChangeNotificationPolicy(
func (c *Commands) RemoveNotificationPolicy(ctx context.Context, resourceOwner string) (*domain.ObjectDetails, error) {
if resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-x89ns2", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-x89ns2", "Errors.ResourceOwnerMissing")
}
orgAgg := org.NewAggregate(resourceOwner)
cmds, err := preparation.PrepareCommands(ctx, c.eventstore.Filter, prepareRemoveNotificationPolicy(orgAgg))
@@ -129,7 +129,7 @@ func prepareRemoveNotificationPolicy(
}
if writeModel.State == domain.PolicyStateUnspecified || writeModel.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-x029n1s", "Errors.Org.NotificationPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-x029n1s", "Errors.Org.NotificationPolicy.NotFound")
}
return []eventstore.Command{
org.NewNotificationPolicyRemovedEvent(ctx, &a.Aggregate),
diff --git a/internal/command/org_policy_notification_test.go b/internal/command/org_policy_notification_test.go
index 5b780b892a..5f8f4f49c4 100644
--- a/internal/command/org_policy_notification_test.go
+++ b/internal/command/org_policy_notification_test.go
@@ -7,10 +7,10 @@ import (
"github.com/stretchr/testify/assert"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/policy"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddNotificationPolicy(t *testing.T) {
@@ -45,7 +45,7 @@ func TestCommandSide_AddNotificationPolicy(t *testing.T) {
passwordChange: true,
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -69,7 +69,7 @@ func TestCommandSide_AddNotificationPolicy(t *testing.T) {
passwordChange: true,
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -173,7 +173,7 @@ func TestCommandSide_ChangeNotificationPolicy(t *testing.T) {
passwordChange: true,
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -190,7 +190,7 @@ func TestCommandSide_ChangeNotificationPolicy(t *testing.T) {
passwordChange: true,
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -214,7 +214,7 @@ func TestCommandSide_ChangeNotificationPolicy(t *testing.T) {
passwordChange: true,
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -295,7 +295,7 @@ func TestCommandSide_RemoveNotificationPolicy(t *testing.T) {
ctx: context.Background(),
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -311,7 +311,7 @@ func TestCommandSide_RemoveNotificationPolicy(t *testing.T) {
orgID: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
diff --git a/internal/command/org_policy_password_age.go b/internal/command/org_policy_password_age.go
index b390f309a5..cc139cc79f 100644
--- a/internal/command/org_policy_password_age.go
+++ b/internal/command/org_policy_password_age.go
@@ -4,13 +4,13 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddPasswordAgePolicy(ctx context.Context, resourceOwner string, policy *domain.PasswordAgePolicy) (*domain.PasswordAgePolicy, error) {
if resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-M9fsd", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-M9fsd", "Errors.ResourceOwnerMissing")
}
addedPolicy := NewOrgPasswordAgePolicyWriteModel(resourceOwner)
err := c.eventstore.FilterToQueryReducer(ctx, addedPolicy)
@@ -18,7 +18,7 @@ func (c *Commands) AddPasswordAgePolicy(ctx context.Context, resourceOwner strin
return nil, err
}
if addedPolicy.State == domain.PolicyStateActive {
- return nil, caos_errs.ThrowAlreadyExists(nil, "ORG-Lk0dS", "Errors.Org.PasswordAgePolicy.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "ORG-Lk0dS", "Errors.Org.PasswordAgePolicy.AlreadyExists")
}
orgAgg := OrgAggregateFromWriteModel(&addedPolicy.WriteModel)
@@ -35,7 +35,7 @@ func (c *Commands) AddPasswordAgePolicy(ctx context.Context, resourceOwner strin
func (c *Commands) ChangePasswordAgePolicy(ctx context.Context, resourceOwner string, policy *domain.PasswordAgePolicy) (*domain.PasswordAgePolicy, error) {
if resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-57tGs", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-57tGs", "Errors.ResourceOwnerMissing")
}
existingPolicy := NewOrgPasswordAgePolicyWriteModel(resourceOwner)
err := c.eventstore.FilterToQueryReducer(ctx, existingPolicy)
@@ -43,13 +43,13 @@ func (c *Commands) ChangePasswordAgePolicy(ctx context.Context, resourceOwner st
return nil, err
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-0oPew", "Errors.Org.PasswordAgePolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-0oPew", "Errors.Org.PasswordAgePolicy.NotFound")
}
orgAgg := OrgAggregateFromWriteModel(&existingPolicy.PasswordAgePolicyWriteModel.WriteModel)
changedEvent, hasChanged := existingPolicy.NewChangedEvent(ctx, orgAgg, policy.ExpireWarnDays, policy.MaxAgeDays)
if !hasChanged {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "Org-dsgjR", "Errors.ORg.LabelPolicy.NotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "Org-dsgjR", "Errors.ORg.LabelPolicy.NotChanged")
}
pushedEvents, err := c.eventstore.Push(ctx, changedEvent)
@@ -65,7 +65,7 @@ func (c *Commands) ChangePasswordAgePolicy(ctx context.Context, resourceOwner st
func (c *Commands) RemovePasswordAgePolicy(ctx context.Context, orgID string) (*domain.ObjectDetails, error) {
if orgID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-M58wd", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-M58wd", "Errors.ResourceOwnerMissing")
}
existingPolicy := NewOrgPasswordAgePolicyWriteModel(orgID)
err := c.eventstore.FilterToQueryReducer(ctx, existingPolicy)
@@ -73,7 +73,7 @@ func (c *Commands) RemovePasswordAgePolicy(ctx context.Context, orgID string) (*
return nil, err
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-Dgs1g", "Errors.Org.PasswordAgePolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-Dgs1g", "Errors.Org.PasswordAgePolicy.NotFound")
}
orgAgg := OrgAggregateFromWriteModel(&existingPolicy.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, org.NewPasswordAgePolicyRemovedEvent(ctx, orgAgg))
diff --git a/internal/command/org_policy_password_age_test.go b/internal/command/org_policy_password_age_test.go
index 79b703a992..6100533871 100644
--- a/internal/command/org_policy_password_age_test.go
+++ b/internal/command/org_policy_password_age_test.go
@@ -7,11 +7,11 @@ import (
"github.com/stretchr/testify/assert"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/policy"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddPasswordAgePolicy(t *testing.T) {
@@ -48,7 +48,7 @@ func TestCommandSide_AddPasswordAgePolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -76,7 +76,7 @@ func TestCommandSide_AddPasswordAgePolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -167,7 +167,7 @@ func TestCommandSide_ChangePasswordAgePolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -187,7 +187,7 @@ func TestCommandSide_ChangePasswordAgePolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -215,7 +215,7 @@ func TestCommandSide_ChangePasswordAgePolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -305,7 +305,7 @@ func TestCommandSide_RemovePasswordAgePolicy(t *testing.T) {
ctx: context.Background(),
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -321,7 +321,7 @@ func TestCommandSide_RemovePasswordAgePolicy(t *testing.T) {
orgID: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
diff --git a/internal/command/org_policy_password_complexity.go b/internal/command/org_policy_password_complexity.go
index 4c7b7df3f1..932b598afc 100644
--- a/internal/command/org_policy_password_complexity.go
+++ b/internal/command/org_policy_password_complexity.go
@@ -4,8 +4,8 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) getOrgPasswordComplexityPolicy(ctx context.Context, orgID string) (*domain.PasswordComplexityPolicy, error) {
@@ -30,7 +30,7 @@ func (c *Commands) orgPasswordComplexityPolicyWriteModelByID(ctx context.Context
func (c *Commands) AddPasswordComplexityPolicy(ctx context.Context, resourceOwner string, policy *domain.PasswordComplexityPolicy) (*domain.PasswordComplexityPolicy, error) {
if resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-7ufEs", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-7ufEs", "Errors.ResourceOwnerMissing")
}
if err := policy.IsValid(); err != nil {
return nil, err
@@ -41,7 +41,7 @@ func (c *Commands) AddPasswordComplexityPolicy(ctx context.Context, resourceOwne
return nil, err
}
if addedPolicy.State == domain.PolicyStateActive {
- return nil, caos_errs.ThrowAlreadyExists(nil, "Org-LdhbS", "Errors.Org.PasswordComplexityPolicy.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "Org-LdhbS", "Errors.Org.PasswordComplexityPolicy.AlreadyExists")
}
orgAgg := OrgAggregateFromWriteModel(&addedPolicy.WriteModel)
@@ -67,7 +67,7 @@ func (c *Commands) AddPasswordComplexityPolicy(ctx context.Context, resourceOwne
func (c *Commands) ChangePasswordComplexityPolicy(ctx context.Context, resourceOwner string, policy *domain.PasswordComplexityPolicy) (*domain.PasswordComplexityPolicy, error) {
if resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-3J8fs", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-3J8fs", "Errors.ResourceOwnerMissing")
}
if err := policy.IsValid(); err != nil {
return nil, err
@@ -79,13 +79,13 @@ func (c *Commands) ChangePasswordComplexityPolicy(ctx context.Context, resourceO
return nil, err
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-Dgs3g", "Errors.Org.PasswordComplexityPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-Dgs3g", "Errors.Org.PasswordComplexityPolicy.NotFound")
}
orgAgg := OrgAggregateFromWriteModel(&existingPolicy.PasswordComplexityPolicyWriteModel.WriteModel)
changedEvent, hasChanged := existingPolicy.NewChangedEvent(ctx, orgAgg, policy.MinLength, policy.HasLowercase, policy.HasUppercase, policy.HasNumber, policy.HasSymbol)
if !hasChanged {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "Org-DAs21", "Errors.Org.PasswordComplexityPolicy.NotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "Org-DAs21", "Errors.Org.PasswordComplexityPolicy.NotChanged")
}
pushedEvents, err := c.eventstore.Push(ctx, changedEvent)
@@ -101,7 +101,7 @@ func (c *Commands) ChangePasswordComplexityPolicy(ctx context.Context, resourceO
func (c *Commands) RemovePasswordComplexityPolicy(ctx context.Context, orgID string) (*domain.ObjectDetails, error) {
if orgID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-J8fsf", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-J8fsf", "Errors.ResourceOwnerMissing")
}
existingPolicy := NewOrgPasswordComplexityPolicyWriteModel(orgID)
event, err := c.removePasswordComplexityPolicy(ctx, existingPolicy)
@@ -125,7 +125,7 @@ func (c *Commands) removePasswordComplexityPolicy(ctx context.Context, existingP
return nil, err
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-ADgs2", "Errors.Org.PasswordComplexityPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-ADgs2", "Errors.Org.PasswordComplexityPolicy.NotFound")
}
orgAgg := OrgAggregateFromWriteModel(&existingPolicy.WriteModel)
return org.NewPasswordComplexityPolicyRemovedEvent(ctx, orgAgg), nil
diff --git a/internal/command/org_policy_password_complexity_test.go b/internal/command/org_policy_password_complexity_test.go
index 93b73170eb..955b3bedf6 100644
--- a/internal/command/org_policy_password_complexity_test.go
+++ b/internal/command/org_policy_password_complexity_test.go
@@ -7,11 +7,11 @@ import (
"github.com/stretchr/testify/assert"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/policy"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddPasswordComplexityPolicy(t *testing.T) {
@@ -51,7 +51,7 @@ func TestCommandSide_AddPasswordComplexityPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -82,7 +82,7 @@ func TestCommandSide_AddPasswordComplexityPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -182,7 +182,7 @@ func TestCommandSide_ChangePasswordComplexityPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -205,7 +205,7 @@ func TestCommandSide_ChangePasswordComplexityPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -236,7 +236,7 @@ func TestCommandSide_ChangePasswordComplexityPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -332,7 +332,7 @@ func TestCommandSide_RemovePasswordComplexityPolicy(t *testing.T) {
ctx: context.Background(),
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -348,7 +348,7 @@ func TestCommandSide_RemovePasswordComplexityPolicy(t *testing.T) {
orgID: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
diff --git a/internal/command/org_policy_privacy.go b/internal/command/org_policy_privacy.go
index 04f730f8f1..c4cf6f4591 100644
--- a/internal/command/org_policy_privacy.go
+++ b/internal/command/org_policy_privacy.go
@@ -4,8 +4,8 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) getOrgPrivacyPolicy(ctx context.Context, orgID string) (*domain.PrivacyPolicy, error) {
@@ -38,7 +38,7 @@ func (c *Commands) AddPrivacyPolicy(ctx context.Context, resourceOwner string, p
}
if resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-MMk9fs", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-MMk9fs", "Errors.ResourceOwnerMissing")
}
addedPolicy := NewOrgPrivacyPolicyWriteModel(resourceOwner)
err := c.eventstore.FilterToQueryReducer(ctx, addedPolicy)
@@ -46,7 +46,7 @@ func (c *Commands) AddPrivacyPolicy(ctx context.Context, resourceOwner string, p
return nil, err
}
if addedPolicy.State == domain.PolicyStateActive {
- return nil, caos_errs.ThrowAlreadyExists(nil, "Org-0oLpd", "Errors.Org.PrivacyPolicy.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "Org-0oLpd", "Errors.Org.PrivacyPolicy.AlreadyExists")
}
orgAgg := OrgAggregateFromWriteModel(&addedPolicy.WriteModel)
@@ -79,7 +79,7 @@ func (c *Commands) ChangePrivacyPolicy(ctx context.Context, resourceOwner string
}
if resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-22N89f", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-22N89f", "Errors.ResourceOwnerMissing")
}
existingPolicy, err := c.orgPrivacyPolicyWriteModelByID(ctx, resourceOwner)
@@ -87,13 +87,13 @@ func (c *Commands) ChangePrivacyPolicy(ctx context.Context, resourceOwner string
return nil, err
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-Ng8sf", "Errors.Org.PrivacyPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-Ng8sf", "Errors.Org.PrivacyPolicy.NotFound")
}
orgAgg := OrgAggregateFromWriteModel(&existingPolicy.PrivacyPolicyWriteModel.WriteModel)
changedEvent, hasChanged := existingPolicy.NewChangedEvent(ctx, orgAgg, policy.TOSLink, policy.PrivacyLink, policy.HelpLink, policy.SupportEmail)
if !hasChanged {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "Org-4N9fs", "Errors.Org.PrivacyPolicy.NotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "Org-4N9fs", "Errors.Org.PrivacyPolicy.NotChanged")
}
pushedEvents, err := c.eventstore.Push(ctx, changedEvent)
@@ -109,7 +109,7 @@ func (c *Commands) ChangePrivacyPolicy(ctx context.Context, resourceOwner string
func (c *Commands) RemovePrivacyPolicy(ctx context.Context, orgID string) (*domain.ObjectDetails, error) {
if orgID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "Org-Nf9sf", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "Org-Nf9sf", "Errors.ResourceOwnerMissing")
}
existingPolicy := NewOrgPrivacyPolicyWriteModel(orgID)
event, err := c.removePrivacyPolicy(ctx, existingPolicy)
@@ -133,7 +133,7 @@ func (c *Commands) removePrivacyPolicy(ctx context.Context, existingPolicy *OrgP
return nil, err
}
if existingPolicy.State == domain.PolicyStateUnspecified || existingPolicy.State == domain.PolicyStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "ORG-Ze9gs", "Errors.Org.PrivacyPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "ORG-Ze9gs", "Errors.Org.PrivacyPolicy.NotFound")
}
orgAgg := OrgAggregateFromWriteModel(&existingPolicy.WriteModel)
return org.NewPrivacyPolicyRemovedEvent(ctx, orgAgg), nil
diff --git a/internal/command/org_policy_privacy_test.go b/internal/command/org_policy_privacy_test.go
index bc5e448850..3b251326d8 100644
--- a/internal/command/org_policy_privacy_test.go
+++ b/internal/command/org_policy_privacy_test.go
@@ -7,11 +7,11 @@ import (
"github.com/stretchr/testify/assert"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/policy"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddPrivacyPolicy(t *testing.T) {
@@ -50,7 +50,7 @@ func TestCommandSide_AddPrivacyPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -82,7 +82,7 @@ func TestCommandSide_AddPrivacyPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -143,7 +143,7 @@ func TestCommandSide_AddPrivacyPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -242,7 +242,7 @@ func TestCommandSide_ChangePrivacyPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -264,7 +264,7 @@ func TestCommandSide_ChangePrivacyPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -296,7 +296,7 @@ func TestCommandSide_ChangePrivacyPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -312,7 +312,7 @@ func TestCommandSide_ChangePrivacyPolicy(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -452,7 +452,7 @@ func TestCommandSide_RemovePrivacyPolicy(t *testing.T) {
ctx: context.Background(),
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -468,7 +468,7 @@ func TestCommandSide_RemovePrivacyPolicy(t *testing.T) {
orgID: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
diff --git a/internal/command/org_test.go b/internal/command/org_test.go
index abaeb8d351..12199a998f 100644
--- a/internal/command/org_test.go
+++ b/internal/command/org_test.go
@@ -13,7 +13,6 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/id"
@@ -21,6 +20,7 @@ import (
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/project"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestAddOrg(t *testing.T) {
@@ -44,7 +44,7 @@ func TestAddOrg(t *testing.T) {
name: "",
},
want: Want{
- ValidationErr: errors.ThrowInvalidArgument(nil, "ORG-mruNY", "Errors.Invalid.Argument"),
+ ValidationErr: zerrors.ThrowInvalidArgument(nil, "ORG-mruNY", "Errors.Invalid.Argument"),
},
},
{
@@ -106,7 +106,7 @@ func TestCommandSide_AddOrg(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -123,7 +123,7 @@ func TestCommandSide_AddOrg(t *testing.T) {
name: " ",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -141,7 +141,7 @@ func TestCommandSide_AddOrg(t *testing.T) {
"lastname1",
"nickname1",
"displayname1",
- language.German,
+ language.English,
domain.GenderMale,
"email1",
true,
@@ -167,7 +167,7 @@ func TestCommandSide_AddOrg(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -185,7 +185,7 @@ func TestCommandSide_AddOrg(t *testing.T) {
"lastname1",
"nickname1",
"displayname1",
- language.German,
+ language.English,
domain.GenderMale,
"email1",
true,
@@ -193,7 +193,7 @@ func TestCommandSide_AddOrg(t *testing.T) {
),
),
expectFilterOrgMemberNotFound(),
- expectPushFailed(errors.ThrowAlreadyExists(nil, "id", "internal"),
+ expectPushFailed(zerrors.ThrowAlreadyExists(nil, "id", "internal"),
org.NewOrgAddedEvent(
context.Background(),
&org.NewAggregate("org2").Aggregate,
@@ -235,7 +235,7 @@ func TestCommandSide_AddOrg(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -253,7 +253,7 @@ func TestCommandSide_AddOrg(t *testing.T) {
"lastname1",
"nickname1",
"displayname1",
- language.German,
+ language.English,
domain.GenderMale,
"email1",
true,
@@ -261,7 +261,7 @@ func TestCommandSide_AddOrg(t *testing.T) {
),
),
expectFilterOrgMemberNotFound(),
- expectPushFailed(errors.ThrowInternal(nil, "id", "internal"),
+ expectPushFailed(zerrors.ThrowInternal(nil, "id", "internal"),
org.NewOrgAddedEvent(
context.Background(),
&org.NewAggregate("org2").Aggregate,
@@ -303,7 +303,7 @@ func TestCommandSide_AddOrg(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsInternal,
+ err: zerrors.IsInternal,
},
},
{
@@ -321,7 +321,7 @@ func TestCommandSide_AddOrg(t *testing.T) {
"lastname1",
"nickname1",
"displayname1",
- language.German,
+ language.English,
domain.GenderMale,
"email1",
true,
@@ -392,7 +392,7 @@ func TestCommandSide_AddOrg(t *testing.T) {
"lastname1",
"nickname1",
"displayname1",
- language.German,
+ language.English,
domain.GenderMale,
"email1",
true,
@@ -500,7 +500,7 @@ func TestCommandSide_ChangeOrg(t *testing.T) {
orgID: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -516,7 +516,7 @@ func TestCommandSide_ChangeOrg(t *testing.T) {
name: " ",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -533,7 +533,7 @@ func TestCommandSide_ChangeOrg(t *testing.T) {
name: "org",
},
res: res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -556,7 +556,7 @@ func TestCommandSide_ChangeOrg(t *testing.T) {
name: " org ",
},
res: res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -573,7 +573,7 @@ func TestCommandSide_ChangeOrg(t *testing.T) {
),
expectFilter(),
expectPushFailed(
- errors.ThrowInternal(nil, "id", "message"),
+ zerrors.ThrowInternal(nil, "id", "message"),
org.NewOrgChangedEvent(context.Background(),
&org.NewAggregate("org1").Aggregate, "org", "neworg",
),
@@ -586,7 +586,7 @@ func TestCommandSide_ChangeOrg(t *testing.T) {
name: "neworg",
},
res: res{
- err: errors.IsInternal,
+ err: zerrors.IsInternal,
},
},
{
@@ -751,7 +751,7 @@ func TestCommandSide_DeactivateOrg(t *testing.T) {
orgID: "org1",
},
res: res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -777,7 +777,7 @@ func TestCommandSide_DeactivateOrg(t *testing.T) {
orgID: "org1",
},
res: res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -793,7 +793,7 @@ func TestCommandSide_DeactivateOrg(t *testing.T) {
),
),
expectPushFailed(
- errors.ThrowInternal(nil, "id", "message"),
+ zerrors.ThrowInternal(nil, "id", "message"),
org.NewOrgDeactivatedEvent(context.Background(),
&org.NewAggregate("org1").Aggregate,
),
@@ -805,7 +805,7 @@ func TestCommandSide_DeactivateOrg(t *testing.T) {
orgID: "org1",
},
res: res{
- err: errors.IsInternal,
+ err: zerrors.IsInternal,
},
},
{
@@ -884,7 +884,7 @@ func TestCommandSide_ReactivateOrg(t *testing.T) {
orgID: "org1",
},
res: res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -906,7 +906,7 @@ func TestCommandSide_ReactivateOrg(t *testing.T) {
orgID: "org1",
},
res: res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -927,7 +927,7 @@ func TestCommandSide_ReactivateOrg(t *testing.T) {
),
),
expectPushFailed(
- errors.ThrowInternal(nil, "id", "message"),
+ zerrors.ThrowInternal(nil, "id", "message"),
org.NewOrgReactivatedEvent(context.Background(),
&org.NewAggregate("org1").Aggregate,
),
@@ -939,7 +939,7 @@ func TestCommandSide_ReactivateOrg(t *testing.T) {
orgID: "org1",
},
res: res{
- err: errors.IsInternal,
+ err: zerrors.IsInternal,
},
},
{
@@ -1019,7 +1019,7 @@ func TestCommandSide_RemoveOrg(t *testing.T) {
orgID: "defaultOrgID",
},
res: res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -1045,7 +1045,7 @@ func TestCommandSide_RemoveOrg(t *testing.T) {
orgID: "org1",
},
res: res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -1062,7 +1062,7 @@ func TestCommandSide_RemoveOrg(t *testing.T) {
orgID: "org1",
},
res: res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1093,7 +1093,7 @@ func TestCommandSide_RemoveOrg(t *testing.T) {
expectFilter(),
expectFilter(),
expectPushFailed(
- errors.ThrowInternal(nil, "id", "message"),
+ zerrors.ThrowInternal(nil, "id", "message"),
org.NewOrgRemovedEvent(
context.Background(), &org.NewAggregate("org1").Aggregate, "org", []string{}, false, []string{}, []*domain.UserIDPLink{}, []string{},
),
@@ -1105,7 +1105,7 @@ func TestCommandSide_RemoveOrg(t *testing.T) {
orgID: "org1",
},
res: res{
- err: errors.IsInternal,
+ err: zerrors.IsInternal,
},
},
{
@@ -1181,7 +1181,7 @@ func TestCommandSide_RemoveOrg(t *testing.T) {
"lastname1",
"nickname1",
"displayname1",
- language.German,
+ language.English,
domain.GenderMale,
"email1",
false,
@@ -1292,7 +1292,7 @@ func TestCommandSide_SetUpOrg(t *testing.T) {
},
},
res: res{
- err: errors.ThrowInvalidArgument(nil, "ORG-mruNY", "Errors.Invalid.Argument"),
+ err: zerrors.ThrowInvalidArgument(nil, "ORG-mruNY", "Errors.Invalid.Argument"),
},
},
{
@@ -1315,7 +1315,7 @@ func TestCommandSide_SetUpOrg(t *testing.T) {
},
},
res: res{
- err: errors.ThrowPreconditionFailed(nil, "ORG-GoXOn", "Errors.User.NotFound"),
+ err: zerrors.ThrowPreconditionFailed(nil, "ORG-GoXOn", "Errors.User.NotFound"),
},
},
{
@@ -1346,7 +1346,7 @@ func TestCommandSide_SetUpOrg(t *testing.T) {
allowInitialMail: true,
},
res: res{
- err: errors.ThrowInvalidArgument(nil, "V2-zzad3", "Errors.Invalid.Argument"),
+ err: zerrors.ThrowInvalidArgument(nil, "V2-zzad3", "Errors.Invalid.Argument"),
},
},
{
diff --git a/internal/command/phone_test.go b/internal/command/phone_test.go
index 0dda258913..521068d1b4 100644
--- a/internal/command/phone_test.go
+++ b/internal/command/phone_test.go
@@ -4,7 +4,7 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestFormatPhoneNumber(t *testing.T) {
@@ -22,7 +22,7 @@ func TestFormatPhoneNumber(t *testing.T) {
args: args{
number: "PhoneNumber",
},
- errFunc: errors.IsErrorInvalidArgument,
+ errFunc: zerrors.IsErrorInvalidArgument,
},
{
name: "format phone +4171 xxx xx xx",
diff --git a/internal/command/policy_password_complexity_model.go b/internal/command/policy_password_complexity_model.go
index 197ae7ac7c..ad8c3b11ec 100644
--- a/internal/command/policy_password_complexity_model.go
+++ b/internal/command/policy_password_complexity_model.go
@@ -4,9 +4,9 @@ import (
"regexp"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/policy"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -62,23 +62,23 @@ func (wm *PasswordComplexityPolicyWriteModel) Reduce() error {
func (wm *PasswordComplexityPolicyWriteModel) Validate(password string) error {
if wm.MinLength != 0 && uint64(len(password)) < wm.MinLength {
- return errors.ThrowInvalidArgument(nil, "COMMA-HuJf6", "Errors.User.PasswordComplexityPolicy.MinLength")
+ return zerrors.ThrowInvalidArgument(nil, "COMMA-HuJf6", "Errors.User.PasswordComplexityPolicy.MinLength")
}
if wm.HasLowercase && !hasStringLowerCase(password) {
- return errors.ThrowInvalidArgument(nil, "COMMA-co3Xw", "Errors.User.PasswordComplexityPolicy.HasLower")
+ return zerrors.ThrowInvalidArgument(nil, "COMMA-co3Xw", "Errors.User.PasswordComplexityPolicy.HasLower")
}
if wm.HasUppercase && !hasStringUpperCase(password) {
- return errors.ThrowInvalidArgument(nil, "COMMA-VoaRj", "Errors.User.PasswordComplexityPolicy.HasUpper")
+ return zerrors.ThrowInvalidArgument(nil, "COMMA-VoaRj", "Errors.User.PasswordComplexityPolicy.HasUpper")
}
if wm.HasNumber && !hasNumber(password) {
- return errors.ThrowInvalidArgument(nil, "COMMA-ZBv4H", "Errors.User.PasswordComplexityPolicy.HasNumber")
+ return zerrors.ThrowInvalidArgument(nil, "COMMA-ZBv4H", "Errors.User.PasswordComplexityPolicy.HasNumber")
}
if wm.HasSymbol && !hasSymbol(password) {
- return errors.ThrowInvalidArgument(nil, "COMMA-ZDLwA", "Errors.User.PasswordComplexityPolicy.HasSymbol")
+ return zerrors.ThrowInvalidArgument(nil, "COMMA-ZDLwA", "Errors.User.PasswordComplexityPolicy.HasSymbol")
}
return nil
}
diff --git a/internal/command/preparation/command.go b/internal/command/preparation/command.go
index ce383cb8df..f407ca6f8b 100644
--- a/internal/command/preparation/command.go
+++ b/internal/command/preparation/command.go
@@ -3,8 +3,8 @@ package preparation
import (
"context"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
// Validation of the input values of the command and if correct returns
@@ -21,7 +21,7 @@ type FilterToQueryReducer func(ctx context.Context, queryFactory *eventstore.Sea
var (
//ErrNotExecutable is thrown if no command creator was created
- ErrNotExecutable = errors.ThrowInvalidArgument(nil, "PREPA-pH70n", "Errors.Internal")
+ ErrNotExecutable = zerrors.ThrowInvalidArgument(nil, "PREPA-pH70n", "Errors.Internal")
)
// PrepareCommands checks the passed validations and if ok creates the commands
diff --git a/internal/command/project.go b/internal/command/project.go
index a561daa90a..6837fabd90 100644
--- a/internal/command/project.go
+++ b/internal/command/project.go
@@ -8,9 +8,9 @@ import (
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/project"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddProjectWithID(ctx context.Context, project *domain.Project, resourceOwner, projectID string) (_ *domain.Project, err error) {
@@ -19,14 +19,14 @@ func (c *Commands) AddProjectWithID(ctx context.Context, project *domain.Project
return nil, err
}
if existingProject.State != domain.ProjectStateUnspecified {
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-opamwu", "Errors.Project.AlreadyExisting")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-opamwu", "Errors.Project.AlreadyExisting")
}
return c.addProjectWithID(ctx, project, resourceOwner, projectID)
}
func (c *Commands) AddProject(ctx context.Context, project *domain.Project, resourceOwner, ownerUserID string) (_ *domain.Project, err error) {
if !project.IsValid() {
- return nil, errors.ThrowInvalidArgument(nil, "PROJECT-IOVCC", "Errors.Project.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "PROJECT-IOVCC", "Errors.Project.Invalid")
}
projectID, err := c.idGenerator.Next()
@@ -66,7 +66,7 @@ func (c *Commands) addProjectWithID(ctx context.Context, projectAdd *domain.Proj
func (c *Commands) addProjectWithIDWithOwner(ctx context.Context, projectAdd *domain.Project, resourceOwner, ownerUserID, projectID string) (_ *domain.Project, err error) {
if !projectAdd.IsValid() {
- return nil, errors.ThrowInvalidArgument(nil, "PROJECT-IOVCC", "Errors.Project.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "PROJECT-IOVCC", "Errors.Project.Invalid")
}
projectAdd.AggregateID = projectID
addedProject := NewProjectWriteModel(projectAdd.AggregateID, resourceOwner)
@@ -107,13 +107,13 @@ func AddProjectCommand(
) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if name = strings.TrimSpace(name); name == "" {
- return nil, errors.ThrowInvalidArgument(nil, "PROJE-C01yo", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "PROJE-C01yo", "Errors.Invalid.Argument")
}
if !privateLabelingSetting.Valid() {
- return nil, errors.ThrowInvalidArgument(nil, "PROJE-AO52V", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "PROJE-AO52V", "Errors.Invalid.Argument")
}
if owner == "" {
- return nil, errors.ThrowPreconditionFailed(nil, "PROJE-hzxwo", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "PROJE-hzxwo", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
return []eventstore.Command{
@@ -153,7 +153,7 @@ func (c *Commands) getProjectByID(ctx context.Context, projectID, resourceOwner
return nil, err
}
if projectWriteModel.State == domain.ProjectStateUnspecified || projectWriteModel.State == domain.ProjectStateRemoved {
- return nil, errors.ThrowNotFound(nil, "PROJECT-Gd2hh", "Errors.Project.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "PROJECT-Gd2hh", "Errors.Project.NotFound")
}
return projectWriteModelToProject(projectWriteModel), nil
}
@@ -164,14 +164,14 @@ func (c *Commands) checkProjectExists(ctx context.Context, projectID, resourceOw
return err
}
if projectWriteModel.State == domain.ProjectStateUnspecified || projectWriteModel.State == domain.ProjectStateRemoved {
- return errors.ThrowPreconditionFailed(nil, "COMMAND-EbFMN", "Errors.Project.NotFound")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-EbFMN", "Errors.Project.NotFound")
}
return nil
}
func (c *Commands) ChangeProject(ctx context.Context, projectChange *domain.Project, resourceOwner string) (*domain.Project, error) {
if !projectChange.IsValid() || projectChange.AggregateID == "" {
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-4m9vS", "Errors.Project.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-4m9vS", "Errors.Project.Invalid")
}
existingProject, err := c.getProjectWriteModelByID(ctx, projectChange.AggregateID, resourceOwner)
@@ -179,7 +179,7 @@ func (c *Commands) ChangeProject(ctx context.Context, projectChange *domain.Proj
return nil, err
}
if existingProject.State == domain.ProjectStateUnspecified || existingProject.State == domain.ProjectStateRemoved {
- return nil, errors.ThrowNotFound(nil, "COMMAND-3M9sd", "Errors.Project.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-3M9sd", "Errors.Project.NotFound")
}
projectAgg := ProjectAggregateFromWriteModel(&existingProject.WriteModel)
@@ -195,7 +195,7 @@ func (c *Commands) ChangeProject(ctx context.Context, projectChange *domain.Proj
return nil, err
}
if !hasChanged {
- return nil, errors.ThrowPreconditionFailed(nil, "COMMAND-2M0fs", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-2M0fs", "Errors.NoChangesFound")
}
pushedEvents, err := c.eventstore.Push(ctx, changedEvent)
if err != nil {
@@ -210,7 +210,7 @@ func (c *Commands) ChangeProject(ctx context.Context, projectChange *domain.Proj
func (c *Commands) DeactivateProject(ctx context.Context, projectID string, resourceOwner string) (*domain.ObjectDetails, error) {
if projectID == "" || resourceOwner == "" {
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-88iF0", "Errors.Project.ProjectIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-88iF0", "Errors.Project.ProjectIDMissing")
}
existingProject, err := c.getProjectWriteModelByID(ctx, projectID, resourceOwner)
@@ -218,10 +218,10 @@ func (c *Commands) DeactivateProject(ctx context.Context, projectID string, reso
return nil, err
}
if existingProject.State == domain.ProjectStateUnspecified || existingProject.State == domain.ProjectStateRemoved {
- return nil, errors.ThrowNotFound(nil, "COMMAND-112M9", "Errors.Project.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-112M9", "Errors.Project.NotFound")
}
if existingProject.State != domain.ProjectStateActive {
- return nil, errors.ThrowPreconditionFailed(nil, "COMMAND-mki55", "Errors.Project.NotActive")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-mki55", "Errors.Project.NotActive")
}
projectAgg := ProjectAggregateFromWriteModel(&existingProject.WriteModel)
@@ -238,7 +238,7 @@ func (c *Commands) DeactivateProject(ctx context.Context, projectID string, reso
func (c *Commands) ReactivateProject(ctx context.Context, projectID string, resourceOwner string) (*domain.ObjectDetails, error) {
if projectID == "" || resourceOwner == "" {
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-3ihsF", "Errors.Project.ProjectIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-3ihsF", "Errors.Project.ProjectIDMissing")
}
existingProject, err := c.getProjectWriteModelByID(ctx, projectID, resourceOwner)
@@ -246,10 +246,10 @@ func (c *Commands) ReactivateProject(ctx context.Context, projectID string, reso
return nil, err
}
if existingProject.State == domain.ProjectStateUnspecified || existingProject.State == domain.ProjectStateRemoved {
- return nil, errors.ThrowNotFound(nil, "COMMAND-3M9sd", "Errors.Project.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-3M9sd", "Errors.Project.NotFound")
}
if existingProject.State != domain.ProjectStateInactive {
- return nil, errors.ThrowPreconditionFailed(nil, "COMMAND-5M9bs", "Errors.Project.NotInactive")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-5M9bs", "Errors.Project.NotInactive")
}
projectAgg := ProjectAggregateFromWriteModel(&existingProject.WriteModel)
@@ -266,7 +266,7 @@ func (c *Commands) ReactivateProject(ctx context.Context, projectID string, reso
func (c *Commands) RemoveProject(ctx context.Context, projectID, resourceOwner string, cascadingUserGrantIDs ...string) (*domain.ObjectDetails, error) {
if projectID == "" || resourceOwner == "" {
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-66hM9", "Errors.Project.ProjectIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-66hM9", "Errors.Project.ProjectIDMissing")
}
existingProject, err := c.getProjectWriteModelByID(ctx, projectID, resourceOwner)
@@ -274,7 +274,7 @@ func (c *Commands) RemoveProject(ctx context.Context, projectID, resourceOwner s
return nil, err
}
if existingProject.State == domain.ProjectStateUnspecified || existingProject.State == domain.ProjectStateRemoved {
- return nil, errors.ThrowNotFound(nil, "COMMAND-3M9sd", "Errors.Project.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-3M9sd", "Errors.Project.NotFound")
}
samlEntityIDsAgg, err := c.getSAMLEntityIdsWriteModelByProjectID(ctx, projectID, resourceOwner)
diff --git a/internal/command/project_application.go b/internal/command/project_application.go
index 3929be9e74..700f3f68eb 100644
--- a/internal/command/project_application.go
+++ b/internal/command/project_application.go
@@ -6,8 +6,8 @@ import (
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/repository/project"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type AddApp struct {
@@ -22,7 +22,7 @@ func (c *Commands) newAppClientSecret(ctx context.Context, filter preparation.Fi
func (c *Commands) ChangeApplication(ctx context.Context, projectID string, appChange domain.Application, resourceOwner string) (*domain.ObjectDetails, error) {
if projectID == "" || appChange.GetAppID() == "" || appChange.GetApplicationName() == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-4m9vS", "Errors.Project.App.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-4m9vS", "Errors.Project.App.Invalid")
}
existingApp, err := c.getApplicationWriteModel(ctx, projectID, appChange.GetAppID(), resourceOwner)
@@ -30,10 +30,10 @@ func (c *Commands) ChangeApplication(ctx context.Context, projectID string, appC
return nil, err
}
if existingApp.State == domain.AppStateUnspecified || existingApp.State == domain.AppStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-28di9", "Errors.Project.App.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-28di9", "Errors.Project.App.NotExisting")
}
if existingApp.Name == appChange.GetApplicationName() {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-2m8vx", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-2m8vx", "Errors.NoChangesFound")
}
projectAgg := ProjectAggregateFromWriteModel(&existingApp.WriteModel)
pushedEvents, err := c.eventstore.Push(
@@ -51,7 +51,7 @@ func (c *Commands) ChangeApplication(ctx context.Context, projectID string, appC
func (c *Commands) DeactivateApplication(ctx context.Context, projectID, appID, resourceOwner string) (*domain.ObjectDetails, error) {
if projectID == "" || appID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-88fi0", "Errors.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-88fi0", "Errors.IDMissing")
}
existingApp, err := c.getApplicationWriteModel(ctx, projectID, appID, resourceOwner)
@@ -59,10 +59,10 @@ func (c *Commands) DeactivateApplication(ctx context.Context, projectID, appID,
return nil, err
}
if existingApp.State == domain.AppStateUnspecified || existingApp.State == domain.AppStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-ov9d3", "Errors.Project.App.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-ov9d3", "Errors.Project.App.NotExisting")
}
if existingApp.State != domain.AppStateActive {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-dsh35", "Errors.Project.App.NotActive")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-dsh35", "Errors.Project.App.NotActive")
}
projectAgg := ProjectAggregateFromWriteModel(&existingApp.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, project.NewApplicationDeactivatedEvent(ctx, projectAgg, appID))
@@ -78,7 +78,7 @@ func (c *Commands) DeactivateApplication(ctx context.Context, projectID, appID,
func (c *Commands) ReactivateApplication(ctx context.Context, projectID, appID, resourceOwner string) (*domain.ObjectDetails, error) {
if projectID == "" || appID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-983dF", "Errors.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-983dF", "Errors.IDMissing")
}
existingApp, err := c.getApplicationWriteModel(ctx, projectID, appID, resourceOwner)
@@ -86,10 +86,10 @@ func (c *Commands) ReactivateApplication(ctx context.Context, projectID, appID,
return nil, err
}
if existingApp.State == domain.AppStateUnspecified || existingApp.State == domain.AppStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-ov9d3", "Errors.Project.App.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-ov9d3", "Errors.Project.App.NotExisting")
}
if existingApp.State != domain.AppStateInactive {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-1n8cM", "Errors.Project.App.NotInactive")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-1n8cM", "Errors.Project.App.NotInactive")
}
projectAgg := ProjectAggregateFromWriteModel(&existingApp.WriteModel)
@@ -106,7 +106,7 @@ func (c *Commands) ReactivateApplication(ctx context.Context, projectID, appID,
func (c *Commands) RemoveApplication(ctx context.Context, projectID, appID, resourceOwner string) (*domain.ObjectDetails, error) {
if projectID == "" || appID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-1b7Jf", "Errors.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-1b7Jf", "Errors.IDMissing")
}
existingApp, err := c.getApplicationWriteModel(ctx, projectID, appID, resourceOwner)
@@ -114,7 +114,7 @@ func (c *Commands) RemoveApplication(ctx context.Context, projectID, appID, reso
return nil, err
}
if existingApp.State == domain.AppStateUnspecified || existingApp.State == domain.AppStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-0po9s", "Errors.Project.App.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-0po9s", "Errors.Project.App.NotExisting")
}
projectAgg := ProjectAggregateFromWriteModel(&existingApp.WriteModel)
diff --git a/internal/command/project_application_api.go b/internal/command/project_application_api.go
index 16ff044db9..cbbfb87ea3 100644
--- a/internal/command/project_application_api.go
+++ b/internal/command/project_application_api.go
@@ -9,10 +9,10 @@ import (
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
project_repo "github.com/zitadel/zitadel/internal/repository/project"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type addAPIApp struct {
@@ -27,20 +27,20 @@ type addAPIApp struct {
func (c *Commands) AddAPIAppCommand(app *addAPIApp, clientSecretAlg crypto.HashAlgorithm) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if app.ID == "" {
- return nil, errors.ThrowInvalidArgument(nil, "PROJE-XHsKt", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "PROJE-XHsKt", "Errors.Invalid.Argument")
}
if app.Name = strings.TrimSpace(app.Name); app.Name == "" {
- return nil, errors.ThrowInvalidArgument(nil, "PROJE-F7g21", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "PROJE-F7g21", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
project, err := projectWriteModel(ctx, filter, app.Aggregate.ID, app.Aggregate.ResourceOwner)
if err != nil || !project.State.Valid() {
- return nil, errors.ThrowNotFound(err, "PROJE-Sf2gb", "Errors.Project.NotFound")
+ return nil, zerrors.ThrowNotFound(err, "PROJE-Sf2gb", "Errors.Project.NotFound")
}
app.ClientID, err = domain.NewClientID(c.idGenerator, project.Name)
if err != nil {
- return nil, errors.ThrowInternal(err, "V2-f0pgP", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "V2-f0pgP", "Errors.Internal")
}
if app.AuthMethodType == domain.APIAuthMethodTypeBasic {
@@ -77,11 +77,11 @@ func (c *Commands) AddAPIApplicationWithID(ctx context.Context, apiApp *domain.A
return nil, err
}
if existingAPI.State != domain.AppStateUnspecified {
- return nil, errors.ThrowPreconditionFailed(nil, "PROJECT-mabu12", "Errors.Project.App.AlreadyExisting")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "PROJECT-mabu12", "Errors.Project.App.AlreadyExisting")
}
project, err := c.getProjectByID(ctx, apiApp.AggregateID, resourceOwner)
if err != nil {
- return nil, errors.ThrowPreconditionFailed(err, "PROJECT-9fnsa", "Errors.Project.NotFound")
+ return nil, zerrors.ThrowPreconditionFailed(err, "PROJECT-9fnsa", "Errors.Project.NotFound")
}
return c.addAPIApplicationWithID(ctx, apiApp, resourceOwner, project, appID, appSecretGenerator)
@@ -89,15 +89,15 @@ func (c *Commands) AddAPIApplicationWithID(ctx context.Context, apiApp *domain.A
func (c *Commands) AddAPIApplication(ctx context.Context, apiApp *domain.APIApp, resourceOwner string, appSecretGenerator crypto.Generator) (_ *domain.APIApp, err error) {
if apiApp == nil || apiApp.AggregateID == "" {
- return nil, errors.ThrowInvalidArgument(nil, "PROJECT-5m9E", "Errors.Project.App.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "PROJECT-5m9E", "Errors.Project.App.Invalid")
}
project, err := c.getProjectByID(ctx, apiApp.AggregateID, resourceOwner)
if err != nil {
- return nil, errors.ThrowPreconditionFailed(err, "PROJECT-9fnsf", "Errors.Project.NotFound")
+ return nil, zerrors.ThrowPreconditionFailed(err, "PROJECT-9fnsf", "Errors.Project.NotFound")
}
if !apiApp.IsValid() {
- return nil, errors.ThrowInvalidArgument(nil, "PROJECT-Bff2g", "Errors.Project.App.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "PROJECT-Bff2g", "Errors.Project.App.Invalid")
}
appID, err := c.idGenerator.Next()
@@ -150,7 +150,7 @@ func (c *Commands) addAPIApplicationWithID(ctx context.Context, apiApp *domain.A
func (c *Commands) ChangeAPIApplication(ctx context.Context, apiApp *domain.APIApp, resourceOwner string) (*domain.APIApp, error) {
if apiApp.AppID == "" || apiApp.AggregateID == "" {
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-1m900", "Errors.Project.App.APIConfigInvalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-1m900", "Errors.Project.App.APIConfigInvalid")
}
existingAPI, err := c.getAPIAppWriteModel(ctx, apiApp.AggregateID, apiApp.AppID, resourceOwner)
@@ -158,10 +158,10 @@ func (c *Commands) ChangeAPIApplication(ctx context.Context, apiApp *domain.APIA
return nil, err
}
if existingAPI.State == domain.AppStateUnspecified || existingAPI.State == domain.AppStateRemoved {
- return nil, errors.ThrowNotFound(nil, "COMMAND-2n8uU", "Errors.Project.App.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-2n8uU", "Errors.Project.App.NotExisting")
}
if !existingAPI.IsAPI() {
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-Gnwt3", "Errors.Project.App.IsNotAPI")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-Gnwt3", "Errors.Project.App.IsNotAPI")
}
projectAgg := ProjectAggregateFromWriteModel(&existingAPI.WriteModel)
changedEvent, hasChanged, err := existingAPI.NewChangedEvent(
@@ -173,7 +173,7 @@ func (c *Commands) ChangeAPIApplication(ctx context.Context, apiApp *domain.APIA
return nil, err
}
if !hasChanged {
- return nil, errors.ThrowPreconditionFailed(nil, "COMMAND-1m88i", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-1m88i", "Errors.NoChangesFound")
}
pushedEvents, err := c.eventstore.Push(ctx, changedEvent)
@@ -190,7 +190,7 @@ func (c *Commands) ChangeAPIApplication(ctx context.Context, apiApp *domain.APIA
func (c *Commands) ChangeAPIApplicationSecret(ctx context.Context, projectID, appID, resourceOwner string, appSecretGenerator crypto.Generator) (*domain.APIApp, error) {
if projectID == "" || appID == "" {
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-99i83", "Errors.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-99i83", "Errors.IDMissing")
}
existingAPI, err := c.getAPIAppWriteModel(ctx, projectID, appID, resourceOwner)
@@ -198,10 +198,10 @@ func (c *Commands) ChangeAPIApplicationSecret(ctx context.Context, projectID, ap
return nil, err
}
if existingAPI.State == domain.AppStateUnspecified || existingAPI.State == domain.AppStateRemoved {
- return nil, errors.ThrowNotFound(nil, "COMMAND-2g66f", "Errors.Project.App.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-2g66f", "Errors.Project.App.NotExisting")
}
if !existingAPI.IsAPI() {
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-aeH4", "Errors.Project.App.IsNotAPI")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-aeH4", "Errors.Project.App.IsNotAPI")
}
cryptoSecret, stringPW, err := domain.NewClientSecret(appSecretGenerator)
if err != nil {
@@ -233,13 +233,13 @@ func (c *Commands) VerifyAPIClientSecret(ctx context.Context, projectID, appID,
return err
}
if !app.State.Exists() {
- return errors.ThrowPreconditionFailed(nil, "COMMAND-DFnbf", "Errors.Project.App.NoExisting")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-DFnbf", "Errors.Project.App.NoExisting")
}
if !app.IsAPI() {
- return errors.ThrowInvalidArgument(nil, "COMMAND-Bf3fw", "Errors.Project.App.IsNotAPI")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-Bf3fw", "Errors.Project.App.IsNotAPI")
}
if app.ClientSecret == nil {
- return errors.ThrowPreconditionFailed(nil, "COMMAND-D3t5g", "Errors.Project.App.APIConfigInvalid")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-D3t5g", "Errors.Project.App.APIConfigInvalid")
}
projectAgg := ProjectAggregateFromWriteModel(&app.WriteModel)
@@ -252,7 +252,7 @@ func (c *Commands) VerifyAPIClientSecret(ctx context.Context, projectID, appID,
}
_, err = c.eventstore.Push(ctx, project_repo.NewAPIConfigSecretCheckFailedEvent(ctx, projectAgg, app.AppID))
logging.Log("COMMAND-g3f12").OnError(err).Error("could not push event APIClientSecretCheckFailed")
- return errors.ThrowInvalidArgument(nil, "COMMAND-SADfg", "Errors.Project.App.ClientSecretInvalid")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-SADfg", "Errors.Project.App.ClientSecretInvalid")
}
func (c *Commands) getAPIAppWriteModel(ctx context.Context, projectID, appID, resourceOwner string) (*APIApplicationWriteModel, error) {
diff --git a/internal/command/project_application_api_test.go b/internal/command/project_application_api_test.go
index 06cfa449c9..f5d8fb7836 100644
--- a/internal/command/project_application_api_test.go
+++ b/internal/command/project_application_api_test.go
@@ -9,12 +9,12 @@ import (
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/id"
id_mock "github.com/zitadel/zitadel/internal/id/mock"
"github.com/zitadel/zitadel/internal/repository/project"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestAddAPIConfig(t *testing.T) {
@@ -46,7 +46,7 @@ func TestAddAPIConfig(t *testing.T) {
name: "name",
},
want: Want{
- ValidationErr: errors.ThrowInvalidArgument(nil, "PROJE-XHsKt", "Errors.Invalid.Argument"),
+ ValidationErr: zerrors.ThrowInvalidArgument(nil, "PROJE-XHsKt", "Errors.Invalid.Argument"),
},
},
{
@@ -58,7 +58,7 @@ func TestAddAPIConfig(t *testing.T) {
name: "",
},
want: Want{
- ValidationErr: errors.ThrowInvalidArgument(nil, "PROJE-F7g21", "Errors.Invalid.Argument"),
+ ValidationErr: zerrors.ThrowInvalidArgument(nil, "PROJE-F7g21", "Errors.Invalid.Argument"),
},
},
{
@@ -75,7 +75,7 @@ func TestAddAPIConfig(t *testing.T) {
Filter(),
},
want: Want{
- CreateErr: errors.ThrowNotFound(nil, "PROJE-Sf2gb", "Errors.Project.NotFound"),
+ CreateErr: zerrors.ThrowNotFound(nil, "PROJE-Sf2gb", "Errors.Project.NotFound"),
},
},
{
@@ -177,7 +177,7 @@ func TestCommandSide_AddAPIApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -200,7 +200,7 @@ func TestCommandSide_AddAPIApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -230,7 +230,7 @@ func TestCommandSide_AddAPIApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -408,7 +408,7 @@ func TestCommandSide_ChangeAPIApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -431,7 +431,7 @@ func TestCommandSide_ChangeAPIApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -454,7 +454,7 @@ func TestCommandSide_ChangeAPIApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -494,7 +494,7 @@ func TestCommandSide_ChangeAPIApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -613,7 +613,7 @@ func TestCommandSide_ChangeAPIApplicationSecret(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -630,7 +630,7 @@ func TestCommandSide_ChangeAPIApplicationSecret(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -648,7 +648,7 @@ func TestCommandSide_ChangeAPIApplicationSecret(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
diff --git a/internal/command/project_application_key.go b/internal/command/project_application_key.go
index 81fad14e00..1b791c2670 100644
--- a/internal/command/project_application_key.go
+++ b/internal/command/project_application_key.go
@@ -4,9 +4,9 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/repository/project"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddApplicationKeyWithID(ctx context.Context, key *domain.ApplicationKey, resourceOwner string) (_ *domain.ApplicationKey, err error) {
@@ -15,28 +15,28 @@ func (c *Commands) AddApplicationKeyWithID(ctx context.Context, key *domain.Appl
return nil, err
}
if writeModel.State != domain.AppStateUnspecified {
- return nil, errors.ThrowPreconditionFailed(nil, "COMMAND-so20alo", "Errors.Project.App.Key.AlreadyExisting")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-so20alo", "Errors.Project.App.Key.AlreadyExisting")
}
application, err := c.getApplicationWriteModel(ctx, key.AggregateID, key.ApplicationID, resourceOwner)
if err != nil {
return nil, err
}
if !application.State.Exists() {
- return nil, errors.ThrowPreconditionFailed(nil, "COMMAND-sak24", "Errors.Project.App.NotFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-sak24", "Errors.Project.App.NotFound")
}
return c.addApplicationKey(ctx, key, resourceOwner)
}
func (c *Commands) AddApplicationKey(ctx context.Context, key *domain.ApplicationKey, resourceOwner string) (_ *domain.ApplicationKey, err error) {
if key.AggregateID == "" || key.ApplicationID == "" {
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-55m9fs", "Errors.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-55m9fs", "Errors.IDMissing")
}
application, err := c.getApplicationWriteModel(ctx, key.AggregateID, key.ApplicationID, resourceOwner)
if err != nil {
return nil, err
}
if !application.State.Exists() {
- return nil, errors.ThrowPreconditionFailed(nil, "COMMAND-sak25", "Errors.Project.App.NotFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-sak25", "Errors.Project.App.NotFound")
}
key.KeyID, err = c.idGenerator.Next()
if err != nil {
@@ -55,7 +55,7 @@ func (c *Commands) addApplicationKey(ctx context.Context, key *domain.Applicatio
}
if !keyWriteModel.KeysAllowed {
- return nil, errors.ThrowPreconditionFailed(nil, "COMMAND-Dff54", "Errors.Project.App.AuthMethodNoPrivateKeyJWT")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-Dff54", "Errors.Project.App.AuthMethodNoPrivateKeyJWT")
}
if err := domain.EnsureValidExpirationDate(key); err != nil {
@@ -102,7 +102,7 @@ func (c *Commands) RemoveApplicationKey(ctx context.Context, projectID, applicat
return nil, err
}
if !keyWriteModel.State.Exists() {
- return nil, errors.ThrowNotFound(nil, "COMMAND-4m77G", "Errors.Project.App.Key.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-4m77G", "Errors.Project.App.Key.NotFound")
}
pushedEvents, err := c.eventstore.Push(ctx, project.NewApplicationKeyRemovedEvent(ctx, ProjectAggregateFromWriteModel(&keyWriteModel.WriteModel), keyID))
@@ -118,7 +118,7 @@ func (c *Commands) RemoveApplicationKey(ctx context.Context, projectID, applicat
func (c *Commands) applicationKeyWriteModelByID(ctx context.Context, projectID, appID, keyID, resourceOwner string) (writeModel *ApplicationKeyWriteModel, err error) {
if appID == "" {
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-029sn", "Errors.Project.App.NotFound")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-029sn", "Errors.Project.App.NotFound")
}
ctx, span := tracing.NewSpan(ctx)
defer func() { span.EndWithError(err) }()
diff --git a/internal/command/project_application_key_test.go b/internal/command/project_application_key_test.go
index 12aab721f5..907b352a7a 100644
--- a/internal/command/project_application_key_test.go
+++ b/internal/command/project_application_key_test.go
@@ -7,12 +7,12 @@ import (
"github.com/stretchr/testify/assert"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/id"
id_mock "github.com/zitadel/zitadel/internal/id/mock"
"github.com/zitadel/zitadel/internal/repository/project"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddAPIApplicationKey(t *testing.T) {
@@ -51,7 +51,7 @@ func TestCommandSide_AddAPIApplicationKey(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -71,7 +71,7 @@ func TestCommandSide_AddAPIApplicationKey(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -93,7 +93,7 @@ func TestCommandSide_AddAPIApplicationKey(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -139,7 +139,7 @@ func TestCommandSide_AddAPIApplicationKey(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -186,7 +186,7 @@ func TestCommandSide_AddAPIApplicationKey(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
}
diff --git a/internal/command/project_application_oidc.go b/internal/command/project_application_oidc.go
index 2d14ecf3ad..32989e0a58 100644
--- a/internal/command/project_application_oidc.go
+++ b/internal/command/project_application_oidc.go
@@ -11,10 +11,10 @@ import (
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
project_repo "github.com/zitadel/zitadel/internal/repository/project"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type addOIDCApp struct {
@@ -44,36 +44,36 @@ type addOIDCApp struct {
func (c *Commands) AddOIDCAppCommand(app *addOIDCApp, clientSecretAlg crypto.HashAlgorithm) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if app.ID == "" {
- return nil, errors.ThrowInvalidArgument(nil, "PROJE-NnavI", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "PROJE-NnavI", "Errors.Invalid.Argument")
}
if app.Name = strings.TrimSpace(app.Name); app.Name == "" {
- return nil, errors.ThrowInvalidArgument(nil, "PROJE-Fef31", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "PROJE-Fef31", "Errors.Invalid.Argument")
}
if app.ClockSkew > time.Second*5 || app.ClockSkew < 0 {
- return nil, errors.ThrowInvalidArgument(nil, "V2-PnCMS", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "V2-PnCMS", "Errors.Invalid.Argument")
}
for _, origin := range app.AdditionalOrigins {
if !http_util.IsOrigin(origin) {
- return nil, errors.ThrowInvalidArgument(nil, "V2-DqWPX", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "V2-DqWPX", "Errors.Invalid.Argument")
}
}
if !domain.ContainsRequiredGrantTypes(app.ResponseTypes, app.GrantTypes) {
- return nil, errors.ThrowInvalidArgument(nil, "V2-sLpW1", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "V2-sLpW1", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) (_ []eventstore.Command, err error) {
project, err := projectWriteModel(ctx, filter, app.Aggregate.ID, app.Aggregate.ResourceOwner)
if err != nil || !project.State.Valid() {
- return nil, errors.ThrowNotFound(err, "PROJE-6swVG", "Errors.Project.NotFound")
+ return nil, zerrors.ThrowNotFound(err, "PROJE-6swVG", "Errors.Project.NotFound")
}
app.ClientID, err = domain.NewClientID(c.idGenerator, project.Name)
if err != nil {
- return nil, errors.ThrowInternal(err, "V2-VMSQ1", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "V2-VMSQ1", "Errors.Internal")
}
if app.AuthMethodType == domain.OIDCAuthMethodTypeBasic || app.AuthMethodType == domain.OIDCAuthMethodTypePost {
@@ -124,12 +124,12 @@ func (c *Commands) AddOIDCApplicationWithID(ctx context.Context, oidcApp *domain
return nil, err
}
if existingApp.State != domain.AppStateUnspecified {
- return nil, errors.ThrowPreconditionFailed(nil, "PROJECT-lxowmp", "Errors.Project.App.AlreadyExisting")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "PROJECT-lxowmp", "Errors.Project.App.AlreadyExisting")
}
project, err := c.getProjectByID(ctx, oidcApp.AggregateID, resourceOwner)
if err != nil {
- return nil, errors.ThrowPreconditionFailed(err, "PROJECT-3m9s2", "Errors.Project.NotFound")
+ return nil, zerrors.ThrowPreconditionFailed(err, "PROJECT-3m9s2", "Errors.Project.NotFound")
}
return c.addOIDCApplicationWithID(ctx, oidcApp, resourceOwner, project, appID, appSecretGenerator)
@@ -137,15 +137,15 @@ func (c *Commands) AddOIDCApplicationWithID(ctx context.Context, oidcApp *domain
func (c *Commands) AddOIDCApplication(ctx context.Context, oidcApp *domain.OIDCApp, resourceOwner string, appSecretGenerator crypto.Generator) (_ *domain.OIDCApp, err error) {
if oidcApp == nil || oidcApp.AggregateID == "" {
- return nil, errors.ThrowInvalidArgument(nil, "PROJECT-34Fm0", "Errors.Project.App.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "PROJECT-34Fm0", "Errors.Project.App.Invalid")
}
project, err := c.getProjectByID(ctx, oidcApp.AggregateID, resourceOwner)
if err != nil {
- return nil, errors.ThrowPreconditionFailed(err, "PROJECT-3m9ss", "Errors.Project.NotFound")
+ return nil, zerrors.ThrowPreconditionFailed(err, "PROJECT-3m9ss", "Errors.Project.NotFound")
}
if oidcApp.AppName == "" || !oidcApp.IsValid() {
- return nil, errors.ThrowInvalidArgument(nil, "PROJECT-1n8df", "Errors.Project.App.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "PROJECT-1n8df", "Errors.Project.App.Invalid")
}
appID, err := c.idGenerator.Next()
@@ -215,7 +215,7 @@ func (c *Commands) addOIDCApplicationWithID(ctx context.Context, oidcApp *domain
func (c *Commands) ChangeOIDCApplication(ctx context.Context, oidc *domain.OIDCApp, resourceOwner string) (*domain.OIDCApp, error) {
if !oidc.IsValid() || oidc.AppID == "" || oidc.AggregateID == "" {
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-5m9fs", "Errors.Project.App.OIDCConfigInvalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-5m9fs", "Errors.Project.App.OIDCConfigInvalid")
}
existingOIDC, err := c.getOIDCAppWriteModel(ctx, oidc.AggregateID, oidc.AppID, resourceOwner)
@@ -223,10 +223,10 @@ func (c *Commands) ChangeOIDCApplication(ctx context.Context, oidc *domain.OIDCA
return nil, err
}
if existingOIDC.State == domain.AppStateUnspecified || existingOIDC.State == domain.AppStateRemoved {
- return nil, errors.ThrowNotFound(nil, "COMMAND-2n8uU", "Errors.Project.App.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-2n8uU", "Errors.Project.App.NotExisting")
}
if !existingOIDC.IsOIDC() {
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-GBr34", "Errors.Project.App.IsNotOIDC")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-GBr34", "Errors.Project.App.IsNotOIDC")
}
projectAgg := ProjectAggregateFromWriteModel(&existingOIDC.WriteModel)
changedEvent, hasChanged, err := existingOIDC.NewChangedEvent(
@@ -253,7 +253,7 @@ func (c *Commands) ChangeOIDCApplication(ctx context.Context, oidc *domain.OIDCA
return nil, err
}
if !hasChanged {
- return nil, errors.ThrowPreconditionFailed(nil, "COMMAND-1m88i", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-1m88i", "Errors.NoChangesFound")
}
pushedEvents, err := c.eventstore.Push(ctx, changedEvent)
@@ -272,7 +272,7 @@ func (c *Commands) ChangeOIDCApplication(ctx context.Context, oidc *domain.OIDCA
func (c *Commands) ChangeOIDCApplicationSecret(ctx context.Context, projectID, appID, resourceOwner string, appSecretGenerator crypto.Generator) (*domain.OIDCApp, error) {
if projectID == "" || appID == "" {
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-99i83", "Errors.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-99i83", "Errors.IDMissing")
}
existingOIDC, err := c.getOIDCAppWriteModel(ctx, projectID, appID, resourceOwner)
@@ -280,10 +280,10 @@ func (c *Commands) ChangeOIDCApplicationSecret(ctx context.Context, projectID, a
return nil, err
}
if existingOIDC.State == domain.AppStateUnspecified || existingOIDC.State == domain.AppStateRemoved {
- return nil, errors.ThrowNotFound(nil, "COMMAND-2g66f", "Errors.Project.App.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-2g66f", "Errors.Project.App.NotExisting")
}
if !existingOIDC.IsOIDC() {
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-Ghrh3", "Errors.Project.App.IsNotOIDC")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-Ghrh3", "Errors.Project.App.IsNotOIDC")
}
cryptoSecret, stringPW, err := domain.NewClientSecret(appSecretGenerator)
if err != nil {
@@ -315,13 +315,13 @@ func (c *Commands) VerifyOIDCClientSecret(ctx context.Context, projectID, appID,
return err
}
if !app.State.Exists() {
- return errors.ThrowPreconditionFailed(nil, "COMMAND-D6hba", "Errors.Project.App.NotExisting")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-D6hba", "Errors.Project.App.NotExisting")
}
if !app.IsOIDC() {
- return errors.ThrowInvalidArgument(nil, "COMMAND-BHgn2", "Errors.Project.App.IsNotOIDC")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-BHgn2", "Errors.Project.App.IsNotOIDC")
}
if app.ClientSecret == nil {
- return errors.ThrowPreconditionFailed(nil, "COMMAND-D6hba", "Errors.Project.App.OIDCConfigInvalid")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-D6hba", "Errors.Project.App.OIDCConfigInvalid")
}
projectAgg := ProjectAggregateFromWriteModel(&app.WriteModel)
@@ -334,7 +334,7 @@ func (c *Commands) VerifyOIDCClientSecret(ctx context.Context, projectID, appID,
}
_, err = c.eventstore.Push(ctx, project_repo.NewOIDCConfigSecretCheckFailedEvent(ctx, projectAgg, app.AppID))
logging.OnError(err).Error("could not push event OIDCClientSecretCheckFailed")
- return errors.ThrowInvalidArgument(nil, "COMMAND-Bz542", "Errors.Project.App.ClientSecretInvalid")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-Bz542", "Errors.Project.App.ClientSecretInvalid")
}
func (c *Commands) getOIDCAppWriteModel(ctx context.Context, projectID, appID, resourceOwner string) (*OIDCApplicationWriteModel, error) {
diff --git a/internal/command/project_application_oidc_test.go b/internal/command/project_application_oidc_test.go
index 85cdf5d5b1..8efdd8c256 100644
--- a/internal/command/project_application_oidc_test.go
+++ b/internal/command/project_application_oidc_test.go
@@ -10,12 +10,12 @@ import (
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/id"
id_mock "github.com/zitadel/zitadel/internal/id/mock"
"github.com/zitadel/zitadel/internal/repository/project"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestAddOIDCApp(t *testing.T) {
@@ -56,7 +56,7 @@ func TestAddOIDCApp(t *testing.T) {
},
},
want: Want{
- ValidationErr: errors.ThrowInvalidArgument(nil, "PROJE-NnavI", "Errors.Invalid.Argument"),
+ ValidationErr: zerrors.ThrowInvalidArgument(nil, "PROJE-NnavI", "Errors.Invalid.Argument"),
},
},
{
@@ -78,7 +78,7 @@ func TestAddOIDCApp(t *testing.T) {
},
},
want: Want{
- ValidationErr: errors.ThrowInvalidArgument(nil, "PROJE-Fef31", "Errors.Invalid.Argument"),
+ ValidationErr: zerrors.ThrowInvalidArgument(nil, "PROJE-Fef31", "Errors.Invalid.Argument"),
},
},
{
@@ -105,7 +105,7 @@ func TestAddOIDCApp(t *testing.T) {
Filter(),
},
want: Want{
- CreateErr: errors.ThrowNotFound(nil, "PROJE-6swVG", ""),
+ CreateErr: zerrors.ThrowNotFound(nil, "PROJE-6swVG", ""),
},
},
{
@@ -223,7 +223,7 @@ func TestCommandSide_AddOIDCApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -246,7 +246,7 @@ func TestCommandSide_AddOIDCApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -276,7 +276,7 @@ func TestCommandSide_AddOIDCApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -442,7 +442,7 @@ func TestCommandSide_ChangeOIDCApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -466,7 +466,7 @@ func TestCommandSide_ChangeOIDCApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -490,7 +490,7 @@ func TestCommandSide_ChangeOIDCApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -515,7 +515,7 @@ func TestCommandSide_ChangeOIDCApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -589,7 +589,7 @@ func TestCommandSide_ChangeOIDCApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -751,7 +751,7 @@ func TestCommandSide_ChangeOIDCApplicationSecret(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -768,7 +768,7 @@ func TestCommandSide_ChangeOIDCApplicationSecret(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -786,7 +786,7 @@ func TestCommandSide_ChangeOIDCApplicationSecret(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
diff --git a/internal/command/project_application_saml.go b/internal/command/project_application_saml.go
index e28e9c635a..d6b3679a32 100644
--- a/internal/command/project_application_saml.go
+++ b/internal/command/project_application_saml.go
@@ -6,19 +6,19 @@ import (
"github.com/zitadel/saml/pkg/provider/xml"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/project"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddSAMLApplication(ctx context.Context, application *domain.SAMLApp, resourceOwner string) (_ *domain.SAMLApp, err error) {
if application == nil || application.AggregateID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "PROJECT-35Fn0", "Errors.Project.App.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "PROJECT-35Fn0", "Errors.Project.App.Invalid")
}
_, err = c.getProjectByID(ctx, application.AggregateID, resourceOwner)
if err != nil {
- return nil, caos_errs.ThrowPreconditionFailed(err, "PROJECT-3p9ss", "Errors.Project.NotFound")
+ return nil, zerrors.ThrowPreconditionFailed(err, "PROJECT-3p9ss", "Errors.Project.NotFound")
}
addedApplication := NewSAMLApplicationWriteModel(application.AggregateID, resourceOwner)
@@ -43,24 +43,24 @@ func (c *Commands) AddSAMLApplication(ctx context.Context, application *domain.S
func (c *Commands) addSAMLApplication(ctx context.Context, projectAgg *eventstore.Aggregate, samlApp *domain.SAMLApp) (events []eventstore.Command, err error) {
if samlApp.AppName == "" || !samlApp.IsValid() {
- return nil, caos_errs.ThrowInvalidArgument(nil, "PROJECT-1n9df", "Errors.Project.App.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "PROJECT-1n9df", "Errors.Project.App.Invalid")
}
if samlApp.Metadata == nil && samlApp.MetadataURL == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "SAML-podix9", "Errors.Project.App.SAMLMetadataMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "SAML-podix9", "Errors.Project.App.SAMLMetadataMissing")
}
if samlApp.MetadataURL != "" {
data, err := xml.ReadMetadataFromURL(c.httpClient, samlApp.MetadataURL)
if err != nil {
- return nil, caos_errs.ThrowInvalidArgument(err, "SAML-wmqlo1", "Errors.Project.App.SAMLMetadataMissing")
+ return nil, zerrors.ThrowInvalidArgument(err, "SAML-wmqlo1", "Errors.Project.App.SAMLMetadataMissing")
}
samlApp.Metadata = data
}
entity, err := xml.ParseMetadataXmlIntoStruct(samlApp.Metadata)
if err != nil {
- return nil, caos_errs.ThrowInvalidArgument(err, "SAML-bquso", "Errors.Project.App.SAMLMetadataFormat")
+ return nil, zerrors.ThrowInvalidArgument(err, "SAML-bquso", "Errors.Project.App.SAMLMetadataFormat")
}
samlApp.AppID, err = c.idGenerator.Next()
@@ -82,7 +82,7 @@ func (c *Commands) addSAMLApplication(ctx context.Context, projectAgg *eventstor
func (c *Commands) ChangeSAMLApplication(ctx context.Context, samlApp *domain.SAMLApp, resourceOwner string) (*domain.SAMLApp, error) {
if !samlApp.IsValid() || samlApp.AppID == "" || samlApp.AggregateID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-5n9fs", "Errors.Project.App.SAMLConfigInvalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-5n9fs", "Errors.Project.App.SAMLConfigInvalid")
}
existingSAML, err := c.getSAMLAppWriteModel(ctx, samlApp.AggregateID, samlApp.AppID, resourceOwner)
@@ -90,24 +90,24 @@ func (c *Commands) ChangeSAMLApplication(ctx context.Context, samlApp *domain.SA
return nil, err
}
if existingSAML.State == domain.AppStateUnspecified || existingSAML.State == domain.AppStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-2n8uU", "Errors.Project.App.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-2n8uU", "Errors.Project.App.NotExisting")
}
if !existingSAML.IsSAML() {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-GBr35", "Errors.Project.App.IsNotSAML")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-GBr35", "Errors.Project.App.IsNotSAML")
}
projectAgg := ProjectAggregateFromWriteModel(&existingSAML.WriteModel)
if samlApp.MetadataURL != "" {
data, err := xml.ReadMetadataFromURL(c.httpClient, samlApp.MetadataURL)
if err != nil {
- return nil, caos_errs.ThrowInvalidArgument(err, "SAML-J3kg3", "Errors.Project.App.SAMLMetadataMissing")
+ return nil, zerrors.ThrowInvalidArgument(err, "SAML-J3kg3", "Errors.Project.App.SAMLMetadataMissing")
}
samlApp.Metadata = data
}
entity, err := xml.ParseMetadataXmlIntoStruct(samlApp.Metadata)
if err != nil {
- return nil, caos_errs.ThrowInvalidArgument(err, "SAML-3fk2b", "Errors.Project.App.SAMLMetadataFormat")
+ return nil, zerrors.ThrowInvalidArgument(err, "SAML-3fk2b", "Errors.Project.App.SAMLMetadataFormat")
}
changedEvent, hasChanged, err := existingSAML.NewChangedEvent(
@@ -121,7 +121,7 @@ func (c *Commands) ChangeSAMLApplication(ctx context.Context, samlApp *domain.SA
return nil, err
}
if !hasChanged {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-1m88i", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-1m88i", "Errors.NoChangesFound")
}
pushedEvents, err := c.eventstore.Push(ctx, changedEvent)
diff --git a/internal/command/project_application_saml_test.go b/internal/command/project_application_saml_test.go
index a9b74a99e3..978e1ed013 100644
--- a/internal/command/project_application_saml_test.go
+++ b/internal/command/project_application_saml_test.go
@@ -10,12 +10,12 @@ import (
"github.com/stretchr/testify/assert"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/id"
id_mock "github.com/zitadel/zitadel/internal/id/mock"
"github.com/zitadel/zitadel/internal/repository/project"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var testMetadata = []byte(`
@@ -81,7 +81,7 @@ func TestCommandSide_AddSAMLApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -104,7 +104,7 @@ func TestCommandSide_AddSAMLApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -134,7 +134,7 @@ func TestCommandSide_AddSAMLApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -167,7 +167,7 @@ func TestCommandSide_AddSAMLApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -318,7 +318,7 @@ func TestCommandSide_AddSAMLApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
}
@@ -383,7 +383,7 @@ func TestCommandSide_ChangeSAMLApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -405,7 +405,7 @@ func TestCommandSide_ChangeSAMLApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -427,7 +427,7 @@ func TestCommandSide_ChangeSAMLApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -450,7 +450,7 @@ func TestCommandSide_ChangeSAMLApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -495,7 +495,7 @@ func TestCommandSide_ChangeSAMLApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -540,7 +540,7 @@ func TestCommandSide_ChangeSAMLApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
diff --git a/internal/command/project_application_test.go b/internal/command/project_application_test.go
index 95e808dd5d..66671a5a51 100644
--- a/internal/command/project_application_test.go
+++ b/internal/command/project_application_test.go
@@ -7,9 +7,9 @@ import (
"github.com/stretchr/testify/assert"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/project"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_ChangeApplication(t *testing.T) {
@@ -49,7 +49,7 @@ func TestCommandSide_ChangeApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -68,7 +68,7 @@ func TestCommandSide_ChangeApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -88,7 +88,7 @@ func TestCommandSide_ChangeApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -109,7 +109,7 @@ func TestCommandSide_ChangeApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -136,7 +136,7 @@ func TestCommandSide_ChangeApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -230,7 +230,7 @@ func TestCommandSide_DeactivateApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -247,7 +247,7 @@ func TestCommandSide_DeactivateApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -265,7 +265,7 @@ func TestCommandSide_DeactivateApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -293,7 +293,7 @@ func TestCommandSide_DeactivateApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -382,7 +382,7 @@ func TestCommandSide_ReactivateApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -399,7 +399,7 @@ func TestCommandSide_ReactivateApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -417,7 +417,7 @@ func TestCommandSide_ReactivateApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -441,7 +441,7 @@ func TestCommandSide_ReactivateApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -534,7 +534,7 @@ func TestCommandSide_RemoveApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -551,7 +551,7 @@ func TestCommandSide_RemoveApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -569,7 +569,7 @@ func TestCommandSide_RemoveApplication(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
diff --git a/internal/command/project_grant.go b/internal/command/project_grant.go
index 21b9e61cea..c53e5252df 100644
--- a/internal/command/project_grant.go
+++ b/internal/command/project_grant.go
@@ -7,19 +7,19 @@ import (
"github.com/zitadel/logging"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/project"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddProjectGrantWithID(ctx context.Context, grant *domain.ProjectGrant, grantID string, resourceOwner string) (_ *domain.ProjectGrant, err error) {
existingMember, err := c.projectGrantWriteModelByID(ctx, grantID, grant.AggregateID, resourceOwner)
- if err != nil && !caos_errs.IsNotFound(err) {
+ if err != nil && !zerrors.IsNotFound(err) {
return nil, err
}
if existingMember != nil && existingMember.State != domain.ProjectGrantStateUnspecified {
- return nil, caos_errs.ThrowInvalidArgument(nil, "PROJECT-2b8fs", "Errors.Project.Grant.AlreadyExisting")
+ return nil, zerrors.ThrowInvalidArgument(nil, "PROJECT-2b8fs", "Errors.Project.Grant.AlreadyExisting")
}
return c.addProjectGrantWithID(ctx, grant, grantID, resourceOwner)
@@ -27,7 +27,7 @@ func (c *Commands) AddProjectGrantWithID(ctx context.Context, grant *domain.Proj
func (c *Commands) AddProjectGrant(ctx context.Context, grant *domain.ProjectGrant, resourceOwner string) (_ *domain.ProjectGrant, err error) {
if !grant.IsValid() {
- return nil, caos_errs.ThrowInvalidArgument(nil, "PROJECT-3b8fs", "Errors.Project.Grant.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "PROJECT-3b8fs", "Errors.Project.Grant.Invalid")
}
err = c.checkProjectGrantPreCondition(ctx, grant)
if err != nil {
@@ -62,7 +62,7 @@ func (c *Commands) addProjectGrantWithID(ctx context.Context, grant *domain.Proj
func (c *Commands) ChangeProjectGrant(ctx context.Context, grant *domain.ProjectGrant, resourceOwner string, cascadeUserGrantIDs ...string) (_ *domain.ProjectGrant, err error) {
if grant.GrantID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "PROJECT-1j83s", "Errors.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "PROJECT-1j83s", "Errors.IDMissing")
}
existingGrant, err := c.projectGrantWriteModelByID(ctx, grant.GrantID, grant.AggregateID, resourceOwner)
if err != nil {
@@ -76,7 +76,7 @@ func (c *Commands) ChangeProjectGrant(ctx context.Context, grant *domain.Project
projectAgg := ProjectAggregateFromWriteModel(&existingGrant.WriteModel)
if reflect.DeepEqual(existingGrant.RoleKeys, grant.RoleKeys) {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "PROJECT-0o0pL", "Errors.NoChangesFoundc")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "PROJECT-0o0pL", "Errors.NoChangesFoundc")
}
events := []eventstore.Command{
@@ -120,7 +120,7 @@ func (c *Commands) removeRoleFromProjectGrant(ctx context.Context, projectAgg *e
return nil, nil, err
}
if existingProjectGrant.State == domain.ProjectGrantStateUnspecified || existingProjectGrant.State == domain.ProjectGrantStateRemoved {
- return nil, nil, caos_errs.ThrowNotFound(nil, "COMMAND-3M9sd", "Errors.Project.Grant.NotFound")
+ return nil, nil, zerrors.ThrowNotFound(nil, "COMMAND-3M9sd", "Errors.Project.Grant.NotFound")
}
keyExists := false
for i, key := range existingProjectGrant.RoleKeys {
@@ -133,7 +133,7 @@ func (c *Commands) removeRoleFromProjectGrant(ctx context.Context, projectAgg *e
}
}
if !keyExists {
- return nil, nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-5m8g9", "Errors.Project.Grant.RoleKeyNotFound")
+ return nil, nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-5m8g9", "Errors.Project.Grant.RoleKeyNotFound")
}
changedProjectGrant := NewProjectGrantWriteModel(projectGrantID, projectID, existingProjectGrant.ResourceOwner)
@@ -146,7 +146,7 @@ func (c *Commands) removeRoleFromProjectGrant(ctx context.Context, projectAgg *e
func (c *Commands) DeactivateProjectGrant(ctx context.Context, projectID, grantID, resourceOwner string) (details *domain.ObjectDetails, err error) {
if grantID == "" || projectID == "" {
- return details, caos_errs.ThrowInvalidArgument(nil, "PROJECT-p0s4V", "Errors.IDMissing")
+ return details, zerrors.ThrowInvalidArgument(nil, "PROJECT-p0s4V", "Errors.IDMissing")
}
err = c.checkProjectExists(ctx, projectID, resourceOwner)
if err != nil {
@@ -157,7 +157,7 @@ func (c *Commands) DeactivateProjectGrant(ctx context.Context, projectID, grantI
return details, err
}
if existingGrant.State != domain.ProjectGrantStateActive {
- return details, caos_errs.ThrowPreconditionFailed(nil, "PROJECT-47fu8", "Errors.Project.Grant.NotActive")
+ return details, zerrors.ThrowPreconditionFailed(nil, "PROJECT-47fu8", "Errors.Project.Grant.NotActive")
}
projectAgg := ProjectAggregateFromWriteModel(&existingGrant.WriteModel)
@@ -174,7 +174,7 @@ func (c *Commands) DeactivateProjectGrant(ctx context.Context, projectID, grantI
func (c *Commands) ReactivateProjectGrant(ctx context.Context, projectID, grantID, resourceOwner string) (details *domain.ObjectDetails, err error) {
if grantID == "" || projectID == "" {
- return details, caos_errs.ThrowInvalidArgument(nil, "PROJECT-p0s4V", "Errors.IDMissing")
+ return details, zerrors.ThrowInvalidArgument(nil, "PROJECT-p0s4V", "Errors.IDMissing")
}
err = c.checkProjectExists(ctx, projectID, resourceOwner)
if err != nil {
@@ -185,7 +185,7 @@ func (c *Commands) ReactivateProjectGrant(ctx context.Context, projectID, grantI
return details, err
}
if existingGrant.State != domain.ProjectGrantStateInactive {
- return details, caos_errs.ThrowPreconditionFailed(nil, "PROJECT-47fu8", "Errors.Project.Grant.NotInactive")
+ return details, zerrors.ThrowPreconditionFailed(nil, "PROJECT-47fu8", "Errors.Project.Grant.NotInactive")
}
projectAgg := ProjectAggregateFromWriteModel(&existingGrant.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, project.NewGrantReactivatedEvent(ctx, projectAgg, grantID))
@@ -201,11 +201,11 @@ func (c *Commands) ReactivateProjectGrant(ctx context.Context, projectID, grantI
func (c *Commands) RemoveProjectGrant(ctx context.Context, projectID, grantID, resourceOwner string, cascadeUserGrantIDs ...string) (details *domain.ObjectDetails, err error) {
if grantID == "" || projectID == "" {
- return details, caos_errs.ThrowInvalidArgument(nil, "PROJECT-1m9fJ", "Errors.IDMissing")
+ return details, zerrors.ThrowInvalidArgument(nil, "PROJECT-1m9fJ", "Errors.IDMissing")
}
err = c.checkProjectExists(ctx, projectID, resourceOwner)
if err != nil {
- return details, caos_errs.ThrowPreconditionFailed(err, "PROJECT-6mf9s", "Errors.Project.NotFound")
+ return details, zerrors.ThrowPreconditionFailed(err, "PROJECT-6mf9s", "Errors.Project.NotFound")
}
existingGrant, err := c.projectGrantWriteModelByID(ctx, grantID, projectID, resourceOwner)
if err != nil {
@@ -245,7 +245,7 @@ func (c *Commands) projectGrantWriteModelByID(ctx context.Context, grantID, proj
}
if writeModel.State == domain.ProjectGrantStateUnspecified || writeModel.State == domain.ProjectGrantStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "PROJECT-D8JxR", "Errors.Project.Grant.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "PROJECT-D8JxR", "Errors.Project.Grant.NotFound")
}
return writeModel, nil
@@ -258,13 +258,13 @@ func (c *Commands) checkProjectGrantPreCondition(ctx context.Context, projectGra
return err
}
if !preConditions.ProjectExists {
- return caos_errs.ThrowPreconditionFailed(err, "COMMAND-m9gsd", "Errors.Project.NotFound")
+ return zerrors.ThrowPreconditionFailed(err, "COMMAND-m9gsd", "Errors.Project.NotFound")
}
if !preConditions.GrantedOrgExists {
- return caos_errs.ThrowPreconditionFailed(err, "COMMAND-3m9gg", "Errors.Org.NotFound")
+ return zerrors.ThrowPreconditionFailed(err, "COMMAND-3m9gg", "Errors.Org.NotFound")
}
if projectGrant.HasInvalidRoles(preConditions.ExistingRoleKeys) {
- return caos_errs.ThrowPreconditionFailed(err, "COMMAND-6m9gd", "Errors.Project.Role.NotFound")
+ return zerrors.ThrowPreconditionFailed(err, "COMMAND-6m9gd", "Errors.Project.Role.NotFound")
}
return nil
}
diff --git a/internal/command/project_grant_member.go b/internal/command/project_grant_member.go
index ad43f81f18..096851fb42 100644
--- a/internal/command/project_grant_member.go
+++ b/internal/command/project_grant_member.go
@@ -5,18 +5,18 @@ import (
"reflect"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/project"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddProjectGrantMember(ctx context.Context, member *domain.ProjectGrantMember) (*domain.ProjectGrantMember, error) {
if !member.IsValid() {
- return nil, errors.ThrowInvalidArgument(nil, "PROJECT-8fi7G", "Errors.Project.Grant.Member.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "PROJECT-8fi7G", "Errors.Project.Grant.Member.Invalid")
}
if len(domain.CheckForInvalidRoles(member.Roles, domain.ProjectGrantRolePrefix, c.zitadelRoles)) > 0 {
- return nil, errors.ThrowInvalidArgument(nil, "PROJECT-m9gKK", "Errors.Project.Grant.Member.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "PROJECT-m9gKK", "Errors.Project.Grant.Member.Invalid")
}
err := c.checkUserExists(ctx, member.UserID, "")
if err != nil {
@@ -28,7 +28,7 @@ func (c *Commands) AddProjectGrantMember(ctx context.Context, member *domain.Pro
return nil, err
}
if addedMember.State == domain.MemberStateActive {
- return nil, errors.ThrowAlreadyExists(nil, "PROJECT-16dVN", "Errors.Project.Member.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "PROJECT-16dVN", "Errors.Project.Member.AlreadyExists")
}
projectAgg := ProjectAggregateFromWriteModel(&addedMember.WriteModel)
pushedEvents, err := c.eventstore.Push(
@@ -48,10 +48,10 @@ func (c *Commands) AddProjectGrantMember(ctx context.Context, member *domain.Pro
// ChangeProjectGrantMember updates an existing member
func (c *Commands) ChangeProjectGrantMember(ctx context.Context, member *domain.ProjectGrantMember) (*domain.ProjectGrantMember, error) {
if !member.IsValid() {
- return nil, errors.ThrowInvalidArgument(nil, "PROJECT-109fs", "Errors.Project.Member.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "PROJECT-109fs", "Errors.Project.Member.Invalid")
}
if len(domain.CheckForInvalidRoles(member.Roles, domain.ProjectGrantRolePrefix, c.zitadelRoles)) > 0 {
- return nil, errors.ThrowInvalidArgument(nil, "PROJECT-m0sDf", "Errors.Project.Member.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "PROJECT-m0sDf", "Errors.Project.Member.Invalid")
}
existingMember, err := c.projectGrantMemberWriteModelByID(ctx, member.AggregateID, member.UserID, member.GrantID)
@@ -60,7 +60,7 @@ func (c *Commands) ChangeProjectGrantMember(ctx context.Context, member *domain.
}
if reflect.DeepEqual(existingMember.Roles, member.Roles) {
- return nil, errors.ThrowPreconditionFailed(nil, "PROJECT-2n8vx", "Errors.Project.Member.RolesNotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "PROJECT-2n8vx", "Errors.Project.Member.RolesNotChanged")
}
projectAgg := ProjectAggregateFromWriteModel(&existingMember.WriteModel)
pushedEvents, err := c.eventstore.Push(
@@ -79,7 +79,7 @@ func (c *Commands) ChangeProjectGrantMember(ctx context.Context, member *domain.
func (c *Commands) RemoveProjectGrantMember(ctx context.Context, projectID, userID, grantID string) (*domain.ObjectDetails, error) {
if projectID == "" || userID == "" || grantID == "" {
- return nil, errors.ThrowInvalidArgument(nil, "PROJECT-66mHd", "Errors.Project.Member.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "PROJECT-66mHd", "Errors.Project.Member.Invalid")
}
m, err := c.projectGrantMemberWriteModelByID(ctx, projectID, userID, grantID)
if err != nil {
@@ -122,7 +122,7 @@ func (c *Commands) projectGrantMemberWriteModelByID(ctx context.Context, project
}
if writeModel.State == domain.MemberStateUnspecified || writeModel.State == domain.MemberStateRemoved {
- return nil, errors.ThrowNotFound(nil, "PROJECT-37fug", "Errors.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "PROJECT-37fug", "Errors.NotFound")
}
return writeModel, nil
diff --git a/internal/command/project_grant_member_test.go b/internal/command/project_grant_member_test.go
index da00b8ccd5..2c52eace28 100644
--- a/internal/command/project_grant_member_test.go
+++ b/internal/command/project_grant_member_test.go
@@ -5,14 +5,15 @@ import (
"testing"
"github.com/stretchr/testify/assert"
+ "golang.org/x/text/language"
+
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/project"
"github.com/zitadel/zitadel/internal/repository/user"
- "golang.org/x/text/language"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddProjectGrantMember(t *testing.T) {
@@ -50,7 +51,7 @@ func TestCommandSide_AddProjectGrantMember(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -72,7 +73,7 @@ func TestCommandSide_AddProjectGrantMember(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -100,7 +101,7 @@ func TestCommandSide_AddProjectGrantMember(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -152,7 +153,7 @@ func TestCommandSide_AddProjectGrantMember(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -177,7 +178,7 @@ func TestCommandSide_AddProjectGrantMember(t *testing.T) {
),
),
expectFilter(),
- expectPushFailed(caos_errs.ThrowAlreadyExists(nil, "ERROR", "internal"),
+ expectPushFailed(zerrors.ThrowAlreadyExists(nil, "ERROR", "internal"),
project.NewProjectGrantMemberAddedEvent(context.Background(),
&project.NewAggregate("project1", "").Aggregate,
"user1",
@@ -204,7 +205,7 @@ func TestCommandSide_AddProjectGrantMember(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -322,7 +323,7 @@ func TestCommandSide_ChangeProjectGrantMember(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -344,7 +345,7 @@ func TestCommandSide_ChangeProjectGrantMember(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -372,7 +373,7 @@ func TestCommandSide_ChangeProjectGrantMember(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -409,7 +410,7 @@ func TestCommandSide_ChangeProjectGrantMember(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -523,7 +524,7 @@ func TestCommandSide_RemoveProjectGrantMember(t *testing.T) {
grantID: "projectgrant1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -540,7 +541,7 @@ func TestCommandSide_RemoveProjectGrantMember(t *testing.T) {
grantID: "projectgrant1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -557,7 +558,7 @@ func TestCommandSide_RemoveProjectGrantMember(t *testing.T) {
grantID: "",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -575,7 +576,7 @@ func TestCommandSide_RemoveProjectGrantMember(t *testing.T) {
grantID: "projectgrant1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
diff --git a/internal/command/project_grant_test.go b/internal/command/project_grant_test.go
index af74c8db0f..7450723185 100644
--- a/internal/command/project_grant_test.go
+++ b/internal/command/project_grant_test.go
@@ -7,7 +7,6 @@ import (
"github.com/stretchr/testify/assert"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/id"
@@ -15,6 +14,7 @@ import (
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/project"
"github.com/zitadel/zitadel/internal/repository/usergrant"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddProjectGrant(t *testing.T) {
@@ -54,7 +54,7 @@ func TestCommandSide_AddProjectGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -76,7 +76,7 @@ func TestCommandSide_AddProjectGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -106,7 +106,7 @@ func TestCommandSide_AddProjectGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -143,7 +143,7 @@ func TestCommandSide_AddProjectGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -267,7 +267,7 @@ func TestCommandSide_ChangeProjectGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -291,7 +291,7 @@ func TestCommandSide_ChangeProjectGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -322,7 +322,7 @@ func TestCommandSide_ChangeProjectGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -361,7 +361,7 @@ func TestCommandSide_ChangeProjectGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -407,7 +407,7 @@ func TestCommandSide_ChangeProjectGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -461,7 +461,7 @@ func TestCommandSide_ChangeProjectGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -768,7 +768,7 @@ func TestCommandSide_DeactivateProjectGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -784,7 +784,7 @@ func TestCommandSide_DeactivateProjectGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -802,7 +802,7 @@ func TestCommandSide_DeactivateProjectGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -829,7 +829,7 @@ func TestCommandSide_DeactivateProjectGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -867,7 +867,7 @@ func TestCommandSide_DeactivateProjectGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -965,7 +965,7 @@ func TestCommandSide_ReactivateProjectGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -981,7 +981,7 @@ func TestCommandSide_ReactivateProjectGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -999,7 +999,7 @@ func TestCommandSide_ReactivateProjectGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -1026,7 +1026,7 @@ func TestCommandSide_ReactivateProjectGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1060,7 +1060,7 @@ func TestCommandSide_ReactivateProjectGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -1163,7 +1163,7 @@ func TestCommandSide_RemoveProjectGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1179,7 +1179,7 @@ func TestCommandSide_RemoveProjectGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1197,7 +1197,7 @@ func TestCommandSide_RemoveProjectGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -1224,7 +1224,7 @@ func TestCommandSide_RemoveProjectGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
diff --git a/internal/command/project_member.go b/internal/command/project_member.go
index ed9f35146f..e47a4c85ee 100644
--- a/internal/command/project_member.go
+++ b/internal/command/project_member.go
@@ -5,10 +5,10 @@ import (
"reflect"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/project"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddProjectMember(ctx context.Context, member *domain.Member, resourceOwner string) (*domain.Member, error) {
@@ -33,10 +33,10 @@ func (c *Commands) AddProjectMember(ctx context.Context, member *domain.Member,
func (c *Commands) addProjectMember(ctx context.Context, projectAgg *eventstore.Aggregate, addedMember *ProjectMemberWriteModel, member *domain.Member) (eventstore.Command, error) {
if !member.IsValid() {
- return nil, errors.ThrowInvalidArgument(nil, "PROJECT-W8m4l", "Errors.Project.Member.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "PROJECT-W8m4l", "Errors.Project.Member.Invalid")
}
if len(domain.CheckForInvalidRoles(member.Roles, domain.ProjectRolePrefix, c.zitadelRoles)) > 0 {
- return nil, errors.ThrowInvalidArgument(nil, "PROJECT-3m9ds", "Errors.Project.Member.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "PROJECT-3m9ds", "Errors.Project.Member.Invalid")
}
err := c.checkUserExists(ctx, addedMember.UserID, "")
@@ -48,7 +48,7 @@ func (c *Commands) addProjectMember(ctx context.Context, projectAgg *eventstore.
return nil, err
}
if addedMember.State == domain.MemberStateActive {
- return nil, errors.ThrowAlreadyExists(nil, "PROJECT-PtXi1", "Errors.Project.Member.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "PROJECT-PtXi1", "Errors.Project.Member.AlreadyExists")
}
return project.NewProjectMemberAddedEvent(ctx, projectAgg, member.UserID, member.Roles...), nil
@@ -57,10 +57,10 @@ func (c *Commands) addProjectMember(ctx context.Context, projectAgg *eventstore.
// ChangeProjectMember updates an existing member
func (c *Commands) ChangeProjectMember(ctx context.Context, member *domain.Member, resourceOwner string) (*domain.Member, error) {
if !member.IsValid() {
- return nil, errors.ThrowInvalidArgument(nil, "PROJECT-LiaZi", "Errors.Project.Member.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "PROJECT-LiaZi", "Errors.Project.Member.Invalid")
}
if len(domain.CheckForInvalidRoles(member.Roles, domain.ProjectRolePrefix, c.zitadelRoles)) > 0 {
- return nil, errors.ThrowInvalidArgument(nil, "PROJECT-3m9d", "Errors.Project.Member.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "PROJECT-3m9d", "Errors.Project.Member.Invalid")
}
existingMember, err := c.projectMemberWriteModelByID(ctx, member.AggregateID, member.UserID, resourceOwner)
@@ -69,7 +69,7 @@ func (c *Commands) ChangeProjectMember(ctx context.Context, member *domain.Membe
}
if reflect.DeepEqual(existingMember.Roles, member.Roles) {
- return nil, errors.ThrowPreconditionFailed(nil, "PROJECT-LiaZi", "Errors.Project.Member.RolesNotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "PROJECT-LiaZi", "Errors.Project.Member.RolesNotChanged")
}
projectAgg := ProjectAggregateFromWriteModel(&existingMember.MemberWriteModel.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, project.NewProjectMemberChangedEvent(ctx, projectAgg, member.UserID, member.Roles...))
@@ -87,13 +87,13 @@ func (c *Commands) ChangeProjectMember(ctx context.Context, member *domain.Membe
func (c *Commands) RemoveProjectMember(ctx context.Context, projectID, userID, resourceOwner string) (*domain.ObjectDetails, error) {
if projectID == "" || userID == "" {
- return nil, errors.ThrowInvalidArgument(nil, "PROJECT-66mHd", "Errors.Project.Member.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "PROJECT-66mHd", "Errors.Project.Member.Invalid")
}
m, err := c.projectMemberWriteModelByID(ctx, projectID, userID, resourceOwner)
- if err != nil && !errors.IsNotFound(err) {
+ if err != nil && !zerrors.IsNotFound(err) {
return nil, err
}
- if errors.IsNotFound(err) {
+ if zerrors.IsNotFound(err) {
// empty response because we have no data that match the request
return &domain.ObjectDetails{}, nil
}
@@ -133,7 +133,7 @@ func (c *Commands) projectMemberWriteModelByID(ctx context.Context, projectID, u
}
if writeModel.State == domain.MemberStateUnspecified || writeModel.State == domain.MemberStateRemoved {
- return nil, errors.ThrowNotFound(nil, "PROJECT-D8JxR", "Errors.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "PROJECT-D8JxR", "Errors.NotFound")
}
return writeModel, nil
diff --git a/internal/command/project_member_test.go b/internal/command/project_member_test.go
index fd6a4105e2..358ee4382f 100644
--- a/internal/command/project_member_test.go
+++ b/internal/command/project_member_test.go
@@ -5,14 +5,15 @@ import (
"testing"
"github.com/stretchr/testify/assert"
+ "golang.org/x/text/language"
+
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/project"
"github.com/zitadel/zitadel/internal/repository/user"
- "golang.org/x/text/language"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddProjectMember(t *testing.T) {
@@ -52,7 +53,7 @@ func TestCommandSide_AddProjectMember(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -74,7 +75,7 @@ func TestCommandSide_AddProjectMember(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -102,7 +103,7 @@ func TestCommandSide_AddProjectMember(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -153,7 +154,7 @@ func TestCommandSide_AddProjectMember(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -178,7 +179,7 @@ func TestCommandSide_AddProjectMember(t *testing.T) {
),
),
expectFilter(),
- expectPushFailed(caos_errs.ThrowAlreadyExists(nil, "ERROR", "internal"),
+ expectPushFailed(zerrors.ThrowAlreadyExists(nil, "ERROR", "internal"),
project.NewProjectMemberAddedEvent(context.Background(),
&project.NewAggregate("project1", "org1").Aggregate,
"user1",
@@ -204,7 +205,7 @@ func TestCommandSide_AddProjectMember(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -323,7 +324,7 @@ func TestCommandSide_ChangeProjectMember(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -345,7 +346,7 @@ func TestCommandSide_ChangeProjectMember(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -373,7 +374,7 @@ func TestCommandSide_ChangeProjectMember(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -409,7 +410,7 @@ func TestCommandSide_ChangeProjectMember(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -520,7 +521,7 @@ func TestCommandSide_RemoveProjectMember(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -537,7 +538,7 @@ func TestCommandSide_RemoveProjectMember(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
diff --git a/internal/command/project_role.go b/internal/command/project_role.go
index c52f170d8c..065d784efc 100644
--- a/internal/command/project_role.go
+++ b/internal/command/project_role.go
@@ -4,10 +4,11 @@ import (
"context"
"github.com/zitadel/logging"
+
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/project"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddProjectRole(ctx context.Context, projectRole *domain.ProjectRole, resourceOwner string) (_ *domain.ProjectRole, err error) {
@@ -62,7 +63,7 @@ func (c *Commands) addProjectRoles(ctx context.Context, projectAgg *eventstore.A
for _, projectRole := range projectRoles {
projectRole.AggregateID = projectAgg.ID
if !projectRole.IsValid() {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-4m9vS", "Errors.Project.Role.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-4m9vS", "Errors.Project.Role.Invalid")
}
events = append(events, project.NewRoleAddedEvent(
ctx,
@@ -78,7 +79,7 @@ func (c *Commands) addProjectRoles(ctx context.Context, projectAgg *eventstore.A
func (c *Commands) ChangeProjectRole(ctx context.Context, projectRole *domain.ProjectRole, resourceOwner string) (_ *domain.ProjectRole, err error) {
if !projectRole.IsValid() {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-2ilfW", "Errors.Project.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-2ilfW", "Errors.Project.Invalid")
}
err = c.checkProjectExists(ctx, projectRole.AggregateID, resourceOwner)
if err != nil {
@@ -90,7 +91,7 @@ func (c *Commands) ChangeProjectRole(ctx context.Context, projectRole *domain.Pr
return nil, err
}
if existingRole.State == domain.ProjectRoleStateUnspecified || existingRole.State == domain.ProjectRoleStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-vv8M9", "Errors.Project.Role.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-vv8M9", "Errors.Project.Role.NotExisting")
}
projectAgg := ProjectAggregateFromWriteModel(&existingRole.WriteModel)
@@ -100,7 +101,7 @@ func (c *Commands) ChangeProjectRole(ctx context.Context, projectRole *domain.Pr
return nil, err
}
if !changed {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-5M0cs", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-5M0cs", "Errors.NoChangesFound")
}
pushedEvents, err := c.eventstore.Push(ctx, changeEvent)
@@ -116,14 +117,14 @@ func (c *Commands) ChangeProjectRole(ctx context.Context, projectRole *domain.Pr
func (c *Commands) RemoveProjectRole(ctx context.Context, projectID, key, resourceOwner string, cascadingProjectGrantIds []string, cascadeUserGrantIDs ...string) (details *domain.ObjectDetails, err error) {
if projectID == "" || key == "" {
- return details, caos_errs.ThrowInvalidArgument(nil, "COMMAND-fl9eF", "Errors.Project.Role.Invalid")
+ return details, zerrors.ThrowInvalidArgument(nil, "COMMAND-fl9eF", "Errors.Project.Role.Invalid")
}
existingRole, err := c.getProjectRoleWriteModelByID(ctx, key, projectID, resourceOwner)
if err != nil {
return details, err
}
if existingRole.State == domain.ProjectRoleStateUnspecified || existingRole.State == domain.ProjectRoleStateRemoved {
- return details, caos_errs.ThrowNotFound(nil, "COMMAND-m9vMf", "Errors.Project.Role.NotExisting")
+ return details, zerrors.ThrowNotFound(nil, "COMMAND-m9vMf", "Errors.Project.Role.NotExisting")
}
projectAgg := ProjectAggregateFromWriteModel(&existingRole.WriteModel)
events := []eventstore.Command{
diff --git a/internal/command/project_role_test.go b/internal/command/project_role_test.go
index 2d40cdc913..bd8c85aef7 100644
--- a/internal/command/project_role_test.go
+++ b/internal/command/project_role_test.go
@@ -7,11 +7,11 @@ import (
"github.com/stretchr/testify/assert"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/project"
"github.com/zitadel/zitadel/internal/repository/usergrant"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddProjectRole(t *testing.T) {
@@ -67,7 +67,7 @@ func TestCommandSide_AddProjectRole(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -96,7 +96,7 @@ func TestCommandSide_AddProjectRole(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -113,7 +113,7 @@ func TestCommandSide_AddProjectRole(t *testing.T) {
),
),
),
- expectPushFailed(caos_errs.ThrowAlreadyExists(nil, "id", "internal"),
+ expectPushFailed(zerrors.ThrowAlreadyExists(nil, "id", "internal"),
project.NewRoleAddedEvent(
context.Background(),
&project.NewAggregate("project1", "org1").Aggregate,
@@ -137,7 +137,7 @@ func TestCommandSide_AddProjectRole(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -265,7 +265,7 @@ func TestCommandSide_BulkAddProjectRole(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -298,7 +298,7 @@ func TestCommandSide_BulkAddProjectRole(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -315,7 +315,7 @@ func TestCommandSide_BulkAddProjectRole(t *testing.T) {
),
),
),
- expectPushFailed(caos_errs.ThrowAlreadyExists(nil, "id", "internal"),
+ expectPushFailed(zerrors.ThrowAlreadyExists(nil, "id", "internal"),
project.NewRoleAddedEvent(
context.Background(),
&project.NewAggregate("project1", "org1").Aggregate,
@@ -351,7 +351,7 @@ func TestCommandSide_BulkAddProjectRole(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -465,7 +465,7 @@ func TestCommandSide_ChangeProjectRole(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -502,7 +502,7 @@ func TestCommandSide_ChangeProjectRole(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -550,7 +550,7 @@ func TestCommandSide_ChangeProjectRole(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -592,7 +592,7 @@ func TestCommandSide_ChangeProjectRole(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -703,7 +703,7 @@ func TestCommandSide_RemoveProjectRole(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -720,7 +720,7 @@ func TestCommandSide_RemoveProjectRole(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -738,7 +738,7 @@ func TestCommandSide_RemoveProjectRole(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -771,7 +771,7 @@ func TestCommandSide_RemoveProjectRole(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
diff --git a/internal/command/project_test.go b/internal/command/project_test.go
index 715b82f080..ca8d2b2ddf 100644
--- a/internal/command/project_test.go
+++ b/internal/command/project_test.go
@@ -7,12 +7,12 @@ import (
"github.com/stretchr/testify/assert"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/id"
id_mock "github.com/zitadel/zitadel/internal/id/mock"
"github.com/zitadel/zitadel/internal/repository/project"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddProject(t *testing.T) {
@@ -49,7 +49,7 @@ func TestCommandSide_AddProject(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -57,7 +57,7 @@ func TestCommandSide_AddProject(t *testing.T) {
fields: fields{
eventstore: eventstoreExpect(
t,
- expectPushFailed(errors.ThrowAlreadyExists(nil, "ERROR", "internl"),
+ expectPushFailed(zerrors.ThrowAlreadyExists(nil, "ERROR", "internl"),
project.NewProjectAddedEvent(
context.Background(),
&project.NewAggregate("project1", "org1").Aggregate,
@@ -87,7 +87,7 @@ func TestCommandSide_AddProject(t *testing.T) {
ownerID: "user1",
},
res: res{
- err: errors.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -195,7 +195,7 @@ func TestCommandSide_ChangeProject(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -213,7 +213,7 @@ func TestCommandSide_ChangeProject(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -235,7 +235,7 @@ func TestCommandSide_ChangeProject(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -270,7 +270,7 @@ func TestCommandSide_ChangeProject(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -303,7 +303,7 @@ func TestCommandSide_ChangeProject(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -468,7 +468,7 @@ func TestCommandSide_DeactivateProject(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -484,7 +484,7 @@ func TestCommandSide_DeactivateProject(t *testing.T) {
resourceOwner: "",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -501,7 +501,7 @@ func TestCommandSide_DeactivateProject(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -531,7 +531,7 @@ func TestCommandSide_DeactivateProject(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -559,7 +559,7 @@ func TestCommandSide_DeactivateProject(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -644,7 +644,7 @@ func TestCommandSide_ReactivateProject(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -660,7 +660,7 @@ func TestCommandSide_ReactivateProject(t *testing.T) {
resourceOwner: "",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -677,7 +677,7 @@ func TestCommandSide_ReactivateProject(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -707,7 +707,7 @@ func TestCommandSide_ReactivateProject(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -731,7 +731,7 @@ func TestCommandSide_ReactivateProject(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -820,7 +820,7 @@ func TestCommandSide_RemoveProject(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -836,7 +836,7 @@ func TestCommandSide_RemoveProject(t *testing.T) {
resourceOwner: "",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -853,7 +853,7 @@ func TestCommandSide_RemoveProject(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -883,7 +883,7 @@ func TestCommandSide_RemoveProject(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1115,7 +1115,7 @@ func TestAddProject(t *testing.T) {
privateLabelingSetting: domain.PrivateLabelingSettingAllowLoginUserResourceOwnerPolicy,
},
want: Want{
- ValidationErr: errors.ThrowInvalidArgument(nil, "PROJE-C01yo", "Errors.Invalid.Argument"),
+ ValidationErr: zerrors.ThrowInvalidArgument(nil, "PROJE-C01yo", "Errors.Invalid.Argument"),
},
},
{
@@ -1127,7 +1127,7 @@ func TestAddProject(t *testing.T) {
privateLabelingSetting: -1,
},
want: Want{
- ValidationErr: errors.ThrowInvalidArgument(nil, "PROJE-AO52V", "Errors.Invalid.Argument"),
+ ValidationErr: zerrors.ThrowInvalidArgument(nil, "PROJE-AO52V", "Errors.Invalid.Argument"),
},
},
{
@@ -1139,7 +1139,7 @@ func TestAddProject(t *testing.T) {
privateLabelingSetting: domain.PrivateLabelingSettingAllowLoginUserResourceOwnerPolicy,
},
want: Want{
- ValidationErr: errors.ThrowPreconditionFailed(nil, "PROJE-hzxwo", "Errors.Invalid.Argument"),
+ ValidationErr: zerrors.ThrowPreconditionFailed(nil, "PROJE-hzxwo", "Errors.Invalid.Argument"),
},
},
{
diff --git a/internal/command/quota.go b/internal/command/quota.go
index d3b1ab7e89..5112394826 100644
--- a/internal/command/quota.go
+++ b/internal/command/quota.go
@@ -8,9 +8,9 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/quota"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type QuotaUnit string
@@ -43,7 +43,7 @@ func (c *Commands) AddQuota(
return nil, err
}
if wm.AggregateID != "" {
- return nil, errors.ThrowAlreadyExists(nil, "COMMAND-WDfFf", "Errors.Quota.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "COMMAND-WDfFf", "Errors.Quota.AlreadyExists")
}
aggregateId, err := c.idGenerator.Next()
if err != nil {
@@ -106,7 +106,7 @@ func (c *Commands) RemoveQuota(ctx context.Context, unit QuotaUnit) (*domain.Obj
return nil, err
}
if wm.AggregateID == "" {
- return nil, errors.ThrowNotFound(nil, "COMMAND-WDfFf", "Errors.Quota.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-WDfFf", "Errors.Quota.NotFound")
}
aggregate := quota.NewAggregate(wm.AggregateID, instanceId)
events := []eventstore.Command{quota.NewRemovedEvent(ctx, &aggregate.Aggregate, unit.Enum())}
@@ -147,13 +147,13 @@ type QuotaNotifications []*QuotaNotification
func (q *QuotaNotification) validate() error {
u, err := url.Parse(q.CallURL)
if err != nil {
- return errors.ThrowInvalidArgument(err, "QUOTA-bZ0Fj", "Errors.Quota.Invalid.CallURL")
+ return zerrors.ThrowInvalidArgument(err, "QUOTA-bZ0Fj", "Errors.Quota.Invalid.CallURL")
}
if !u.IsAbs() || u.Host == "" {
- return errors.ThrowInvalidArgument(nil, "QUOTA-HAYmN", "Errors.Quota.Invalid.CallURL")
+ return zerrors.ThrowInvalidArgument(nil, "QUOTA-HAYmN", "Errors.Quota.Invalid.CallURL")
}
if q.Percent < 1 {
- return errors.ThrowInvalidArgument(nil, "QUOTA-pBfjq", "Errors.Quota.Invalid.Percent")
+ return zerrors.ThrowInvalidArgument(nil, "QUOTA-pBfjq", "Errors.Quota.Invalid.Percent")
}
return nil
}
@@ -165,10 +165,10 @@ func (q *SetQuota) validate() error {
}
}
if q.Unit.Enum() == quota.Unimplemented {
- return errors.ThrowInvalidArgument(nil, "QUOTA-OTeSh", "Errors.Quota.Invalid.Unimplemented")
+ return zerrors.ThrowInvalidArgument(nil, "QUOTA-OTeSh", "Errors.Quota.Invalid.Unimplemented")
}
if q.ResetInterval < time.Minute {
- return errors.ThrowInvalidArgument(nil, "QUOTA-R5otd", "Errors.Quota.Invalid.ResetInterval")
+ return zerrors.ThrowInvalidArgument(nil, "QUOTA-R5otd", "Errors.Quota.Invalid.ResetInterval")
}
return nil
}
diff --git a/internal/command/quota_model.go b/internal/command/quota_model.go
index 8c2efa7dfe..7b4cbac9bd 100644
--- a/internal/command/quota_model.go
+++ b/internal/command/quota_model.go
@@ -6,10 +6,10 @@ import (
"slices"
"time"
- zitadel_errors "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/id"
"github.com/zitadel/zitadel/internal/repository/quota"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type quotaWriteModel struct {
@@ -168,12 +168,12 @@ func (q QuotaNotifications) newSetEventNotifications(idGenerator id.Generator) (
func sortSetEventNotifications(notifications []*quota.SetEventNotification) (err error) {
slices.SortFunc(notifications, func(i, j *quota.SetEventNotification) int {
if i == nil || j == nil {
- err = zitadel_errors.ThrowInternal(errors.New("sorting slices of *quota.SetEventNotification with nil pointers is not supported"), "QUOTA-8YXPk", "Errors.Internal")
+ err = zerrors.ThrowInternal(errors.New("sorting slices of *quota.SetEventNotification with nil pointers is not supported"), "QUOTA-8YXPk", "Errors.Internal")
return 0
}
if i.Percent == j.Percent && i.CallURL == j.CallURL && i.Repeat == j.Repeat {
// TODO: translate
- err = zitadel_errors.ThrowInternal(fmt.Errorf("%+v", i), "QUOTA-Pty2n", "Errors.Quota.Notifications.Duplicate")
+ err = zerrors.ThrowInternal(fmt.Errorf("%+v", i), "QUOTA-Pty2n", "Errors.Quota.Notifications.Duplicate")
return 0
}
if i.Percent < j.Percent ||
diff --git a/internal/command/quota_model_test.go b/internal/command/quota_model_test.go
index 3ba9847200..37815056e5 100644
--- a/internal/command/quota_model_test.go
+++ b/internal/command/quota_model_test.go
@@ -9,11 +9,11 @@ import (
"github.com/stretchr/testify/assert"
- zitadel_errors "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/id"
id_mock "github.com/zitadel/zitadel/internal/id/mock"
"github.com/zitadel/zitadel/internal/repository/quota"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestQuotaWriteModel_NewChanges(t *testing.T) {
@@ -277,7 +277,7 @@ func TestQuotaWriteModel_NewChanges(t *testing.T) {
idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "notification1", "notification2"),
},
wantErr: func(t assert.TestingT, err error, i ...interface{}) bool {
- return zitadel_errors.IsErrorInvalidArgument(err)
+ return zerrors.IsErrorInvalidArgument(err)
},
}, {
name: "deduplicate existing notifications",
diff --git a/internal/command/quota_test.go b/internal/command/quota_test.go
index 5b28f3e610..14d5d50794 100644
--- a/internal/command/quota_test.go
+++ b/internal/command/quota_test.go
@@ -10,11 +10,11 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- caos_errors "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/id"
id_mock "github.com/zitadel/zitadel/internal/id/mock"
"github.com/zitadel/zitadel/internal/repository/quota"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestQuota_AddQuota(t *testing.T) {
@@ -71,7 +71,7 @@ func TestQuota_AddQuota(t *testing.T) {
},
},
res: res{
- err: caos_errors.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -96,7 +96,7 @@ func TestQuota_AddQuota(t *testing.T) {
},
res: res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "QUOTA-OTeSh", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "QUOTA-OTeSh", ""))
},
},
},
@@ -362,7 +362,7 @@ func TestQuota_SetQuota(t *testing.T) {
},
res: res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "QUOTA-OTeSh", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "QUOTA-OTeSh", ""))
},
},
},
@@ -579,7 +579,7 @@ func TestQuota_RemoveQuota(t *testing.T) {
},
res: res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowNotFound(nil, "COMMAND-WDfFf", ""))
+ return errors.Is(err, zerrors.ThrowNotFound(nil, "COMMAND-WDfFf", ""))
},
},
},
@@ -620,7 +620,7 @@ func TestQuota_RemoveQuota(t *testing.T) {
},
res: res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowNotFound(nil, "COMMAND-WDfFf", ""))
+ return errors.Is(err, zerrors.ThrowNotFound(nil, "COMMAND-WDfFf", ""))
},
},
},
@@ -707,7 +707,7 @@ func TestQuota_QuotaNotification_validate(t *testing.T) {
},
res: res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "QUOTA-bZ0Fj", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "QUOTA-bZ0Fj", ""))
},
},
},
@@ -722,7 +722,7 @@ func TestQuota_QuotaNotification_validate(t *testing.T) {
},
res: res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "QUOTA-HAYmN", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "QUOTA-HAYmN", ""))
},
},
},
@@ -737,7 +737,7 @@ func TestQuota_QuotaNotification_validate(t *testing.T) {
},
res: res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "QUOTA-HAYmN", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "QUOTA-HAYmN", ""))
},
},
},
@@ -752,7 +752,7 @@ func TestQuota_QuotaNotification_validate(t *testing.T) {
},
res: res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "QUOTA-pBfjq", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "QUOTA-pBfjq", ""))
},
},
},
@@ -815,7 +815,7 @@ func TestQuota_SetQuota_validate(t *testing.T) {
},
res: res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "QUOTA-bZ0Fj", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "QUOTA-bZ0Fj", ""))
},
},
},
@@ -833,7 +833,7 @@ func TestQuota_SetQuota_validate(t *testing.T) {
},
res: res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "QUOTA-OTeSh", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "QUOTA-OTeSh", ""))
},
},
},
@@ -851,7 +851,7 @@ func TestQuota_SetQuota_validate(t *testing.T) {
},
res: res{
err: func(err error) bool {
- return errors.Is(err, caos_errors.ThrowInvalidArgument(nil, "QUOTA-R5otd", ""))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "QUOTA-R5otd", ""))
},
},
},
diff --git a/internal/command/resource_ower_model.go b/internal/command/resource_ower_model.go
new file mode 100644
index 0000000000..e5e047c273
--- /dev/null
+++ b/internal/command/resource_ower_model.go
@@ -0,0 +1,41 @@
+package command
+
+import (
+ "github.com/zitadel/zitadel/internal/eventstore"
+)
+
+// resourceOwnerModel can be used to retrieve the resourceOwner of an aggregate
+// by checking the first event it.
+type resourceOwnerModel struct {
+ instanceID string
+ aggregateType eventstore.AggregateType
+ aggregateID string
+
+ resourceOwner string
+}
+
+func NewResourceOwnerModel(instanceID string, aggregateType eventstore.AggregateType, aggregateID string) *resourceOwnerModel {
+ return &resourceOwnerModel{
+ instanceID: instanceID,
+ aggregateType: aggregateType,
+ aggregateID: aggregateID,
+ }
+}
+
+func (r *resourceOwnerModel) Reduce() error {
+ return nil
+}
+func (r *resourceOwnerModel) AppendEvents(events ...eventstore.Event) {
+ if len(events) == 1 {
+ r.resourceOwner = events[0].Aggregate().ResourceOwner
+ }
+}
+func (r *resourceOwnerModel) Query() *eventstore.SearchQueryBuilder {
+ return eventstore.NewSearchQueryBuilder(eventstore.ColumnsEvent).
+ InstanceID(r.instanceID).
+ AddQuery().
+ AggregateTypes(r.aggregateType).
+ AggregateIDs(r.aggregateID).
+ Builder().
+ Limit(1)
+}
diff --git a/internal/command/restrictions.go b/internal/command/restrictions.go
index 1658c99592..e47a0e8c02 100644
--- a/internal/command/restrictions.go
+++ b/internal/command/restrictions.go
@@ -3,16 +3,38 @@ package command
import (
"context"
+ "golang.org/x/text/language"
+
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/i18n"
"github.com/zitadel/zitadel/internal/repository/restrictions"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type SetRestrictions struct {
DisallowPublicOrgRegistration *bool
+ AllowedLanguages []language.Tag
+}
+
+func (s *SetRestrictions) Validate(defaultLanguage language.Tag) error {
+ if s == nil || (s.DisallowPublicOrgRegistration == nil && s.AllowedLanguages == nil) {
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-oASwj", "Errors.Restrictions.NoneSpecified")
+ }
+ if s.AllowedLanguages != nil {
+ if err := domain.LanguagesHaveDuplicates(s.AllowedLanguages); err != nil {
+ return err
+ }
+ if err := domain.LanguagesAreSupported(i18n.SupportedLanguages(), s.AllowedLanguages...); err != nil {
+ return err
+ }
+ if err := domain.LanguageIsAllowed(false, s.AllowedLanguages, defaultLanguage); err != nil {
+ return zerrors.ThrowPreconditionFailedf(err, "COMMAND-L0m2u", "Errors.Restrictions.DefaultLanguageMustBeAllowed")
+ }
+ }
+ return nil
}
// SetRestrictions creates new restrictions or updates existing restrictions.
@@ -60,10 +82,10 @@ func (c *Commands) getRestrictionsWriteModel(ctx context.Context, instanceId, re
func (c *Commands) SetRestrictionsCommand(a *restrictions.Aggregate, wm *restrictionsWriteModel, setRestrictions *SetRestrictions) preparation.Validation {
return func() (preparation.CreateCommands, error) {
- if setRestrictions == nil || setRestrictions.DisallowPublicOrgRegistration == nil {
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-oASwj", "Errors.Restrictions.NoneSpecified")
- }
return func(ctx context.Context, _ preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
+ if err := setRestrictions.Validate(authz.GetInstance(ctx).DefaultLanguage()); err != nil {
+ return nil, err
+ }
changes := wm.NewChanges(setRestrictions)
if len(changes) == 0 {
return nil, nil
diff --git a/internal/command/restrictions_model.go b/internal/command/restrictions_model.go
index cabf1981ac..81ada1f4f1 100644
--- a/internal/command/restrictions_model.go
+++ b/internal/command/restrictions_model.go
@@ -1,13 +1,17 @@
package command
import (
+ "golang.org/x/text/language"
+
+ "github.com/zitadel/zitadel/internal/domain"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/restrictions"
)
type restrictionsWriteModel struct {
eventstore.WriteModel
- disallowPublicOrgRegistrations bool
+ disallowPublicOrgRegistration bool
+ allowedLanguages []language.Tag
}
// newRestrictionsWriteModel aggregateId is filled by reducing unit matching events
@@ -34,8 +38,15 @@ func (wm *restrictionsWriteModel) Query() *eventstore.SearchQueryBuilder {
func (wm *restrictionsWriteModel) Reduce() error {
for _, event := range wm.Events {
wm.ChangeDate = event.CreatedAt()
- if e, ok := event.(*restrictions.SetEvent); ok && e.DisallowPublicOrgRegistrations != nil {
- wm.disallowPublicOrgRegistrations = *e.DisallowPublicOrgRegistrations
+ e, ok := event.(*restrictions.SetEvent)
+ if !ok {
+ continue
+ }
+ if e.DisallowPublicOrgRegistration != nil {
+ wm.disallowPublicOrgRegistration = *e.DisallowPublicOrgRegistration
+ }
+ if e.AllowedLanguages != nil {
+ wm.allowedLanguages = *e.AllowedLanguages
}
}
return wm.WriteModel.Reduce()
@@ -48,8 +59,11 @@ func (wm *restrictionsWriteModel) NewChanges(setRestrictions *SetRestrictions) (
return nil
}
changes = make([]restrictions.RestrictionsChange, 0, 1)
- if setRestrictions.DisallowPublicOrgRegistration != nil && (wm.disallowPublicOrgRegistrations != *setRestrictions.DisallowPublicOrgRegistration) {
- changes = append(changes, restrictions.ChangePublicOrgRegistrations(*setRestrictions.DisallowPublicOrgRegistration))
+ if setRestrictions.DisallowPublicOrgRegistration != nil && (wm.disallowPublicOrgRegistration != *setRestrictions.DisallowPublicOrgRegistration) {
+ changes = append(changes, restrictions.ChangeDisallowPublicOrgRegistration(*setRestrictions.DisallowPublicOrgRegistration))
+ }
+ if setRestrictions.AllowedLanguages != nil && domain.LanguagesDiffer(wm.allowedLanguages, setRestrictions.AllowedLanguages) {
+ changes = append(changes, restrictions.ChangeAllowedLanguages(setRestrictions.AllowedLanguages))
}
return changes
}
diff --git a/internal/command/restrictions_test.go b/internal/command/restrictions_test.go
index 1fcefb8065..4dcbc479ed 100644
--- a/internal/command/restrictions_test.go
+++ b/internal/command/restrictions_test.go
@@ -6,20 +6,20 @@ import (
"github.com/muhlemmer/gu"
"github.com/stretchr/testify/assert"
+ "golang.org/x/text/language"
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- zitadel_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/id"
id_mock "github.com/zitadel/zitadel/internal/id/mock"
"github.com/zitadel/zitadel/internal/repository/restrictions"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestSetRestrictions(t *testing.T) {
type fields func(*testing.T) (*eventstore.Eventstore, id.Generator)
type args struct {
- ctx context.Context
setRestrictions *SetRestrictions
}
type res struct {
@@ -40,14 +40,14 @@ func TestSetRestrictions(t *testing.T) {
expectFilter(),
expectPush(
eventFromEventPusherWithInstanceID(
- "instance1",
+ "INSTANCE",
restrictions.NewSetEvent(
eventstore.NewBaseEventForPush(
context.Background(),
- &restrictions.NewAggregate("restrictions1", "instance1", "instance1").Aggregate,
+ &restrictions.NewAggregate("restrictions1", "INSTANCE", "INSTANCE").Aggregate,
restrictions.SetEventType,
),
- restrictions.ChangePublicOrgRegistrations(true),
+ restrictions.ChangeDisallowPublicOrgRegistration(true),
),
),
),
@@ -55,14 +55,13 @@ func TestSetRestrictions(t *testing.T) {
id_mock.NewIDGeneratorExpectIDs(t, "restrictions1")
},
args: args{
- ctx: authz.WithInstanceID(context.Background(), "instance1"),
setRestrictions: &SetRestrictions{
DisallowPublicOrgRegistration: gu.Ptr(true),
},
},
res: res{
want: &domain.ObjectDetails{
- ResourceOwner: "instance1",
+ ResourceOwner: "INSTANCE",
},
},
},
@@ -76,23 +75,23 @@ func TestSetRestrictions(t *testing.T) {
restrictions.NewSetEvent(
eventstore.NewBaseEventForPush(
context.Background(),
- &restrictions.NewAggregate("restrictions1", "instance1", "instance1").Aggregate,
+ &restrictions.NewAggregate("restrictions1", "INSTANCE", "INSTANCE").Aggregate,
restrictions.SetEventType,
),
- restrictions.ChangePublicOrgRegistrations(true),
+ restrictions.ChangeDisallowPublicOrgRegistration(true),
),
),
),
expectPush(
eventFromEventPusherWithInstanceID(
- "instance1",
+ "INSTANCE",
restrictions.NewSetEvent(
eventstore.NewBaseEventForPush(
context.Background(),
- &restrictions.NewAggregate("restrictions1", "instance1", "instance1").Aggregate,
+ &restrictions.NewAggregate("restrictions1", "INSTANCE", "INSTANCE").Aggregate,
restrictions.SetEventType,
),
- restrictions.ChangePublicOrgRegistrations(false),
+ restrictions.ChangeDisallowPublicOrgRegistration(false),
),
),
),
@@ -100,14 +99,13 @@ func TestSetRestrictions(t *testing.T) {
nil
},
args: args{
- ctx: authz.WithInstanceID(context.Background(), "instance1"),
setRestrictions: &SetRestrictions{
DisallowPublicOrgRegistration: gu.Ptr(false),
},
},
res: res{
want: &domain.ObjectDetails{
- ResourceOwner: "instance1",
+ ResourceOwner: "INSTANCE",
},
},
},
@@ -121,10 +119,10 @@ func TestSetRestrictions(t *testing.T) {
restrictions.NewSetEvent(
eventstore.NewBaseEventForPush(
context.Background(),
- &restrictions.NewAggregate("restrictions1", "instance1", "instance1").Aggregate,
+ &restrictions.NewAggregate("restrictions1", "INSTANCE", "INSTANCE").Aggregate,
restrictions.SetEventType,
),
- restrictions.ChangePublicOrgRegistrations(true),
+ restrictions.ChangeDisallowPublicOrgRegistration(true),
),
),
),
@@ -132,14 +130,13 @@ func TestSetRestrictions(t *testing.T) {
nil
},
args: args{
- ctx: authz.WithInstanceID(context.Background(), "instance1"),
setRestrictions: &SetRestrictions{
DisallowPublicOrgRegistration: gu.Ptr(true),
},
},
res: res{
want: &domain.ObjectDetails{
- ResourceOwner: "instance1",
+ ResourceOwner: "INSTANCE",
},
},
},
@@ -152,21 +149,74 @@ func TestSetRestrictions(t *testing.T) {
restrictions.NewSetEvent(
eventstore.NewBaseEventForPush(
context.Background(),
- &restrictions.NewAggregate("restrictions1", "instance1", "instance1").Aggregate,
+ &restrictions.NewAggregate("restrictions1", "INSTANCE", "INSTANCE").Aggregate,
restrictions.SetEventType,
),
- restrictions.ChangePublicOrgRegistrations(true),
+ restrictions.ChangeDisallowPublicOrgRegistration(true),
),
),
),
), nil
},
args: args{
- ctx: authz.WithInstanceID(context.Background(), "instance1"),
setRestrictions: &SetRestrictions{},
},
res: res{
- err: zitadel_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
+ },
+ },
+ {
+ name: "unsupported language restricted",
+ fields: func(*testing.T) (*eventstore.Eventstore, id.Generator) {
+ return eventstoreExpect(t,
+ expectFilter(
+ eventFromEventPusher(
+ restrictions.NewSetEvent(
+ eventstore.NewBaseEventForPush(
+ context.Background(),
+ &restrictions.NewAggregate("restrictions1", "INSTANCE", "INSTANCE").Aggregate,
+ restrictions.SetEventType,
+ ),
+ restrictions.ChangeAllowedLanguages(SupportedLanguages),
+ ),
+ ),
+ ),
+ ), nil
+ },
+ args: args{
+ setRestrictions: &SetRestrictions{
+ AllowedLanguages: []language.Tag{AllowedLanguage, UnsupportedLanguage},
+ },
+ },
+ res: res{
+ err: zerrors.IsErrorInvalidArgument,
+ },
+ },
+ {
+ name: "default language not allowed",
+ fields: func(*testing.T) (*eventstore.Eventstore, id.Generator) {
+ return eventstoreExpect(t,
+ expectFilter(
+ eventFromEventPusher(
+ restrictions.NewSetEvent(
+ eventstore.NewBaseEventForPush(
+ context.Background(),
+ &restrictions.NewAggregate("restrictions1", "INSTANCE", "INSTANCE").Aggregate,
+ restrictions.SetEventType,
+ ),
+ restrictions.ChangeAllowedLanguages(OnlyAllowedLanguages),
+ ),
+ ),
+ ),
+ ), nil
+ },
+ args: args{
+ setRestrictions: &SetRestrictions{
+ AllowedLanguages: []language.Tag{DisallowedLanguage},
+ },
+ },
+ res: res{
+ err: zerrors.IsPreconditionFailed,
},
},
}
@@ -174,7 +224,7 @@ func TestSetRestrictions(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
r := new(Commands)
r.eventstore, r.idGenerator = tt.fields(t)
- got, err := r.SetInstanceRestrictions(tt.args.ctx, tt.args.setRestrictions)
+ got, err := r.SetInstanceRestrictions(authz.WithInstance(context.Background(), &mockInstance{}), tt.args.setRestrictions)
if tt.res.err == nil {
assert.NoError(t, err)
}
diff --git a/internal/command/session.go b/internal/command/session.go
index fefb24ddda..147921b550 100644
--- a/internal/command/session.go
+++ b/internal/command/session.go
@@ -11,12 +11,12 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/id"
"github.com/zitadel/zitadel/internal/repository/session"
"github.com/zitadel/zitadel/internal/repository/user"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type SessionCommand func(ctx context.Context, cmd *SessionCommands) error
@@ -59,7 +59,7 @@ func (c *Commands) NewSessionCommands(cmds []SessionCommand, session *SessionWri
func CheckUser(id string, resourceOwner string) SessionCommand {
return func(ctx context.Context, cmd *SessionCommands) error {
if cmd.sessionWriteModel.UserID != "" && id != "" && cmd.sessionWriteModel.UserID != id {
- return caos_errs.ThrowInvalidArgument(nil, "", "user change not possible")
+ return zerrors.ThrowInvalidArgument(nil, "", "user change not possible")
}
return cmd.UserChecked(ctx, id, resourceOwner, cmd.now())
}
@@ -69,7 +69,7 @@ func CheckUser(id string, resourceOwner string) SessionCommand {
func CheckPassword(password string) SessionCommand {
return func(ctx context.Context, cmd *SessionCommands) error {
if cmd.sessionWriteModel.UserID == "" {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Sfw3f", "Errors.User.UserIDMissing")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-Sfw3f", "Errors.User.UserIDMissing")
}
cmd.passwordWriteModel = NewHumanPasswordWriteModel(cmd.sessionWriteModel.UserID, "")
err := cmd.eventstore.FilterToQueryReducer(ctx, cmd.passwordWriteModel)
@@ -77,18 +77,18 @@ func CheckPassword(password string) SessionCommand {
return err
}
if cmd.passwordWriteModel.UserState == domain.UserStateUnspecified || cmd.passwordWriteModel.UserState == domain.UserStateDeleted {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Df4b3", "Errors.User.NotFound")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-Df4b3", "Errors.User.NotFound")
}
if cmd.passwordWriteModel.EncodedHash == "" {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-WEf3t", "Errors.User.Password.NotSet")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-WEf3t", "Errors.User.Password.NotSet")
}
ctx, spanPasswordComparison := tracing.NewNamedSpan(ctx, "passwap.Verify")
updated, err := cmd.hasher.Verify(cmd.passwordWriteModel.EncodedHash, password)
spanPasswordComparison.EndWithError(err)
if err != nil {
//TODO: maybe we want to reset the session in the future https://github.com/zitadel/zitadel/issues/5807
- return caos_errs.ThrowInvalidArgument(err, "COMMAND-SAF3g", "Errors.User.Password.Invalid")
+ return zerrors.ThrowInvalidArgument(err, "COMMAND-SAF3g", "Errors.User.Password.Invalid")
}
if updated != "" {
cmd.eventCommands = append(cmd.eventCommands, user.NewHumanPasswordHashUpdatedEvent(ctx, UserAggregateFromWriteModel(&cmd.passwordWriteModel.WriteModel), updated))
@@ -103,7 +103,7 @@ func CheckPassword(password string) SessionCommand {
func CheckIntent(intentID, token string) SessionCommand {
return func(ctx context.Context, cmd *SessionCommands) error {
if cmd.sessionWriteModel.UserID == "" {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Sfw3r", "Errors.User.UserIDMissing")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-Sfw3r", "Errors.User.UserIDMissing")
}
if err := crypto.CheckToken(cmd.intentAlg, token, intentID); err != nil {
return err
@@ -114,11 +114,11 @@ func CheckIntent(intentID, token string) SessionCommand {
return err
}
if cmd.intentWriteModel.State != domain.IDPIntentStateSucceeded {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Df4bw", "Errors.Intent.NotSucceeded")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-Df4bw", "Errors.Intent.NotSucceeded")
}
if cmd.intentWriteModel.UserID != "" {
if cmd.intentWriteModel.UserID != cmd.sessionWriteModel.UserID {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-O8xk3w", "Errors.Intent.OtherUser")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-O8xk3w", "Errors.Intent.OtherUser")
}
} else {
linkWriteModel := NewUserIDPLinkWriteModel(cmd.sessionWriteModel.UserID, cmd.intentWriteModel.IDPID, cmd.intentWriteModel.IDPUserID, cmd.intentWriteModel.ResourceOwner)
@@ -127,7 +127,7 @@ func CheckIntent(intentID, token string) SessionCommand {
return err
}
if linkWriteModel.State != domain.UserIDPLinkStateActive {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-O8xk3w", "Errors.Intent.OtherUser")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-O8xk3w", "Errors.Intent.OtherUser")
}
}
cmd.IntentChecked(ctx, cmd.now())
@@ -138,7 +138,7 @@ func CheckIntent(intentID, token string) SessionCommand {
func CheckTOTP(code string) SessionCommand {
return func(ctx context.Context, cmd *SessionCommands) (err error) {
if cmd.sessionWriteModel.UserID == "" {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Neil7", "Errors.User.UserIDMissing")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-Neil7", "Errors.User.UserIDMissing")
}
cmd.totpWriteModel = NewHumanTOTPWriteModel(cmd.sessionWriteModel.UserID, "")
err = cmd.eventstore.FilterToQueryReducer(ctx, cmd.totpWriteModel)
@@ -146,7 +146,7 @@ func CheckTOTP(code string) SessionCommand {
return err
}
if cmd.totpWriteModel.State != domain.MFAStateReady {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-eej1U", "Errors.User.MFA.OTP.NotReady")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-eej1U", "Errors.User.MFA.OTP.NotReady")
}
err = domain.VerifyTOTP(code, cmd.totpWriteModel.Secret, cmd.totpAlg)
if err != nil {
@@ -258,7 +258,7 @@ func (s *SessionCommands) ChangeMetadata(ctx context.Context, metadata map[strin
func (s *SessionCommands) SetLifetime(ctx context.Context, lifetime time.Duration) error {
if lifetime < 0 {
- return caos_errs.ThrowInvalidArgument(nil, "COMMAND-asEG4", "Errors.Session.PositiveLifetime")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-asEG4", "Errors.Session.PositiveLifetime")
}
if lifetime == 0 {
return nil
@@ -269,7 +269,7 @@ func (s *SessionCommands) SetLifetime(ctx context.Context, lifetime time.Duratio
func (s *SessionCommands) gethumanWriteModel(ctx context.Context) (*HumanWriteModel, error) {
if s.sessionWriteModel.UserID == "" {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-eeR2e", "Errors.User.UserIDMissing")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-eeR2e", "Errors.User.UserIDMissing")
}
humanWriteModel := NewHumanWriteModel(s.sessionWriteModel.UserID, s.sessionWriteModel.UserResourceOwner)
err := s.eventstore.FilterToQueryReducer(ctx, humanWriteModel)
@@ -277,7 +277,7 @@ func (s *SessionCommands) gethumanWriteModel(ctx context.Context) (*HumanWriteMo
return nil, err
}
if humanWriteModel.UserState != domain.UserStateActive {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Df4b3", "Errors.User.NotFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-Df4b3", "Errors.User.NotFound")
}
return humanWriteModel, nil
}
@@ -400,7 +400,27 @@ func (c *Commands) checkSessionTerminationPermission(ctx context.Context, model
if model.UserID != "" && model.UserID == authz.GetCtxData(ctx).UserID {
return nil
}
- return c.checkPermission(ctx, domain.PermissionSessionDelete, model.UserResourceOwner, model.UserID)
+ userResourceOwner, err := c.sessionUserResourceOwner(ctx, model)
+ if err != nil {
+ return err
+ }
+ return c.checkPermission(ctx, domain.PermissionSessionDelete, userResourceOwner, model.UserID)
+}
+
+// sessionUserResourceOwner will return the resourceOwner of the session form the [SessionWriteModel] or by additionally calling the eventstore,
+// because before 2.42.0, the resourceOwner of a session used to be the organisation of the creator.
+// Further the (checked) users organisation id was not stored.
+// To be able to check the permission, we need to get the user's resourceOwner in this case.
+func (c *Commands) sessionUserResourceOwner(ctx context.Context, model *SessionWriteModel) (string, error) {
+ if model.UserID == "" || model.UserResourceOwner != "" {
+ return model.UserResourceOwner, nil
+ }
+ r := NewResourceOwnerModel(authz.GetInstance(ctx).InstanceID(), user.AggregateType, model.UserID)
+ err := c.eventstore.FilterToQueryReducer(ctx, r)
+ if err != nil {
+ return "", err
+ }
+ return r.resourceOwner, nil
}
func sessionTokenCreator(idGenerator id.Generator, sessionAlg crypto.EncryptionAlgorithm) func(sessionID string) (id string, token string, err error) {
diff --git a/internal/command/session_model.go b/internal/command/session_model.go
index 4929904576..6076461f5a 100644
--- a/internal/command/session_model.go
+++ b/internal/command/session_model.go
@@ -5,9 +5,9 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/session"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type WebAuthNChallengeModel struct {
@@ -62,8 +62,7 @@ type SessionWriteModel struct {
func NewSessionWriteModel(sessionID string, instanceID string) *SessionWriteModel {
return &SessionWriteModel{
WriteModel: eventstore.WriteModel{
- AggregateID: sessionID,
- ResourceOwner: instanceID,
+ AggregateID: sessionID,
},
Metadata: make(map[string][]byte),
aggregate: &session.NewAggregate(sessionID, instanceID).Aggregate,
@@ -261,10 +260,10 @@ func (wm *SessionWriteModel) AuthMethodTypes() []domain.UserAuthMethodType {
// or automatically (expired).
func (wm *SessionWriteModel) CheckNotInvalidated() error {
if wm.State == domain.SessionStateTerminated {
- return errors.ThrowPreconditionFailed(nil, "COMMAND-Hewfq", "Errors.Session.Terminated")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-Hewfq", "Errors.Session.Terminated")
}
if !wm.Expiration.IsZero() && wm.Expiration.Before(time.Now()) {
- return errors.ThrowPreconditionFailed(nil, "COMMAND-Hkl3d", "Errors.Session.Expired")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-Hkl3d", "Errors.Session.Expired")
}
return nil
}
@@ -272,7 +271,7 @@ func (wm *SessionWriteModel) CheckNotInvalidated() error {
// CheckIsActive checks that the session was not invalidated ([CheckNotInvalidated]) and actually already exists.
func (wm *SessionWriteModel) CheckIsActive() error {
if wm.State == domain.SessionStateUnspecified {
- return errors.ThrowPreconditionFailed(nil, "COMMAND-Flk38", "Errors.Session.NotExisting")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-Flk38", "Errors.Session.NotExisting")
}
return wm.CheckNotInvalidated()
}
diff --git a/internal/command/session_otp.go b/internal/command/session_otp.go
index eecf47f90b..8afee5d2d1 100644
--- a/internal/command/session_otp.go
+++ b/internal/command/session_otp.go
@@ -8,8 +8,8 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/repository/session"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) CreateOTPSMSChallengeReturnCode(dst *string) SessionCommand {
@@ -23,14 +23,14 @@ func (c *Commands) CreateOTPSMSChallenge() SessionCommand {
func (c *Commands) createOTPSMSChallenge(returnCode bool, dst *string) SessionCommand {
return func(ctx context.Context, cmd *SessionCommands) error {
if cmd.sessionWriteModel.UserID == "" {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-JKL3g", "Errors.User.UserIDMissing")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-JKL3g", "Errors.User.UserIDMissing")
}
writeModel := NewHumanOTPSMSWriteModel(cmd.sessionWriteModel.UserID, "")
if err := cmd.eventstore.FilterToQueryReducer(ctx, writeModel); err != nil {
return err
}
if !writeModel.OTPAdded() {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-BJ2g3", "Errors.User.MFA.OTP.NotReady")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-BJ2g3", "Errors.User.MFA.OTP.NotReady")
}
code, err := cmd.createCode(ctx, cmd.eventstore.Filter, domain.SecretGeneratorTypeOTPSMS, cmd.otpAlg, c.defaultSecretGenerators.OTPSMS)
if err != nil {
@@ -51,7 +51,7 @@ func (c *Commands) OTPSMSSent(ctx context.Context, sessionID, resourceOwner stri
return err
}
if sessionWriteModel.OTPSMSCodeChallenge == nil {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-G3t31", "Errors.User.Code.NotFound")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-G3t31", "Errors.User.Code.NotFound")
}
return c.pushAppendAndReduce(ctx, sessionWriteModel,
session.NewOTPSMSSentEvent(ctx, &session.NewAggregate(sessionID, sessionWriteModel.ResourceOwner).Aggregate),
@@ -76,14 +76,14 @@ func (c *Commands) CreateOTPEmailChallenge() SessionCommand {
func (c *Commands) createOTPEmailChallenge(returnCode bool, urlTmpl string, dst *string) SessionCommand {
return func(ctx context.Context, cmd *SessionCommands) error {
if cmd.sessionWriteModel.UserID == "" {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-JK3gp", "Errors.User.UserIDMissing")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-JK3gp", "Errors.User.UserIDMissing")
}
writeModel := NewHumanOTPEmailWriteModel(cmd.sessionWriteModel.UserID, "")
if err := cmd.eventstore.FilterToQueryReducer(ctx, writeModel); err != nil {
return err
}
if !writeModel.OTPAdded() {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-JKLJ3", "Errors.User.MFA.OTP.NotReady")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-JKLJ3", "Errors.User.MFA.OTP.NotReady")
}
code, err := cmd.createCode(ctx, cmd.eventstore.Filter, domain.SecretGeneratorTypeOTPEmail, cmd.otpAlg, c.defaultSecretGenerators.OTPEmail)
if err != nil {
@@ -104,7 +104,7 @@ func (c *Commands) OTPEmailSent(ctx context.Context, sessionID, resourceOwner st
return err
}
if sessionWriteModel.OTPEmailCodeChallenge == nil {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-SLr02", "Errors.User.Code.NotFound")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-SLr02", "Errors.User.Code.NotFound")
}
return c.pushAppendAndReduce(ctx, sessionWriteModel,
session.NewOTPEmailSentEvent(ctx, &session.NewAggregate(sessionID, sessionWriteModel.ResourceOwner).Aggregate),
@@ -114,11 +114,11 @@ func (c *Commands) OTPEmailSent(ctx context.Context, sessionID, resourceOwner st
func CheckOTPSMS(code string) SessionCommand {
return func(ctx context.Context, cmd *SessionCommands) (err error) {
if cmd.sessionWriteModel.UserID == "" {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-VDrh3", "Errors.User.UserIDMissing")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-VDrh3", "Errors.User.UserIDMissing")
}
challenge := cmd.sessionWriteModel.OTPSMSCodeChallenge
if challenge == nil {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-SF3tv", "Errors.User.Code.NotFound")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-SF3tv", "Errors.User.Code.NotFound")
}
err = crypto.VerifyCodeWithAlgorithm(challenge.CreationDate, challenge.Expiry, challenge.Code, code, cmd.otpAlg)
if err != nil {
@@ -132,11 +132,11 @@ func CheckOTPSMS(code string) SessionCommand {
func CheckOTPEmail(code string) SessionCommand {
return func(ctx context.Context, cmd *SessionCommands) (err error) {
if cmd.sessionWriteModel.UserID == "" {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-ejo2w", "Errors.User.UserIDMissing")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-ejo2w", "Errors.User.UserIDMissing")
}
challenge := cmd.sessionWriteModel.OTPEmailCodeChallenge
if challenge == nil {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-zF3g3", "Errors.User.Code.NotFound")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-zF3g3", "Errors.User.Code.NotFound")
}
err = crypto.VerifyCodeWithAlgorithm(challenge.CreationDate, challenge.Expiry, challenge.Code, code, cmd.otpAlg)
if err != nil {
diff --git a/internal/command/session_otp_test.go b/internal/command/session_otp_test.go
index 10801d79b2..f4db8241ce 100644
--- a/internal/command/session_otp_test.go
+++ b/internal/command/session_otp_test.go
@@ -10,10 +10,10 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/session"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommands_CreateOTPSMSChallengeReturnCode(t *testing.T) {
@@ -39,7 +39,7 @@ func TestCommands_CreateOTPSMSChallengeReturnCode(t *testing.T) {
eventstore: expectEventstore(),
},
res: res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-JKL3g", "Errors.User.UserIDMissing"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-JKL3g", "Errors.User.UserIDMissing"),
},
},
{
@@ -51,7 +51,7 @@ func TestCommands_CreateOTPSMSChallengeReturnCode(t *testing.T) {
),
},
res: res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-BJ2g3", "Errors.User.MFA.OTP.NotReady"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-BJ2g3", "Errors.User.MFA.OTP.NotReady"),
},
},
{
@@ -140,7 +140,7 @@ func TestCommands_CreateOTPSMSChallenge(t *testing.T) {
eventstore: expectEventstore(),
},
res: res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-JKL3g", "Errors.User.UserIDMissing"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-JKL3g", "Errors.User.UserIDMissing"),
},
},
{
@@ -152,7 +152,7 @@ func TestCommands_CreateOTPSMSChallenge(t *testing.T) {
),
},
res: res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-BJ2g3", "Errors.User.MFA.OTP.NotReady"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-BJ2g3", "Errors.User.MFA.OTP.NotReady"),
},
},
{
@@ -244,7 +244,7 @@ func TestCommands_OTPSMSSent(t *testing.T) {
sessionID: "sessionID",
resourceOwner: "instanceID",
},
- wantErr: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-G3t31", "Errors.User.Code.NotFound"),
+ wantErr: zerrors.ThrowPreconditionFailed(nil, "COMMAND-G3t31", "Errors.User.Code.NotFound"),
},
{
name: "challenged and sent",
@@ -317,7 +317,7 @@ func TestCommands_CreateOTPEmailChallengeURLTemplate(t *testing.T) {
eventstore: expectEventstore(),
},
res: res{
- templateError: caos_errs.ThrowInvalidArgument(nil, "DOMAIN-ieYa7", "Errors.User.InvalidURLTemplate"),
+ templateError: zerrors.ThrowInvalidArgument(nil, "DOMAIN-ieYa7", "Errors.User.InvalidURLTemplate"),
},
},
{
@@ -329,7 +329,7 @@ func TestCommands_CreateOTPEmailChallengeURLTemplate(t *testing.T) {
eventstore: expectEventstore(),
},
res: res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-JK3gp", "Errors.User.UserIDMissing"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-JK3gp", "Errors.User.UserIDMissing"),
},
},
{
@@ -344,7 +344,7 @@ func TestCommands_CreateOTPEmailChallengeURLTemplate(t *testing.T) {
),
},
res: res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-JKLJ3", "Errors.User.MFA.OTP.NotReady"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-JKLJ3", "Errors.User.MFA.OTP.NotReady"),
},
},
{
@@ -439,7 +439,7 @@ func TestCommands_CreateOTPEmailChallengeReturnCode(t *testing.T) {
eventstore: expectEventstore(),
},
res: res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-JK3gp", "Errors.User.UserIDMissing"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-JK3gp", "Errors.User.UserIDMissing"),
},
},
{
@@ -451,7 +451,7 @@ func TestCommands_CreateOTPEmailChallengeReturnCode(t *testing.T) {
),
},
res: res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-JKLJ3", "Errors.User.MFA.OTP.NotReady"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-JKLJ3", "Errors.User.MFA.OTP.NotReady"),
},
},
{
@@ -540,7 +540,7 @@ func TestCommands_CreateOTPEmailChallenge(t *testing.T) {
eventstore: expectEventstore(),
},
res: res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-JK3gp", "Errors.User.UserIDMissing"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-JK3gp", "Errors.User.UserIDMissing"),
},
},
{
@@ -552,7 +552,7 @@ func TestCommands_CreateOTPEmailChallenge(t *testing.T) {
),
},
res: res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-JKLJ3", "Errors.User.MFA.OTP.NotReady"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-JKLJ3", "Errors.User.MFA.OTP.NotReady"),
},
},
{
@@ -645,7 +645,7 @@ func TestCommands_OTPEmailSent(t *testing.T) {
sessionID: "sessionID",
resourceOwner: "instanceID",
},
- wantErr: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-SLr02", "Errors.User.Code.NotFound"),
+ wantErr: zerrors.ThrowPreconditionFailed(nil, "COMMAND-SLr02", "Errors.User.Code.NotFound"),
},
{
name: "challenged and sent",
@@ -720,7 +720,7 @@ func TestCheckOTPSMS(t *testing.T) {
code: "code",
},
res: res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-VDrh3", "Errors.User.UserIDMissing"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-VDrh3", "Errors.User.UserIDMissing"),
},
},
{
@@ -734,7 +734,7 @@ func TestCheckOTPSMS(t *testing.T) {
code: "code",
},
res: res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-SF3tv", "Errors.User.Code.NotFound"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-SF3tv", "Errors.User.Code.NotFound"),
},
},
{
@@ -758,7 +758,7 @@ func TestCheckOTPSMS(t *testing.T) {
code: "code",
},
res: res{
- err: caos_errs.ThrowPreconditionFailed(nil, "CODE-QvUQ4P", "Errors.User.Code.Expired"),
+ err: zerrors.ThrowPreconditionFailed(nil, "CODE-QvUQ4P", "Errors.User.Code.Expired"),
},
},
{
@@ -848,7 +848,7 @@ func TestCheckOTPEmail(t *testing.T) {
code: "code",
},
res: res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-ejo2w", "Errors.User.UserIDMissing"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-ejo2w", "Errors.User.UserIDMissing"),
},
},
{
@@ -862,7 +862,7 @@ func TestCheckOTPEmail(t *testing.T) {
code: "code",
},
res: res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-zF3g3", "Errors.User.Code.NotFound"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-zF3g3", "Errors.User.Code.NotFound"),
},
},
{
@@ -886,7 +886,7 @@ func TestCheckOTPEmail(t *testing.T) {
code: "code",
},
res: res{
- err: caos_errs.ThrowPreconditionFailed(nil, "CODE-QvUQ4P", "Errors.User.Code.Expired"),
+ err: zerrors.ThrowPreconditionFailed(nil, "CODE-QvUQ4P", "Errors.User.Code.Expired"),
},
},
{
diff --git a/internal/command/session_test.go b/internal/command/session_test.go
index b4f6c8123e..16308432b3 100644
--- a/internal/command/session_test.go
+++ b/internal/command/session_test.go
@@ -18,13 +18,13 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/id"
"github.com/zitadel/zitadel/internal/id/mock"
"github.com/zitadel/zitadel/internal/repository/idpintent"
"github.com/zitadel/zitadel/internal/repository/session"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestSessionCommands_getHumanWriteModel(t *testing.T) {
@@ -51,7 +51,7 @@ func TestSessionCommands_getHumanWriteModel(t *testing.T) {
},
res: res{
want: nil,
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-eeR2e", "Errors.User.UserIDMissing"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-eeR2e", "Errors.User.UserIDMissing"),
},
},
{
@@ -95,7 +95,7 @@ func TestSessionCommands_getHumanWriteModel(t *testing.T) {
},
res: res{
want: nil,
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Df4b3", "Errors.User.NotFound"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-Df4b3", "Errors.User.NotFound"),
},
},
{
@@ -168,14 +168,14 @@ func TestCommands_CreateSession(t *testing.T) {
{
"id generator fails",
fields{
- idGenerator: mock.NewIDGeneratorExpectError(t, caos_errs.ThrowInternal(nil, "id", "generator failed")),
+ idGenerator: mock.NewIDGeneratorExpectError(t, zerrors.ThrowInternal(nil, "id", "generator failed")),
},
args{
ctx: context.Background(),
},
[]expect{},
res{
- err: caos_errs.ThrowInternal(nil, "id", "generator failed"),
+ err: zerrors.ThrowInternal(nil, "id", "generator failed"),
},
},
{
@@ -187,10 +187,10 @@ func TestCommands_CreateSession(t *testing.T) {
ctx: context.Background(),
},
[]expect{
- expectFilterError(caos_errs.ThrowInternal(nil, "id", "filter failed")),
+ expectFilterError(zerrors.ThrowInternal(nil, "id", "filter failed")),
},
res{
- err: caos_errs.ThrowInternal(nil, "id", "filter failed"),
+ err: zerrors.ThrowInternal(nil, "id", "filter failed"),
},
},
{
@@ -217,7 +217,7 @@ func TestCommands_CreateSession(t *testing.T) {
expectFilter(),
},
res{
- err: caos_errs.ThrowInvalidArgument(nil, "COMMAND-asEG4", "Errors.Session.PositiveLifetime"),
+ err: zerrors.ThrowInvalidArgument(nil, "COMMAND-asEG4", "Errors.Session.PositiveLifetime"),
},
},
{
@@ -309,14 +309,14 @@ func TestCommands_UpdateSession(t *testing.T) {
"eventstore failed",
fields{
eventstore: eventstoreExpect(t,
- expectFilterError(caos_errs.ThrowInternal(nil, "id", "filter failed")),
+ expectFilterError(zerrors.ThrowInternal(nil, "id", "filter failed")),
),
},
args{
ctx: context.Background(),
},
res{
- err: caos_errs.ThrowInternal(nil, "id", "filter failed"),
+ err: zerrors.ThrowInternal(nil, "id", "filter failed"),
},
},
{
@@ -347,7 +347,7 @@ func TestCommands_UpdateSession(t *testing.T) {
sessionToken: "invalid",
},
res{
- err: caos_errs.ThrowPermissionDenied(nil, "COMMAND-sGr42", "Errors.Session.Token.Invalid"),
+ err: zerrors.ThrowPermissionDenied(nil, "COMMAND-sGr42", "Errors.Session.Token.Invalid"),
},
},
{
@@ -450,7 +450,7 @@ func TestCommands_updateSession(t *testing.T) {
},
},
res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Hewfq", "Errors.Session.Terminated"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-Hewfq", "Errors.Session.Terminated"),
},
},
{
@@ -464,13 +464,13 @@ func TestCommands_updateSession(t *testing.T) {
sessionWriteModel: NewSessionWriteModel("sessionID", "instance1"),
sessionCommands: []SessionCommand{
func(ctx context.Context, cmd *SessionCommands) error {
- return caos_errs.ThrowInternal(nil, "id", "check failed")
+ return zerrors.ThrowInternal(nil, "id", "check failed")
},
},
},
},
res{
- err: caos_errs.ThrowInternal(nil, "id", "check failed"),
+ err: zerrors.ThrowInternal(nil, "id", "check failed"),
},
},
{
@@ -487,11 +487,9 @@ func TestCommands_updateSession(t *testing.T) {
},
res{
want: &SessionChanged{
- ObjectDetails: &domain.ObjectDetails{
- ResourceOwner: "instance1",
- },
- ID: "sessionID",
- NewToken: "",
+ ObjectDetails: &domain.ObjectDetails{},
+ ID: "sessionID",
+ NewToken: "",
},
},
},
@@ -518,7 +516,7 @@ func TestCommands_updateSession(t *testing.T) {
lifetime: -10 * time.Minute,
},
res{
- err: caos_errs.ThrowInvalidArgument(nil, "COMMAND-asEG4", "Errors.Session.PositiveLifetime"),
+ err: zerrors.ThrowInvalidArgument(nil, "COMMAND-asEG4", "Errors.Session.PositiveLifetime"),
},
},
{
@@ -662,7 +660,7 @@ func TestCommands_updateSession(t *testing.T) {
},
},
res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Df4bw", "Errors.Intent.NotSucceeded"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-Df4bw", "Errors.Intent.NotSucceeded"),
},
},
{
@@ -711,7 +709,7 @@ func TestCommands_updateSession(t *testing.T) {
},
},
res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-O8xk3w", "Errors.Intent.OtherUser"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-O8xk3w", "Errors.Intent.OtherUser"),
},
},
{
@@ -743,7 +741,7 @@ func TestCommands_updateSession(t *testing.T) {
},
},
res{
- err: caos_errs.ThrowPermissionDenied(nil, "CRYPTO-CRYPTO", "Errors.Intent.InvalidToken"),
+ err: zerrors.ThrowPermissionDenied(nil, "CRYPTO-CRYPTO", "Errors.Intent.InvalidToken"),
},
},
{
@@ -859,7 +857,7 @@ func TestCheckTOTP(t *testing.T) {
},
eventstore: expectEventstore(),
},
- wantErr: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Neil7", "Errors.User.UserIDMissing"),
+ wantErr: zerrors.ThrowPreconditionFailed(nil, "COMMAND-Neil7", "Errors.User.UserIDMissing"),
},
{
name: "filter error",
@@ -893,7 +891,7 @@ func TestCheckTOTP(t *testing.T) {
),
),
},
- wantErr: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-eej1U", "Errors.User.MFA.OTP.NotReady"),
+ wantErr: zerrors.ThrowPreconditionFailed(nil, "COMMAND-eej1U", "Errors.User.MFA.OTP.NotReady"),
},
{
name: "otp verify error",
@@ -915,7 +913,7 @@ func TestCheckTOTP(t *testing.T) {
),
),
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "EVENT-8isk2", "Errors.User.MFA.OTP.InvalidCode"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "EVENT-8isk2", "Errors.User.MFA.OTP.InvalidCode"),
},
{
name: "ok",
@@ -982,14 +980,14 @@ func TestCommands_TerminateSession(t *testing.T) {
"eventstore failed",
fields{
eventstore: expectEventstore(
- expectFilterError(caos_errs.ThrowInternal(nil, "id", "filter failed")),
+ expectFilterError(zerrors.ThrowInternal(nil, "id", "filter failed")),
),
},
args{
ctx: context.Background(),
},
res{
- err: caos_errs.ThrowInternal(nil, "id", "filter failed"),
+ err: zerrors.ThrowInternal(nil, "id", "filter failed"),
},
},
{
@@ -1020,7 +1018,7 @@ func TestCommands_TerminateSession(t *testing.T) {
sessionToken: "invalid",
},
res{
- err: caos_errs.ThrowPermissionDenied(nil, "COMMAND-sGr42", "Errors.Session.Token.Invalid"),
+ err: zerrors.ThrowPermissionDenied(nil, "COMMAND-sGr42", "Errors.Session.Token.Invalid"),
},
},
{
@@ -1051,7 +1049,7 @@ func TestCommands_TerminateSession(t *testing.T) {
sessionToken: "",
},
res{
- err: caos_errs.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
+ err: zerrors.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
},
},
{
@@ -1112,7 +1110,7 @@ func TestCommands_TerminateSession(t *testing.T) {
),
),
expectPushFailed(
- caos_errs.ThrowInternal(nil, "id", "pushed failed"),
+ zerrors.ThrowInternal(nil, "id", "pushed failed"),
session.NewTerminateEvent(context.Background(), &session.NewAggregate("sessionID", "instance1").Aggregate),
),
),
@@ -1126,7 +1124,7 @@ func TestCommands_TerminateSession(t *testing.T) {
sessionToken: "token",
},
res{
- err: caos_errs.ThrowInternal(nil, "id", "pushed failed"),
+ err: zerrors.ThrowInternal(nil, "id", "pushed failed"),
},
},
{
@@ -1251,6 +1249,52 @@ func TestCommands_TerminateSession(t *testing.T) {
},
},
},
+ {
+ "terminate session owned by org with permission",
+ fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ session.NewAddedEvent(context.Background(),
+ &session.NewAggregate("sessionID", "instance1").Aggregate,
+ &domain.UserAgent{
+ FingerprintID: gu.Ptr("fp1"),
+ IP: net.ParseIP("1.2.3.4"),
+ Description: gu.Ptr("firefox"),
+ Header: http.Header{"foo": []string{"bar"}},
+ },
+ ),
+ ),
+ eventFromEventPusher(
+ session.NewUserCheckedEvent(context.Background(), &session.NewAggregate("sessionID", "org2").Aggregate,
+ "userID", "", testNow),
+ ),
+ eventFromEventPusher(
+ session.NewTokenSetEvent(context.Background(), &session.NewAggregate("sessionID", "org2").Aggregate,
+ "tokenID"),
+ ),
+ ),
+ expectFilter(
+ user.NewHumanAddedEvent(context.Background(), &user.NewAggregate("userID", "org1").Aggregate,
+ "username", "firstname", "lastname", "nickname", "displayname", language.English, domain.GenderUnspecified, "email", false),
+ ),
+ expectPush(
+ session.NewTerminateEvent(authz.NewMockContext("instance1", "org1", "admin1"), &session.NewAggregate("sessionID", "instance1").Aggregate),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args{
+ ctx: authz.NewMockContext("instance1", "org1", "admin1"),
+ sessionID: "sessionID",
+ sessionToken: "",
+ },
+ res{
+ want: &domain.ObjectDetails{
+ ResourceOwner: "instance1",
+ },
+ },
+ },
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
diff --git a/internal/command/session_webauhtn.go b/internal/command/session_webauhtn.go
index 991a519886..680b641a55 100644
--- a/internal/command/session_webauhtn.go
+++ b/internal/command/session_webauhtn.go
@@ -5,7 +5,7 @@ import (
"encoding/json"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type humanWebAuthNTokens struct {
@@ -51,7 +51,7 @@ func (c *Commands) CreateWebAuthNChallenge(userVerification domain.UserVerificat
return err
}
if err = json.Unmarshal(webAuthNLogin.CredentialAssertionData, dst); err != nil {
- return caos_errs.ThrowInternal(err, "COMMAND-Yah6A", "Errors.Internal")
+ return zerrors.ThrowInternal(err, "COMMAND-Yah6A", "Errors.Internal")
}
cmd.WebAuthNChallenged(ctx, webAuthNLogin.Challenge, webAuthNLogin.AllowedCredentialIDs, webAuthNLogin.UserVerification, rpid)
@@ -63,11 +63,11 @@ func (c *Commands) CheckWebAuthN(credentialAssertionData json.Marshaler) Session
return func(ctx context.Context, cmd *SessionCommands) error {
credentialAssertionData, err := json.Marshal(credentialAssertionData)
if err != nil {
- return caos_errs.ThrowInternal(err, "COMMAND-ohG2o", "Errors.Internal")
+ return zerrors.ThrowInternal(err, "COMMAND-ohG2o", "Errors.Internal")
}
challenge := cmd.sessionWriteModel.WebAuthNChallenge
if challenge == nil {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Ioqu5", "Errors.Session.WebAuthN.NoChallenge")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-Ioqu5", "Errors.Session.WebAuthN.NoChallenge")
}
webAuthNTokens, err := cmd.getHumanWebAuthNTokens(ctx, challenge.UserVerification)
if err != nil {
@@ -81,7 +81,7 @@ func (c *Commands) CheckWebAuthN(credentialAssertionData json.Marshaler) Session
}
_, token := domain.GetTokenByKeyID(webAuthNTokens.tokens, credential.ID)
if token == nil {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Aej7i", "Errors.User.WebAuthN.NotFound")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-Aej7i", "Errors.User.WebAuthN.NotFound")
}
cmd.WebAuthNChecked(ctx, cmd.now(), token.WebAuthNTokenID, credential.Authenticator.SignCount, credential.Flags.UserVerified)
return nil
diff --git a/internal/command/session_webauthn_test.go b/internal/command/session_webauthn_test.go
index 3352286eb2..e649cb6c37 100644
--- a/internal/command/session_webauthn_test.go
+++ b/internal/command/session_webauthn_test.go
@@ -10,11 +10,11 @@ import (
"golang.org/x/text/language"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestSessionCommands_getHumanWebAuthNTokens(t *testing.T) {
@@ -48,7 +48,7 @@ func TestSessionCommands_getHumanWebAuthNTokens(t *testing.T) {
},
res: res{
want: nil,
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-eeR2e", "Errors.User.UserIDMissing"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-eeR2e", "Errors.User.UserIDMissing"),
},
},
{
diff --git a/internal/command/sms_config.go b/internal/command/sms_config.go
index 0d37d2b12f..cd5e38e518 100644
--- a/internal/command/sms_config.go
+++ b/internal/command/sms_config.go
@@ -5,9 +5,9 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/notification/channels/twilio"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddSMSConfigTwilio(ctx context.Context, instanceID string, config *twilio.Config) (string, *domain.ObjectDetails, error) {
@@ -48,14 +48,14 @@ func (c *Commands) AddSMSConfigTwilio(ctx context.Context, instanceID string, co
func (c *Commands) ChangeSMSConfigTwilio(ctx context.Context, instanceID, id string, config *twilio.Config) (*domain.ObjectDetails, error) {
if id == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "SMS-e9jwf", "Errors.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "SMS-e9jwf", "Errors.IDMissing")
}
smsConfigWriteModel, err := c.getSMSConfig(ctx, instanceID, id)
if err != nil {
return nil, err
}
if !smsConfigWriteModel.State.Exists() || smsConfigWriteModel.Twilio == nil {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-2m9fw", "Errors.SMSConfig.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-2m9fw", "Errors.SMSConfig.NotFound")
}
iamAgg := InstanceAggregateFromWriteModel(&smsConfigWriteModel.WriteModel)
@@ -69,7 +69,7 @@ func (c *Commands) ChangeSMSConfigTwilio(ctx context.Context, instanceID, id str
return nil, err
}
if !hasChanged {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-jf9wk", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-jf9wk", "Errors.NoChangesFound")
}
pushedEvents, err := c.eventstore.Push(ctx, changedEvent)
if err != nil {
@@ -88,7 +88,7 @@ func (c *Commands) ChangeSMSConfigTwilioToken(ctx context.Context, instanceID, i
return nil, err
}
if !smsConfigWriteModel.State.Exists() || smsConfigWriteModel.Twilio == nil {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-fj9wf", "Errors.SMSConfig.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-fj9wf", "Errors.SMSConfig.NotFound")
}
iamAgg := InstanceAggregateFromWriteModel(&smsConfigWriteModel.WriteModel)
newtoken, err := crypto.Encrypt([]byte(token), c.smsEncryption)
@@ -112,7 +112,7 @@ func (c *Commands) ChangeSMSConfigTwilioToken(ctx context.Context, instanceID, i
func (c *Commands) ActivateSMSConfig(ctx context.Context, instanceID, id string) (*domain.ObjectDetails, error) {
if id == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "SMS-dn93n", "Errors.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "SMS-dn93n", "Errors.IDMissing")
}
smsConfigWriteModel, err := c.getSMSConfig(ctx, instanceID, id)
if err != nil {
@@ -120,10 +120,10 @@ func (c *Commands) ActivateSMSConfig(ctx context.Context, instanceID, id string)
}
if !smsConfigWriteModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-sn9we", "Errors.SMSConfig.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-sn9we", "Errors.SMSConfig.NotFound")
}
if smsConfigWriteModel.State == domain.SMSConfigStateActive {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-sn9we", "Errors.SMSConfig.AlreadyActive")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-sn9we", "Errors.SMSConfig.AlreadyActive")
}
iamAgg := InstanceAggregateFromWriteModel(&smsConfigWriteModel.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, instance.NewSMSConfigTwilioActivatedEvent(
@@ -142,17 +142,17 @@ func (c *Commands) ActivateSMSConfig(ctx context.Context, instanceID, id string)
func (c *Commands) DeactivateSMSConfig(ctx context.Context, instanceID, id string) (*domain.ObjectDetails, error) {
if id == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "SMS-frkwf", "Errors.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "SMS-frkwf", "Errors.IDMissing")
}
smsConfigWriteModel, err := c.getSMSConfig(ctx, instanceID, id)
if err != nil {
return nil, err
}
if !smsConfigWriteModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-s39Kg", "Errors.SMSConfig.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-s39Kg", "Errors.SMSConfig.NotFound")
}
if smsConfigWriteModel.State == domain.SMSConfigStateInactive {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-dm9e3", "Errors.SMSConfig.AlreadyDeactivated")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-dm9e3", "Errors.SMSConfig.AlreadyDeactivated")
}
iamAgg := InstanceAggregateFromWriteModel(&smsConfigWriteModel.WriteModel)
@@ -172,14 +172,14 @@ func (c *Commands) DeactivateSMSConfig(ctx context.Context, instanceID, id strin
func (c *Commands) RemoveSMSConfig(ctx context.Context, instanceID, id string) (*domain.ObjectDetails, error) {
if id == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "SMS-3j9fs", "Errors.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "SMS-3j9fs", "Errors.IDMissing")
}
smsConfigWriteModel, err := c.getSMSConfig(ctx, instanceID, id)
if err != nil {
return nil, err
}
if !smsConfigWriteModel.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-sn9we", "Errors.SMSConfig.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-sn9we", "Errors.SMSConfig.NotFound")
}
iamAgg := InstanceAggregateFromWriteModel(&smsConfigWriteModel.WriteModel)
diff --git a/internal/command/sms_config_test.go b/internal/command/sms_config_test.go
index 49a476d1da..b79ab25519 100644
--- a/internal/command/sms_config_test.go
+++ b/internal/command/sms_config_test.go
@@ -9,12 +9,12 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/id"
id_mock "github.com/zitadel/zitadel/internal/id/mock"
"github.com/zitadel/zitadel/internal/notification/channels/twilio"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddSMSConfigTwilio(t *testing.T) {
@@ -132,7 +132,7 @@ func TestCommandSide_ChangeSMSConfigTwilio(t *testing.T) {
sms: &twilio.Config{},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -150,7 +150,7 @@ func TestCommandSide_ChangeSMSConfigTwilio(t *testing.T) {
id: "id",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -188,7 +188,7 @@ func TestCommandSide_ChangeSMSConfigTwilio(t *testing.T) {
id: "providerid",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -289,7 +289,7 @@ func TestCommandSide_ActivateSMSConfigTwilio(t *testing.T) {
ctx: context.Background(),
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -306,7 +306,7 @@ func TestCommandSide_ActivateSMSConfigTwilio(t *testing.T) {
id: "id",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -396,7 +396,7 @@ func TestCommandSide_DeactivateSMSConfigTwilio(t *testing.T) {
ctx: context.Background(),
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -413,7 +413,7 @@ func TestCommandSide_DeactivateSMSConfigTwilio(t *testing.T) {
id: "id",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -510,7 +510,7 @@ func TestCommandSide_RemoveSMSConfig(t *testing.T) {
ctx: context.Background(),
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -527,7 +527,7 @@ func TestCommandSide_RemoveSMSConfig(t *testing.T) {
id: "id",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
diff --git a/internal/command/smtp.go b/internal/command/smtp.go
index 2f7ea95f22..c52dd98f0c 100644
--- a/internal/command/smtp.go
+++ b/internal/command/smtp.go
@@ -9,10 +9,10 @@ import (
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/notification/channels/smtp"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddSMTPConfig(ctx context.Context, config *smtp.Config) (*domain.ObjectDetails, error) {
@@ -58,7 +58,7 @@ func (c *Commands) ChangeSMTPConfigPassword(ctx context.Context, password string
return nil, err
}
if smtpConfigWriteModel.State != domain.SMTPConfigStateActive {
- return nil, errors.ThrowNotFound(nil, "COMMAND-3n9ls", "Errors.SMTPConfig.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-3n9ls", "Errors.SMTPConfig.NotFound")
}
var smtpPassword *crypto.CryptoValue
if password != "" {
@@ -102,14 +102,14 @@ func (c *Commands) RemoveSMTPConfig(ctx context.Context) (*domain.ObjectDetails,
func (c *Commands) prepareAddSMTPConfig(a *instance.Aggregate, from, name, replyTo, hostAndPort, user string, password []byte, tls bool) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if from = strings.TrimSpace(from); from == "" {
- return nil, errors.ThrowInvalidArgument(nil, "INST-mruNY", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-mruNY", "Errors.Invalid.Argument")
}
replyTo = strings.TrimSpace(replyTo)
hostAndPort = strings.TrimSpace(hostAndPort)
if _, _, err := net.SplitHostPort(hostAndPort); err != nil {
- return nil, errors.ThrowInvalidArgument(nil, "INST-9JdRe", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-9JdRe", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
fromSplitted := strings.Split(from, "@")
@@ -119,7 +119,7 @@ func (c *Commands) prepareAddSMTPConfig(a *instance.Aggregate, from, name, reply
return nil, err
}
if writeModel.State == domain.SMTPConfigStateActive {
- return nil, errors.ThrowAlreadyExists(nil, "INST-W3VS2", "Errors.SMTPConfig.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "INST-W3VS2", "Errors.SMTPConfig.AlreadyExists")
}
err = checkSenderAddress(writeModel)
if err != nil {
@@ -152,13 +152,13 @@ func (c *Commands) prepareAddSMTPConfig(a *instance.Aggregate, from, name, reply
func (c *Commands) prepareChangeSMTPConfig(a *instance.Aggregate, from, name, replyTo, hostAndPort, user string, tls bool) preparation.Validation {
return func() (preparation.CreateCommands, error) {
if from = strings.TrimSpace(from); from == "" {
- return nil, errors.ThrowInvalidArgument(nil, "INST-ASv2d", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-ASv2d", "Errors.Invalid.Argument")
}
replyTo = strings.TrimSpace(replyTo)
hostAndPort = strings.TrimSpace(hostAndPort)
if _, _, err := net.SplitHostPort(hostAndPort); err != nil {
- return nil, errors.ThrowInvalidArgument(nil, "INST-Kv875", "Errors.Invalid.Argument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "INST-Kv875", "Errors.Invalid.Argument")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
fromSplitted := strings.Split(from, "@")
@@ -168,7 +168,7 @@ func (c *Commands) prepareChangeSMTPConfig(a *instance.Aggregate, from, name, re
return nil, err
}
if writeModel.State != domain.SMTPConfigStateActive {
- return nil, errors.ThrowNotFound(nil, "INST-Svq1a", "Errors.SMTPConfig.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INST-Svq1a", "Errors.SMTPConfig.NotFound")
}
err = checkSenderAddress(writeModel)
if err != nil {
@@ -188,7 +188,7 @@ func (c *Commands) prepareChangeSMTPConfig(a *instance.Aggregate, from, name, re
return nil, err
}
if !hasChanged {
- return nil, errors.ThrowPreconditionFailed(nil, "COMMAND-m0o3f", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-m0o3f", "Errors.NoChangesFound")
}
return []eventstore.Command{
changedEvent,
@@ -205,7 +205,7 @@ func (c *Commands) prepareRemoveSMTPConfig(a *instance.Aggregate) preparation.Va
return nil, err
}
if writeModel.State != domain.SMTPConfigStateActive {
- return nil, errors.ThrowNotFound(nil, "INST-Sfefg", "Errors.SMTPConfig.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "INST-Sfefg", "Errors.SMTPConfig.NotFound")
}
return []eventstore.Command{
instance.NewSMTPConfigRemovedEvent(ctx, &a.Aggregate),
@@ -219,7 +219,7 @@ func checkSenderAddress(writeModel *InstanceSMTPConfigWriteModel) error {
return nil
}
if !writeModel.domainState.Exists() {
- return errors.ThrowInvalidArgument(nil, "INST-83nl8", "Errors.SMTPConfig.SenderAdressNotCustomDomain")
+ return zerrors.ThrowInvalidArgument(nil, "INST-83nl8", "Errors.SMTPConfig.SenderAdressNotCustomDomain")
}
return nil
}
diff --git a/internal/command/smtp_test.go b/internal/command/smtp_test.go
index 10a7aff441..bb46968da6 100644
--- a/internal/command/smtp_test.go
+++ b/internal/command/smtp_test.go
@@ -10,10 +10,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/notification/channels/smtp"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddSMTPConfig(t *testing.T) {
@@ -66,7 +66,7 @@ func TestCommandSide_AddSMTPConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -118,7 +118,7 @@ func TestCommandSide_AddSMTPConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
{
@@ -261,7 +261,7 @@ func TestCommandSide_AddSMTPConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -283,7 +283,7 @@ func TestCommandSide_AddSMTPConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -397,7 +397,7 @@ func TestCommandSide_ChangeSMTPConfig(t *testing.T) {
smtp: &smtp.Config{},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -421,7 +421,7 @@ func TestCommandSide_ChangeSMTPConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -472,7 +472,7 @@ func TestCommandSide_ChangeSMTPConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -523,7 +523,7 @@ func TestCommandSide_ChangeSMTPConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -610,7 +610,7 @@ func TestCommandSide_ChangeSMTPConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -632,7 +632,7 @@ func TestCommandSide_ChangeSMTPConfig(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -752,7 +752,7 @@ func TestCommandSide_ChangeSMTPConfigPassword(t *testing.T) {
password: "",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -851,7 +851,7 @@ func TestCommandSide_RemoveSMTPConfig(t *testing.T) {
ctx: context.Background(),
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
diff --git a/internal/command/unique_constraints_model.go b/internal/command/unique_constraints_model.go
index 9b71b0e7a1..d70b621b27 100644
--- a/internal/command/unique_constraints_model.go
+++ b/internal/command/unique_constraints_model.go
@@ -2,303 +2,8 @@ package command
import (
"context"
-
- "github.com/zitadel/logging"
-
- "github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/eventstore"
- "github.com/zitadel/zitadel/internal/repository/idpconfig"
- "github.com/zitadel/zitadel/internal/repository/instance"
- "github.com/zitadel/zitadel/internal/repository/member"
- "github.com/zitadel/zitadel/internal/repository/org"
- "github.com/zitadel/zitadel/internal/repository/policy"
- "github.com/zitadel/zitadel/internal/repository/project"
- "github.com/zitadel/zitadel/internal/repository/user"
- "github.com/zitadel/zitadel/internal/repository/usergrant"
)
-type UniqueConstraintReadModel struct {
- eventstore.WriteModel
-
- UniqueConstraints []*domain.UniqueConstraintMigration
- commandProvider commandProvider
- ctx context.Context
-}
-
type commandProvider interface {
- getOrgDomainPolicy(ctx context.Context, orgID string) (*domain.DomainPolicy, error)
-}
-
-func NewUniqueConstraintReadModel(ctx context.Context, provider commandProvider) *UniqueConstraintReadModel {
- return &UniqueConstraintReadModel{
- ctx: ctx,
- commandProvider: provider,
- }
-}
-
-func (rm *UniqueConstraintReadModel) AppendEvents(events ...eventstore.Event) {
- rm.WriteModel.AppendEvents(events...)
-}
-
-func (rm *UniqueConstraintReadModel) Reduce() error {
- for _, event := range rm.Events {
- switch e := event.(type) {
- case *org.OrgAddedEvent:
- rm.addUniqueConstraint(e.Aggregate().ID, e.Aggregate().ID, org.NewAddOrgNameUniqueConstraint(e.Name))
- case *org.OrgChangedEvent:
- rm.changeUniqueConstraint(e.Aggregate().ID, e.Aggregate().ID, org.NewAddOrgNameUniqueConstraint(e.Name))
- case *org.DomainVerifiedEvent:
- rm.addUniqueConstraint(e.Aggregate().ID, e.Aggregate().ID, org.NewAddOrgDomainUniqueConstraint(e.Domain))
- case *org.DomainRemovedEvent:
- rm.removeUniqueConstraint(e.Aggregate().ID, e.Aggregate().ID, org.UniqueOrgDomain)
- case *instance.IDPConfigAddedEvent:
- rm.addUniqueConstraint(e.Aggregate().ID, e.ConfigID, idpconfig.NewAddIDPConfigNameUniqueConstraint(e.Name, e.Aggregate().ResourceOwner))
- case *instance.IDPConfigChangedEvent:
- if e.Name == nil {
- continue
- }
- rm.changeUniqueConstraint(e.Aggregate().ID, e.ConfigID, idpconfig.NewAddIDPConfigNameUniqueConstraint(*e.Name, e.Aggregate().ResourceOwner))
- case *instance.IDPConfigRemovedEvent:
- rm.removeUniqueConstraint(e.Aggregate().ID, e.ConfigID, idpconfig.UniqueIDPConfigNameType)
- case *org.IDPConfigAddedEvent:
- rm.addUniqueConstraint(e.Aggregate().ID, e.ConfigID, idpconfig.NewAddIDPConfigNameUniqueConstraint(e.Name, e.Aggregate().ResourceOwner))
- case *org.IDPConfigChangedEvent:
- if e.Name == nil {
- continue
- }
- rm.changeUniqueConstraint(e.Aggregate().ID, e.ConfigID, idpconfig.NewAddIDPConfigNameUniqueConstraint(*e.Name, e.Aggregate().ResourceOwner))
- case *org.IDPConfigRemovedEvent:
- rm.removeUniqueConstraint(e.Aggregate().ID, e.ConfigID, idpconfig.UniqueIDPConfigNameType)
- case *instance.MailTextAddedEvent:
- rm.addUniqueConstraint(e.Aggregate().ID, e.MailTextType+e.Language, policy.NewAddMailTextUniqueConstraint(e.Aggregate().ID, e.MailTextType, e.Language))
- case *org.MailTextAddedEvent:
- rm.addUniqueConstraint(e.Aggregate().ID, e.MailTextType+e.Language, policy.NewAddMailTextUniqueConstraint(e.Aggregate().ID, e.MailTextType, e.Language))
- case *org.MailTextRemovedEvent:
- rm.removeUniqueConstraint(e.Aggregate().ID, e.MailTextType+e.Language, policy.UniqueMailText)
- case *project.ProjectAddedEvent:
- rm.addUniqueConstraint(e.Aggregate().ID, e.Aggregate().ID, project.NewAddProjectNameUniqueConstraint(e.Name, e.Aggregate().ResourceOwner))
- case *project.ProjectChangeEvent:
- if e.Name == nil {
- continue
- }
- rm.changeUniqueConstraint(e.Aggregate().ID, e.Aggregate().ID, project.NewAddProjectNameUniqueConstraint(*e.Name, e.Aggregate().ResourceOwner))
- case *project.ProjectRemovedEvent:
- rm.removeUniqueConstraint(e.Aggregate().ID, e.Aggregate().ID, project.UniqueProjectnameType)
- rm.listRemoveUniqueConstraint(e.Aggregate().ID, project.UniqueAppNameType)
- rm.listRemoveUniqueConstraint(e.Aggregate().ID, member.UniqueMember)
- rm.listRemoveUniqueConstraint(e.Aggregate().ID, project.UniqueRoleType)
- rm.listRemoveUniqueConstraint(e.Aggregate().ID, project.UniqueGrantType)
- rm.listRemoveUniqueConstraint(e.Aggregate().ID, project.UniqueProjectGrantMemberType)
- case *project.ApplicationAddedEvent:
- rm.addUniqueConstraint(e.Aggregate().ID, e.AppID, project.NewAddApplicationUniqueConstraint(e.Name, e.Aggregate().ID))
- case *project.ApplicationChangedEvent:
- rm.changeUniqueConstraint(e.Aggregate().ID, e.AppID, project.NewAddApplicationUniqueConstraint(e.Name, e.Aggregate().ID))
- case *project.SAMLConfigAddedEvent:
- rm.addUniqueConstraint(e.Aggregate().ID, e.AppID, project.NewAddSAMLConfigEntityIDUniqueConstraint(e.EntityID))
- case *project.SAMLConfigChangedEvent:
- rm.addUniqueConstraint(e.Aggregate().ID, e.AppID, project.NewRemoveSAMLConfigEntityIDUniqueConstraint(e.EntityID))
- case *project.ApplicationRemovedEvent:
- rm.removeUniqueConstraint(e.Aggregate().ID, e.AppID, project.UniqueAppNameType)
- case *project.GrantAddedEvent:
- rm.addUniqueConstraint(e.Aggregate().ID, e.GrantID, project.NewAddProjectGrantUniqueConstraint(e.GrantedOrgID, e.Aggregate().ID))
- case *project.GrantRemovedEvent:
- rm.removeUniqueConstraint(e.Aggregate().ID, e.GrantID, project.UniqueGrantType)
- case *project.GrantMemberAddedEvent:
- rm.addUniqueConstraint(e.Aggregate().ID, e.GrantID+e.UserID, project.NewAddProjectGrantMemberUniqueConstraint(e.Aggregate().ID, e.UserID, e.GrantID))
- case *project.GrantMemberRemovedEvent:
- rm.removeUniqueConstraint(e.Aggregate().ID, e.GrantID+e.UserID, project.UniqueProjectGrantMemberType)
- case *project.GrantMemberCascadeRemovedEvent:
- rm.removeUniqueConstraint(e.Aggregate().ID, e.GrantID+e.UserID, project.UniqueProjectGrantMemberType)
- case *project.RoleAddedEvent:
- rm.addUniqueConstraint(e.Aggregate().ID, e.Key, project.NewAddProjectRoleUniqueConstraint(e.Key, e.Aggregate().ID))
- case *project.RoleRemovedEvent:
- rm.removeUniqueConstraint(e.Aggregate().ID, e.Key, project.UniqueRoleType)
- case *user.HumanAddedEvent:
- policy, err := rm.commandProvider.getOrgDomainPolicy(rm.ctx, e.Aggregate().ResourceOwner)
- if err != nil {
- logging.Log("COMMAND-0k9Gs").WithError(err).Error("could not read policy for human added event unique constraint")
- continue
- }
- rm.addUniqueConstraint(e.Aggregate().ID, e.Aggregate().ID, user.NewAddUsernameUniqueConstraint(e.UserName, e.Aggregate().ResourceOwner, policy.UserLoginMustBeDomain))
- case *user.HumanRegisteredEvent:
- policy, err := rm.commandProvider.getOrgDomainPolicy(rm.ctx, e.Aggregate().ResourceOwner)
- if err != nil {
- logging.Log("COMMAND-m9fod").WithError(err).Error("could not read policy for human registered event unique constraint")
- continue
- }
- rm.addUniqueConstraint(e.Aggregate().ID, e.Aggregate().ID, user.NewAddUsernameUniqueConstraint(e.UserName, e.Aggregate().ResourceOwner, policy.UserLoginMustBeDomain))
- case *user.MachineAddedEvent:
- policy, err := rm.commandProvider.getOrgDomainPolicy(rm.ctx, e.Aggregate().ResourceOwner)
- if err != nil {
- logging.Log("COMMAND-2n8vs").WithError(err).Error("could not read policy for machine added event unique constraint")
- continue
- }
- rm.addUniqueConstraint(e.Aggregate().ID, e.Aggregate().ID, user.NewAddUsernameUniqueConstraint(e.UserName, e.Aggregate().ResourceOwner, policy.UserLoginMustBeDomain))
- case *user.UserRemovedEvent:
- rm.removeUniqueConstraint(e.Aggregate().ID, e.Aggregate().ID, user.UniqueUsername)
- rm.listRemoveUniqueConstraint(e.Aggregate().ID, user.UniqueUserIDPLinkType)
- case *user.UsernameChangedEvent:
- policy, err := rm.commandProvider.getOrgDomainPolicy(rm.ctx, e.Aggregate().ResourceOwner)
- if err != nil {
- logging.Log("COMMAND-5n8gk").WithError(err).Error("could not read policy for username changed event unique constraint")
- continue
- }
- rm.changeUniqueConstraint(e.Aggregate().ID, e.Aggregate().ID, user.NewAddUsernameUniqueConstraint(e.UserName, e.Aggregate().ResourceOwner, policy.UserLoginMustBeDomain))
- case *user.DomainClaimedEvent:
- policy, err := rm.commandProvider.getOrgDomainPolicy(rm.ctx, e.Aggregate().ResourceOwner)
- if err != nil {
- logging.Log("COMMAND-xb8uf").WithError(err).Error("could not read policy for domain claimed event unique constraint")
- continue
- }
- rm.changeUniqueConstraint(e.Aggregate().ID, e.Aggregate().ID, user.NewAddUsernameUniqueConstraint(e.UserName, e.Aggregate().ResourceOwner, policy.UserLoginMustBeDomain))
- case *user.UserIDPLinkAddedEvent:
- rm.addUniqueConstraint(e.Aggregate().ID, e.IDPConfigID+e.ExternalUserID, user.NewAddUserIDPLinkUniqueConstraint(e.IDPConfigID, e.ExternalUserID))
- case *user.UserIDPLinkRemovedEvent:
- rm.removeUniqueConstraint(e.Aggregate().ID, e.IDPConfigID+e.ExternalUserID, user.UniqueUserIDPLinkType)
- case *user.UserIDPLinkCascadeRemovedEvent:
- rm.removeUniqueConstraint(e.Aggregate().ID, e.IDPConfigID+e.ExternalUserID, user.UniqueUserIDPLinkType)
- case *usergrant.UserGrantAddedEvent:
- rm.addUniqueConstraint(e.Aggregate().ID, e.Aggregate().ID, usergrant.NewAddUserGrantUniqueConstraint(e.Aggregate().ResourceOwner, e.UserID, e.ProjectID, e.ProjectGrantID))
- case *usergrant.UserGrantRemovedEvent:
- rm.removeUniqueConstraint(e.Aggregate().ID, e.Aggregate().ID, usergrant.UniqueUserGrant)
- case *usergrant.UserGrantCascadeRemovedEvent:
- rm.removeUniqueConstraint(e.Aggregate().ID, e.Aggregate().ID, usergrant.UniqueUserGrant)
- case *instance.MemberAddedEvent:
- rm.addUniqueConstraint(e.Aggregate().ID, e.UserID, member.NewAddMemberUniqueConstraint(e.Aggregate().ID, e.UserID))
- case *instance.MemberRemovedEvent:
- rm.removeUniqueConstraint(e.Aggregate().ID, e.UserID, member.UniqueMember)
- case *instance.MemberCascadeRemovedEvent:
- rm.removeUniqueConstraint(e.Aggregate().ID, e.UserID, member.UniqueMember)
- case *org.MemberAddedEvent:
- rm.addUniqueConstraint(e.Aggregate().ID, e.UserID, member.NewAddMemberUniqueConstraint(e.Aggregate().ID, e.UserID))
- case *org.MemberRemovedEvent:
- rm.removeUniqueConstraint(e.Aggregate().ID, e.UserID, member.UniqueMember)
- case *org.MemberCascadeRemovedEvent:
- rm.removeUniqueConstraint(e.Aggregate().ID, e.UserID, member.UniqueMember)
- case *project.MemberAddedEvent:
- rm.addUniqueConstraint(e.Aggregate().ID, e.UserID, member.NewAddMemberUniqueConstraint(e.Aggregate().ID, e.UserID))
- case *project.MemberRemovedEvent:
- rm.removeUniqueConstraint(e.Aggregate().ID, e.UserID, member.UniqueMember)
- case *project.MemberCascadeRemovedEvent:
- rm.removeUniqueConstraint(e.Aggregate().ID, e.UserID, member.UniqueMember)
- }
- }
- return rm.WriteModel.Reduce()
-}
-
-func (rm *UniqueConstraintReadModel) Query() *eventstore.SearchQueryBuilder {
- return eventstore.NewSearchQueryBuilder(eventstore.ColumnsEvent).
- AddQuery().AggregateTypes(
- instance.AggregateType,
- org.AggregateType,
- project.AggregateType,
- user.AggregateType,
- usergrant.AggregateType).
- EventTypes(
- org.OrgAddedEventType,
- org.OrgChangedEventType,
- org.OrgDomainVerifiedEventType,
- org.OrgDomainRemovedEventType,
- instance.IDPConfigAddedEventType,
- instance.IDPConfigChangedEventType,
- instance.IDPConfigRemovedEventType,
- org.IDPConfigAddedEventType,
- org.IDPConfigChangedEventType,
- org.IDPConfigRemovedEventType,
- instance.MailTextAddedEventType,
- org.MailTextAddedEventType,
- org.MailTextRemovedEventType,
- project.ProjectAddedType,
- project.ProjectChangedType,
- project.ProjectRemovedType,
- project.ApplicationAddedType,
- project.ApplicationChangedType,
- project.ApplicationRemovedType,
- project.GrantAddedType,
- project.GrantRemovedType,
- project.GrantMemberAddedType,
- project.GrantMemberRemovedType,
- project.GrantMemberCascadeRemovedType,
- project.RoleAddedType,
- project.RoleRemovedType,
- user.UserV1AddedType,
- user.UserV1RegisteredType,
- user.HumanAddedType,
- user.HumanRegisteredType,
- user.MachineAddedEventType,
- user.UserUserNameChangedType,
- user.UserDomainClaimedType,
- user.UserRemovedType,
- user.UserIDPLinkAddedType,
- user.UserIDPLinkRemovedType,
- user.UserIDPLinkCascadeRemovedType,
- usergrant.UserGrantAddedType,
- usergrant.UserGrantRemovedType,
- usergrant.UserGrantCascadeRemovedType,
- instance.MemberAddedEventType,
- instance.MemberRemovedEventType,
- instance.MemberCascadeRemovedEventType,
- org.MemberAddedEventType,
- org.MemberRemovedEventType,
- org.MemberCascadeRemovedEventType,
- project.MemberAddedType,
- project.MemberRemovedType,
- project.MemberCascadeRemovedType).
- Builder()
-}
-
-func (rm *UniqueConstraintReadModel) getUniqueConstraint(aggregateID, objectID, constraintType string) *domain.UniqueConstraintMigration {
- for _, uniqueConstraint := range rm.UniqueConstraints {
- if uniqueConstraint.AggregateID == aggregateID && uniqueConstraint.ObjectID == objectID && uniqueConstraint.UniqueType == constraintType {
- return uniqueConstraint
- }
- }
- return nil
-}
-
-func (rm *UniqueConstraintReadModel) addUniqueConstraint(aggregateID, objectID string, constraint *eventstore.UniqueConstraint) {
- migrateUniqueConstraint := &domain.UniqueConstraintMigration{
- AggregateID: aggregateID,
- ObjectID: objectID,
- UniqueType: constraint.UniqueType,
- UniqueField: constraint.UniqueField,
- ErrorMessage: constraint.ErrorMessage,
- }
- rm.UniqueConstraints = append(rm.UniqueConstraints, migrateUniqueConstraint)
-}
-
-func (rm *UniqueConstraintReadModel) changeUniqueConstraint(aggregateID, objectID string, constraint *eventstore.UniqueConstraint) {
- for i, uniqueConstraint := range rm.UniqueConstraints {
- if uniqueConstraint.AggregateID == aggregateID && uniqueConstraint.ObjectID == objectID && uniqueConstraint.UniqueType == constraint.UniqueType {
- rm.UniqueConstraints[i] = &domain.UniqueConstraintMigration{
- AggregateID: aggregateID,
- ObjectID: objectID,
- UniqueType: constraint.UniqueType,
- UniqueField: constraint.UniqueField,
- ErrorMessage: constraint.ErrorMessage,
- }
- return
- }
- }
-}
-
-func (rm *UniqueConstraintReadModel) removeUniqueConstraint(aggregateID, objectID, constraintType string) {
- for i, uniqueConstraint := range rm.UniqueConstraints {
- if uniqueConstraint.AggregateID == aggregateID && uniqueConstraint.ObjectID == objectID && uniqueConstraint.UniqueType == constraintType {
- copy(rm.UniqueConstraints[i:], rm.UniqueConstraints[i+1:])
- rm.UniqueConstraints[len(rm.UniqueConstraints)-1] = nil
- rm.UniqueConstraints = rm.UniqueConstraints[:len(rm.UniqueConstraints)-1]
- return
- }
- }
-}
-
-func (rm *UniqueConstraintReadModel) listRemoveUniqueConstraint(aggregateID, constraintType string) {
- for i := len(rm.UniqueConstraints) - 1; i >= 0; i-- {
- if rm.UniqueConstraints[i].AggregateID == aggregateID && rm.UniqueConstraints[i].UniqueType == constraintType {
- copy(rm.UniqueConstraints[i:], rm.UniqueConstraints[i+1:])
- rm.UniqueConstraints[len(rm.UniqueConstraints)-1] = nil
- rm.UniqueConstraints = rm.UniqueConstraints[:len(rm.UniqueConstraints)-1]
- }
- }
+ domainPolicyWriteModel(ctx context.Context, orgID string) (*PolicyDomainWriteModel, error)
}
diff --git a/internal/command/user.go b/internal/command/user.go
index 15631a9609..19047cf2bc 100644
--- a/internal/command/user.go
+++ b/internal/command/user.go
@@ -12,17 +12,17 @@ import (
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/user"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) ChangeUsername(ctx context.Context, orgID, userID, userName string) (*domain.ObjectDetails, error) {
userName = strings.TrimSpace(userName)
if orgID == "" || userID == "" || userName == "" {
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-2N9fs", "Errors.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-2N9fs", "Errors.IDMissing")
}
existingUser, err := c.userWriteModelByID(ctx, userID, orgID)
@@ -31,16 +31,16 @@ func (c *Commands) ChangeUsername(ctx context.Context, orgID, userID, userName s
}
if !isUserStateExists(existingUser.UserState) {
- return nil, errors.ThrowNotFound(nil, "COMMAND-5N9ds", "Errors.User.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-5N9ds", "Errors.User.NotFound")
}
if existingUser.UserName == userName {
- return nil, errors.ThrowPreconditionFailed(nil, "COMMAND-6m9gs", "Errors.User.UsernameNotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-6m9gs", "Errors.User.UsernameNotChanged")
}
- domainPolicy, err := c.getOrgDomainPolicy(ctx, orgID)
+ domainPolicy, err := c.domainPolicyWriteModel(ctx, orgID)
if err != nil {
- return nil, errors.ThrowPreconditionFailed(err, "COMMAND-38fnu", "Errors.Org.DomainPolicy.NotExisting")
+ return nil, zerrors.ThrowPreconditionFailed(err, "COMMAND-38fnu", "Errors.Org.DomainPolicy.NotExisting")
}
if !domainPolicy.UserLoginMustBeDomain {
index := strings.LastIndex(userName, "@")
@@ -50,7 +50,7 @@ func (c *Commands) ChangeUsername(ctx context.Context, orgID, userID, userName s
return nil, err
}
if domainCheck.Verified && domainCheck.ResourceOwner != orgID {
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-Di2ei", "Errors.User.DomainNotAllowedAsUsername")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-Di2ei", "Errors.User.DomainNotAllowedAsUsername")
}
}
}
@@ -70,7 +70,7 @@ func (c *Commands) ChangeUsername(ctx context.Context, orgID, userID, userName s
func (c *Commands) DeactivateUser(ctx context.Context, userID, resourceOwner string) (*domain.ObjectDetails, error) {
if userID == "" {
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-m0gDf", "Errors.User.UserIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-m0gDf", "Errors.User.UserIDMissing")
}
existingUser, err := c.userWriteModelByID(ctx, userID, resourceOwner)
@@ -78,13 +78,13 @@ func (c *Commands) DeactivateUser(ctx context.Context, userID, resourceOwner str
return nil, err
}
if !isUserStateExists(existingUser.UserState) {
- return nil, errors.ThrowNotFound(nil, "COMMAND-3M9ds", "Errors.User.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-3M9ds", "Errors.User.NotFound")
}
if isUserStateInitial(existingUser.UserState) {
- return nil, errors.ThrowNotFound(nil, "COMMAND-ke0fw", "Errors.User.CantDeactivateInitial")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-ke0fw", "Errors.User.CantDeactivateInitial")
}
if isUserStateInactive(existingUser.UserState) {
- return nil, errors.ThrowPreconditionFailed(nil, "COMMAND-5M0sf", "Errors.User.AlreadyInactive")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-5M0sf", "Errors.User.AlreadyInactive")
}
pushedEvents, err := c.eventstore.Push(ctx,
@@ -101,7 +101,7 @@ func (c *Commands) DeactivateUser(ctx context.Context, userID, resourceOwner str
func (c *Commands) ReactivateUser(ctx context.Context, userID, resourceOwner string) (*domain.ObjectDetails, error) {
if userID == "" {
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-4M9ds", "Errors.User.UserIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-4M9ds", "Errors.User.UserIDMissing")
}
existingUser, err := c.userWriteModelByID(ctx, userID, resourceOwner)
@@ -109,10 +109,10 @@ func (c *Commands) ReactivateUser(ctx context.Context, userID, resourceOwner str
return nil, err
}
if !isUserStateExists(existingUser.UserState) {
- return nil, errors.ThrowNotFound(nil, "COMMAND-4M0sd", "Errors.User.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-4M0sd", "Errors.User.NotFound")
}
if !isUserStateInactive(existingUser.UserState) {
- return nil, errors.ThrowPreconditionFailed(nil, "COMMAND-6M0sf", "Errors.User.NotInactive")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-6M0sf", "Errors.User.NotInactive")
}
pushedEvents, err := c.eventstore.Push(ctx,
@@ -129,7 +129,7 @@ func (c *Commands) ReactivateUser(ctx context.Context, userID, resourceOwner str
func (c *Commands) LockUser(ctx context.Context, userID, resourceOwner string) (*domain.ObjectDetails, error) {
if userID == "" {
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-2M0sd", "Errors.User.UserIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-2M0sd", "Errors.User.UserIDMissing")
}
existingUser, err := c.userWriteModelByID(ctx, userID, resourceOwner)
@@ -137,10 +137,10 @@ func (c *Commands) LockUser(ctx context.Context, userID, resourceOwner string) (
return nil, err
}
if !isUserStateExists(existingUser.UserState) {
- return nil, errors.ThrowNotFound(nil, "COMMAND-5M9fs", "Errors.User.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-5M9fs", "Errors.User.NotFound")
}
if !hasUserState(existingUser.UserState, domain.UserStateActive, domain.UserStateInitial) {
- return nil, errors.ThrowPreconditionFailed(nil, "COMMAND-3NN8v", "Errors.User.ShouldBeActiveOrInitial")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-3NN8v", "Errors.User.ShouldBeActiveOrInitial")
}
pushedEvents, err := c.eventstore.Push(ctx,
@@ -157,7 +157,7 @@ func (c *Commands) LockUser(ctx context.Context, userID, resourceOwner string) (
func (c *Commands) UnlockUser(ctx context.Context, userID, resourceOwner string) (*domain.ObjectDetails, error) {
if userID == "" {
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-M0dse", "Errors.User.UserIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-M0dse", "Errors.User.UserIDMissing")
}
existingUser, err := c.userWriteModelByID(ctx, userID, resourceOwner)
@@ -165,10 +165,10 @@ func (c *Commands) UnlockUser(ctx context.Context, userID, resourceOwner string)
return nil, err
}
if !isUserStateExists(existingUser.UserState) {
- return nil, errors.ThrowNotFound(nil, "COMMAND-M0dos", "Errors.User.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-M0dos", "Errors.User.NotFound")
}
if !hasUserState(existingUser.UserState, domain.UserStateLocked) {
- return nil, errors.ThrowPreconditionFailed(nil, "COMMAND-4M0ds", "Errors.User.NotLocked")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-4M0ds", "Errors.User.NotLocked")
}
pushedEvents, err := c.eventstore.Push(ctx,
@@ -185,7 +185,7 @@ func (c *Commands) UnlockUser(ctx context.Context, userID, resourceOwner string)
func (c *Commands) RemoveUser(ctx context.Context, userID, resourceOwner string, cascadingUserMemberships []*CascadingMembership, cascadingGrantIDs ...string) (*domain.ObjectDetails, error) {
if userID == "" {
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-2M0ds", "Errors.User.UserIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-2M0ds", "Errors.User.UserIDMissing")
}
existingUser, err := c.userWriteModelByID(ctx, userID, resourceOwner)
@@ -193,12 +193,12 @@ func (c *Commands) RemoveUser(ctx context.Context, userID, resourceOwner string,
return nil, err
}
if !isUserStateExists(existingUser.UserState) {
- return nil, errors.ThrowNotFound(nil, "COMMAND-m9od", "Errors.User.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-m9od", "Errors.User.NotFound")
}
- domainPolicy, err := c.getOrgDomainPolicy(ctx, existingUser.ResourceOwner)
+ domainPolicy, err := c.domainPolicyWriteModel(ctx, existingUser.ResourceOwner)
if err != nil {
- return nil, errors.ThrowPreconditionFailed(err, "COMMAND-3M9fs", "Errors.Org.DomainPolicy.NotExisting")
+ return nil, zerrors.ThrowPreconditionFailed(err, "COMMAND-3M9fs", "Errors.Org.DomainPolicy.NotExisting")
}
var events []eventstore.Command
userAgg := UserAggregateFromWriteModel(&existingUser.WriteModel)
@@ -234,7 +234,7 @@ func (c *Commands) RemoveUser(ctx context.Context, userID, resourceOwner string,
func (c *Commands) AddUserToken(ctx context.Context, orgID, agentID, clientID, userID string, audience, scopes []string, lifetime time.Duration) (*domain.Token, error) {
if userID == "" { //do not check for empty orgID (JWT Profile requests won't provide it, so service user requests fail)
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-Dbge4", "Errors.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-Dbge4", "Errors.IDMissing")
}
userWriteModel := NewUserWriteModel(userID, orgID)
event, accessToken, err := c.addUserToken(ctx, userWriteModel, agentID, clientID, "", audience, scopes, lifetime)
@@ -270,7 +270,7 @@ func (c *Commands) addUserToken(ctx context.Context, userWriteModel *UserWriteMo
return nil, nil, err
}
if userWriteModel.UserState != domain.UserStateActive {
- return nil, nil, errors.ThrowNotFound(nil, "COMMAND-1d6Gg", "Errors.User.NotFound")
+ return nil, nil, zerrors.ThrowNotFound(nil, "COMMAND-1d6Gg", "Errors.User.NotFound")
}
audience = domain.AddAudScopeToAudience(ctx, audience, scopes)
@@ -305,7 +305,7 @@ func (c *Commands) addUserToken(ctx context.Context, userWriteModel *UserWriteMo
func (c *Commands) removeAccessToken(ctx context.Context, userID, orgID, tokenID string) (*user.UserTokenRemovedEvent, *UserAccessTokenWriteModel, error) {
if userID == "" || orgID == "" || tokenID == "" {
- return nil, nil, errors.ThrowInvalidArgument(nil, "COMMAND-Dng42", "Errors.IDMissing")
+ return nil, nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-Dng42", "Errors.IDMissing")
}
refreshTokenWriteModel := NewUserAccessTokenWriteModel(userID, orgID, tokenID)
err := c.eventstore.FilterToQueryReducer(ctx, refreshTokenWriteModel)
@@ -313,7 +313,7 @@ func (c *Commands) removeAccessToken(ctx context.Context, userID, orgID, tokenID
return nil, nil, err
}
if refreshTokenWriteModel.UserState != domain.UserStateActive {
- return nil, nil, errors.ThrowNotFound(nil, "COMMAND-BF4hd", "Errors.User.AccessToken.NotFound")
+ return nil, nil, zerrors.ThrowNotFound(nil, "COMMAND-BF4hd", "Errors.User.AccessToken.NotFound")
}
userAgg := UserAggregateFromWriteModel(&refreshTokenWriteModel.WriteModel)
return user.NewUserTokenRemovedEvent(ctx, userAgg, tokenID), refreshTokenWriteModel, nil
@@ -325,12 +325,12 @@ func (c *Commands) userDomainClaimed(ctx context.Context, userID string) (events
return nil, nil, err
}
if existingUser.UserState == domain.UserStateUnspecified || existingUser.UserState == domain.UserStateDeleted {
- return nil, nil, errors.ThrowNotFound(nil, "COMMAND-ii9K0", "Errors.User.NotFound")
+ return nil, nil, zerrors.ThrowNotFound(nil, "COMMAND-ii9K0", "Errors.User.NotFound")
}
changedUserGrant := NewUserWriteModel(userID, existingUser.ResourceOwner)
userAgg := UserAggregateFromWriteModel(&changedUserGrant.WriteModel)
- domainPolicy, err := c.getOrgDomainPolicy(ctx, existingUser.ResourceOwner)
+ domainPolicy, err := c.domainPolicyWriteModel(ctx, existingUser.ResourceOwner)
if err != nil {
return nil, nil, err
}
@@ -355,7 +355,7 @@ func (c *Commands) prepareUserDomainClaimed(ctx context.Context, filter preparat
return nil, err
}
if !userWriteModel.UserState.Exists() {
- return nil, errors.ThrowNotFound(nil, "COMMAND-ii9K0", "Errors.User.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-ii9K0", "Errors.User.NotFound")
}
domainPolicy, err := domainPolicyWriteModel(ctx, filter, userWriteModel.ResourceOwner)
if err != nil {
@@ -378,14 +378,14 @@ func (c *Commands) prepareUserDomainClaimed(ctx context.Context, filter preparat
func (c *Commands) UserDomainClaimedSent(ctx context.Context, orgID, userID string) (err error) {
if userID == "" {
- return errors.ThrowInvalidArgument(nil, "COMMAND-5m0fs", "Errors.IDMissing")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-5m0fs", "Errors.IDMissing")
}
existingUser, err := c.userWriteModelByID(ctx, userID, orgID)
if err != nil {
return err
}
if !isUserStateExists(existingUser.UserState) {
- return errors.ThrowNotFound(nil, "COMMAND-5m9gK", "Errors.User.NotFound")
+ return zerrors.ThrowNotFound(nil, "COMMAND-5m9gK", "Errors.User.NotFound")
}
_, err = c.eventstore.Push(ctx,
@@ -399,7 +399,7 @@ func (c *Commands) checkUserExists(ctx context.Context, userID, resourceOwner st
return err
}
if !isUserStateExists(existingUser.UserState) {
- return errors.ThrowPreconditionFailed(nil, "COMMAND-uXHNj", "Errors.User.NotFound")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-uXHNj", "Errors.User.NotFound")
}
return nil
}
diff --git a/internal/command/user_domain_policy.go b/internal/command/user_domain_policy.go
index ca8f68e1cd..2226608ff1 100644
--- a/internal/command/user_domain_policy.go
+++ b/internal/command/user_domain_policy.go
@@ -4,9 +4,10 @@ import (
"context"
"github.com/zitadel/zitadel/internal/command/preparation"
- "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
+// Deprecated: User commands.domainPolicyWriteModel directly, to remove use of eventstore.Filter function
func domainPolicyWriteModel(ctx context.Context, filter preparation.FilterToQueryReducer, orgID string) (*PolicyDomainWriteModel, error) {
wm, err := orgDomainPolicy(ctx, filter, orgID)
if err != nil {
@@ -22,9 +23,28 @@ func domainPolicyWriteModel(ctx context.Context, filter preparation.FilterToQuer
if instanceWriteModel != nil && instanceWriteModel.State.Exists() {
return &instanceWriteModel.PolicyDomainWriteModel, err
}
- return nil, errors.ThrowInternal(nil, "USER-Ggk9n", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(nil, "USER-Ggk9n", "Errors.Internal")
}
+func (c *Commands) domainPolicyWriteModel(ctx context.Context, orgID string) (*PolicyDomainWriteModel, error) {
+ wm, err := c.orgDomainPolicyWriteModel(ctx, orgID)
+ if err != nil {
+ return nil, err
+ }
+ if wm != nil && wm.State.Exists() {
+ return &wm.PolicyDomainWriteModel, err
+ }
+ instanceWriteModel, err := c.instanceDomainPolicyWriteModel(ctx)
+ if err != nil {
+ return nil, err
+ }
+ if instanceWriteModel != nil && instanceWriteModel.State.Exists() {
+ return &instanceWriteModel.PolicyDomainWriteModel, err
+ }
+ return nil, zerrors.ThrowInternal(nil, "USER-Ggk9n", "Errors.Internal")
+}
+
+// Deprecated: Use commands.orgDomainPolicyWriteModel directly, to remove use of eventstore.Filter function
func orgDomainPolicy(ctx context.Context, filter preparation.FilterToQueryReducer, orgID string) (*OrgDomainPolicyWriteModel, error) {
policy := NewOrgDomainPolicyWriteModel(orgID)
events, err := filter(ctx, policy.Query())
@@ -39,6 +59,7 @@ func orgDomainPolicy(ctx context.Context, filter preparation.FilterToQueryReduce
return policy, err
}
+// Deprecated: Use commands.instanceDomainPolicyWriteModel directly, to remove use of eventstore.Filter function
func instanceDomainPolicy(ctx context.Context, filter preparation.FilterToQueryReducer) (*InstanceDomainPolicyWriteModel, error) {
policy := NewInstanceDomainPolicyWriteModel(ctx)
events, err := filter(ctx, policy.Query())
diff --git a/internal/command/user_domain_policy_test.go b/internal/command/user_domain_policy_test.go
index bfc458b930..a4813a3717 100644
--- a/internal/command/user_domain_policy_test.go
+++ b/internal/command/user_domain_policy_test.go
@@ -8,10 +8,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func Test_customDomainPolicy(t *testing.T) {
@@ -29,7 +29,7 @@ func Test_customDomainPolicy(t *testing.T) {
name: "err from filter",
args: args{
filter: func(_ context.Context, _ *eventstore.SearchQueryBuilder) ([]eventstore.Event, error) {
- return nil, errors.ThrowInternal(nil, "USER-IgYlN", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(nil, "USER-IgYlN", "Errors.Internal")
},
orgID: "id",
},
@@ -115,7 +115,7 @@ func Test_defaultDomainPolicy(t *testing.T) {
name: "err from filter",
args: args{
filter: func(_ context.Context, _ *eventstore.SearchQueryBuilder) ([]eventstore.Event, error) {
- return nil, errors.ThrowInternal(nil, "USER-IgYlN", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(nil, "USER-IgYlN", "Errors.Internal")
},
},
want: nil,
@@ -200,7 +200,7 @@ func Test_DomainPolicy(t *testing.T) {
name: "err from filter custom",
args: args{
filter: func(_ context.Context, _ *eventstore.SearchQueryBuilder) ([]eventstore.Event, error) {
- return nil, errors.ThrowInternal(nil, "USER-IgYlN", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(nil, "USER-IgYlN", "Errors.Internal")
},
orgID: "id",
},
@@ -244,7 +244,7 @@ func Test_DomainPolicy(t *testing.T) {
return nil, nil
}).
Append(func(ctx context.Context, queryFactory *eventstore.SearchQueryBuilder) ([]eventstore.Event, error) {
- return nil, errors.ThrowInternal(nil, "USER-6HnsD", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(nil, "USER-6HnsD", "Errors.Internal")
}).
Filter(),
orgID: "id",
diff --git a/internal/command/user_grant.go b/internal/command/user_grant.go
index 9acc79dc76..bc22e1af1f 100644
--- a/internal/command/user_grant.go
+++ b/internal/command/user_grant.go
@@ -5,9 +5,9 @@ import (
"reflect"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/repository/usergrant"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
)
@@ -31,7 +31,7 @@ func (c *Commands) AddUserGrant(ctx context.Context, usergrant *domain.UserGrant
func (c *Commands) addUserGrant(ctx context.Context, userGrant *domain.UserGrant, resourceOwner string) (command eventstore.Command, _ *UserGrantWriteModel, err error) {
if !userGrant.IsValid() {
- return nil, nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-kVfMa", "Errors.UserGrant.Invalid")
+ return nil, nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-kVfMa", "Errors.UserGrant.Invalid")
}
err = c.checkUserGrantPreCondition(ctx, userGrant, resourceOwner)
if err != nil {
@@ -73,7 +73,7 @@ func (c *Commands) ChangeUserGrant(ctx context.Context, userGrant *domain.UserGr
func (c *Commands) changeUserGrant(ctx context.Context, userGrant *domain.UserGrant, resourceOwner string, cascade bool) (_ eventstore.Command, _ *UserGrantWriteModel, err error) {
if userGrant.AggregateID == "" {
- return nil, nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-3M0sd", "Errors.UserGrant.Invalid")
+ return nil, nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-3M0sd", "Errors.UserGrant.Invalid")
}
existingUserGrant, err := c.userGrantWriteModelByID(ctx, userGrant.AggregateID, userGrant.ResourceOwner)
if err != nil {
@@ -84,10 +84,10 @@ func (c *Commands) changeUserGrant(ctx context.Context, userGrant *domain.UserGr
return nil, nil, err
}
if existingUserGrant.State == domain.UserGrantStateUnspecified || existingUserGrant.State == domain.UserGrantStateRemoved {
- return nil, nil, caos_errs.ThrowNotFound(nil, "COMMAND-3M9sd", "Errors.UserGrant.NotFound")
+ return nil, nil, zerrors.ThrowNotFound(nil, "COMMAND-3M9sd", "Errors.UserGrant.NotFound")
}
if reflect.DeepEqual(existingUserGrant.RoleKeys, userGrant.RoleKeys) {
- return nil, nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Rs8fy", "Errors.UserGrant.NotChanged")
+ return nil, nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-Rs8fy", "Errors.UserGrant.NotChanged")
}
userGrant.ProjectID = existingUserGrant.ProjectID
userGrant.ProjectGrantID = existingUserGrant.ProjectGrantID
@@ -111,7 +111,7 @@ func (c *Commands) removeRoleFromUserGrant(ctx context.Context, userGrantID stri
return nil, err
}
if existingUserGrant.State == domain.UserGrantStateUnspecified || existingUserGrant.State == domain.UserGrantStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-3M9sd", "Errors.UserGrant.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-3M9sd", "Errors.UserGrant.NotFound")
}
keyExists := false
for i, key := range existingUserGrant.RoleKeys {
@@ -126,7 +126,7 @@ func (c *Commands) removeRoleFromUserGrant(ctx context.Context, userGrantID stri
}
}
if !keyExists {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-5m8g9", "Errors.UserGrant.RoleKeyNotFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-5m8g9", "Errors.UserGrant.RoleKeyNotFound")
}
changedUserGrant := NewUserGrantWriteModel(userGrantID, existingUserGrant.ResourceOwner)
userGrantAgg := UserGrantAggregateFromWriteModel(&changedUserGrant.WriteModel)
@@ -140,7 +140,7 @@ func (c *Commands) removeRoleFromUserGrant(ctx context.Context, userGrantID stri
func (c *Commands) DeactivateUserGrant(ctx context.Context, grantID, resourceOwner string) (objectDetails *domain.ObjectDetails, err error) {
if grantID == "" || resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-N2OhG", "Errors.UserGrant.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-N2OhG", "Errors.UserGrant.IDMissing")
}
existingUserGrant, err := c.userGrantWriteModelByID(ctx, grantID, resourceOwner)
@@ -148,10 +148,10 @@ func (c *Commands) DeactivateUserGrant(ctx context.Context, grantID, resourceOwn
return nil, err
}
if existingUserGrant.State == domain.UserGrantStateUnspecified || existingUserGrant.State == domain.UserGrantStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-3M9sd", "Errors.UserGrant.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-3M9sd", "Errors.UserGrant.NotFound")
}
if existingUserGrant.State != domain.UserGrantStateActive {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-1S9gx", "Errors.UserGrant.NotActive")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-1S9gx", "Errors.UserGrant.NotActive")
}
err = checkExplicitProjectPermission(ctx, existingUserGrant.ProjectGrantID, existingUserGrant.ProjectID)
if err != nil {
@@ -173,7 +173,7 @@ func (c *Commands) DeactivateUserGrant(ctx context.Context, grantID, resourceOwn
func (c *Commands) ReactivateUserGrant(ctx context.Context, grantID, resourceOwner string) (objectDetails *domain.ObjectDetails, err error) {
if grantID == "" || resourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-Qxy8v", "Errors.UserGrant.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-Qxy8v", "Errors.UserGrant.IDMissing")
}
existingUserGrant, err := c.userGrantWriteModelByID(ctx, grantID, resourceOwner)
@@ -181,10 +181,10 @@ func (c *Commands) ReactivateUserGrant(ctx context.Context, grantID, resourceOwn
return nil, err
}
if existingUserGrant.State == domain.UserGrantStateUnspecified || existingUserGrant.State == domain.UserGrantStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-Lp0gs", "Errors.UserGrant.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-Lp0gs", "Errors.UserGrant.NotFound")
}
if existingUserGrant.State != domain.UserGrantStateInactive {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-1ML0v", "Errors.UserGrant.NotInactive")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-1ML0v", "Errors.UserGrant.NotInactive")
}
err = checkExplicitProjectPermission(ctx, existingUserGrant.ProjectGrantID, existingUserGrant.ProjectID)
if err != nil {
@@ -222,7 +222,7 @@ func (c *Commands) RemoveUserGrant(ctx context.Context, grantID, resourceOwner s
func (c *Commands) BulkRemoveUserGrant(ctx context.Context, grantIDs []string, resourceOwner string) (err error) {
if len(grantIDs) == 0 {
- return caos_errs.ThrowInvalidArgument(nil, "COMMAND-5M0sd", "Errors.UserGrant.IDMissing")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-5M0sd", "Errors.UserGrant.IDMissing")
}
events := make([]eventstore.Command, len(grantIDs))
for i, grantID := range grantIDs {
@@ -238,7 +238,7 @@ func (c *Commands) BulkRemoveUserGrant(ctx context.Context, grantIDs []string, r
func (c *Commands) removeUserGrant(ctx context.Context, grantID, resourceOwner string, cascade bool) (_ eventstore.Command, writeModel *UserGrantWriteModel, err error) {
if grantID == "" {
- return nil, nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-J9sc5", "Errors.UserGrant.IDMissing")
+ return nil, nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-J9sc5", "Errors.UserGrant.IDMissing")
}
existingUserGrant, err := c.userGrantWriteModelByID(ctx, grantID, resourceOwner)
@@ -246,7 +246,7 @@ func (c *Commands) removeUserGrant(ctx context.Context, grantID, resourceOwner s
return nil, nil, err
}
if existingUserGrant.State == domain.UserGrantStateUnspecified || existingUserGrant.State == domain.UserGrantStateRemoved {
- return nil, nil, caos_errs.ThrowNotFound(nil, "COMMAND-1My0t", "Errors.UserGrant.NotFound")
+ return nil, nil, zerrors.ThrowNotFound(nil, "COMMAND-1My0t", "Errors.UserGrant.NotFound")
}
if !cascade {
err = checkExplicitProjectPermission(ctx, existingUserGrant.ProjectGrantID, existingUserGrant.ProjectID)
@@ -292,16 +292,16 @@ func (c *Commands) checkUserGrantPreCondition(ctx context.Context, usergrant *do
return err
}
if !preConditions.UserExists {
- return caos_errs.ThrowPreconditionFailed(err, "COMMAND-4f8sg", "Errors.User.NotFound")
+ return zerrors.ThrowPreconditionFailed(err, "COMMAND-4f8sg", "Errors.User.NotFound")
}
if usergrant.ProjectGrantID == "" && !preConditions.ProjectExists {
- return caos_errs.ThrowPreconditionFailed(err, "COMMAND-3n77S", "Errors.Project.NotFound")
+ return zerrors.ThrowPreconditionFailed(err, "COMMAND-3n77S", "Errors.Project.NotFound")
}
if usergrant.ProjectGrantID != "" && !preConditions.ProjectGrantExists {
- return caos_errs.ThrowPreconditionFailed(err, "COMMAND-4m9ff", "Errors.Project.Grant.NotFound")
+ return zerrors.ThrowPreconditionFailed(err, "COMMAND-4m9ff", "Errors.Project.Grant.NotFound")
}
if usergrant.HasInvalidRoles(preConditions.ExistingRoleKeys) {
- return caos_errs.ThrowPreconditionFailed(err, "COMMAND-mm9F4", "Errors.Project.Role.NotFound")
+ return zerrors.ThrowPreconditionFailed(err, "COMMAND-mm9F4", "Errors.Project.Role.NotFound")
}
return nil
}
diff --git a/internal/command/user_grant_test.go b/internal/command/user_grant_test.go
index 340c98dc29..a073c94e19 100644
--- a/internal/command/user_grant_test.go
+++ b/internal/command/user_grant_test.go
@@ -9,7 +9,6 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/id"
@@ -17,6 +16,7 @@ import (
"github.com/zitadel/zitadel/internal/repository/project"
"github.com/zitadel/zitadel/internal/repository/user"
"github.com/zitadel/zitadel/internal/repository/usergrant"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddUserGrant(t *testing.T) {
@@ -54,7 +54,7 @@ func TestCommandSide_AddUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -98,7 +98,7 @@ func TestCommandSide_AddUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -147,7 +147,7 @@ func TestCommandSide_AddUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -189,7 +189,7 @@ func TestCommandSide_AddUserGrant(t *testing.T) {
resourceOwner: "org2",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -232,7 +232,7 @@ func TestCommandSide_AddUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -276,7 +276,7 @@ func TestCommandSide_AddUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -336,7 +336,7 @@ func TestCommandSide_AddUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -396,7 +396,7 @@ func TestCommandSide_AddUserGrant(t *testing.T) {
resourceOwner: "org2",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -604,7 +604,7 @@ func TestCommandSide_ChangeUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -634,7 +634,7 @@ func TestCommandSide_ChangeUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPermissionDenied,
+ err: zerrors.IsPermissionDenied,
},
},
{
@@ -658,7 +658,7 @@ func TestCommandSide_ChangeUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -682,7 +682,7 @@ func TestCommandSide_ChangeUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -714,7 +714,7 @@ func TestCommandSide_ChangeUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -770,7 +770,7 @@ func TestCommandSide_ChangeUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -831,7 +831,7 @@ func TestCommandSide_ChangeUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -886,7 +886,7 @@ func TestCommandSide_ChangeUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -942,7 +942,7 @@ func TestCommandSide_ChangeUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -1014,7 +1014,7 @@ func TestCommandSide_ChangeUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -1250,7 +1250,7 @@ func TestCommandSide_DeactivateUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1265,7 +1265,7 @@ func TestCommandSide_DeactivateUserGrant(t *testing.T) {
userGrantID: "usergrant1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1282,7 +1282,7 @@ func TestCommandSide_DeactivateUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1314,7 +1314,7 @@ func TestCommandSide_DeactivateUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1339,7 +1339,7 @@ func TestCommandSide_DeactivateUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPermissionDenied,
+ err: zerrors.IsPermissionDenied,
},
},
{
@@ -1368,7 +1368,7 @@ func TestCommandSide_DeactivateUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -1454,7 +1454,7 @@ func TestCommandSide_ReactivateUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1469,7 +1469,7 @@ func TestCommandSide_ReactivateUserGrant(t *testing.T) {
userGrantID: "usergrant1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1486,7 +1486,7 @@ func TestCommandSide_ReactivateUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1518,7 +1518,7 @@ func TestCommandSide_ReactivateUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1547,7 +1547,7 @@ func TestCommandSide_ReactivateUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPermissionDenied,
+ err: zerrors.IsPermissionDenied,
},
},
{
@@ -1572,7 +1572,7 @@ func TestCommandSide_ReactivateUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -1662,7 +1662,7 @@ func TestCommandSide_RemoveUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1679,7 +1679,7 @@ func TestCommandSide_RemoveUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1711,7 +1711,7 @@ func TestCommandSide_RemoveUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1740,7 +1740,7 @@ func TestCommandSide_RemoveUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPermissionDenied,
+ err: zerrors.IsPermissionDenied,
},
},
{
@@ -1864,7 +1864,7 @@ func TestCommandSide_BulkRemoveUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1881,7 +1881,7 @@ func TestCommandSide_BulkRemoveUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1913,7 +1913,7 @@ func TestCommandSide_BulkRemoveUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1938,7 +1938,7 @@ func TestCommandSide_BulkRemoveUserGrant(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPermissionDenied,
+ err: zerrors.IsPermissionDenied,
},
},
{
diff --git a/internal/command/user_human.go b/internal/command/user_human.go
index 13a553dbb7..f8993ae6b4 100644
--- a/internal/command/user_human.go
+++ b/internal/command/user_human.go
@@ -9,10 +9,10 @@ import (
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) getHuman(ctx context.Context, userID, resourceowner string) (*domain.Human, error) {
@@ -21,7 +21,7 @@ func (c *Commands) getHuman(ctx context.Context, userID, resourceowner string) (
return nil, err
}
if !isUserStateExists(human.UserState) {
- return nil, errors.ThrowNotFound(nil, "COMMAND-M9dsd", "Errors.User.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-M9dsd", "Errors.User.NotFound")
}
return writeModelToHuman(human), nil
}
@@ -82,14 +82,14 @@ func (h *AddHuman) Validate(hasher *crypto.PasswordHasher) (err error) {
return err
}
if h.Username = strings.TrimSpace(h.Username); h.Username == "" {
- return errors.ThrowInvalidArgument(nil, "V2-zzad3", "Errors.Invalid.Argument")
+ return zerrors.ThrowInvalidArgument(nil, "V2-zzad3", "Errors.Invalid.Argument")
}
if h.FirstName = strings.TrimSpace(h.FirstName); h.FirstName == "" {
- return errors.ThrowInvalidArgument(nil, "USER-UCej2", "Errors.User.Profile.FirstNameEmpty")
+ return zerrors.ThrowInvalidArgument(nil, "USER-UCej2", "Errors.User.Profile.FirstNameEmpty")
}
if h.LastName = strings.TrimSpace(h.LastName); h.LastName == "" {
- return errors.ThrowInvalidArgument(nil, "USER-4hB7d", "Errors.User.Profile.LastNameEmpty")
+ return zerrors.ThrowInvalidArgument(nil, "USER-4hB7d", "Errors.User.Profile.LastNameEmpty")
}
h.ensureDisplayName()
@@ -106,7 +106,7 @@ func (h *AddHuman) Validate(hasher *crypto.PasswordHasher) (err error) {
}
if h.EncodedPasswordHash != "" {
if !hasher.EncodingSupported(h.EncodedPasswordHash) {
- return errors.ThrowInvalidArgument(nil, "USER-JDk4t", "Errors.User.Password.NotSupported")
+ return zerrors.ThrowInvalidArgument(nil, "USER-JDk4t", "Errors.User.Password.NotSupported")
}
}
return nil
@@ -119,17 +119,18 @@ type AddMetadataEntry struct {
func (m *AddMetadataEntry) Valid() error {
if m.Key = strings.TrimSpace(m.Key); m.Key == "" {
- return errors.ThrowInvalidArgument(nil, "USER-Drght", "Errors.User.Metadata.KeyEmpty")
+ return zerrors.ThrowInvalidArgument(nil, "USER-Drght", "Errors.User.Metadata.KeyEmpty")
}
if len(m.Value) == 0 {
- return errors.ThrowInvalidArgument(nil, "USER-Dbgth", "Errors.User.Metadata.ValueEmpty")
+ return zerrors.ThrowInvalidArgument(nil, "USER-Dbgth", "Errors.User.Metadata.ValueEmpty")
}
return nil
}
+// Deprecated: use commands.AddUserHuman
func (c *Commands) AddHuman(ctx context.Context, resourceOwner string, human *AddHuman, allowInitMail bool) (err error) {
if resourceOwner == "" {
- return errors.ThrowInvalidArgument(nil, "COMMA-5Ky74", "Errors.Internal")
+ return zerrors.ThrowInvalidArgument(nil, "COMMA-5Ky74", "Errors.Internal")
}
cmds, err := preparation.PrepareCommands(ctx, c.eventstore.Filter,
c.AddHumanCommand(
@@ -180,7 +181,7 @@ func (c *Commands) AddHumanCommand(human *AddHuman, orgID string, hasher *crypto
return nil, err
}
- if err = userValidateDomain(ctx, a, human.Username, domainPolicy.UserLoginMustBeDomain, filter); err != nil {
+ if err = c.userValidateDomain(ctx, a.ResourceOwner, human.Username, domainPolicy.UserLoginMustBeDomain); err != nil {
return nil, err
}
@@ -288,7 +289,7 @@ func (c *Commands) addHumanCommandEmail(ctx context.Context, filter preparation.
func addLink(ctx context.Context, filter preparation.FilterToQueryReducer, a *user.Aggregate, link *AddLink) (eventstore.Command, error) {
exists, err := ExistsIDP(ctx, filter, link.IDPID, a.ResourceOwner)
if !exists || err != nil {
- return nil, errors.ThrowPreconditionFailed(err, "COMMAND-39nf2", "Errors.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowPreconditionFailed(err, "COMMAND-39nf2", "Errors.IDPConfig.NotExisting")
}
return user.NewUserIDPLinkAddedEvent(ctx, &a.Aggregate, link.IDPID, link.DisplayName, link.IDPExternalID), nil
}
@@ -310,6 +311,7 @@ func (c *Commands) addHumanCommandPhone(ctx context.Context, filter preparation.
return append(cmds, user.NewHumanPhoneCodeAddedEventV2(ctx, &a.Aggregate, phoneCode.Crypted, phoneCode.Expiry, human.Phone.ReturnCode)), nil
}
+// Deprecated: use commands.NewUserHumanWriteModel, to remove deprecated eventstore.Filter
func (c *Commands) addHumanCommandCheckID(ctx context.Context, filter preparation.FilterToQueryReducer, human *AddHuman, orgID string) (err error) {
if human.ID == "" {
human.ID, err = c.idGenerator.Next()
@@ -322,7 +324,7 @@ func (c *Commands) addHumanCommandCheckID(ctx context.Context, filter preparatio
return err
}
if isUserStateExists(existingHuman.UserState) {
- return errors.ThrowPreconditionFailed(nil, "COMMAND-k2unb", "Errors.User.AlreadyExisting")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-k2unb", "Errors.User.AlreadyExisting")
}
return nil
}
@@ -347,7 +349,7 @@ func addHumanCommandPassword(ctx context.Context, filter preparation.FilterToQue
return nil
}
-func userValidateDomain(ctx context.Context, a *user.Aggregate, username string, mustBeDomain bool, filter preparation.FilterToQueryReducer) error {
+func (c *Commands) userValidateDomain(ctx context.Context, resourceOwner string, username string, mustBeDomain bool) error {
if mustBeDomain {
return nil
}
@@ -357,18 +359,13 @@ func userValidateDomain(ctx context.Context, a *user.Aggregate, username string,
return nil
}
- domainCheck := NewOrgDomainVerifiedWriteModel(username[index+1:])
- events, err := filter(ctx, domainCheck.Query())
+ domainCheck, err := c.orgDomainVerifiedWriteModel(ctx, username[index+1:])
if err != nil {
return err
}
- domainCheck.AppendEvents(events...)
- if err = domainCheck.Reduce(); err != nil {
- return err
- }
- if domainCheck.Verified && domainCheck.ResourceOwner != a.ResourceOwner {
- return errors.ThrowInvalidArgument(nil, "COMMAND-SFd21", "Errors.User.DomainNotAllowedAsUsername")
+ if domainCheck.Verified && domainCheck.ResourceOwner != resourceOwner {
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-SFd21", "Errors.User.DomainNotAllowedAsUsername")
}
return nil
@@ -411,17 +408,18 @@ func (h *AddHuman) shouldAddInitCode() bool {
h.Password == ""
}
+// Deprecated: use commands.AddUserHuman
func (c *Commands) ImportHuman(ctx context.Context, orgID string, human *domain.Human, passwordless bool, links []*domain.UserIDPLink, initCodeGenerator, emailCodeGenerator, phoneCodeGenerator, passwordlessCodeGenerator crypto.Generator) (_ *domain.Human, passwordlessCode *domain.PasswordlessInitCode, err error) {
if orgID == "" {
- return nil, nil, errors.ThrowInvalidArgument(nil, "COMMAND-5N8fs", "Errors.ResourceOwnerMissing")
+ return nil, nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-5N8fs", "Errors.ResourceOwnerMissing")
}
domainPolicy, err := c.getOrgDomainPolicy(ctx, orgID)
if err != nil {
- return nil, nil, errors.ThrowPreconditionFailed(err, "COMMAND-2N9fs", "Errors.Org.DomainPolicy.NotFound")
+ return nil, nil, zerrors.ThrowPreconditionFailed(err, "COMMAND-2N9fs", "Errors.Org.DomainPolicy.NotFound")
}
pwPolicy, err := c.getOrgPasswordComplexityPolicy(ctx, orgID)
if err != nil {
- return nil, nil, errors.ThrowPreconditionFailed(err, "COMMAND-4N8gs", "Errors.Org.PasswordComplexityPolicy.NotFound")
+ return nil, nil, zerrors.ThrowPreconditionFailed(err, "COMMAND-4N8gs", "Errors.Org.PasswordComplexityPolicy.NotFound")
}
if human.AggregateID != "" {
@@ -431,7 +429,7 @@ func (c *Commands) ImportHuman(ctx context.Context, orgID string, human *domain.
}
if existing.UserState != domain.UserStateUnspecified {
- return nil, nil, errors.ThrowPreconditionFailed(nil, "COMMAND-ziuna", "Errors.User.AlreadyExisting")
+ return nil, nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-ziuna", "Errors.User.AlreadyExisting")
}
}
@@ -459,25 +457,26 @@ func (c *Commands) ImportHuman(ctx context.Context, orgID string, human *domain.
return writeModelToHuman(addedHuman), passwordlessCode, nil
}
+// Deprecated: use commands.AddUserHuman
func (c *Commands) RegisterHuman(ctx context.Context, orgID string, human *domain.Human, link *domain.UserIDPLink, orgMemberRoles []string, initCodeGenerator, emailCodeGenerator, phoneCodeGenerator crypto.Generator) (*domain.Human, error) {
if orgID == "" {
- return nil, errors.ThrowInvalidArgument(nil, "COMMAND-GEdf2", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-GEdf2", "Errors.ResourceOwnerMissing")
}
domainPolicy, err := c.getOrgDomainPolicy(ctx, orgID)
if err != nil {
- return nil, errors.ThrowPreconditionFailed(err, "COMMAND-33M9f", "Errors.Org.DomainPolicy.NotFound")
+ return nil, zerrors.ThrowPreconditionFailed(err, "COMMAND-33M9f", "Errors.Org.DomainPolicy.NotFound")
}
pwPolicy, err := c.getOrgPasswordComplexityPolicy(ctx, orgID)
if err != nil {
- return nil, errors.ThrowPreconditionFailed(err, "COMMAND-M5Fsd", "Errors.Org.PasswordComplexityPolicy.NotFound")
+ return nil, zerrors.ThrowPreconditionFailed(err, "COMMAND-M5Fsd", "Errors.Org.PasswordComplexityPolicy.NotFound")
}
loginPolicy, err := c.getOrgLoginPolicy(ctx, orgID)
if err != nil {
- return nil, errors.ThrowPreconditionFailed(err, "COMMAND-Dfg3g", "Errors.Org.LoginPolicy.NotFound")
+ return nil, zerrors.ThrowPreconditionFailed(err, "COMMAND-Dfg3g", "Errors.Org.LoginPolicy.NotFound")
}
// check only if local registration is allowed, the idp will be checked separately
if !loginPolicy.AllowRegister && link == nil {
- return nil, errors.ThrowPreconditionFailed(err, "COMMAND-SAbr3", "Errors.Org.LoginPolicy.RegistrationNotAllowed")
+ return nil, zerrors.ThrowPreconditionFailed(err, "COMMAND-SAbr3", "Errors.Org.LoginPolicy.RegistrationNotAllowed")
}
userEvents, registeredHuman, err := c.registerHuman(ctx, orgID, human, link, domainPolicy, pwPolicy, initCodeGenerator, emailCodeGenerator, phoneCodeGenerator)
if err != nil {
@@ -515,7 +514,7 @@ func (c *Commands) RegisterHuman(ctx context.Context, orgID string, human *domai
func (c *Commands) importHuman(ctx context.Context, orgID string, human *domain.Human, passwordless bool, links []*domain.UserIDPLink, domainPolicy *domain.DomainPolicy, pwPolicy *domain.PasswordComplexityPolicy, initCodeGenerator, emailCodeGenerator, phoneCodeGenerator, passwordlessCodeGenerator crypto.Generator) (events []eventstore.Command, humanWriteModel *HumanWriteModel, passwordlessCodeWriteModel *HumanPasswordlessInitCodeWriteModel, code string, err error) {
if orgID == "" {
- return nil, nil, nil, "", errors.ThrowInvalidArgument(nil, "COMMAND-00p2b", "Errors.Org.Empty")
+ return nil, nil, nil, "", zerrors.ThrowInvalidArgument(nil, "COMMAND-00p2b", "Errors.Org.Empty")
}
if err := human.Normalize(); err != nil {
return nil, nil, nil, "", err
@@ -537,19 +536,19 @@ func (c *Commands) importHuman(ctx context.Context, orgID string, human *domain.
func (c *Commands) registerHuman(ctx context.Context, orgID string, human *domain.Human, link *domain.UserIDPLink, domainPolicy *domain.DomainPolicy, pwPolicy *domain.PasswordComplexityPolicy, initCodeGenerator, emailCodeGenerator, phoneCodeGenerator crypto.Generator) ([]eventstore.Command, *HumanWriteModel, error) {
if human == nil {
- return nil, nil, errors.ThrowInvalidArgument(nil, "COMMAND-JKefw", "Errors.User.Invalid")
+ return nil, nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-JKefw", "Errors.User.Invalid")
}
if human.Username = strings.TrimSpace(human.Username); human.Username == "" {
human.Username = string(human.EmailAddress)
}
if orgID == "" {
- return nil, nil, errors.ThrowInvalidArgument(nil, "COMMAND-hYsVH", "Errors.Org.Empty")
+ return nil, nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-hYsVH", "Errors.Org.Empty")
}
if err := human.Normalize(); err != nil {
return nil, nil, err
}
if link == nil && (human.Password == nil || human.Password.SecretString == "") {
- return nil, nil, errors.ThrowInvalidArgument(nil, "COMMAND-X23na", "Errors.User.Password.Empty")
+ return nil, nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-X23na", "Errors.User.Password.Empty")
}
if human.Password != nil && human.Password.SecretString != "" {
human.Password.ChangeRequired = false
@@ -575,7 +574,7 @@ func (c *Commands) createHuman(ctx context.Context, orgID string, human *domain.
return nil, nil, err
}
if domainCheck.Verified && domainCheck.ResourceOwner != orgID {
- return nil, nil, errors.ThrowInvalidArgument(nil, "COMMAND-SFd21", "Errors.User.DomainNotAllowedAsUsername")
+ return nil, nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-SFd21", "Errors.User.DomainNotAllowedAsUsername")
}
}
}
@@ -646,7 +645,7 @@ func (c *Commands) createHuman(ctx context.Context, orgID string, human *domain.
func (c *Commands) HumanSkipMFAInit(ctx context.Context, userID, resourceowner string) (err error) {
if userID == "" {
- return errors.ThrowInvalidArgument(nil, "COMMAND-2xpX9", "Errors.User.UserIDMissing")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-2xpX9", "Errors.User.UserIDMissing")
}
existingHuman, err := c.getHumanWriteModelByID(ctx, userID, resourceowner)
@@ -654,7 +653,7 @@ func (c *Commands) HumanSkipMFAInit(ctx context.Context, userID, resourceowner s
return err
}
if !isUserStateExists(existingHuman.UserState) {
- return errors.ThrowNotFound(nil, "COMMAND-m9cV8", "Errors.User.NotFound")
+ return zerrors.ThrowNotFound(nil, "COMMAND-m9cV8", "Errors.User.NotFound")
}
_, err = c.eventstore.Push(ctx,
@@ -733,10 +732,10 @@ func createRegisterHumanEvent(ctx context.Context, aggregate *eventstore.Aggrega
func (c *Commands) HumansSignOut(ctx context.Context, agentID string, userIDs []string) error {
if agentID == "" {
- return errors.ThrowInvalidArgument(nil, "COMMAND-2M0ds", "Errors.User.UserIDMissing")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-2M0ds", "Errors.User.UserIDMissing")
}
if len(userIDs) == 0 {
- return errors.ThrowInvalidArgument(nil, "COMMAND-M0od3", "Errors.User.UserIDMissing")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-M0od3", "Errors.User.UserIDMissing")
}
events := make([]eventstore.Command, 0)
for _, userID := range userIDs {
diff --git a/internal/command/user_human_address.go b/internal/command/user_human_address.go
index 61c92a806e..2e1931567b 100644
--- a/internal/command/user_human_address.go
+++ b/internal/command/user_human_address.go
@@ -4,8 +4,8 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) ChangeHumanAddress(ctx context.Context, address *domain.Address) (*domain.Address, error) {
@@ -14,7 +14,7 @@ func (c *Commands) ChangeHumanAddress(ctx context.Context, address *domain.Addre
return nil, err
}
if existingAddress.State == domain.AddressStateUnspecified || existingAddress.State == domain.AddressStateRemoved {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-0pLdo", "Errors.User.Address.NotFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-0pLdo", "Errors.User.Address.NotFound")
}
userAgg := UserAggregateFromWriteModel(&existingAddress.WriteModel)
changedEvent, hasChanged, err := existingAddress.NewChangedEvent(ctx, userAgg, address.Country, address.Locality, address.PostalCode, address.Region, address.StreetAddress)
@@ -22,7 +22,7 @@ func (c *Commands) ChangeHumanAddress(ctx context.Context, address *domain.Addre
return nil, err
}
if !hasChanged {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-3M0cs", "Errors.User.Address.NotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-3M0cs", "Errors.User.Address.NotChanged")
}
pushedEvents, err := c.eventstore.Push(ctx, changedEvent)
if err != nil {
diff --git a/internal/command/user_human_adress_test.go b/internal/command/user_human_adress_test.go
index d3b3176e3a..24a5397c8b 100644
--- a/internal/command/user_human_adress_test.go
+++ b/internal/command/user_human_adress_test.go
@@ -8,10 +8,10 @@ import (
"golang.org/x/text/language"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_ChangeHumanAddress(t *testing.T) {
@@ -54,7 +54,7 @@ func TestCommandSide_ChangeHumanAddress(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -105,7 +105,7 @@ func TestCommandSide_ChangeHumanAddress(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
diff --git a/internal/command/user_human_avatar.go b/internal/command/user_human_avatar.go
index 8994bda945..2a1f67e6a7 100644
--- a/internal/command/user_human_avatar.go
+++ b/internal/command/user_human_avatar.go
@@ -4,13 +4,13 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddHumanAvatar(ctx context.Context, orgID, userID string, upload *AssetUpload) (*domain.ObjectDetails, error) {
if userID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "USER-Ba5Ds", "Errors.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "USER-Ba5Ds", "Errors.IDMissing")
}
existingUser, err := c.userWriteModelByID(ctx, userID, orgID)
if err != nil {
@@ -18,11 +18,11 @@ func (c *Commands) AddHumanAvatar(ctx context.Context, orgID, userID string, upl
}
if existingUser.UserState == domain.UserStateUnspecified || existingUser.UserState == domain.UserStateDeleted {
- return nil, caos_errs.ThrowNotFound(nil, "USER-vJ3fS", "Errors.Users.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "USER-vJ3fS", "Errors.Users.NotFound")
}
asset, err := c.uploadAsset(ctx, upload)
if err != nil {
- return nil, caos_errs.ThrowInternal(err, "USER-1Xyud", "Errors.Assets.Object.PutFailed")
+ return nil, zerrors.ThrowInternal(err, "USER-1Xyud", "Errors.Assets.Object.PutFailed")
}
userAgg := UserAggregateFromWriteModel(&existingUser.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, user.NewHumanAvatarAddedEvent(ctx, userAgg, asset.VersionedName()))
@@ -38,14 +38,14 @@ func (c *Commands) AddHumanAvatar(ctx context.Context, orgID, userID string, upl
func (c *Commands) RemoveHumanAvatar(ctx context.Context, orgID, userID string) (*domain.ObjectDetails, error) {
if userID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "USER-1B8sd", "Errors.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "USER-1B8sd", "Errors.IDMissing")
}
existingUser, err := c.getHumanWriteModelByID(ctx, userID, orgID)
if err != nil {
return nil, err
}
if existingUser.UserState == domain.UserStateUnspecified || existingUser.UserState == domain.UserStateDeleted {
- return nil, caos_errs.ThrowNotFound(nil, "USER-35N8f", "Errors.Users.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "USER-35N8f", "Errors.Users.NotFound")
}
err = c.removeAsset(ctx, orgID, existingUser.Avatar)
if err != nil {
diff --git a/internal/command/user_human_avatar_test.go b/internal/command/user_human_avatar_test.go
index bac6659ae4..70552e7e50 100644
--- a/internal/command/user_human_avatar_test.go
+++ b/internal/command/user_human_avatar_test.go
@@ -10,11 +10,11 @@ import (
"golang.org/x/text/language"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/user"
"github.com/zitadel/zitadel/internal/static"
"github.com/zitadel/zitadel/internal/static/mock"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddHumanAvatar(t *testing.T) {
@@ -59,7 +59,7 @@ func TestCommandSide_AddHumanAvatar(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -84,7 +84,7 @@ func TestCommandSide_AddHumanAvatar(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -125,7 +125,7 @@ func TestCommandSide_AddHumanAvatar(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsInternal,
+ err: zerrors.IsInternal,
},
},
{
@@ -231,7 +231,7 @@ func TestCommandSide_RemoveHumanAvatar(t *testing.T) {
storageKey: "key",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -249,7 +249,7 @@ func TestCommandSide_RemoveHumanAvatar(t *testing.T) {
storageKey: "key",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -289,7 +289,7 @@ func TestCommandSide_RemoveHumanAvatar(t *testing.T) {
storageKey: "key",
},
res: res{
- err: caos_errs.IsInternal,
+ err: zerrors.IsInternal,
},
},
{
diff --git a/internal/command/user_human_email.go b/internal/command/user_human_email.go
index cdc737a00e..c98b396dbf 100644
--- a/internal/command/user_human_email.go
+++ b/internal/command/user_human_email.go
@@ -7,15 +7,15 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/user"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) ChangeHumanEmail(ctx context.Context, email *domain.Email, emailCodeGenerator crypto.Generator) (*domain.Email, error) {
if email.AggregateID == "" {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-0Gzs3", "Errors.User.Email.IDMissing")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-0Gzs3", "Errors.User.Email.IDMissing")
}
if err := email.Validate(); err != nil {
return nil, err
@@ -26,17 +26,17 @@ func (c *Commands) ChangeHumanEmail(ctx context.Context, email *domain.Email, em
return nil, err
}
if existingEmail.UserState == domain.UserStateUnspecified || existingEmail.UserState == domain.UserStateDeleted {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-0Pe4r", "Errors.User.Email.NotFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-0Pe4r", "Errors.User.Email.NotFound")
}
if existingEmail.UserState == domain.UserStateInitial {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-J8dsk", "Errors.User.NotInitialised")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-J8dsk", "Errors.User.NotInitialised")
}
userAgg := UserAggregateFromWriteModel(&existingEmail.WriteModel)
changedEvent, hasChanged := existingEmail.NewChangedEvent(ctx, userAgg, email.EmailAddress)
// only continue if there were changes or there were no changes and the email should be set to verified
if !hasChanged && !(email.IsEmailVerified && existingEmail.IsEmailVerified != email.IsEmailVerified) {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-2b7fM", "Errors.User.Email.NotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-2b7fM", "Errors.User.Email.NotChanged")
}
events := make([]eventstore.Command, 0)
@@ -66,10 +66,10 @@ func (c *Commands) ChangeHumanEmail(ctx context.Context, email *domain.Email, em
func (c *Commands) VerifyHumanEmail(ctx context.Context, userID, code, resourceowner string, emailCodeGenerator crypto.Generator) (*domain.ObjectDetails, error) {
if userID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-4M0ds", "Errors.User.UserIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-4M0ds", "Errors.User.UserIDMissing")
}
if code == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-çm0ds", "Errors.User.Code.Empty")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-çm0ds", "Errors.User.Code.Empty")
}
existingCode, err := c.emailWriteModel(ctx, userID, resourceowner)
@@ -77,7 +77,7 @@ func (c *Commands) VerifyHumanEmail(ctx context.Context, userID, code, resourceo
return nil, err
}
if existingCode.Code == nil || existingCode.UserState == domain.UserStateUnspecified || existingCode.UserState == domain.UserStateDeleted {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-3n8ud", "Errors.User.Code.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-3n8ud", "Errors.User.Code.NotFound")
}
userAgg := UserAggregateFromWriteModel(&existingCode.WriteModel)
@@ -96,12 +96,12 @@ func (c *Commands) VerifyHumanEmail(ctx context.Context, userID, code, resourceo
_, err = c.eventstore.Push(ctx, user.NewHumanEmailVerificationFailedEvent(ctx, userAgg))
logging.LogWithFields("COMMAND-Dg2z5", "userID", userAgg.ID).OnError(err).Error("NewHumanEmailVerificationFailedEvent push failed")
- return nil, caos_errs.ThrowInvalidArgument(err, "COMMAND-Gdsgs", "Errors.User.Code.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(err, "COMMAND-Gdsgs", "Errors.User.Code.Invalid")
}
func (c *Commands) CreateHumanEmailVerificationCode(ctx context.Context, userID, resourceOwner string, emailCodeGenerator crypto.Generator) (*domain.ObjectDetails, error) {
if userID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-4M0ds", "Errors.User.UserIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-4M0ds", "Errors.User.UserIDMissing")
}
existingEmail, err := c.emailWriteModel(ctx, userID, resourceOwner)
@@ -109,13 +109,13 @@ func (c *Commands) CreateHumanEmailVerificationCode(ctx context.Context, userID,
return nil, err
}
if existingEmail.UserState == domain.UserStateUnspecified || existingEmail.UserState == domain.UserStateDeleted {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-0Pe4r", "Errors.User.Email.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-0Pe4r", "Errors.User.Email.NotFound")
}
if existingEmail.UserState == domain.UserStateInitial {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-E3fbw", "Errors.User.NotInitialised")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-E3fbw", "Errors.User.NotInitialised")
}
if existingEmail.IsEmailVerified {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-3M9ds", "Errors.User.Email.AlreadyVerified")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-3M9ds", "Errors.User.Email.AlreadyVerified")
}
userAgg := UserAggregateFromWriteModel(&existingEmail.WriteModel)
emailCode, _, err := domain.NewEmailCode(emailCodeGenerator)
@@ -135,14 +135,14 @@ func (c *Commands) CreateHumanEmailVerificationCode(ctx context.Context, userID,
func (c *Commands) HumanEmailVerificationCodeSent(ctx context.Context, orgID, userID string) (err error) {
if userID == "" {
- return caos_errs.ThrowInvalidArgument(nil, "COMMAND-4m9fs", "Errors.IDMissing")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-4m9fs", "Errors.IDMissing")
}
existingEmail, err := c.emailWriteModel(ctx, userID, orgID)
if err != nil {
return err
}
if existingEmail.UserState == domain.UserStateUnspecified || existingEmail.UserState == domain.UserStateDeleted {
- return caos_errs.ThrowNotFound(nil, "COMMAND-6n8uH", "Errors.User.Email.NotFound")
+ return zerrors.ThrowNotFound(nil, "COMMAND-6n8uH", "Errors.User.Email.NotFound")
}
userAgg := UserAggregateFromWriteModel(&existingEmail.WriteModel)
_, err = c.eventstore.Push(ctx, user.NewHumanEmailCodeSentEvent(ctx, userAgg))
diff --git a/internal/command/user_human_email_test.go b/internal/command/user_human_email_test.go
index d2861d90f3..7abd65efec 100644
--- a/internal/command/user_human_email_test.go
+++ b/internal/command/user_human_email_test.go
@@ -10,10 +10,10 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_ChangeHumanEmail(t *testing.T) {
@@ -53,7 +53,7 @@ func TestCommandSide_ChangeHumanEmail(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -75,7 +75,7 @@ func TestCommandSide_ChangeHumanEmail(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -118,7 +118,7 @@ func TestCommandSide_ChangeHumanEmail(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -155,7 +155,7 @@ func TestCommandSide_ChangeHumanEmail(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -426,7 +426,7 @@ func TestCommandSide_VerifyHumanEmail(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -442,7 +442,7 @@ func TestCommandSide_VerifyHumanEmail(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -460,7 +460,7 @@ func TestCommandSide_VerifyHumanEmail(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -493,7 +493,7 @@ func TestCommandSide_VerifyHumanEmail(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -544,7 +544,7 @@ func TestCommandSide_VerifyHumanEmail(t *testing.T) {
secretGenerator: GetMockSecretGenerator(t),
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -652,7 +652,7 @@ func TestCommandSide_CreateVerificationCodeHumanEmail(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -669,7 +669,7 @@ func TestCommandSide_CreateVerificationCodeHumanEmail(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -707,7 +707,7 @@ func TestCommandSide_CreateVerificationCodeHumanEmail(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -744,7 +744,7 @@ func TestCommandSide_CreateVerificationCodeHumanEmail(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -855,7 +855,7 @@ func TestCommandSide_EmailVerificationCodeSent(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -872,7 +872,7 @@ func TestCommandSide_EmailVerificationCodeSent(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
diff --git a/internal/command/user_human_init.go b/internal/command/user_human_init.go
index 5af8eb9a53..4770332704 100644
--- a/internal/command/user_human_init.go
+++ b/internal/command/user_human_init.go
@@ -7,15 +7,15 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
// ResendInitialMail resend initial mail and changes email if provided
func (c *Commands) ResendInitialMail(ctx context.Context, userID string, email domain.EmailAddress, resourceOwner string, initCodeGenerator crypto.Generator) (objectDetails *domain.ObjectDetails, err error) {
if userID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-2n8vs", "Errors.User.UserIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-2n8vs", "Errors.User.UserIDMissing")
}
existingCode, err := c.getHumanInitWriteModelByID(ctx, userID, resourceOwner)
@@ -23,10 +23,10 @@ func (c *Commands) ResendInitialMail(ctx context.Context, userID string, email d
return nil, err
}
if existingCode.UserState == domain.UserStateUnspecified || existingCode.UserState == domain.UserStateDeleted {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-2M9df", "Errors.User.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-2M9df", "Errors.User.NotFound")
}
if existingCode.UserState != domain.UserStateInitial {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-2M9sd", "Errors.User.AlreadyInitialised")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-2M9sd", "Errors.User.AlreadyInitialised")
}
var events []eventstore.Command
userAgg := UserAggregateFromWriteModel(&existingCode.WriteModel)
@@ -52,10 +52,10 @@ func (c *Commands) ResendInitialMail(ctx context.Context, userID string, email d
func (c *Commands) HumanVerifyInitCode(ctx context.Context, userID, resourceOwner, code, password string, initCodeGenerator crypto.Generator) error {
if userID == "" {
- return caos_errs.ThrowInvalidArgument(nil, "COMMAND-mkM9f", "Errors.User.UserIDMissing")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-mkM9f", "Errors.User.UserIDMissing")
}
if code == "" {
- return caos_errs.ThrowInvalidArgument(nil, "COMMAND-44G8s", "Errors.User.Code.Empty")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-44G8s", "Errors.User.Code.Empty")
}
existingCode, err := c.getHumanInitWriteModelByID(ctx, userID, resourceOwner)
@@ -63,7 +63,7 @@ func (c *Commands) HumanVerifyInitCode(ctx context.Context, userID, resourceOwne
return err
}
if existingCode.Code == nil || existingCode.UserState == domain.UserStateUnspecified || existingCode.UserState == domain.UserStateDeleted {
- return caos_errs.ThrowNotFound(nil, "COMMAND-mmn5f", "Errors.User.Code.NotFound")
+ return zerrors.ThrowNotFound(nil, "COMMAND-mmn5f", "Errors.User.Code.NotFound")
}
userAgg := UserAggregateFromWriteModel(&existingCode.WriteModel)
@@ -71,7 +71,7 @@ func (c *Commands) HumanVerifyInitCode(ctx context.Context, userID, resourceOwne
if err != nil {
_, err = c.eventstore.Push(ctx, user.NewHumanInitializedCheckFailedEvent(ctx, userAgg))
logging.WithFields("userID", userAgg.ID).OnError(err).Error("NewHumanInitializedCheckFailedEvent push failed")
- return caos_errs.ThrowInvalidArgument(err, "COMMAND-11v6G", "Errors.User.Code.Invalid")
+ return zerrors.ThrowInvalidArgument(err, "COMMAND-11v6G", "Errors.User.Code.Invalid")
}
commands := []eventstore.Command{
user.NewHumanInitializedCheckSucceededEvent(ctx, userAgg),
@@ -80,9 +80,7 @@ func (c *Commands) HumanVerifyInitCode(ctx context.Context, userID, resourceOwne
commands = append(commands, user.NewHumanEmailVerifiedEvent(ctx, userAgg))
}
if password != "" {
- passwordWriteModel := NewHumanPasswordWriteModel(userID, existingCode.ResourceOwner)
- passwordWriteModel.UserState = domain.UserStateActive
- passwordCommand, err := c.setPasswordCommand(ctx, passwordWriteModel, password, false)
+ passwordCommand, err := c.setPasswordCommand(ctx, userAgg, domain.UserStateActive, password, false, false)
if err != nil {
return err
}
@@ -94,14 +92,14 @@ func (c *Commands) HumanVerifyInitCode(ctx context.Context, userID, resourceOwne
func (c *Commands) HumanInitCodeSent(ctx context.Context, orgID, userID string) (err error) {
if userID == "" {
- return caos_errs.ThrowInvalidArgument(nil, "COMMAND-3M9fs", "Errors.IDMissing")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-3M9fs", "Errors.IDMissing")
}
existingInitCode, err := c.getHumanInitWriteModelByID(ctx, userID, orgID)
if err != nil {
return err
}
if existingInitCode.UserState == domain.UserStateUnspecified || existingInitCode.UserState == domain.UserStateDeleted {
- return caos_errs.ThrowNotFound(nil, "COMMAND-556zg", "Errors.User.Code.NotFound")
+ return zerrors.ThrowNotFound(nil, "COMMAND-556zg", "Errors.User.Code.NotFound")
}
userAgg := UserAggregateFromWriteModel(&existingInitCode.WriteModel)
_, err = c.eventstore.Push(ctx, user.NewHumanInitialCodeSentEvent(ctx, userAgg))
diff --git a/internal/command/user_human_init_test.go b/internal/command/user_human_init_test.go
index e221b86658..cc9dc21b0a 100644
--- a/internal/command/user_human_init_test.go
+++ b/internal/command/user_human_init_test.go
@@ -10,10 +10,10 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_ResendInitialMail(t *testing.T) {
@@ -49,7 +49,7 @@ func TestCommandSide_ResendInitialMail(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -66,7 +66,7 @@ func TestCommandSide_ResendInitialMail(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -101,7 +101,7 @@ func TestCommandSide_ResendInitialMail(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -325,7 +325,7 @@ func TestCommandSide_VerifyInitCode(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -341,7 +341,7 @@ func TestCommandSide_VerifyInitCode(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -359,7 +359,7 @@ func TestCommandSide_VerifyInitCode(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -392,7 +392,7 @@ func TestCommandSide_VerifyInitCode(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -443,7 +443,7 @@ func TestCommandSide_VerifyInitCode(t *testing.T) {
secretGenerator: GetMockSecretGenerator(t),
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -626,7 +626,7 @@ func TestCommandSide_InitCodeSent(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -643,7 +643,7 @@ func TestCommandSide_InitCodeSent(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
diff --git a/internal/command/user_human_otp.go b/internal/command/user_human_otp.go
index 103899e58c..38f360649d 100644
--- a/internal/command/user_human_otp.go
+++ b/internal/command/user_human_otp.go
@@ -10,10 +10,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/user"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) ImportHumanTOTP(ctx context.Context, userID, userAgentID, resourceOwner string, key string) error {
@@ -30,7 +30,7 @@ func (c *Commands) ImportHumanTOTP(ctx context.Context, userID, userAgentID, res
return err
}
if otpWriteModel.State == domain.MFAStateReady {
- return caos_errs.ThrowAlreadyExists(nil, "COMMAND-do9se", "Errors.User.MFA.OTP.AlreadyReady")
+ return zerrors.ThrowAlreadyExists(nil, "COMMAND-do9se", "Errors.User.MFA.OTP.AlreadyReady")
}
userAgg := UserAggregateFromWriteModel(&otpWriteModel.WriteModel)
@@ -43,7 +43,7 @@ func (c *Commands) ImportHumanTOTP(ctx context.Context, userID, userAgentID, res
func (c *Commands) AddHumanTOTP(ctx context.Context, userID, resourceOwner string) (*domain.TOTP, error) {
if userID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-5M0sd", "Errors.User.UserIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-5M0sd", "Errors.User.UserIDMissing")
}
prep, err := c.createHumanTOTP(ctx, userID, resourceOwner)
if err != nil {
@@ -71,17 +71,17 @@ func (c *Commands) createHumanTOTP(ctx context.Context, userID, resourceOwner st
human, err := c.getHuman(ctx, userID, resourceOwner)
if err != nil {
logging.WithError(err).WithField("traceID", tracing.TraceIDFromCtx(ctx)).Debug("unable to get human for loginname")
- return nil, caos_errs.ThrowPreconditionFailed(err, "COMMAND-SqyJz", "Errors.User.NotFound")
+ return nil, zerrors.ThrowPreconditionFailed(err, "COMMAND-SqyJz", "Errors.User.NotFound")
}
org, err := c.getOrg(ctx, human.ResourceOwner)
if err != nil {
logging.WithError(err).WithField("traceID", tracing.TraceIDFromCtx(ctx)).Debug("unable to get org for loginname")
- return nil, caos_errs.ThrowPreconditionFailed(err, "COMMAND-55M9f", "Errors.Org.NotFound")
+ return nil, zerrors.ThrowPreconditionFailed(err, "COMMAND-55M9f", "Errors.Org.NotFound")
}
- orgPolicy, err := c.getOrgDomainPolicy(ctx, org.AggregateID)
+ orgPolicy, err := c.domainPolicyWriteModel(ctx, org.AggregateID)
if err != nil {
logging.WithError(err).WithField("traceID", tracing.TraceIDFromCtx(ctx)).Debug("unable to get org policy for loginname")
- return nil, caos_errs.ThrowPreconditionFailed(err, "COMMAND-8ugTs", "Errors.Org.DomainPolicy.NotFound")
+ return nil, zerrors.ThrowPreconditionFailed(err, "COMMAND-8ugTs", "Errors.Org.DomainPolicy.NotFound")
}
otpWriteModel, err := c.totpWriteModelByID(ctx, userID, resourceOwner)
@@ -89,7 +89,7 @@ func (c *Commands) createHumanTOTP(ctx context.Context, userID, resourceOwner st
return nil, err
}
if otpWriteModel.State == domain.MFAStateReady {
- return nil, caos_errs.ThrowAlreadyExists(nil, "COMMAND-do9se", "Errors.User.MFA.OTP.AlreadyReady")
+ return nil, zerrors.ThrowAlreadyExists(nil, "COMMAND-do9se", "Errors.User.MFA.OTP.AlreadyReady")
}
userAgg := UserAggregateFromWriteModel(&otpWriteModel.WriteModel)
@@ -117,7 +117,7 @@ func (c *Commands) createHumanTOTP(ctx context.Context, userID, resourceOwner st
func (c *Commands) HumanCheckMFATOTPSetup(ctx context.Context, userID, code, userAgentID, resourceOwner string) (*domain.ObjectDetails, error) {
if userID == "" {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-8N9ds", "Errors.User.UserIDMissing")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-8N9ds", "Errors.User.UserIDMissing")
}
existingOTP, err := c.totpWriteModelByID(ctx, userID, resourceOwner)
@@ -125,10 +125,10 @@ func (c *Commands) HumanCheckMFATOTPSetup(ctx context.Context, userID, code, use
return nil, err
}
if existingOTP.State == domain.MFAStateUnspecified || existingOTP.State == domain.MFAStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-3Mif9s", "Errors.User.MFA.OTP.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-3Mif9s", "Errors.User.MFA.OTP.NotExisting")
}
if existingOTP.State == domain.MFAStateReady {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-qx4ls", "Errors.Users.MFA.OTP.AlreadyReady")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-qx4ls", "Errors.Users.MFA.OTP.AlreadyReady")
}
if err := domain.VerifyTOTP(code, existingOTP.Secret, c.multifactors.OTP.CryptoMFA); err != nil {
return nil, err
@@ -148,14 +148,14 @@ func (c *Commands) HumanCheckMFATOTPSetup(ctx context.Context, userID, code, use
func (c *Commands) HumanCheckMFATOTP(ctx context.Context, userID, code, resourceOwner string, authRequest *domain.AuthRequest) error {
if userID == "" {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-8N9ds", "Errors.User.UserIDMissing")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-8N9ds", "Errors.User.UserIDMissing")
}
existingOTP, err := c.totpWriteModelByID(ctx, userID, resourceOwner)
if err != nil {
return err
}
if existingOTP.State != domain.MFAStateReady {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-3Mif9s", "Errors.User.MFA.OTP.NotReady")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-3Mif9s", "Errors.User.MFA.OTP.NotReady")
}
userAgg := UserAggregateFromWriteModel(&existingOTP.WriteModel)
err = domain.VerifyTOTP(code, existingOTP.Secret, c.multifactors.OTP.CryptoMFA)
@@ -170,7 +170,7 @@ func (c *Commands) HumanCheckMFATOTP(ctx context.Context, userID, code, resource
func (c *Commands) HumanRemoveTOTP(ctx context.Context, userID, resourceOwner string) (*domain.ObjectDetails, error) {
if userID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-5M0sd", "Errors.User.UserIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-5M0sd", "Errors.User.UserIDMissing")
}
existingOTP, err := c.totpWriteModelByID(ctx, userID, resourceOwner)
@@ -178,7 +178,7 @@ func (c *Commands) HumanRemoveTOTP(ctx context.Context, userID, resourceOwner st
return nil, err
}
if existingOTP.State == domain.MFAStateUnspecified || existingOTP.State == domain.MFAStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-Hd9sd", "Errors.User.MFA.OTP.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-Hd9sd", "Errors.User.MFA.OTP.NotExisting")
}
userAgg := UserAggregateFromWriteModel(&existingOTP.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, user.NewHumanOTPRemovedEvent(ctx, userAgg))
@@ -213,7 +213,7 @@ func (c *Commands) AddHumanOTPSMSWithCheckSucceeded(ctx context.Context, userID,
func (c *Commands) addHumanOTPSMS(ctx context.Context, userID, resourceOwner string, events ...eventCallback) (*domain.ObjectDetails, error) {
if userID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-QSF2s", "Errors.User.UserIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-QSF2s", "Errors.User.UserIDMissing")
}
if err := authz.UserIDInCTX(ctx, userID); err != nil {
return nil, err
@@ -223,10 +223,10 @@ func (c *Commands) addHumanOTPSMS(ctx context.Context, userID, resourceOwner str
return nil, err
}
if otpWriteModel.otpAdded {
- return nil, caos_errs.ThrowAlreadyExists(nil, "COMMAND-Ad3g2", "Errors.User.MFA.OTP.AlreadyReady")
+ return nil, zerrors.ThrowAlreadyExists(nil, "COMMAND-Ad3g2", "Errors.User.MFA.OTP.AlreadyReady")
}
if !otpWriteModel.phoneVerified {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Q54j2", "Errors.User.MFA.OTP.NotReady")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-Q54j2", "Errors.User.MFA.OTP.NotReady")
}
userAgg := UserAggregateFromWriteModel(&otpWriteModel.WriteModel)
cmds := make([]eventstore.Command, len(events)+1)
@@ -242,7 +242,7 @@ func (c *Commands) addHumanOTPSMS(ctx context.Context, userID, resourceOwner str
func (c *Commands) RemoveHumanOTPSMS(ctx context.Context, userID, resourceOwner string) (*domain.ObjectDetails, error) {
if userID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-S3br2", "Errors.User.UserIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-S3br2", "Errors.User.UserIDMissing")
}
existingOTP, err := c.otpSMSWriteModelByID(ctx, userID, resourceOwner)
@@ -255,7 +255,7 @@ func (c *Commands) RemoveHumanOTPSMS(ctx context.Context, userID, resourceOwner
}
}
if !existingOTP.otpAdded {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-Sr3h3", "Errors.User.MFA.OTP.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-Sr3h3", "Errors.User.MFA.OTP.NotExisting")
}
userAgg := UserAggregateFromWriteModel(&existingOTP.WriteModel)
if err = c.pushAppendAndReduce(ctx, existingOTP, user.NewHumanOTPSMSRemovedEvent(ctx, userAgg)); err != nil {
@@ -336,17 +336,17 @@ func (c *Commands) AddHumanOTPEmailWithCheckSucceeded(ctx context.Context, userI
func (c *Commands) addHumanOTPEmail(ctx context.Context, userID, resourceOwner string, events ...eventCallback) (*domain.ObjectDetails, error) {
if userID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-Sg1hz", "Errors.User.UserIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-Sg1hz", "Errors.User.UserIDMissing")
}
otpWriteModel, err := c.otpEmailWriteModelByID(ctx, userID, resourceOwner)
if err != nil {
return nil, err
}
if otpWriteModel.otpAdded {
- return nil, caos_errs.ThrowAlreadyExists(nil, "COMMAND-MKL2s", "Errors.User.MFA.OTP.AlreadyReady")
+ return nil, zerrors.ThrowAlreadyExists(nil, "COMMAND-MKL2s", "Errors.User.MFA.OTP.AlreadyReady")
}
if !otpWriteModel.emailVerified {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-KLJ2d", "Errors.User.MFA.OTP.NotReady")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-KLJ2d", "Errors.User.MFA.OTP.NotReady")
}
userAgg := UserAggregateFromWriteModel(&otpWriteModel.WriteModel)
cmds := make([]eventstore.Command, len(events)+1)
@@ -362,7 +362,7 @@ func (c *Commands) addHumanOTPEmail(ctx context.Context, userID, resourceOwner s
func (c *Commands) RemoveHumanOTPEmail(ctx context.Context, userID, resourceOwner string) (*domain.ObjectDetails, error) {
if userID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-S2h11", "Errors.User.UserIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-S2h11", "Errors.User.UserIDMissing")
}
existingOTP, err := c.otpEmailWriteModelByID(ctx, userID, resourceOwner)
@@ -375,7 +375,7 @@ func (c *Commands) RemoveHumanOTPEmail(ctx context.Context, userID, resourceOwne
}
}
if !existingOTP.otpAdded {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-b312D", "Errors.User.MFA.OTP.NotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-b312D", "Errors.User.MFA.OTP.NotExisting")
}
userAgg := UserAggregateFromWriteModel(&existingOTP.WriteModel)
if err = c.pushAppendAndReduce(ctx, existingOTP, user.NewHumanOTPEmailRemovedEvent(ctx, userAgg)); err != nil {
@@ -446,14 +446,14 @@ func (c *Commands) sendHumanOTP(
codeAddedEvent func(ctx context.Context, aggregate *eventstore.Aggregate, code *crypto.CryptoValue, expiry time.Duration, info *user.AuthRequestInfo) eventstore.Command,
) (err error) {
if userID == "" {
- return caos_errs.ThrowInvalidArgument(nil, "COMMAND-S3SF1", "Errors.User.UserIDMissing")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-S3SF1", "Errors.User.UserIDMissing")
}
existingOTP, err := writeModelByID(ctx, userID, resourceOwner)
if err != nil {
return err
}
if !existingOTP.OTPAdded() {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-SFD52", "Errors.User.MFA.OTP.NotReady")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-SFD52", "Errors.User.MFA.OTP.NotReady")
}
config, err := secretGeneratorConfigWithDefault(ctx, c.eventstore.Filter, secretGeneratorType, defaultSecretGenerator)
if err != nil {
@@ -476,14 +476,14 @@ func (c *Commands) humanOTPSent(
codeSentEvent func(ctx context.Context, aggregate *eventstore.Aggregate) eventstore.Command,
) (err error) {
if userID == "" {
- return caos_errs.ThrowInvalidArgument(nil, "COMMAND-AE2h2", "Errors.User.UserIDMissing")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-AE2h2", "Errors.User.UserIDMissing")
}
existingOTP, err := writeModelByID(ctx, userID, resourceOwner)
if err != nil {
return err
}
if !existingOTP.OTPAdded() {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-SD3gh", "Errors.User.MFA.OTP.NotReady")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-SD3gh", "Errors.User.MFA.OTP.NotReady")
}
userAgg := &user.NewAggregate(userID, resourceOwner).Aggregate
_, err = c.eventstore.Push(ctx, codeSentEvent(ctx, userAgg))
@@ -499,20 +499,20 @@ func (c *Commands) humanCheckOTP(
checkFailedEvent func(ctx context.Context, aggregate *eventstore.Aggregate, info *user.AuthRequestInfo) eventstore.Command,
) error {
if userID == "" {
- return caos_errs.ThrowInvalidArgument(nil, "COMMAND-S453v", "Errors.User.UserIDMissing")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-S453v", "Errors.User.UserIDMissing")
}
if code == "" {
- return caos_errs.ThrowInvalidArgument(nil, "COMMAND-SJl2g", "Errors.User.Code.Empty")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-SJl2g", "Errors.User.Code.Empty")
}
existingOTP, err := writeModelByID(ctx, userID, resourceOwner)
if err != nil {
return err
}
if !existingOTP.OTPAdded() {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-d2r52", "Errors.User.MFA.OTP.NotReady")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-d2r52", "Errors.User.MFA.OTP.NotReady")
}
if existingOTP.Code() == nil {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-S34gh", "Errors.User.Code.NotFound")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-S34gh", "Errors.User.Code.NotFound")
}
userAgg := &user.NewAggregate(userID, existingOTP.ResourceOwner()).Aggregate
err = crypto.VerifyCodeWithAlgorithm(existingOTP.CodeCreationDate(), existingOTP.CodeExpiry(), existingOTP.Code(), code, c.userEncryption)
diff --git a/internal/command/user_human_otp_test.go b/internal/command/user_human_otp_test.go
index 080e9cb86a..490751610d 100644
--- a/internal/command/user_human_otp_test.go
+++ b/internal/command/user_human_otp_test.go
@@ -16,11 +16,11 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddHumanTOTP(t *testing.T) {
@@ -57,7 +57,7 @@ func TestCommandSide_AddHumanTOTP(t *testing.T) {
userID: "",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -74,7 +74,7 @@ func TestCommandSide_AddHumanTOTP(t *testing.T) {
userID: "user1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -105,7 +105,7 @@ func TestCommandSide_AddHumanTOTP(t *testing.T) {
userID: "user1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -143,7 +143,7 @@ func TestCommandSide_AddHumanTOTP(t *testing.T) {
userID: "user1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -202,7 +202,7 @@ func TestCommandSide_AddHumanTOTP(t *testing.T) {
userID: "user1",
},
res: res{
- err: caos_errs.IsErrorAlreadyExists,
+ err: zerrors.IsErrorAlreadyExists,
},
},
}
@@ -254,7 +254,7 @@ func TestCommands_createHumanTOTP(t *testing.T) {
resourceOwner: "org1",
userID: "user1",
},
- wantErr: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-SqyJz", "Errors.User.NotFound"),
+ wantErr: zerrors.ThrowPreconditionFailed(nil, "COMMAND-SqyJz", "Errors.User.NotFound"),
},
{
name: "org not existing, not found error",
@@ -285,7 +285,7 @@ func TestCommands_createHumanTOTP(t *testing.T) {
resourceOwner: "org1",
userID: "user1",
},
- wantErr: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-55M9f", "Errors.Org.NotFound"),
+ wantErr: zerrors.ThrowPreconditionFailed(nil, "COMMAND-55M9f", "Errors.Org.NotFound"),
},
{
name: "org iam policy not existing, not found error",
@@ -325,7 +325,7 @@ func TestCommands_createHumanTOTP(t *testing.T) {
resourceOwner: "org1",
userID: "user1",
},
- wantErr: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-8ugTs", "Errors.Org.DomainPolicy.NotFound"),
+ wantErr: zerrors.ThrowPreconditionFailed(nil, "COMMAND-8ugTs", "Errors.Org.DomainPolicy.NotFound"),
},
{
name: "otp already exists, already exists error",
@@ -389,7 +389,7 @@ func TestCommands_createHumanTOTP(t *testing.T) {
resourceOwner: "org1",
userID: "user1",
},
- wantErr: caos_errs.ThrowAlreadyExists(nil, "COMMAND-do9se", "Errors.User.MFA.OTP.AlreadyReady"),
+ wantErr: zerrors.ThrowAlreadyExists(nil, "COMMAND-do9se", "Errors.User.MFA.OTP.AlreadyReady"),
},
{
name: "issuer not in context",
@@ -438,7 +438,7 @@ func TestCommands_createHumanTOTP(t *testing.T) {
resourceOwner: "org1",
userID: "user1",
},
- wantErr: caos_errs.ThrowInternal(nil, "TOTP-ieY3o", "Errors.Internal"),
+ wantErr: zerrors.ThrowInternal(nil, "TOTP-ieY3o", "Errors.Internal"),
},
{
name: "success",
@@ -544,7 +544,7 @@ func TestCommands_HumanCheckMFATOTPSetup(t *testing.T) {
{
name: "missing user id",
args: args{},
- wantErr: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-8N9ds", "Errors.User.UserIDMissing"),
+ wantErr: zerrors.ThrowPreconditionFailed(nil, "COMMAND-8N9ds", "Errors.User.UserIDMissing"),
},
{
name: "filter error",
@@ -578,7 +578,7 @@ func TestCommands_HumanCheckMFATOTPSetup(t *testing.T) {
resourceOwner: "org1",
userID: "user1",
},
- wantErr: caos_errs.ThrowNotFound(nil, "COMMAND-3Mif9s", "Errors.User.MFA.OTP.NotExisting"),
+ wantErr: zerrors.ThrowNotFound(nil, "COMMAND-3Mif9s", "Errors.User.MFA.OTP.NotExisting"),
},
{
name: "otp already ready error",
@@ -602,7 +602,7 @@ func TestCommands_HumanCheckMFATOTPSetup(t *testing.T) {
resourceOwner: "org1",
userID: "user1",
},
- wantErr: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-qx4ls", "Errors.Users.MFA.OTP.AlreadyReady"),
+ wantErr: zerrors.ThrowPreconditionFailed(nil, "COMMAND-qx4ls", "Errors.Users.MFA.OTP.AlreadyReady"),
},
{
name: "wrong code",
@@ -621,7 +621,7 @@ func TestCommands_HumanCheckMFATOTPSetup(t *testing.T) {
code: "wrong",
userID: "user1",
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "EVENT-8isk2", "Errors.User.MFA.OTP.InvalidCode"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "EVENT-8isk2", "Errors.User.MFA.OTP.InvalidCode"),
},
{
name: "push error",
@@ -727,7 +727,7 @@ func TestCommandSide_RemoveHumanTOTP(t *testing.T) {
userID: "",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -744,7 +744,7 @@ func TestCommandSide_RemoveHumanTOTP(t *testing.T) {
userID: "user1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -831,7 +831,7 @@ func TestCommandSide_AddHumanOTPSMS(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowInvalidArgument(nil, "COMMAND-QSF2s", "Errors.User.UserIDMissing"),
+ err: zerrors.ThrowInvalidArgument(nil, "COMMAND-QSF2s", "Errors.User.UserIDMissing"),
},
},
{
@@ -845,7 +845,7 @@ func TestCommandSide_AddHumanOTPSMS(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowPermissionDenied(nil, "AUTH-Bohd2", "Errors.User.UserIDWrong"),
+ err: zerrors.ThrowPermissionDenied(nil, "AUTH-Bohd2", "Errors.User.UserIDWrong"),
},
},
{
@@ -867,7 +867,7 @@ func TestCommandSide_AddHumanOTPSMS(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowAlreadyExists(nil, "COMMAND-Ad3g2", "Errors.User.MFA.OTP.AlreadyReady"),
+ err: zerrors.ThrowAlreadyExists(nil, "COMMAND-Ad3g2", "Errors.User.MFA.OTP.AlreadyReady"),
},
},
{
@@ -883,7 +883,7 @@ func TestCommandSide_AddHumanOTPSMS(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Q54j2", "Errors.User.MFA.OTP.NotReady"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-Q54j2", "Errors.User.MFA.OTP.NotReady"),
},
},
{
@@ -916,7 +916,7 @@ func TestCommandSide_AddHumanOTPSMS(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Q54j2", "Errors.User.MFA.OTP.NotReady"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-Q54j2", "Errors.User.MFA.OTP.NotReady"),
},
},
{
@@ -1128,7 +1128,7 @@ func TestCommandSide_RemoveHumanOTPSMS(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowInvalidArgument(nil, "COMMAND-S3br2", "Errors.User.UserIDMissing"),
+ err: zerrors.ThrowInvalidArgument(nil, "COMMAND-S3br2", "Errors.User.UserIDMissing"),
},
},
{
@@ -1145,7 +1145,7 @@ func TestCommandSide_RemoveHumanOTPSMS(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
+ err: zerrors.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
},
},
{
@@ -1162,7 +1162,7 @@ func TestCommandSide_RemoveHumanOTPSMS(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowNotFound(nil, "COMMAND-Sr3h3", "Errors.User.MFA.OTP.NotExisting"),
+ err: zerrors.ThrowNotFound(nil, "COMMAND-Sr3h3", "Errors.User.MFA.OTP.NotExisting"),
},
},
{
@@ -1256,7 +1256,7 @@ func TestCommandSide_HumanSendOTPSMS(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowInvalidArgument(nil, "COMMAND-S3SF1", "Errors.User.UserIDMissing"),
+ err: zerrors.ThrowInvalidArgument(nil, "COMMAND-S3SF1", "Errors.User.UserIDMissing"),
},
},
{
@@ -1273,7 +1273,7 @@ func TestCommandSide_HumanSendOTPSMS(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-SFD52", "Errors.User.MFA.OTP.NotReady"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-SFD52", "Errors.User.MFA.OTP.NotReady"),
},
},
{
@@ -1484,7 +1484,7 @@ func TestCommandSide_HumanOTPSMSCodeSent(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowInvalidArgument(nil, "COMMAND-AE2h2", "Errors.User.UserIDMissing"),
+ err: zerrors.ThrowInvalidArgument(nil, "COMMAND-AE2h2", "Errors.User.UserIDMissing"),
},
},
{
@@ -1500,7 +1500,7 @@ func TestCommandSide_HumanOTPSMSCodeSent(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-SD3gh", "Errors.User.MFA.OTP.NotReady"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-SD3gh", "Errors.User.MFA.OTP.NotReady"),
},
},
{
@@ -1581,7 +1581,7 @@ func TestCommandSide_HumanCheckOTPSMS(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowInvalidArgument(nil, "COMMAND-S453v", "Errors.User.UserIDMissing"),
+ err: zerrors.ThrowInvalidArgument(nil, "COMMAND-S453v", "Errors.User.UserIDMissing"),
},
},
{
@@ -1596,7 +1596,7 @@ func TestCommandSide_HumanCheckOTPSMS(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowInvalidArgument(nil, "COMMAND-SJl2g", "Errors.User.Code.Empty"),
+ err: zerrors.ThrowInvalidArgument(nil, "COMMAND-SJl2g", "Errors.User.Code.Empty"),
},
},
{
@@ -1613,7 +1613,7 @@ func TestCommandSide_HumanCheckOTPSMS(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-d2r52", "Errors.User.MFA.OTP.NotReady"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-d2r52", "Errors.User.MFA.OTP.NotReady"),
},
},
{
@@ -1636,7 +1636,7 @@ func TestCommandSide_HumanCheckOTPSMS(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-S34gh", "Errors.User.Code.NotFound"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-S34gh", "Errors.User.Code.NotFound"),
},
},
{
@@ -1704,7 +1704,7 @@ func TestCommandSide_HumanCheckOTPSMS(t *testing.T) {
},
},
res: res{
- err: caos_errs.ThrowInvalidArgument(nil, "CODE-woT0xc", "Errors.User.Code.Invalid"),
+ err: zerrors.ThrowInvalidArgument(nil, "CODE-woT0xc", "Errors.User.Code.Invalid"),
},
},
{
@@ -1823,7 +1823,7 @@ func TestCommandSide_AddHumanOTPEmail(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowInvalidArgument(nil, "COMMAND-Sg1hz", "Errors.User.UserIDMissing"),
+ err: zerrors.ThrowInvalidArgument(nil, "COMMAND-Sg1hz", "Errors.User.UserIDMissing"),
},
},
{
@@ -1845,7 +1845,7 @@ func TestCommandSide_AddHumanOTPEmail(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowAlreadyExists(nil, "COMMAND-MKL2s", "Errors.User.MFA.OTP.AlreadyReady"),
+ err: zerrors.ThrowAlreadyExists(nil, "COMMAND-MKL2s", "Errors.User.MFA.OTP.AlreadyReady"),
},
},
{
@@ -1861,7 +1861,7 @@ func TestCommandSide_AddHumanOTPEmail(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-KLJ2d", "Errors.User.MFA.OTP.NotReady"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-KLJ2d", "Errors.User.MFA.OTP.NotReady"),
},
},
{
@@ -2073,7 +2073,7 @@ func TestCommandSide_RemoveHumanOTPEmail(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowInvalidArgument(nil, "COMMAND-S2h11", "Errors.User.UserIDMissing"),
+ err: zerrors.ThrowInvalidArgument(nil, "COMMAND-S2h11", "Errors.User.UserIDMissing"),
},
},
{
@@ -2090,7 +2090,7 @@ func TestCommandSide_RemoveHumanOTPEmail(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
+ err: zerrors.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
},
},
{
@@ -2107,7 +2107,7 @@ func TestCommandSide_RemoveHumanOTPEmail(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowNotFound(nil, "COMMAND-b312D", "Errors.User.MFA.OTP.NotExisting"),
+ err: zerrors.ThrowNotFound(nil, "COMMAND-b312D", "Errors.User.MFA.OTP.NotExisting"),
},
},
{
@@ -2201,7 +2201,7 @@ func TestCommandSide_HumanSendOTPEmail(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowInvalidArgument(nil, "COMMAND-S3SF1", "Errors.User.UserIDMissing"),
+ err: zerrors.ThrowInvalidArgument(nil, "COMMAND-S3SF1", "Errors.User.UserIDMissing"),
},
},
{
@@ -2218,7 +2218,7 @@ func TestCommandSide_HumanSendOTPEmail(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-SFD52", "Errors.User.MFA.OTP.NotReady"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-SFD52", "Errors.User.MFA.OTP.NotReady"),
},
},
{
@@ -2429,7 +2429,7 @@ func TestCommandSide_HumanOTPEmailCodeSent(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowInvalidArgument(nil, "COMMAND-AE2h2", "Errors.User.UserIDMissing"),
+ err: zerrors.ThrowInvalidArgument(nil, "COMMAND-AE2h2", "Errors.User.UserIDMissing"),
},
},
{
@@ -2445,7 +2445,7 @@ func TestCommandSide_HumanOTPEmailCodeSent(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-SD3gh", "Errors.User.MFA.OTP.NotReady"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-SD3gh", "Errors.User.MFA.OTP.NotReady"),
},
},
{
@@ -2526,7 +2526,7 @@ func TestCommandSide_HumanCheckOTPEmail(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowInvalidArgument(nil, "COMMAND-S453v", "Errors.User.UserIDMissing"),
+ err: zerrors.ThrowInvalidArgument(nil, "COMMAND-S453v", "Errors.User.UserIDMissing"),
},
},
{
@@ -2541,7 +2541,7 @@ func TestCommandSide_HumanCheckOTPEmail(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowInvalidArgument(nil, "COMMAND-SJl2g", "Errors.User.Code.Empty"),
+ err: zerrors.ThrowInvalidArgument(nil, "COMMAND-SJl2g", "Errors.User.Code.Empty"),
},
},
{
@@ -2558,7 +2558,7 @@ func TestCommandSide_HumanCheckOTPEmail(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-d2r52", "Errors.User.MFA.OTP.NotReady"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-d2r52", "Errors.User.MFA.OTP.NotReady"),
},
},
{
@@ -2581,7 +2581,7 @@ func TestCommandSide_HumanCheckOTPEmail(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-S34gh", "Errors.User.Code.NotFound"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-S34gh", "Errors.User.Code.NotFound"),
},
},
{
@@ -2649,7 +2649,7 @@ func TestCommandSide_HumanCheckOTPEmail(t *testing.T) {
},
},
res: res{
- err: caos_errs.ThrowInvalidArgument(nil, "CODE-woT0xc", "Errors.User.Code.Invalid"),
+ err: zerrors.ThrowInvalidArgument(nil, "CODE-woT0xc", "Errors.User.Code.Invalid"),
},
},
{
diff --git a/internal/command/user_human_password.go b/internal/command/user_human_password.go
index fa87770a5f..251ffe83fb 100644
--- a/internal/command/user_human_password.go
+++ b/internal/command/user_human_password.go
@@ -9,24 +9,24 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/user"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) SetPassword(ctx context.Context, orgID, userID, password string, oneTime bool) (objectDetails *domain.ObjectDetails, err error) {
ctx, span := tracing.NewSpan(ctx)
defer func() { span.EndWithError(err) }()
if userID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-3M0fs", "Errors.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-3M0fs", "Errors.IDMissing")
}
wm, err := c.passwordWriteModel(ctx, userID, orgID)
if err != nil {
return nil, err
}
if !wm.UserState.Exists() {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-3M0fs", "Errors.User.NotFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-3M0fs", "Errors.User.NotFound")
}
if err = c.checkPermission(ctx, domain.PermissionUserWrite, wm.ResourceOwner, userID); err != nil {
return nil, err
@@ -34,15 +34,15 @@ func (c *Commands) SetPassword(ctx context.Context, orgID, userID, password stri
return c.setPassword(ctx, wm, password, oneTime)
}
-func (c *Commands) SetPasswordWithVerifyCode(ctx context.Context, orgID, userID, code, password, userAgentID string) (objectDetails *domain.ObjectDetails, err error) {
+func (c *Commands) SetPasswordWithVerifyCode(ctx context.Context, orgID, userID, code, password string) (objectDetails *domain.ObjectDetails, err error) {
ctx, span := tracing.NewSpan(ctx)
defer func() { span.EndWithError(err) }()
if userID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-3M9fs", "Errors.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-3M9fs", "Errors.IDMissing")
}
if password == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-Mf0sd", "Errors.User.Password.Empty")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-Mf0sd", "Errors.User.Password.Empty")
}
wm, err := c.passwordWriteModel(ctx, userID, orgID)
if err != nil {
@@ -50,7 +50,7 @@ func (c *Commands) SetPasswordWithVerifyCode(ctx context.Context, orgID, userID,
}
if wm.Code == nil || wm.UserState == domain.UserStateUnspecified || wm.UserState == domain.UserStateDeleted {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-2M9fs", "Errors.User.Code.NotFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-2M9fs", "Errors.User.Code.NotFound")
}
err = crypto.VerifyCodeWithAlgorithm(wm.CodeCreationDate, wm.CodeExpiry, wm.Code, code, c.userEncryption)
@@ -61,8 +61,10 @@ func (c *Commands) SetPasswordWithVerifyCode(ctx context.Context, orgID, userID,
return c.setPassword(ctx, wm, password, false)
}
-func (c *Commands) setPassword(ctx context.Context, wm *HumanPasswordWriteModel, password string, changeRequired bool) (objectDetails *domain.ObjectDetails, err error) {
- command, err := c.setPasswordCommand(ctx, wm, password, changeRequired)
+// setEncodedPassword add change event from already encoded password to HumanPasswordWriteModel and return the necessary object details for response
+func (c *Commands) setEncodedPassword(ctx context.Context, wm *HumanPasswordWriteModel, password string, changeRequired bool) (objectDetails *domain.ObjectDetails, err error) {
+ agg := user.NewAggregate(wm.AggregateID, wm.ResourceOwner)
+ command, err := c.setPasswordCommand(ctx, &agg.Aggregate, wm.UserState, password, changeRequired, true)
if err != nil {
return nil, err
}
@@ -73,65 +75,85 @@ func (c *Commands) setPassword(ctx context.Context, wm *HumanPasswordWriteModel,
return writeModelToObjectDetails(&wm.WriteModel), nil
}
-func (c *Commands) setPasswordCommand(ctx context.Context, wm *HumanPasswordWriteModel, password string, changeRequired bool) (_ eventstore.Command, err error) {
- if err = c.canUpdatePassword(ctx, password, wm); err != nil {
- return nil, err
- }
- ctx, span := tracing.NewNamedSpan(ctx, "passwap.Hash")
- encoded, err := c.userPasswordHasher.Hash(password)
- span.EndWithError(err)
- if err = convertPasswapErr(err); err != nil {
- return nil, err
- }
- return user.NewHumanPasswordChangedEvent(ctx, UserAggregateFromWriteModel(&wm.WriteModel), encoded, changeRequired, ""), nil
-}
-
-func (c *Commands) ChangePassword(ctx context.Context, orgID, userID, oldPassword, newPassword, userAgentID string) (objectDetails *domain.ObjectDetails, err error) {
- ctx, span := tracing.NewSpan(ctx)
- defer func() { span.EndWithError(err) }()
-
- if userID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-3M0fs", "Errors.IDMissing")
- }
- if oldPassword == "" || newPassword == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-3M0fs", "Errors.User.Password.Empty")
- }
- wm, err := c.passwordWriteModel(ctx, userID, orgID)
+// setPassword add change event to HumanPasswordWriteModel and return the necessary object details for response
+func (c *Commands) setPassword(ctx context.Context, wm *HumanPasswordWriteModel, password string, changeRequired bool) (objectDetails *domain.ObjectDetails, err error) {
+ agg := user.NewAggregate(wm.AggregateID, wm.ResourceOwner)
+ command, err := c.setPasswordCommand(ctx, &agg.Aggregate, wm.UserState, password, changeRequired, false)
if err != nil {
return nil, err
}
- if wm.EncodedHash == "" {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Fds3s", "Errors.User.Password.Empty")
- }
- if err = c.canUpdatePassword(ctx, newPassword, wm); err != nil {
- return nil, err
- }
-
- ctx, spanPasswap := tracing.NewNamedSpan(ctx, "passwap.VerifyAndUpdate")
- updated, err := c.userPasswordHasher.VerifyAndUpdate(wm.EncodedHash, oldPassword, newPassword)
- spanPasswap.EndWithError(err)
- if err = convertPasswapErr(err); err != nil {
- return nil, err
- }
- err = c.pushAppendAndReduce(ctx, wm,
- user.NewHumanPasswordChangedEvent(ctx, UserAggregateFromWriteModel(&wm.WriteModel), updated, false, userAgentID))
+ err = c.pushAppendAndReduce(ctx, wm, command)
if err != nil {
return nil, err
}
return writeModelToObjectDetails(&wm.WriteModel), nil
}
-func (c *Commands) canUpdatePassword(ctx context.Context, newPassword string, wm *HumanPasswordWriteModel) (err error) {
+func (c *Commands) setPasswordCommand(ctx context.Context, agg *eventstore.Aggregate, userState domain.UserState, password string, changeRequired, encoded bool) (_ eventstore.Command, err error) {
+ if err = c.canUpdatePassword(ctx, password, agg.ResourceOwner, userState); err != nil {
+ return nil, err
+ }
+
+ if !encoded {
+ ctx, span := tracing.NewNamedSpan(ctx, "passwap.Hash")
+ encodedPassword, err := c.userPasswordHasher.Hash(password)
+ span.EndWithError(err)
+ if err = convertPasswapErr(err); err != nil {
+ return nil, err
+ }
+ return user.NewHumanPasswordChangedEvent(ctx, agg, encodedPassword, changeRequired, ""), nil
+ }
+ return user.NewHumanPasswordChangedEvent(ctx, agg, password, changeRequired, ""), nil
+}
+
+// ChangePassword change password of existing user
+func (c *Commands) ChangePassword(ctx context.Context, orgID, userID, oldPassword, newPassword string) (objectDetails *domain.ObjectDetails, err error) {
ctx, span := tracing.NewSpan(ctx)
defer func() { span.EndWithError(err) }()
- if wm.UserState == domain.UserStateUnspecified || wm.UserState == domain.UserStateDeleted {
- return caos_errs.ThrowNotFound(nil, "COMMAND-G8dh3", "Errors.User.Password.NotFound")
+ if userID == "" {
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-3M0fs", "Errors.IDMissing")
}
- if wm.UserState == domain.UserStateInitial {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-M9dse", "Errors.User.NotInitialised")
+ if oldPassword == "" || newPassword == "" {
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-3M0fs", "Errors.User.Password.Empty")
}
- policy, err := c.getOrgPasswordComplexityPolicy(ctx, wm.ResourceOwner)
+ wm, err := c.passwordWriteModel(ctx, userID, orgID)
+ if err != nil {
+ return nil, err
+ }
+
+ newPasswordHash, err := c.verifyAndUpdatePassword(ctx, wm.EncodedHash, oldPassword, newPassword)
+ if err != nil {
+ return nil, err
+ }
+ return c.setEncodedPassword(ctx, wm, newPasswordHash, false)
+}
+
+// verifyAndUpdatePassword verify if the old password is correct with the encoded hash and
+// returns the hash of the new password if so
+func (c *Commands) verifyAndUpdatePassword(ctx context.Context, encodedHash, oldPassword, newPassword string) (string, error) {
+ if encodedHash == "" {
+ return "", zerrors.ThrowPreconditionFailed(nil, "COMMAND-Fds3s", "Errors.User.Password.NotSet")
+ }
+
+ _, spanPasswap := tracing.NewNamedSpan(ctx, "passwap.Verify")
+ updated, err := c.userPasswordHasher.VerifyAndUpdate(encodedHash, oldPassword, newPassword)
+ spanPasswap.EndWithError(err)
+ return updated, convertPasswapErr(err)
+}
+
+// canUpdatePassword checks uf the given password can be used to be the password of a user
+func (c *Commands) canUpdatePassword(ctx context.Context, newPassword string, resourceOwner string, state domain.UserState) (err error) {
+ ctx, span := tracing.NewSpan(ctx)
+ defer func() { span.EndWithError(err) }()
+
+ if !isUserStateExists(state) {
+ return zerrors.ThrowNotFound(nil, "COMMAND-G8dh3", "Errors.User.Password.NotFound")
+ }
+ if state == domain.UserStateInitial {
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-M9dse", "Errors.User.NotInitialised")
+ }
+ policy, err := c.getOrgPasswordComplexityPolicy(ctx, resourceOwner)
if err != nil {
return err
}
@@ -142,20 +164,21 @@ func (c *Commands) canUpdatePassword(ctx context.Context, newPassword string, wm
return nil
}
+// RequestSetPassword generate and send out new code to change password for a specific user
func (c *Commands) RequestSetPassword(ctx context.Context, userID, resourceOwner string, notifyType domain.NotificationType, passwordVerificationCode crypto.Generator) (objectDetails *domain.ObjectDetails, err error) {
if userID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-M00oL", "Errors.User.UserIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-M00oL", "Errors.User.UserIDMissing")
}
existingHuman, err := c.userWriteModelByID(ctx, userID, resourceOwner)
if err != nil {
return nil, err
}
- if existingHuman.UserState == domain.UserStateUnspecified || existingHuman.UserState == domain.UserStateDeleted {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Hj9ds", "Errors.User.NotFound")
+ if !isUserStateExists(existingHuman.UserState) {
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-Hj9ds", "Errors.User.NotFound")
}
if existingHuman.UserState == domain.UserStateInitial {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-2M9sd", "Errors.User.NotInitialised")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-2M9sd", "Errors.User.NotInitialised")
}
userAgg := UserAggregateFromWriteModel(&existingHuman.WriteModel)
passwordCode, err := domain.NewPasswordCode(passwordVerificationCode)
@@ -173,9 +196,10 @@ func (c *Commands) RequestSetPassword(ctx context.Context, userID, resourceOwner
return writeModelToObjectDetails(&existingHuman.WriteModel), nil
}
+// PasswordCodeSent notification send with code to change password
func (c *Commands) PasswordCodeSent(ctx context.Context, orgID, userID string) (err error) {
if userID == "" {
- return caos_errs.ThrowInvalidArgument(nil, "COMMAND-meEfe", "Errors.User.UserIDMissing")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-meEfe", "Errors.User.UserIDMissing")
}
existingPassword, err := c.passwordWriteModel(ctx, userID, orgID)
@@ -183,16 +207,17 @@ func (c *Commands) PasswordCodeSent(ctx context.Context, orgID, userID string) (
return err
}
if existingPassword.UserState == domain.UserStateUnspecified || existingPassword.UserState == domain.UserStateDeleted {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-3n77z", "Errors.User.NotFound")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-3n77z", "Errors.User.NotFound")
}
userAgg := UserAggregateFromWriteModel(&existingPassword.WriteModel)
_, err = c.eventstore.Push(ctx, user.NewHumanPasswordCodeSentEvent(ctx, userAgg))
return err
}
+// PasswordChangeSent notification sent that user changed his password
func (c *Commands) PasswordChangeSent(ctx context.Context, orgID, userID string) (err error) {
if userID == "" {
- return caos_errs.ThrowInvalidArgument(nil, "COMMAND-pqlm2n", "Errors.User.UserIDMissing")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-pqlm2n", "Errors.User.UserIDMissing")
}
existingPassword, err := c.passwordWriteModel(ctx, userID, orgID)
@@ -200,45 +225,46 @@ func (c *Commands) PasswordChangeSent(ctx context.Context, orgID, userID string)
return err
}
if existingPassword.UserState == domain.UserStateUnspecified || existingPassword.UserState == domain.UserStateDeleted {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-x902b2v", "Errors.User.NotFound")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-x902b2v", "Errors.User.NotFound")
}
userAgg := UserAggregateFromWriteModel(&existingPassword.WriteModel)
_, err = c.eventstore.Push(ctx, user.NewHumanPasswordChangeSentEvent(ctx, userAgg))
return err
}
+// HumanCheckPassword check password for user with additional informations from authRequest
func (c *Commands) HumanCheckPassword(ctx context.Context, orgID, userID, password string, authRequest *domain.AuthRequest, lockoutPolicy *domain.LockoutPolicy) (err error) {
ctx, span := tracing.NewSpan(ctx)
defer func() { span.EndWithError(err) }()
if userID == "" {
- return caos_errs.ThrowInvalidArgument(nil, "COMMAND-4Mfsf", "Errors.User.UserIDMissing")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-4Mfsf", "Errors.User.UserIDMissing")
}
if password == "" {
- return caos_errs.ThrowInvalidArgument(nil, "COMMAND-3n8fs", "Errors.User.Password.Empty")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-3n8fs", "Errors.User.Password.Empty")
}
loginPolicy, err := c.getOrgLoginPolicy(ctx, orgID)
if err != nil {
- return caos_errs.ThrowPreconditionFailed(err, "COMMAND-Edf3g", "Errors.Org.LoginPolicy.NotFound")
+ return zerrors.ThrowPreconditionFailed(err, "COMMAND-Edf3g", "Errors.Org.LoginPolicy.NotFound")
}
if !loginPolicy.AllowUsernamePassword {
- return caos_errs.ThrowPreconditionFailed(err, "COMMAND-Dft32", "Errors.Org.LoginPolicy.UsernamePasswordNotAllowed")
+ return zerrors.ThrowPreconditionFailed(err, "COMMAND-Dft32", "Errors.Org.LoginPolicy.UsernamePasswordNotAllowed")
}
wm, err := c.passwordWriteModel(ctx, userID, orgID)
if err != nil {
return err
}
- if wm.UserState == domain.UserStateUnspecified || wm.UserState == domain.UserStateDeleted {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-3n77z", "Errors.User.NotFound")
+
+ if !isUserStateExists(wm.UserState) {
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-3n77z", "Errors.User.NotFound")
}
if wm.UserState == domain.UserStateLocked {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-JLK35", "Errors.User.Locked")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-JLK35", "Errors.User.Locked")
}
-
if wm.EncodedHash == "" {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-3nJ4t", "Errors.User.Password.NotSet")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-3nJ4t", "Errors.User.Password.NotSet")
}
userAgg := UserAggregateFromWriteModel(&wm.WriteModel)
@@ -254,7 +280,7 @@ func (c *Commands) HumanCheckPassword(ctx context.Context, orgID, userID, passwo
return recheckErr
}
if wm.UserState == domain.UserStateLocked {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-SFA3t", "Errors.User.Locked")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-SFA3t", "Errors.User.Locked")
}
if err == nil {
@@ -294,10 +320,10 @@ func convertPasswapErr(err error) error {
return nil
}
if errors.Is(err, passwap.ErrPasswordMismatch) {
- return caos_errs.ThrowInvalidArgument(err, "COMMAND-3M0fs", "Errors.User.Password.Invalid")
+ return zerrors.ThrowInvalidArgument(err, "COMMAND-3M0fs", "Errors.User.Password.Invalid")
}
if errors.Is(err, passwap.ErrPasswordNoChange) {
- return caos_errs.ThrowPreconditionFailed(err, "COMMAND-Aesh5", "Errors.User.Password.NotChanged")
+ return zerrors.ThrowPreconditionFailed(err, "COMMAND-Aesh5", "Errors.User.Password.NotChanged")
}
- return caos_errs.ThrowInternal(err, "COMMAND-CahN2", "Errors.Internal")
+ return zerrors.ThrowInternal(err, "COMMAND-CahN2", "Errors.Internal")
}
diff --git a/internal/command/user_human_password_test.go b/internal/command/user_human_password_test.go
index 3b72e85bf2..0bb9e613ae 100644
--- a/internal/command/user_human_password_test.go
+++ b/internal/command/user_human_password_test.go
@@ -14,10 +14,10 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_SetOneTimePassword(t *testing.T) {
@@ -55,7 +55,7 @@ func TestCommandSide_SetOneTimePassword(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -72,7 +72,7 @@ func TestCommandSide_SetOneTimePassword(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -114,7 +114,7 @@ func TestCommandSide_SetOneTimePassword(t *testing.T) {
},
res: res{
err: func(err error) bool {
- return errors.Is(err, caos_errs.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"))
+ return errors.Is(err, zerrors.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"))
},
},
},
@@ -278,7 +278,6 @@ func TestCommandSide_SetPasswordWithVerifyCode(t *testing.T) {
code string
resourceOwner string
password string
- agentID string
}
type res struct {
want *domain.ObjectDetails
@@ -302,7 +301,7 @@ func TestCommandSide_SetPasswordWithVerifyCode(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -318,7 +317,7 @@ func TestCommandSide_SetPasswordWithVerifyCode(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -336,7 +335,7 @@ func TestCommandSide_SetPasswordWithVerifyCode(t *testing.T) {
password: "password",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -370,7 +369,7 @@ func TestCommandSide_SetPasswordWithVerifyCode(t *testing.T) {
password: "string",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -418,7 +417,7 @@ func TestCommandSide_SetPasswordWithVerifyCode(t *testing.T) {
password: "password",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -505,7 +504,7 @@ func TestCommandSide_SetPasswordWithVerifyCode(t *testing.T) {
userPasswordHasher: tt.fields.userPasswordHasher,
userEncryption: tt.fields.userEncryption,
}
- got, err := r.SetPasswordWithVerifyCode(tt.args.ctx, tt.args.resourceOwner, tt.args.userID, tt.args.code, tt.args.password, tt.args.agentID)
+ got, err := r.SetPasswordWithVerifyCode(tt.args.ctx, tt.args.resourceOwner, tt.args.userID, tt.args.code, tt.args.password)
if tt.res.err == nil {
assert.NoError(t, err)
}
@@ -529,7 +528,6 @@ func TestCommandSide_ChangePassword(t *testing.T) {
resourceOwner string
oldPassword string
newPassword string
- agentID string
}
type res struct {
want *domain.ObjectDetails
@@ -553,7 +551,7 @@ func TestCommandSide_ChangePassword(t *testing.T) {
},
expect: []expect{},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -567,7 +565,7 @@ func TestCommandSide_ChangePassword(t *testing.T) {
},
expect: []expect{},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -581,7 +579,7 @@ func TestCommandSide_ChangePassword(t *testing.T) {
},
expect: []expect{},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -598,7 +596,7 @@ func TestCommandSide_ChangePassword(t *testing.T) {
expectFilter(),
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -632,7 +630,7 @@ func TestCommandSide_ChangePassword(t *testing.T) {
),
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -675,21 +673,9 @@ func TestCommandSide_ChangePassword(t *testing.T) {
false,
"")),
),
- expectFilter(
- eventFromEventPusher(
- org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- 1,
- false,
- false,
- false,
- false,
- ),
- ),
- ),
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -766,7 +752,7 @@ func TestCommandSide_ChangePassword(t *testing.T) {
eventstore: eventstoreExpect(t, tt.expect...),
userPasswordHasher: tt.fields.userPasswordHasher,
}
- got, err := r.ChangePassword(tt.args.ctx, tt.args.resourceOwner, tt.args.userID, tt.args.oldPassword, tt.args.newPassword, tt.args.agentID)
+ got, err := r.ChangePassword(tt.args.ctx, tt.args.resourceOwner, tt.args.userID, tt.args.oldPassword, tt.args.newPassword)
if tt.res.err == nil {
assert.NoError(t, err)
}
@@ -813,7 +799,7 @@ func TestCommandSide_RequestSetPassword(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -830,7 +816,7 @@ func TestCommandSide_RequestSetPassword(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -879,7 +865,7 @@ func TestCommandSide_RequestSetPassword(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -988,7 +974,7 @@ func TestCommandSide_PasswordCodeSent(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1005,7 +991,7 @@ func TestCommandSide_PasswordCodeSent(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -1101,7 +1087,7 @@ func TestCommandSide_CheckPassword(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1117,7 +1103,7 @@ func TestCommandSide_CheckPassword(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1136,7 +1122,7 @@ func TestCommandSide_CheckPassword(t *testing.T) {
password: "password",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -1177,7 +1163,7 @@ func TestCommandSide_CheckPassword(t *testing.T) {
password: "password",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -1219,7 +1205,7 @@ func TestCommandSide_CheckPassword(t *testing.T) {
password: "password",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -1281,7 +1267,7 @@ func TestCommandSide_CheckPassword(t *testing.T) {
password: "password",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -1339,7 +1325,7 @@ func TestCommandSide_CheckPassword(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -1423,7 +1409,7 @@ func TestCommandSide_CheckPassword(t *testing.T) {
lockoutPolicy: &domain.LockoutPolicy{},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1513,7 +1499,7 @@ func TestCommandSide_CheckPassword(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1760,7 +1746,7 @@ func TestCommandSide_CheckPassword(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -1893,17 +1879,17 @@ func Test_convertPasswapErr(t *testing.T) {
{
name: "mismatch",
args: args{passwap.ErrPasswordMismatch},
- wantErr: caos_errs.ThrowInvalidArgument(passwap.ErrPasswordMismatch, "COMMAND-3M0fs", "Errors.User.Password.Invalid"),
+ wantErr: zerrors.ThrowInvalidArgument(passwap.ErrPasswordMismatch, "COMMAND-3M0fs", "Errors.User.Password.Invalid"),
},
{
name: "no change",
args: args{passwap.ErrPasswordNoChange},
- wantErr: caos_errs.ThrowPreconditionFailed(passwap.ErrPasswordNoChange, "COMMAND-Aesh5", "Errors.User.Password.NotChanged"),
+ wantErr: zerrors.ThrowPreconditionFailed(passwap.ErrPasswordNoChange, "COMMAND-Aesh5", "Errors.User.Password.NotChanged"),
},
{
name: "other",
args: args{io.ErrClosedPipe},
- wantErr: caos_errs.ThrowInternal(io.ErrClosedPipe, "COMMAND-CahN2", "Errors.Internal"),
+ wantErr: zerrors.ThrowInternal(io.ErrClosedPipe, "COMMAND-CahN2", "Errors.Internal"),
},
}
for _, tt := range tests {
diff --git a/internal/command/user_human_phone.go b/internal/command/user_human_phone.go
index 43395acd15..67a25f9bcf 100644
--- a/internal/command/user_human_phone.go
+++ b/internal/command/user_human_phone.go
@@ -3,15 +3,14 @@ package command
import (
"context"
- "github.com/zitadel/zitadel/internal/eventstore"
-
"github.com/zitadel/logging"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/user"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) ChangeHumanPhone(ctx context.Context, phone *domain.Phone, resourceOwner string, phoneCodeGenerator crypto.Generator) (*domain.Phone, error) {
@@ -23,7 +22,7 @@ func (c *Commands) ChangeHumanPhone(ctx context.Context, phone *domain.Phone, re
return nil, err
}
if !existingPhone.UserState.Exists() {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-3M0fs", "Errors.User.NotFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-3M0fs", "Errors.User.NotFound")
}
userAgg := UserAggregateFromWriteModel(&existingPhone.WriteModel)
@@ -31,7 +30,7 @@ func (c *Commands) ChangeHumanPhone(ctx context.Context, phone *domain.Phone, re
// only continue if there were changes or there were no changes and the phone should be set to verified
if !hasChanged && !(phone.IsPhoneVerified && existingPhone.IsPhoneVerified != phone.IsPhoneVerified) {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-wF94r", "Errors.User.Phone.NotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-wF94r", "Errors.User.Phone.NotChanged")
}
events := make([]eventstore.Command, 0)
@@ -62,10 +61,10 @@ func (c *Commands) ChangeHumanPhone(ctx context.Context, phone *domain.Phone, re
func (c *Commands) VerifyHumanPhone(ctx context.Context, userID, code, resourceowner string, phoneCodeGenerator crypto.Generator) (*domain.ObjectDetails, error) {
if userID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-Km9ds", "Errors.User.UserIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-Km9ds", "Errors.User.UserIDMissing")
}
if code == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-wMe9f", "Errors.User.Code.Empty")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-wMe9f", "Errors.User.Code.Empty")
}
existingCode, err := c.phoneWriteModelByID(ctx, userID, resourceowner)
@@ -73,10 +72,10 @@ func (c *Commands) VerifyHumanPhone(ctx context.Context, userID, code, resourceo
return nil, err
}
if !existingCode.UserState.Exists() {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Rsj8c", "Errors.User.NotFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-Rsj8c", "Errors.User.NotFound")
}
if !existingCode.State.Exists() || existingCode.Code == nil {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-Rsj8c", "Errors.User.Code.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-Rsj8c", "Errors.User.Code.NotFound")
}
userAgg := UserAggregateFromWriteModel(&existingCode.WriteModel)
@@ -94,12 +93,12 @@ func (c *Commands) VerifyHumanPhone(ctx context.Context, userID, code, resourceo
}
_, err = c.eventstore.Push(ctx, user.NewHumanPhoneVerificationFailedEvent(ctx, userAgg))
logging.LogWithFields("COMMAND-5M9ds", "userID", userAgg.ID).OnError(err).Error("NewHumanPhoneVerificationFailedEvent push failed")
- return nil, caos_errs.ThrowInvalidArgument(err, "COMMAND-sM0cs", "Errors.User.Code.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(err, "COMMAND-sM0cs", "Errors.User.Code.Invalid")
}
func (c *Commands) CreateHumanPhoneVerificationCode(ctx context.Context, userID, resourceowner string) (*domain.ObjectDetails, error) {
if userID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-4M0ds", "Errors.User.UserIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-4M0ds", "Errors.User.UserIDMissing")
}
existingPhone, err := c.phoneWriteModelByID(ctx, userID, resourceowner)
@@ -108,13 +107,13 @@ func (c *Commands) CreateHumanPhoneVerificationCode(ctx context.Context, userID,
}
if !existingPhone.UserState.Exists() {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-2M0fs", "Errors.User.NotFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-2M0fs", "Errors.User.NotFound")
}
if !existingPhone.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-2b7Hf", "Errors.User.Phone.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-2b7Hf", "Errors.User.Phone.NotFound")
}
if existingPhone.IsPhoneVerified {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-2M9sf", "Errors.User.Phone.AlreadyVerified")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-2M9sf", "Errors.User.Phone.AlreadyVerified")
}
config, err := secretGeneratorConfig(ctx, c.eventstore.Filter, domain.SecretGeneratorTypeVerifyPhoneCode)
if err != nil {
@@ -134,7 +133,7 @@ func (c *Commands) CreateHumanPhoneVerificationCode(ctx context.Context, userID,
func (c *Commands) HumanPhoneVerificationCodeSent(ctx context.Context, orgID, userID string) (err error) {
if userID == "" {
- return caos_errs.ThrowInvalidArgument(nil, "COMMAND-3m9Fs", "Errors.User.UserIDMissing")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-3m9Fs", "Errors.User.UserIDMissing")
}
existingPhone, err := c.phoneWriteModelByID(ctx, userID, orgID)
@@ -142,10 +141,10 @@ func (c *Commands) HumanPhoneVerificationCodeSent(ctx context.Context, orgID, us
return err
}
if !existingPhone.UserState.Exists() {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-3M9fs", "Errors.User.NotFound")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-3M9fs", "Errors.User.NotFound")
}
if !existingPhone.State.Exists() {
- return caos_errs.ThrowNotFound(nil, "COMMAND-66n8J", "Errors.User.Phone.NotFound")
+ return zerrors.ThrowNotFound(nil, "COMMAND-66n8J", "Errors.User.Phone.NotFound")
}
userAgg := UserAggregateFromWriteModel(&existingPhone.WriteModel)
@@ -155,7 +154,7 @@ func (c *Commands) HumanPhoneVerificationCodeSent(ctx context.Context, orgID, us
func (c *Commands) RemoveHumanPhone(ctx context.Context, userID, resourceOwner string) (*domain.ObjectDetails, error) {
if userID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-6M0ds", "Errors.User.UserIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-6M0ds", "Errors.User.UserIDMissing")
}
existingPhone, err := c.phoneWriteModelByID(ctx, userID, resourceOwner)
@@ -163,10 +162,10 @@ func (c *Commands) RemoveHumanPhone(ctx context.Context, userID, resourceOwner s
return nil, err
}
if !existingPhone.UserState.Exists() {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-3M9fs", "Errors.User.NotFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-3M9fs", "Errors.User.NotFound")
}
if !existingPhone.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-p6rsc", "Errors.User.Phone.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-p6rsc", "Errors.User.Phone.NotFound")
}
userAgg := UserAggregateFromWriteModel(&existingPhone.WriteModel)
diff --git a/internal/command/user_human_phone_test.go b/internal/command/user_human_phone_test.go
index 4755b479be..ae9784cc0c 100644
--- a/internal/command/user_human_phone_test.go
+++ b/internal/command/user_human_phone_test.go
@@ -11,11 +11,11 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_ChangeHumanPhone(t *testing.T) {
@@ -55,7 +55,7 @@ func TestCommandSide_ChangeHumanPhone(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -77,7 +77,7 @@ func TestCommandSide_ChangeHumanPhone(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -120,7 +120,7 @@ func TestCommandSide_ChangeHumanPhone(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -409,7 +409,7 @@ func TestCommandSide_VerifyHumanPhone(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -425,7 +425,7 @@ func TestCommandSide_VerifyHumanPhone(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -443,7 +443,7 @@ func TestCommandSide_VerifyHumanPhone(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -476,7 +476,7 @@ func TestCommandSide_VerifyHumanPhone(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -533,7 +533,7 @@ func TestCommandSide_VerifyHumanPhone(t *testing.T) {
secretGenerator: GetMockSecretGenerator(t),
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -647,7 +647,7 @@ func TestCommandSide_CreateVerificationCodeHumanPhone(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -664,7 +664,7 @@ func TestCommandSide_CreateVerificationCodeHumanPhone(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -707,7 +707,7 @@ func TestCommandSide_CreateVerificationCodeHumanPhone(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -827,7 +827,7 @@ func TestCommandSide_PhoneVerificationCodeSent(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -844,7 +844,7 @@ func TestCommandSide_PhoneVerificationCodeSent(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -936,7 +936,7 @@ func TestCommandSide_RemoveHumanPhone(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -953,7 +953,7 @@ func TestCommandSide_RemoveHumanPhone(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -985,7 +985,7 @@ func TestCommandSide_RemoveHumanPhone(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
diff --git a/internal/command/user_human_profile.go b/internal/command/user_human_profile.go
index e77f3288bc..d518c2f14d 100644
--- a/internal/command/user_human_profile.go
+++ b/internal/command/user_human_profile.go
@@ -4,13 +4,13 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) ChangeHumanProfile(ctx context.Context, profile *domain.Profile) (*domain.Profile, error) {
if profile.AggregateID == "" {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-AwbEB", "Errors.User.Profile.IDMissing")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-AwbEB", "Errors.User.Profile.IDMissing")
}
if err := profile.Validate(); err != nil {
return nil, err
@@ -20,7 +20,7 @@ func (c *Commands) ChangeHumanProfile(ctx context.Context, profile *domain.Profi
return nil, err
}
if existingProfile.UserState == domain.UserStateUnspecified || existingProfile.UserState == domain.UserStateDeleted {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-3M9sd", "Errors.User.Profile.NotFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-3M9sd", "Errors.User.Profile.NotFound")
}
userAgg := UserAggregateFromWriteModel(&existingProfile.WriteModel)
changedEvent, hasChanged, err := existingProfile.NewChangedEvent(ctx, userAgg, profile.FirstName, profile.LastName, profile.NickName, profile.DisplayName, profile.PreferredLanguage, profile.Gender)
@@ -28,7 +28,7 @@ func (c *Commands) ChangeHumanProfile(ctx context.Context, profile *domain.Profi
return nil, err
}
if !hasChanged {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-2M0fs", "Errors.User.Profile.NotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-2M0fs", "Errors.User.Profile.NotChanged")
}
events, err := c.eventstore.Push(ctx, changedEvent)
diff --git a/internal/command/user_human_profile_test.go b/internal/command/user_human_profile_test.go
index aea3ef562e..65075743de 100644
--- a/internal/command/user_human_profile_test.go
+++ b/internal/command/user_human_profile_test.go
@@ -8,10 +8,10 @@ import (
"golang.org/x/text/language"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_ChangeHumanProfile(t *testing.T) {
@@ -36,8 +36,7 @@ func TestCommandSide_ChangeHumanProfile(t *testing.T) {
{
name: "user not existing, precondition error",
fields: fields{
- eventstore: eventstoreExpect(
- t,
+ eventstore: eventstoreExpect(t,
expectFilter(),
),
},
@@ -51,13 +50,13 @@ func TestCommandSide_ChangeHumanProfile(t *testing.T) {
LastName: "lastname",
NickName: "nickname",
DisplayName: "displayname",
- PreferredLanguage: language.German,
+ PreferredLanguage: AllowedLanguage,
Gender: domain.GenderFemale,
},
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -74,7 +73,7 @@ func TestCommandSide_ChangeHumanProfile(t *testing.T) {
"lastname",
"nickname",
"displayname",
- language.German,
+ AllowedLanguage,
domain.GenderFemale,
"email",
true,
@@ -93,13 +92,13 @@ func TestCommandSide_ChangeHumanProfile(t *testing.T) {
LastName: "lastname",
NickName: "nickname",
DisplayName: "displayname",
- PreferredLanguage: language.German,
+ PreferredLanguage: AllowedLanguage,
Gender: domain.GenderFemale,
},
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -116,7 +115,7 @@ func TestCommandSide_ChangeHumanProfile(t *testing.T) {
"lastname",
"nickname",
"displayname",
- language.German,
+ DisallowedLanguage,
domain.GenderUnspecified,
"email",
true,
@@ -130,7 +129,7 @@ func TestCommandSide_ChangeHumanProfile(t *testing.T) {
"lastname2",
"nickname2",
"displayname2",
- language.English,
+ AllowedLanguage,
domain.GenderMale,
),
),
@@ -146,7 +145,7 @@ func TestCommandSide_ChangeHumanProfile(t *testing.T) {
LastName: "lastname2",
NickName: "nickname2",
DisplayName: "displayname2",
- PreferredLanguage: language.English,
+ PreferredLanguage: AllowedLanguage,
Gender: domain.GenderMale,
},
resourceOwner: "org1",
@@ -161,7 +160,133 @@ func TestCommandSide_ChangeHumanProfile(t *testing.T) {
LastName: "lastname2",
NickName: "nickname2",
DisplayName: "displayname2",
- PreferredLanguage: language.English,
+ PreferredLanguage: AllowedLanguage,
+ Gender: domain.GenderMale,
+ },
+ },
+ },
+ {
+ name: "undefined preferred language, ok",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ user.NewHumanAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ "firstname",
+ "lastname",
+ "nickname",
+ "displayname",
+ DisallowedLanguage,
+ domain.GenderUnspecified,
+ "email",
+ true,
+ ),
+ ),
+ ),
+ expectPush(
+ newProfileChangedEvent(context.Background(),
+ "user1", "org1",
+ "firstname2",
+ "lastname2",
+ "nickname2",
+ "displayname2",
+ language.Und,
+ domain.GenderMale,
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ address: &domain.Profile{
+ ObjectRoot: models.ObjectRoot{
+ AggregateID: "user1",
+ },
+ FirstName: "firstname2",
+ LastName: "lastname2",
+ NickName: "nickname2",
+ DisplayName: "displayname2",
+ Gender: domain.GenderMale,
+ },
+ resourceOwner: "org1",
+ },
+ res: res{
+ want: &domain.Profile{
+ ObjectRoot: models.ObjectRoot{
+ AggregateID: "user1",
+ ResourceOwner: "org1",
+ },
+ FirstName: "firstname2",
+ LastName: "lastname2",
+ NickName: "nickname2",
+ DisplayName: "displayname2",
+ PreferredLanguage: language.Und,
+ Gender: domain.GenderMale,
+ },
+ },
+ }, {
+ name: "unsupported preferred language, ok",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ user.NewHumanAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ "firstname",
+ "lastname",
+ "nickname",
+ "displayname",
+ DisallowedLanguage,
+ domain.GenderUnspecified,
+ "email",
+ true,
+ ),
+ ),
+ ),
+ expectPush(
+ newProfileChangedEvent(context.Background(),
+ "user1", "org1",
+ "firstname2",
+ "lastname2",
+ "nickname2",
+ "displayname2",
+ UnsupportedLanguage,
+ domain.GenderMale,
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ address: &domain.Profile{
+ ObjectRoot: models.ObjectRoot{
+ AggregateID: "user1",
+ },
+ FirstName: "firstname2",
+ LastName: "lastname2",
+ NickName: "nickname2",
+ DisplayName: "displayname2",
+ PreferredLanguage: UnsupportedLanguage,
+ Gender: domain.GenderMale,
+ },
+ resourceOwner: "org1",
+ },
+ res: res{
+ want: &domain.Profile{
+ ObjectRoot: models.ObjectRoot{
+ AggregateID: "user1",
+ ResourceOwner: "org1",
+ },
+ FirstName: "firstname2",
+ LastName: "lastname2",
+ NickName: "nickname2",
+ DisplayName: "displayname2",
+ PreferredLanguage: UnsupportedLanguage,
Gender: domain.GenderMale,
},
},
diff --git a/internal/command/user_human_refresh_token.go b/internal/command/user_human_refresh_token.go
index de7995d70a..5416cc76d0 100644
--- a/internal/command/user_human_refresh_token.go
+++ b/internal/command/user_human_refresh_token.go
@@ -5,9 +5,9 @@ import (
"time"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddAccessAndRefreshToken(
@@ -45,8 +45,8 @@ func (c *Commands) AddNewRefreshTokenAndAccessToken(
refreshIdleExpiration time.Duration,
authTime time.Time,
) (accessToken *domain.Token, newRefreshToken string, err error) {
- if userID == "" || agentID == "" || clientID == "" {
- return nil, "", caos_errs.ThrowInvalidArgument(nil, "COMMAND-adg4r", "Errors.IDMissing")
+ if userID == "" || clientID == "" {
+ return nil, "", zerrors.ThrowInvalidArgument(nil, "COMMAND-adg4r", "Errors.IDMissing")
}
userWriteModel := NewUserWriteModel(userID, orgID)
refreshTokenID, err := c.idGenerator.Next()
@@ -114,7 +114,7 @@ func (c *Commands) RevokeRefreshToken(ctx context.Context, userID, orgID, tokenI
func (c *Commands) RevokeRefreshTokens(ctx context.Context, userID, orgID string, tokenIDs []string) (err error) {
if len(tokenIDs) == 0 {
- return caos_errs.ThrowInvalidArgument(nil, "COMMAND-Gfj42", "Errors.IDMissing")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-Gfj42", "Errors.IDMissing")
}
events := make([]eventstore.Command, len(tokenIDs))
for i, tokenID := range tokenIDs {
@@ -142,15 +142,15 @@ func (c *Commands) addRefreshToken(ctx context.Context, accessToken *domain.Toke
func (c *Commands) renewRefreshToken(ctx context.Context, userID, orgID, refreshToken string, idleExpiration time.Duration) (event *user.HumanRefreshTokenRenewedEvent, refreshTokenID, newRefreshToken string, err error) {
if refreshToken == "" {
- return nil, "", "", caos_errs.ThrowInvalidArgument(nil, "COMMAND-DHrr3", "Errors.IDMissing")
+ return nil, "", "", zerrors.ThrowInvalidArgument(nil, "COMMAND-DHrr3", "Errors.IDMissing")
}
tokenUserID, tokenID, token, err := domain.FromRefreshToken(refreshToken, c.keyAlgorithm)
if err != nil {
- return nil, "", "", caos_errs.ThrowInvalidArgument(err, "COMMAND-Dbfe4", "Errors.User.RefreshToken.Invalid")
+ return nil, "", "", zerrors.ThrowInvalidArgument(err, "COMMAND-Dbfe4", "Errors.User.RefreshToken.Invalid")
}
if tokenUserID != userID {
- return nil, "", "", caos_errs.ThrowInvalidArgument(nil, "COMMAND-Ht2g2", "Errors.User.RefreshToken.Invalid")
+ return nil, "", "", zerrors.ThrowInvalidArgument(nil, "COMMAND-Ht2g2", "Errors.User.RefreshToken.Invalid")
}
refreshTokenWriteModel := NewHumanRefreshTokenWriteModel(userID, orgID, tokenID)
err = c.eventstore.FilterToQueryReducer(ctx, refreshTokenWriteModel)
@@ -158,12 +158,12 @@ func (c *Commands) renewRefreshToken(ctx context.Context, userID, orgID, refresh
return nil, "", "", err
}
if refreshTokenWriteModel.UserState != domain.UserStateActive {
- return nil, "", "", caos_errs.ThrowInvalidArgument(nil, "COMMAND-BHnhs", "Errors.User.RefreshToken.Invalid")
+ return nil, "", "", zerrors.ThrowInvalidArgument(nil, "COMMAND-BHnhs", "Errors.User.RefreshToken.Invalid")
}
if refreshTokenWriteModel.RefreshToken != token ||
refreshTokenWriteModel.IdleExpiration.Before(time.Now()) ||
refreshTokenWriteModel.Expiration.Before(time.Now()) {
- return nil, "", "", caos_errs.ThrowInvalidArgument(nil, "COMMAND-Vr43e", "Errors.User.RefreshToken.Invalid")
+ return nil, "", "", zerrors.ThrowInvalidArgument(nil, "COMMAND-Vr43e", "Errors.User.RefreshToken.Invalid")
}
newToken, err := c.idGenerator.Next()
@@ -180,7 +180,7 @@ func (c *Commands) renewRefreshToken(ctx context.Context, userID, orgID, refresh
func (c *Commands) removeRefreshToken(ctx context.Context, userID, orgID, tokenID string) (*user.HumanRefreshTokenRemovedEvent, *HumanRefreshTokenWriteModel, error) {
if userID == "" || orgID == "" || tokenID == "" {
- return nil, nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-GVDgf", "Errors.IDMissing")
+ return nil, nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-GVDgf", "Errors.IDMissing")
}
refreshTokenWriteModel := NewHumanRefreshTokenWriteModel(userID, orgID, tokenID)
err := c.eventstore.FilterToQueryReducer(ctx, refreshTokenWriteModel)
@@ -188,7 +188,7 @@ func (c *Commands) removeRefreshToken(ctx context.Context, userID, orgID, tokenI
return nil, nil, err
}
if refreshTokenWriteModel.UserState != domain.UserStateActive {
- return nil, nil, caos_errs.ThrowNotFound(nil, "COMMAND-BHt2w", "Errors.User.RefreshToken.NotFound")
+ return nil, nil, zerrors.ThrowNotFound(nil, "COMMAND-BHt2w", "Errors.User.RefreshToken.NotFound")
}
userAgg := UserAggregateFromWriteModel(&refreshTokenWriteModel.WriteModel)
return user.NewHumanRefreshTokenRemovedEvent(ctx, userAgg, tokenID), refreshTokenWriteModel, nil
diff --git a/internal/command/user_human_refresh_token_test.go b/internal/command/user_human_refresh_token_test.go
index cee99c5183..d3c310db7a 100644
--- a/internal/command/user_human_refresh_token_test.go
+++ b/internal/command/user_human_refresh_token_test.go
@@ -12,12 +12,12 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/id"
id_mock "github.com/zitadel/zitadel/internal/id/mock"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommands_AddAccessAndRefreshToken(t *testing.T) {
@@ -59,7 +59,7 @@ func TestCommands_AddAccessAndRefreshToken(t *testing.T) {
},
args: args{},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -84,7 +84,7 @@ func TestCommands_AddAccessAndRefreshToken(t *testing.T) {
clientID: "clientID",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -98,7 +98,7 @@ func TestCommands_AddAccessAndRefreshToken(t *testing.T) {
refreshToken: "invalid",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -114,7 +114,7 @@ func TestCommands_AddAccessAndRefreshToken(t *testing.T) {
refreshToken: base64.RawURLEncoding.EncodeToString([]byte("userID2:tokenID:token")),
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -152,7 +152,7 @@ func TestCommands_AddAccessAndRefreshToken(t *testing.T) {
refreshToken: base64.RawURLEncoding.EncodeToString([]byte("userID:tokenID:token")),
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -185,7 +185,7 @@ func TestCommands_AddAccessAndRefreshToken(t *testing.T) {
refreshToken: base64.RawURLEncoding.EncodeToString([]byte("userID:tokenID:tokenID")),
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
//fails because of timestamp equality
@@ -240,7 +240,7 @@ func TestCommands_AddAccessAndRefreshToken(t *testing.T) {
// )),
// ),
// expectPushFailed(
- // caos_errs.ThrowInternal(nil, "ERROR", "internal"),
+ // zerrors.ThrowInternal(nil, "ERROR", "internal"),
// []*repository.Event{
// eventFromEventPusher(user.NewUserTokenAddedEvent(
// context.Background(),
@@ -280,7 +280,7 @@ func TestCommands_AddAccessAndRefreshToken(t *testing.T) {
// authTime: time.Now(),
// },
// res: res{
- // err: caos_errs.IsInternal,
+ // err: zerrors.IsInternal,
// },
//},
}
@@ -334,7 +334,7 @@ func TestCommands_RevokeRefreshToken(t *testing.T) {
},
args{},
res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -351,7 +351,7 @@ func TestCommands_RevokeRefreshToken(t *testing.T) {
"tokenID",
},
res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -374,7 +374,7 @@ func TestCommands_RevokeRefreshToken(t *testing.T) {
10*time.Hour,
)),
),
- expectPushFailed(caos_errs.ThrowInternal(nil, "ERROR", "internal"),
+ expectPushFailed(zerrors.ThrowInternal(nil, "ERROR", "internal"),
user.NewHumanRefreshTokenRemovedEvent(
context.Background(),
&user.NewAggregate("userID", "orgID").Aggregate,
@@ -390,7 +390,7 @@ func TestCommands_RevokeRefreshToken(t *testing.T) {
"tokenID",
},
res{
- err: caos_errs.IsInternal,
+ err: zerrors.IsInternal,
},
},
{
@@ -485,7 +485,7 @@ func TestCommands_RevokeRefreshTokens(t *testing.T) {
nil,
},
res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -518,7 +518,7 @@ func TestCommands_RevokeRefreshTokens(t *testing.T) {
[]string{"tokenID", "tokenID2"},
},
res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -557,7 +557,7 @@ func TestCommands_RevokeRefreshTokens(t *testing.T) {
10*time.Hour,
)),
),
- expectPushFailed(caos_errs.ThrowInternal(nil, "ERROR", "internal"),
+ expectPushFailed(zerrors.ThrowInternal(nil, "ERROR", "internal"),
user.NewHumanRefreshTokenRemovedEvent(
context.Background(),
&user.NewAggregate("userID", "orgID").Aggregate,
@@ -578,7 +578,7 @@ func TestCommands_RevokeRefreshTokens(t *testing.T) {
[]string{"tokenID", "tokenID2"},
},
res{
- err: caos_errs.IsInternal,
+ err: zerrors.IsInternal,
},
},
{
@@ -670,7 +670,7 @@ func refreshTokenEncryptionAlgorithm(ctrl *gomock.Controller) crypto.EncryptionA
mCrypto.EXPECT().Decrypt(gomock.Any(), gomock.Any()).AnyTimes().DoAndReturn(
func(refrehToken []byte, keyID string) ([]byte, error) {
if keyID != "id" {
- return nil, caos_errs.ThrowInternal(nil, "id", "invalid key id")
+ return nil, zerrors.ThrowInternal(nil, "id", "invalid key id")
}
return refrehToken, nil
},
@@ -805,7 +805,7 @@ func TestCommands_renewRefreshToken(t *testing.T) {
ctx: context.Background(),
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -819,7 +819,7 @@ func TestCommands_renewRefreshToken(t *testing.T) {
refreshToken: "invalid",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -835,7 +835,7 @@ func TestCommands_renewRefreshToken(t *testing.T) {
refreshToken: base64.RawURLEncoding.EncodeToString([]byte("userID2:tokenID:token")),
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -873,7 +873,7 @@ func TestCommands_renewRefreshToken(t *testing.T) {
refreshToken: base64.RawURLEncoding.EncodeToString([]byte("userID:tokenID:token")),
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -906,7 +906,7 @@ func TestCommands_renewRefreshToken(t *testing.T) {
refreshToken: base64.RawURLEncoding.EncodeToString([]byte("userID:tokenID:tokenID")),
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -946,7 +946,7 @@ func TestCommands_renewRefreshToken(t *testing.T) {
idleExpiration: 1 * time.Hour,
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -987,7 +987,7 @@ func TestCommands_renewRefreshToken(t *testing.T) {
idleExpiration: 1 * time.Hour,
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
diff --git a/internal/command/user_human_test.go b/internal/command/user_human_test.go
index 6e630f8885..009c0ec994 100644
--- a/internal/command/user_human_test.go
+++ b/internal/command/user_human_test.go
@@ -14,7 +14,6 @@ import (
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/id"
@@ -22,6 +21,7 @@ import (
"github.com/zitadel/zitadel/internal/repository/idp"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddHuman(t *testing.T) {
@@ -74,7 +74,7 @@ func TestCommandSide_AddHuman(t *testing.T) {
},
res: res{
err: func(err error) bool {
- return errors.Is(err, caos_errs.ThrowInvalidArgument(nil, "COMMA-5Ky74", "Errors.Internal"))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "COMMA-5Ky74", "Errors.Internal"))
},
},
},
@@ -94,7 +94,7 @@ func TestCommandSide_AddHuman(t *testing.T) {
},
res: res{
err: func(err error) bool {
- return errors.Is(err, caos_errs.ThrowInvalidArgument(nil, "EMAIL-spblu", "Errors.User.Email.Empty"))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "EMAIL-spblu", "Errors.User.Email.Empty"))
},
},
},
@@ -104,7 +104,7 @@ func TestCommandSide_AddHuman(t *testing.T) {
eventstore: expectEventstore(
expectFilter(
eventFromEventPusher(
- newAddHumanEvent("$plain$x$password", true, true, ""),
+ newAddHumanEvent("$plain$x$password", true, true, "", AllowedLanguage),
),
),
),
@@ -120,18 +120,19 @@ func TestCommandSide_AddHuman(t *testing.T) {
Email: Email{
Address: "email@test.ch",
},
- PreferredLanguage: language.English,
+ PreferredLanguage: AllowedLanguage,
},
allowInitMail: true,
},
res: res{
err: func(err error) bool {
- return errors.Is(err, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-k2unb", "Errors.User.AlreadyExisting"))
+ return errors.Is(err, zerrors.ThrowPreconditionFailed(nil, "COMMAND-k2unb", "Errors.User.AlreadyExisting"))
},
},
},
{
name: "domain policy not found, precondition error",
+
fields: fields{
idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
eventstore: expectEventstore(
@@ -150,13 +151,13 @@ func TestCommandSide_AddHuman(t *testing.T) {
Email: Email{
Address: "email@test.ch",
},
- PreferredLanguage: language.English,
+ PreferredLanguage: AllowedLanguage,
},
allowInitMail: true,
},
res: res{
err: func(err error) bool {
- return errors.Is(err, caos_errs.ThrowInternal(nil, "USER-Ggk9n", "Errors.Internal"))
+ return errors.Is(err, zerrors.ThrowInternal(nil, "USER-Ggk9n", "Errors.Internal"))
},
},
},
@@ -192,18 +193,18 @@ func TestCommandSide_AddHuman(t *testing.T) {
Address: "email@test.ch",
Verified: true,
},
- PreferredLanguage: language.English,
+ PreferredLanguage: AllowedLanguage,
},
allowInitMail: true,
},
res: res{
err: func(err error) bool {
- return errors.Is(err, caos_errs.ThrowInternal(nil, "USER-uQ96e", "Errors.Internal"))
+ return errors.Is(err, zerrors.ThrowInternal(nil, "USER-uQ96e", "Errors.Internal"))
},
},
},
{
- name: "add human (with initial code), ok",
+ name: "add human with undefined preferred language, ok",
fields: fields{
eventstore: expectEventstore(
expectFilter(),
@@ -225,7 +226,7 @@ func TestCommandSide_AddHuman(t *testing.T) {
"lastname",
"",
"firstname lastname",
- language.English,
+ language.Und,
domain.GenderUnspecified,
"email@test.ch",
true,
@@ -256,7 +257,142 @@ func TestCommandSide_AddHuman(t *testing.T) {
Email: Email{
Address: "email@test.ch",
},
- PreferredLanguage: language.English,
+ },
+ secretGenerator: GetMockSecretGenerator(t),
+ allowInitMail: true,
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ Sequence: 0,
+ EventDate: time.Time{},
+ ResourceOwner: "org1",
+ },
+ wantID: "user1",
+ },
+ },
+ {
+ name: "add human with unsupported preferred language, ok",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ true,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectPush(
+ user.NewHumanAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "username",
+ "firstname",
+ "lastname",
+ "",
+ "firstname lastname",
+ UnsupportedLanguage,
+ domain.GenderUnspecified,
+ "email@test.ch",
+ true,
+ ),
+ user.NewHumanInitialCodeAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("userinit"),
+ },
+ time.Hour*1,
+ ),
+ ),
+ ),
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
+ codeAlg: crypto.CreateMockEncryptionAlg(gomock.NewController(t)),
+ newCode: mockCode("userinit", time.Hour),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &AddHuman{
+ Username: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ Email: Email{
+ Address: "email@test.ch",
+ },
+ PreferredLanguage: UnsupportedLanguage,
+ },
+ secretGenerator: GetMockSecretGenerator(t),
+ allowInitMail: true,
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ Sequence: 0,
+ EventDate: time.Time{},
+ ResourceOwner: "org1",
+ },
+ wantID: "user1",
+ },
+ },
+ {
+ name: "add human (with initial code), ok",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ true,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectPush(
+ user.NewHumanAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "username",
+ "firstname",
+ "lastname",
+ "",
+ "firstname lastname",
+ AllowedLanguage,
+ domain.GenderUnspecified,
+ "email@test.ch",
+ true,
+ ),
+ user.NewHumanInitialCodeAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("userinit"),
+ },
+ time.Hour*1,
+ ),
+ ),
+ ),
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
+ codeAlg: crypto.CreateMockEncryptionAlg(gomock.NewController(t)),
+ newCode: mockCode("userinit", time.Hour),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &AddHuman{
+ Username: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ Email: Email{
+ Address: "email@test.ch",
+ },
+ PreferredLanguage: AllowedLanguage,
},
secretGenerator: GetMockSecretGenerator(t),
allowInitMail: true,
@@ -298,7 +434,7 @@ func TestCommandSide_AddHuman(t *testing.T) {
),
),
expectPush(
- newAddHumanEvent("$plain$x$password", false, true, ""),
+ newAddHumanEvent("$plain$x$password", false, true, "", AllowedLanguage),
user.NewHumanInitialCodeAddedEvent(context.Background(),
&user.NewAggregate("user1", "org1").Aggregate,
&crypto.CryptoValue{
@@ -327,7 +463,7 @@ func TestCommandSide_AddHuman(t *testing.T) {
Email: Email{
Address: "email@test.ch",
},
- PreferredLanguage: language.English,
+ PreferredLanguage: AllowedLanguage,
},
secretGenerator: GetMockSecretGenerator(t),
allowInitMail: true,
@@ -367,7 +503,7 @@ func TestCommandSide_AddHuman(t *testing.T) {
),
),
expectPush(
- newAddHumanEvent("$plain$x$password", false, true, ""),
+ newAddHumanEvent("$plain$x$password", false, true, "", AllowedLanguage),
user.NewHumanEmailCodeAddedEventV2(context.Background(),
&user.NewAggregate("user1", "org1").Aggregate,
&crypto.CryptoValue{
@@ -399,7 +535,7 @@ func TestCommandSide_AddHuman(t *testing.T) {
Address: "email@test.ch",
URLTemplate: "https://example.com/email/verify?userID={{.UserID}}&code={{.Code}}",
},
- PreferredLanguage: language.English,
+ PreferredLanguage: AllowedLanguage,
},
secretGenerator: GetMockSecretGenerator(t),
allowInitMail: false,
@@ -439,7 +575,7 @@ func TestCommandSide_AddHuman(t *testing.T) {
),
),
expectPush(
- newAddHumanEvent("$plain$x$password", false, true, ""),
+ newAddHumanEvent("$plain$x$password", false, true, "", AllowedLanguage),
user.NewHumanEmailCodeAddedEventV2(context.Background(),
&user.NewAggregate("user1", "org1").Aggregate,
&crypto.CryptoValue{
@@ -471,7 +607,7 @@ func TestCommandSide_AddHuman(t *testing.T) {
Address: "email@test.ch",
ReturnCode: true,
},
- PreferredLanguage: language.English,
+ PreferredLanguage: AllowedLanguage,
},
secretGenerator: GetMockSecretGenerator(t),
allowInitMail: false,
@@ -512,7 +648,7 @@ func TestCommandSide_AddHuman(t *testing.T) {
),
),
expectPush(
- newAddHumanEvent("$plain$x$password", true, true, ""),
+ newAddHumanEvent("$plain$x$password", true, true, "", AllowedLanguage),
user.NewHumanEmailVerifiedEvent(context.Background(),
&userAgg.Aggregate,
),
@@ -534,8 +670,8 @@ func TestCommandSide_AddHuman(t *testing.T) {
Address: "email@test.ch",
Verified: true,
},
- PreferredLanguage: language.English,
PasswordChangeRequired: true,
+ PreferredLanguage: AllowedLanguage,
},
secretGenerator: GetMockSecretGenerator(t),
allowInitMail: true,
@@ -575,7 +711,7 @@ func TestCommandSide_AddHuman(t *testing.T) {
),
),
expectPush(
- newAddHumanEvent("$plain$x$password", true, true, ""),
+ newAddHumanEvent("$plain$x$password", true, true, "", AllowedLanguage),
user.NewHumanEmailVerifiedEvent(context.Background(),
&userAgg.Aggregate,
),
@@ -597,8 +733,8 @@ func TestCommandSide_AddHuman(t *testing.T) {
Address: "email@test.ch",
Verified: true,
},
- PreferredLanguage: language.English,
PasswordChangeRequired: true,
+ PreferredLanguage: AllowedLanguage,
},
secretGenerator: GetMockSecretGenerator(t),
allowInitMail: true,
@@ -638,7 +774,7 @@ func TestCommandSide_AddHuman(t *testing.T) {
),
),
expectPush(
- newAddHumanEvent("$plain$x$password", true, false, ""),
+ newAddHumanEvent("$plain$x$password", true, false, "", AllowedLanguage),
user.NewHumanEmailVerifiedEvent(context.Background(),
&userAgg.Aggregate,
),
@@ -660,8 +796,8 @@ func TestCommandSide_AddHuman(t *testing.T) {
Address: "email@test.ch",
Verified: true,
},
- PreferredLanguage: language.English,
PasswordChangeRequired: true,
+ PreferredLanguage: AllowedLanguage,
},
secretGenerator: GetMockSecretGenerator(t),
allowInitMail: true,
@@ -713,15 +849,15 @@ func TestCommandSide_AddHuman(t *testing.T) {
Address: "email@test.ch",
Verified: true,
},
- PreferredLanguage: language.English,
PasswordChangeRequired: true,
+ PreferredLanguage: AllowedLanguage,
},
secretGenerator: GetMockSecretGenerator(t),
allowInitMail: true,
},
res: res{
err: func(err error) bool {
- return errors.Is(err, caos_errs.ThrowInvalidArgument(nil, "COMMAND-SFd21", "Errors.User.DomainNotAllowedAsUsername"))
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "COMMAND-SFd21", "Errors.User.DomainNotAllowedAsUsername"))
},
},
},
@@ -769,7 +905,7 @@ func TestCommandSide_AddHuman(t *testing.T) {
"lastname",
"",
"firstname lastname",
- language.English,
+ AllowedLanguage,
domain.GenderUnspecified,
"email@test.ch",
false,
@@ -798,8 +934,8 @@ func TestCommandSide_AddHuman(t *testing.T) {
Address: "email@test.ch",
Verified: true,
},
- PreferredLanguage: language.English,
PasswordChangeRequired: true,
+ PreferredLanguage: AllowedLanguage,
},
secretGenerator: GetMockSecretGenerator(t),
allowInitMail: true,
@@ -840,7 +976,7 @@ func TestCommandSide_AddHuman(t *testing.T) {
),
),
expectPush(
- newAddHumanEvent("$plain$x$password", false, true, "+41711234567"),
+ newAddHumanEvent("$plain$x$password", false, true, "+41711234567", AllowedLanguage),
user.NewHumanEmailVerifiedEvent(
context.Background(),
&userAgg.Aggregate,
@@ -877,7 +1013,7 @@ func TestCommandSide_AddHuman(t *testing.T) {
Phone: Phone{
Number: "+41711234567",
},
- PreferredLanguage: language.English,
+ PreferredLanguage: AllowedLanguage,
},
secretGenerator: GetMockSecretGenerator(t),
allowInitMail: true,
@@ -905,7 +1041,7 @@ func TestCommandSide_AddHuman(t *testing.T) {
),
),
expectPush(
- newAddHumanEvent("", false, true, "+41711234567"),
+ newAddHumanEvent("", false, true, "+41711234567", AllowedLanguage),
user.NewHumanInitialCodeAddedEvent(
context.Background(),
&userAgg.Aggregate,
@@ -941,7 +1077,7 @@ func TestCommandSide_AddHuman(t *testing.T) {
Number: "+41711234567",
Verified: true,
},
- PreferredLanguage: language.English,
+ PreferredLanguage: AllowedLanguage,
},
secretGenerator: GetMockSecretGenerator(t),
allowInitMail: true,
@@ -980,7 +1116,7 @@ func TestCommandSide_AddHuman(t *testing.T) {
),
),
expectPush(
- newAddHumanEvent("$plain$x$password", false, true, "+41711234567"),
+ newAddHumanEvent("$plain$x$password", false, true, "+41711234567", AllowedLanguage),
user.NewHumanEmailVerifiedEvent(context.Background(),
&user.NewAggregate("user1", "org1").Aggregate),
user.NewHumanPhoneCodeAddedEventV2(
@@ -1018,7 +1154,7 @@ func TestCommandSide_AddHuman(t *testing.T) {
Number: "+41711234567",
ReturnCode: true,
},
- PreferredLanguage: language.English,
+ PreferredLanguage: AllowedLanguage,
},
secretGenerator: GetMockSecretGenerator(t),
allowInitMail: true,
@@ -1046,7 +1182,7 @@ func TestCommandSide_AddHuman(t *testing.T) {
),
),
expectPush(
- newAddHumanEvent("", false, true, ""),
+ newAddHumanEvent("", false, true, "", AllowedLanguage),
user.NewHumanInitialCodeAddedEvent(
context.Background(),
&userAgg.Aggregate,
@@ -1080,13 +1216,13 @@ func TestCommandSide_AddHuman(t *testing.T) {
Email: Email{
Address: "email@test.ch",
},
- PreferredLanguage: language.English,
Metadata: []*AddMetadataEntry{
{
Key: "testKey",
Value: []byte("testValue"),
},
},
+ PreferredLanguage: AllowedLanguage,
},
secretGenerator: GetMockSecretGenerator(t),
allowInitMail: true,
@@ -1147,206 +1283,218 @@ func TestCommandSide_ImportHuman(t *testing.T) {
err func(error) bool
}
tests := []struct {
- name string
- fields fields
- args args
- res res
+ name string
+ given func(t *testing.T) (fields, args)
+ res res
}{
{
name: "orgid missing, invalid argument error",
- fields: fields{
- eventstore: eventstoreExpect(
- t,
- ),
- },
- args: args{
- ctx: context.Background(),
- orgID: "",
- human: &domain.Human{
- Username: "username",
- Profile: &domain.Profile{
- FirstName: "firstname",
- LastName: "lastname",
+ given: func(t *testing.T) (fields, args) {
+ return fields{
+ eventstore: eventstoreExpect(
+ t,
+ ),
},
- Email: &domain.Email{
- EmailAddress: "email@test.ch",
- },
- },
+ args{
+ ctx: context.Background(),
+ orgID: "",
+ human: &domain.Human{
+ Username: "username",
+ Profile: &domain.Profile{
+ FirstName: "firstname",
+ LastName: "lastname",
+ PreferredLanguage: AllowedLanguage,
+ },
+ Email: &domain.Email{
+ EmailAddress: "email@test.ch",
+ },
+ },
+ }
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
name: "org policy not found, precondition error",
- fields: fields{
- eventstore: eventstoreExpect(
- t,
- expectFilter(),
- expectFilter(),
- ),
- },
- args: args{
- ctx: context.Background(),
- orgID: "org1",
- human: &domain.Human{
- Username: "username",
- Profile: &domain.Profile{
- FirstName: "firstname",
- LastName: "lastname",
+ given: func(t *testing.T) (fields, args) {
+ return fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(),
+ expectFilter(),
+ ),
},
- Email: &domain.Email{
- EmailAddress: "email@test.ch",
- },
- },
+ args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &domain.Human{
+ Username: "username",
+ Profile: &domain.Profile{
+ FirstName: "firstname",
+ LastName: "lastname",
+ PreferredLanguage: AllowedLanguage,
+ },
+ Email: &domain.Email{
+ EmailAddress: "email@test.ch",
+ },
+ },
+ }
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
name: "password policy not found, precondition error",
- fields: fields{
- eventstore: eventstoreExpect(
- t,
- expectFilter(
- eventFromEventPusher(
- org.NewDomainPolicyAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- true,
- true,
- true,
+ given: func(t *testing.T) (fields, args) {
+ return fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ true,
+ true,
+ true,
+ ),
+ ),
),
+ expectFilter(),
+ expectFilter(),
),
- ),
- expectFilter(),
- expectFilter(),
- ),
- },
- args: args{
- ctx: context.Background(),
- orgID: "org1",
- human: &domain.Human{
- Username: "username",
- Profile: &domain.Profile{
- FirstName: "firstname",
- LastName: "lastname",
},
- Email: &domain.Email{
- EmailAddress: "email@test.ch",
- },
- },
+ args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &domain.Human{
+ Username: "username",
+ Profile: &domain.Profile{
+ FirstName: "firstname",
+ LastName: "lastname",
+ PreferredLanguage: AllowedLanguage,
+ },
+ Email: &domain.Email{
+ EmailAddress: "email@test.ch",
+ },
+ },
+ }
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
name: "user invalid, invalid argument error",
- fields: fields{
- eventstore: eventstoreExpect(
- t,
- expectFilter(
- eventFromEventPusher(
- org.NewDomainPolicyAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- true,
- true,
- true,
+ given: func(t *testing.T) (fields, args) {
+ return fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ true,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ 1,
+ false,
+ false,
+ false,
+ false,
+ ),
+ ),
),
),
- ),
- expectFilter(
- eventFromEventPusher(
- org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- 1,
- false,
- false,
- false,
- false,
- ),
- ),
- ),
- ),
- },
- args: args{
- ctx: context.Background(),
- orgID: "org1",
- human: &domain.Human{
- Username: "username",
- Profile: &domain.Profile{
- FirstName: "firstname",
},
- },
+ args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &domain.Human{
+ Username: "username",
+ Profile: &domain.Profile{
+ FirstName: "firstname",
+ PreferredLanguage: AllowedLanguage,
+ },
+ },
+ }
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
- },
- {
+ }, {
name: "add human (with password and initial code), ok",
- fields: fields{
- eventstore: eventstoreExpect(
- t,
- expectFilter(
- eventFromEventPusher(
- org.NewDomainPolicyAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- true,
- true,
- true,
+ given: func(t *testing.T) (fields, args) {
+ return fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ true,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ 1,
+ false,
+ false,
+ false,
+ false,
+ ),
+ ),
+ ),
+ expectPush(
+ newAddHumanEvent("$plain$x$password", true, true, "", AllowedLanguage),
+ user.NewHumanInitialCodeAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("a"),
+ },
+ time.Hour*1,
+ ),
),
),
- ),
- expectFilter(
- eventFromEventPusher(
- org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- 1,
- false,
- false,
- false,
- false,
- ),
- ),
- ),
- expectPush(
- newAddHumanEvent("$plain$x$password", true, true, ""),
- user.NewHumanInitialCodeAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- &crypto.CryptoValue{
- CryptoType: crypto.TypeEncryption,
- Algorithm: "enc",
- KeyID: "id",
- Crypted: []byte("a"),
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
+ userPasswordHasher: mockPasswordHasher("x"),
+ },
+ args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &domain.Human{
+ Username: "username",
+ Password: &domain.Password{
+ SecretString: "password",
+ ChangeRequired: true,
},
- time.Hour*1,
- ),
- ),
- ),
- idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
- userPasswordHasher: mockPasswordHasher("x"),
- },
- args: args{
- ctx: context.Background(),
- orgID: "org1",
- human: &domain.Human{
- Username: "username",
- Password: &domain.Password{
- SecretString: "password",
- ChangeRequired: true,
- },
- Profile: &domain.Profile{
- FirstName: "firstname",
- LastName: "lastname",
- PreferredLanguage: language.English,
- },
- Email: &domain.Email{
- EmailAddress: "email@test.ch",
- },
- },
- secretGenerator: GetMockSecretGenerator(t),
+ Profile: &domain.Profile{
+ FirstName: "firstname",
+ LastName: "lastname",
+ PreferredLanguage: AllowedLanguage,
+ },
+ Email: &domain.Email{
+ EmailAddress: "email@test.ch",
+ },
+ },
+ secretGenerator: GetMockSecretGenerator(t),
+ }
},
res: res{
wantHuman: &domain.Human{
@@ -1359,7 +1507,7 @@ func TestCommandSide_ImportHuman(t *testing.T) {
FirstName: "firstname",
LastName: "lastname",
DisplayName: "firstname lastname",
- PreferredLanguage: language.English,
+ PreferredLanguage: AllowedLanguage,
},
Email: &domain.Email{
EmailAddress: "email@test.ch",
@@ -1370,61 +1518,63 @@ func TestCommandSide_ImportHuman(t *testing.T) {
},
{
name: "add human email verified password change not required, ok",
- fields: fields{
- eventstore: eventstoreExpect(
- t,
- expectFilter(
- eventFromEventPusher(
- org.NewDomainPolicyAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- true,
- true,
- true,
+ given: func(t *testing.T) (fields, args) {
+ return fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ true,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ 1,
+ false,
+ false,
+ false,
+ false,
+ ),
+ ),
+ ),
+ expectPush(
+ newAddHumanEvent("$plain$x$password", false, true, "", AllowedLanguage),
+ user.NewHumanEmailVerifiedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ ),
),
),
- ),
- expectFilter(
- eventFromEventPusher(
- org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- 1,
- false,
- false,
- false,
- false,
- ),
- ),
- ),
- expectPush(
- newAddHumanEvent("$plain$x$password", false, true, ""),
- user.NewHumanEmailVerifiedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- ),
- ),
- ),
- idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
- userPasswordHasher: mockPasswordHasher("x"),
- },
- args: args{
- ctx: context.Background(),
- orgID: "org1",
- human: &domain.Human{
- Username: "username",
- Password: &domain.Password{
- SecretString: "password",
- ChangeRequired: false,
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
+ userPasswordHasher: mockPasswordHasher("x"),
},
- Profile: &domain.Profile{
- FirstName: "firstname",
- LastName: "lastname",
- PreferredLanguage: language.English,
- },
- Email: &domain.Email{
- EmailAddress: "email@test.ch",
- IsEmailVerified: true,
- },
- },
- secretGenerator: GetMockSecretGenerator(t),
+ args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &domain.Human{
+ Username: "username",
+ Password: &domain.Password{
+ SecretString: "password",
+ ChangeRequired: false,
+ },
+ Profile: &domain.Profile{
+ FirstName: "firstname",
+ LastName: "lastname",
+ PreferredLanguage: AllowedLanguage,
+ },
+ Email: &domain.Email{
+ EmailAddress: "email@test.ch",
+ IsEmailVerified: true,
+ },
+ },
+ secretGenerator: GetMockSecretGenerator(t),
+ }
},
res: res{
wantHuman: &domain.Human{
@@ -1437,7 +1587,7 @@ func TestCommandSide_ImportHuman(t *testing.T) {
FirstName: "firstname",
LastName: "lastname",
DisplayName: "firstname lastname",
- PreferredLanguage: language.English,
+ PreferredLanguage: AllowedLanguage,
},
Email: &domain.Email{
EmailAddress: "email@test.ch",
@@ -1449,70 +1599,72 @@ func TestCommandSide_ImportHuman(t *testing.T) {
},
{
name: "add human email verified passwordless only, ok",
- fields: fields{
- eventstore: eventstoreExpect(
- t,
- expectFilter(
- eventFromEventPusher(
- org.NewDomainPolicyAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- true,
- true,
- true,
+ given: func(t *testing.T) (fields, args) {
+ return fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ true,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ 1,
+ false,
+ false,
+ false,
+ false,
+ ),
+ ),
+ ),
+ expectFilter(),
+ expectPush(
+ newAddHumanEvent("", false, true, "", AllowedLanguage),
+ user.NewHumanEmailVerifiedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate),
+ user.NewHumanPasswordlessInitCodeAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "code1",
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("a"),
+ },
+ time.Hour,
+ ),
),
),
- ),
- expectFilter(
- eventFromEventPusher(
- org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- 1,
- false,
- false,
- false,
- false,
- ),
- ),
- ),
- expectFilter(),
- expectPush(
- newAddHumanEvent("", false, true, ""),
- user.NewHumanEmailVerifiedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate),
- user.NewHumanPasswordlessInitCodeAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- "code1",
- &crypto.CryptoValue{
- CryptoType: crypto.TypeEncryption,
- Algorithm: "enc",
- KeyID: "id",
- Crypted: []byte("a"),
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1", "code1"),
+ userPasswordHasher: mockPasswordHasher("x"),
+ },
+ args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &domain.Human{
+ Username: "username",
+ Profile: &domain.Profile{
+ FirstName: "firstname",
+ LastName: "lastname",
+ PreferredLanguage: AllowedLanguage,
},
- time.Hour,
- ),
- ),
- ),
- idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1", "code1"),
- userPasswordHasher: mockPasswordHasher("x"),
- },
- args: args{
- ctx: context.Background(),
- orgID: "org1",
- human: &domain.Human{
- Username: "username",
- Profile: &domain.Profile{
- FirstName: "firstname",
- LastName: "lastname",
- PreferredLanguage: language.English,
- },
- Email: &domain.Email{
- EmailAddress: "email@test.ch",
- IsEmailVerified: true,
- },
- },
- passwordless: true,
- secretGenerator: GetMockSecretGenerator(t),
- passwordlessInitCode: GetMockSecretGenerator(t),
+ Email: &domain.Email{
+ EmailAddress: "email@test.ch",
+ IsEmailVerified: true,
+ },
+ },
+ passwordless: true,
+ secretGenerator: GetMockSecretGenerator(t),
+ passwordlessInitCode: GetMockSecretGenerator(t),
+ }
},
res: res{
wantHuman: &domain.Human{
@@ -1525,7 +1677,7 @@ func TestCommandSide_ImportHuman(t *testing.T) {
FirstName: "firstname",
LastName: "lastname",
DisplayName: "firstname lastname",
- PreferredLanguage: language.English,
+ PreferredLanguage: AllowedLanguage,
},
Email: &domain.Email{
EmailAddress: "email@test.ch",
@@ -1547,74 +1699,76 @@ func TestCommandSide_ImportHuman(t *testing.T) {
},
{
name: "add human email verified passwordless and password change not required, ok",
- fields: fields{
- eventstore: eventstoreExpect(
- t,
- expectFilter(
- eventFromEventPusher(
- org.NewDomainPolicyAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- true,
- true,
- true,
+ given: func(t *testing.T) (fields, args) {
+ return fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ true,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ 1,
+ false,
+ false,
+ false,
+ false,
+ ),
+ ),
+ ),
+ expectFilter(),
+ expectPush(
+ newAddHumanEvent("$plain$x$password", false, true, "", AllowedLanguage),
+ user.NewHumanEmailVerifiedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate),
+ user.NewHumanPasswordlessInitCodeAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "code1",
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("a"),
+ },
+ time.Hour,
+ ),
),
),
- ),
- expectFilter(
- eventFromEventPusher(
- org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- 1,
- false,
- false,
- false,
- false,
- ),
- ),
- ),
- expectFilter(),
- expectPush(
- newAddHumanEvent("$plain$x$password", false, true, ""),
- user.NewHumanEmailVerifiedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate),
- user.NewHumanPasswordlessInitCodeAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- "code1",
- &crypto.CryptoValue{
- CryptoType: crypto.TypeEncryption,
- Algorithm: "enc",
- KeyID: "id",
- Crypted: []byte("a"),
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1", "code1"),
+ userPasswordHasher: mockPasswordHasher("x"),
+ },
+ args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &domain.Human{
+ Username: "username",
+ Password: &domain.Password{
+ SecretString: "password",
+ ChangeRequired: false,
},
- time.Hour,
- ),
- ),
- ),
- idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1", "code1"),
- userPasswordHasher: mockPasswordHasher("x"),
- },
- args: args{
- ctx: context.Background(),
- orgID: "org1",
- human: &domain.Human{
- Username: "username",
- Password: &domain.Password{
- SecretString: "password",
- ChangeRequired: false,
- },
- Profile: &domain.Profile{
- FirstName: "firstname",
- LastName: "lastname",
- PreferredLanguage: language.English,
- },
- Email: &domain.Email{
- EmailAddress: "email@test.ch",
- IsEmailVerified: true,
- },
- },
- passwordless: true,
- secretGenerator: GetMockSecretGenerator(t),
- passwordlessInitCode: GetMockSecretGenerator(t),
+ Profile: &domain.Profile{
+ FirstName: "firstname",
+ LastName: "lastname",
+ PreferredLanguage: AllowedLanguage,
+ },
+ Email: &domain.Email{
+ EmailAddress: "email@test.ch",
+ IsEmailVerified: true,
+ },
+ },
+ passwordless: true,
+ secretGenerator: GetMockSecretGenerator(t),
+ passwordlessInitCode: GetMockSecretGenerator(t),
+ }
},
res: res{
wantHuman: &domain.Human{
@@ -1627,7 +1781,7 @@ func TestCommandSide_ImportHuman(t *testing.T) {
FirstName: "firstname",
LastName: "lastname",
DisplayName: "firstname lastname",
- PreferredLanguage: language.English,
+ PreferredLanguage: AllowedLanguage,
},
Email: &domain.Email{
EmailAddress: "email@test.ch",
@@ -1649,79 +1803,81 @@ func TestCommandSide_ImportHuman(t *testing.T) {
},
{
name: "add human (with phone), ok",
- fields: fields{
- eventstore: eventstoreExpect(
- t,
- expectFilter(
- eventFromEventPusher(
- org.NewDomainPolicyAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- true,
- true,
- true,
+ given: func(t *testing.T) (fields, args) {
+ return fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ true,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ 1,
+ false,
+ false,
+ false,
+ false,
+ ),
+ ),
+ ),
+ expectPush(
+ newAddHumanEvent("$plain$x$password", false, true, "+41711234567", AllowedLanguage),
+ user.NewHumanInitialCodeAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("a"),
+ },
+ time.Hour*1,
+ ),
+ user.NewHumanPhoneCodeAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("a"),
+ },
+ time.Hour*1),
),
),
- ),
- expectFilter(
- eventFromEventPusher(
- org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- 1,
- false,
- false,
- false,
- false,
- ),
- ),
- ),
- expectPush(
- newAddHumanEvent("$plain$x$password", false, true, "+41711234567"),
- user.NewHumanInitialCodeAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- &crypto.CryptoValue{
- CryptoType: crypto.TypeEncryption,
- Algorithm: "enc",
- KeyID: "id",
- Crypted: []byte("a"),
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
+ userPasswordHasher: mockPasswordHasher("x"),
+ },
+ args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &domain.Human{
+ Username: "username",
+ Profile: &domain.Profile{
+ FirstName: "firstname",
+ LastName: "lastname",
+ PreferredLanguage: AllowedLanguage,
},
- time.Hour*1,
- ),
- user.NewHumanPhoneCodeAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- &crypto.CryptoValue{
- CryptoType: crypto.TypeEncryption,
- Algorithm: "enc",
- KeyID: "id",
- Crypted: []byte("a"),
+ Password: &domain.Password{
+ SecretString: "password",
+ ChangeRequired: false,
},
- time.Hour*1),
- ),
- ),
- idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
- userPasswordHasher: mockPasswordHasher("x"),
- },
- args: args{
- ctx: context.Background(),
- orgID: "org1",
- human: &domain.Human{
- Username: "username",
- Profile: &domain.Profile{
- FirstName: "firstname",
- LastName: "lastname",
- PreferredLanguage: language.English,
- },
- Password: &domain.Password{
- SecretString: "password",
- ChangeRequired: false,
- },
- Email: &domain.Email{
- EmailAddress: "email@test.ch",
- },
- Phone: &domain.Phone{
- PhoneNumber: "+41711234567",
- },
- },
- secretGenerator: GetMockSecretGenerator(t),
+ Email: &domain.Email{
+ EmailAddress: "email@test.ch",
+ },
+ Phone: &domain.Phone{
+ PhoneNumber: "+41711234567",
+ },
+ },
+ secretGenerator: GetMockSecretGenerator(t),
+ }
},
res: res{
wantHuman: &domain.Human{
@@ -1734,7 +1890,7 @@ func TestCommandSide_ImportHuman(t *testing.T) {
FirstName: "firstname",
LastName: "lastname",
DisplayName: "firstname lastname",
- PreferredLanguage: language.English,
+ PreferredLanguage: AllowedLanguage,
},
Email: &domain.Email{
EmailAddress: "email@test.ch",
@@ -1748,73 +1904,75 @@ func TestCommandSide_ImportHuman(t *testing.T) {
},
{
name: "add human (with verified phone), ok",
- fields: fields{
- eventstore: eventstoreExpect(
- t,
- expectFilter(
- eventFromEventPusher(
- org.NewDomainPolicyAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- true,
- true,
- true,
+ given: func(t *testing.T) (fields, args) {
+ return fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ true,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ 1,
+ false,
+ false,
+ false,
+ false,
+ ),
+ ),
+ ),
+ expectPush(
+ newAddHumanEvent("$plain$x$password", false, true, "+41711234567", AllowedLanguage),
+ user.NewHumanInitialCodeAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("a"),
+ },
+ time.Hour*1,
+ ),
+ user.NewHumanPhoneVerifiedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate),
),
),
- ),
- expectFilter(
- eventFromEventPusher(
- org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- 1,
- false,
- false,
- false,
- false,
- ),
- ),
- ),
- expectPush(
- newAddHumanEvent("$plain$x$password", false, true, "+41711234567"),
- user.NewHumanInitialCodeAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- &crypto.CryptoValue{
- CryptoType: crypto.TypeEncryption,
- Algorithm: "enc",
- KeyID: "id",
- Crypted: []byte("a"),
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
+ userPasswordHasher: mockPasswordHasher("x"),
+ },
+ args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &domain.Human{
+ Username: "username",
+ Profile: &domain.Profile{
+ FirstName: "firstname",
+ LastName: "lastname",
+ PreferredLanguage: AllowedLanguage,
},
- time.Hour*1,
- ),
- user.NewHumanPhoneVerifiedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate),
- ),
- ),
- idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
- userPasswordHasher: mockPasswordHasher("x"),
- },
- args: args{
- ctx: context.Background(),
- orgID: "org1",
- human: &domain.Human{
- Username: "username",
- Profile: &domain.Profile{
- FirstName: "firstname",
- LastName: "lastname",
- PreferredLanguage: language.English,
- },
- Password: &domain.Password{
- SecretString: "password",
- ChangeRequired: false,
- },
- Email: &domain.Email{
- EmailAddress: "email@test.ch",
- },
- Phone: &domain.Phone{
- PhoneNumber: "+41711234567",
- IsPhoneVerified: true,
- },
- },
- secretGenerator: GetMockSecretGenerator(t),
+ Password: &domain.Password{
+ SecretString: "password",
+ ChangeRequired: false,
+ },
+ Email: &domain.Email{
+ EmailAddress: "email@test.ch",
+ },
+ Phone: &domain.Phone{
+ PhoneNumber: "+41711234567",
+ IsPhoneVerified: true,
+ },
+ },
+ secretGenerator: GetMockSecretGenerator(t),
+ }
},
res: res{
wantHuman: &domain.Human{
@@ -1827,7 +1985,7 @@ func TestCommandSide_ImportHuman(t *testing.T) {
FirstName: "firstname",
LastName: "lastname",
DisplayName: "firstname lastname",
- PreferredLanguage: language.English,
+ PreferredLanguage: AllowedLanguage,
},
Email: &domain.Email{
EmailAddress: "email@test.ch",
@@ -1840,127 +1998,69 @@ func TestCommandSide_ImportHuman(t *testing.T) {
},
},
{
- name: "add human (with idp), ok",
- fields: fields{
- eventstore: eventstoreExpect(
- t,
- expectFilter(
- eventFromEventPusher(
- org.NewDomainPolicyAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- true,
- true,
- true,
+ name: "add human (with undefined preferred language), ok",
+ given: func(t *testing.T) (fields, args) {
+ return fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ true,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ 1,
+ false,
+ false,
+ false,
+ false,
+ ),
+ ),
+ ),
+ expectPush(
+ newAddHumanEvent("$plain$x$password", false, true, "", language.Und),
+ user.NewHumanInitialCodeAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("a"),
+ },
+ time.Hour*1,
+ ),
),
),
- ),
- expectFilter(
- eventFromEventPusher(
- org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- 1,
- false,
- false,
- false,
- false,
- ),
- ),
- ),
- expectFilter(
- eventFromEventPusher(
- org.NewIDPConfigAddedEvent(context.Background(),
- &org.NewAggregate("org1").Aggregate,
- "idpID",
- "name",
- domain.IDPConfigTypeOIDC,
- domain.IDPConfigStylingTypeUnspecified,
- false,
- ),
- ),
- eventFromEventPusher(
- org.NewIDPOIDCConfigAddedEvent(context.Background(),
- &org.NewAggregate("org1").Aggregate,
- "clientID",
- "idpID",
- "issuer",
- "authEndpoint",
- "tokenEndpoint",
- nil,
- domain.OIDCMappingFieldUnspecified,
- domain.OIDCMappingFieldUnspecified,
- ),
- ),
- ),
- expectFilter(
- eventFromEventPusher(
- org.NewIDPConfigAddedEvent(context.Background(),
- &org.NewAggregate("org1").Aggregate,
- "idpID",
- "name",
- domain.IDPConfigTypeOIDC,
- domain.IDPConfigStylingTypeUnspecified,
- false,
- ),
- ),
- eventFromEventPusher(
- org.NewIDPOIDCConfigAddedEvent(context.Background(),
- &org.NewAggregate("org1").Aggregate,
- "clientID",
- "idpID",
- "issuer",
- "authEndpoint",
- "tokenEndpoint",
- nil,
- domain.OIDCMappingFieldUnspecified,
- domain.OIDCMappingFieldUnspecified,
- ),
- ),
- eventFromEventPusher(
- org.NewIdentityProviderAddedEvent(context.Background(),
- &org.NewAggregate("org1").Aggregate,
- "idpID",
- domain.IdentityProviderTypeOrg,
- ),
- ),
- ),
- expectPush(
- newAddHumanEvent("", false, true, ""),
- user.NewUserIDPLinkAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- "idpID",
- "name",
- "externalID",
- ),
- user.NewHumanEmailVerifiedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate),
- ),
- ),
- idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
- userPasswordHasher: mockPasswordHasher("x"),
- },
- args: args{
- ctx: context.Background(),
- orgID: "org1",
- human: &domain.Human{
- Username: "username",
- Profile: &domain.Profile{
- FirstName: "firstname",
- LastName: "lastname",
- PreferredLanguage: language.English,
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
+ userPasswordHasher: mockPasswordHasher("x"),
},
- Email: &domain.Email{
- EmailAddress: "email@test.ch",
- IsEmailVerified: true,
- },
- },
- links: []*domain.UserIDPLink{
- {
- IDPConfigID: "idpID",
- ExternalUserID: "externalID",
- DisplayName: "name",
- },
- },
- secretGenerator: GetMockSecretGenerator(t),
+ args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &domain.Human{
+ Username: "username",
+ Profile: &domain.Profile{
+ FirstName: "firstname",
+ LastName: "lastname",
+ },
+ Password: &domain.Password{
+ SecretString: "password",
+ ChangeRequired: false,
+ },
+ Email: &domain.Email{
+ EmailAddress: "email@test.ch",
+ },
+ },
+ secretGenerator: GetMockSecretGenerator(t),
+ }
},
res: res{
wantHuman: &domain.Human{
@@ -1973,7 +2073,238 @@ func TestCommandSide_ImportHuman(t *testing.T) {
FirstName: "firstname",
LastName: "lastname",
DisplayName: "firstname lastname",
- PreferredLanguage: language.English,
+ PreferredLanguage: language.Und,
+ },
+ Email: &domain.Email{
+ EmailAddress: "email@test.ch",
+ },
+ State: domain.UserStateInitial,
+ },
+ },
+ },
+ {
+ name: "add human (with unsupported preferred language), ok",
+ given: func(t *testing.T) (fields, args) {
+ return fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ true,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ 1,
+ false,
+ false,
+ false,
+ false,
+ ),
+ ),
+ ),
+ expectPush(
+ newAddHumanEvent("$plain$x$password", false, true, "", UnsupportedLanguage),
+ user.NewHumanInitialCodeAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("a"),
+ },
+ time.Hour*1,
+ ),
+ ),
+ ),
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
+ userPasswordHasher: mockPasswordHasher("x"),
+ },
+ args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &domain.Human{
+ Username: "username",
+ Profile: &domain.Profile{
+ FirstName: "firstname",
+ LastName: "lastname",
+ PreferredLanguage: UnsupportedLanguage,
+ },
+ Password: &domain.Password{
+ SecretString: "password",
+ ChangeRequired: false,
+ },
+ Email: &domain.Email{
+ EmailAddress: "email@test.ch",
+ },
+ },
+ secretGenerator: GetMockSecretGenerator(t),
+ }
+ },
+ res: res{
+ wantHuman: &domain.Human{
+ ObjectRoot: models.ObjectRoot{
+ AggregateID: "user1",
+ ResourceOwner: "org1",
+ },
+ Username: "username",
+ Profile: &domain.Profile{
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: UnsupportedLanguage,
+ },
+ Email: &domain.Email{
+ EmailAddress: "email@test.ch",
+ },
+ State: domain.UserStateInitial,
+ },
+ },
+ },
+ {
+ name: "add human (with idp), ok",
+ given: func(t *testing.T) (fields, args) {
+ return fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ true,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ 1,
+ false,
+ false,
+ false,
+ false,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewIDPConfigAddedEvent(context.Background(),
+ &org.NewAggregate("org1").Aggregate,
+ "idpID",
+ "name",
+ domain.IDPConfigTypeOIDC,
+ domain.IDPConfigStylingTypeUnspecified,
+ false,
+ ),
+ ),
+ eventFromEventPusher(
+ org.NewIDPOIDCConfigAddedEvent(context.Background(),
+ &org.NewAggregate("org1").Aggregate,
+ "clientID",
+ "idpID",
+ "issuer",
+ "authEndpoint",
+ "tokenEndpoint",
+ nil,
+ domain.OIDCMappingFieldUnspecified,
+ domain.OIDCMappingFieldUnspecified,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewIDPConfigAddedEvent(context.Background(),
+ &org.NewAggregate("org1").Aggregate,
+ "idpID",
+ "name",
+ domain.IDPConfigTypeOIDC,
+ domain.IDPConfigStylingTypeUnspecified,
+ false,
+ ),
+ ),
+ eventFromEventPusher(
+ org.NewIDPOIDCConfigAddedEvent(context.Background(),
+ &org.NewAggregate("org1").Aggregate,
+ "clientID",
+ "idpID",
+ "issuer",
+ "authEndpoint",
+ "tokenEndpoint",
+ nil,
+ domain.OIDCMappingFieldUnspecified,
+ domain.OIDCMappingFieldUnspecified,
+ ),
+ ),
+ eventFromEventPusher(
+ org.NewIdentityProviderAddedEvent(context.Background(),
+ &org.NewAggregate("org1").Aggregate,
+ "idpID",
+ domain.IdentityProviderTypeOrg,
+ ),
+ ),
+ ),
+ expectPush(
+ newAddHumanEvent("", false, true, "", AllowedLanguage),
+ user.NewUserIDPLinkAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "idpID",
+ "name",
+ "externalID",
+ ),
+ user.NewHumanEmailVerifiedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate),
+ ),
+ ),
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
+ userPasswordHasher: mockPasswordHasher("x"),
+ },
+ args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &domain.Human{
+ Username: "username",
+ Profile: &domain.Profile{
+ FirstName: "firstname",
+ LastName: "lastname",
+ PreferredLanguage: AllowedLanguage,
+ },
+ Email: &domain.Email{
+ EmailAddress: "email@test.ch",
+ IsEmailVerified: true,
+ },
+ },
+ links: []*domain.UserIDPLink{
+ {
+ IDPConfigID: "idpID",
+ ExternalUserID: "externalID",
+ DisplayName: "name",
+ },
+ },
+ secretGenerator: GetMockSecretGenerator(t),
+ }
+ },
+ res: res{
+ wantHuman: &domain.Human{
+ ObjectRoot: models.ObjectRoot{
+ AggregateID: "user1",
+ ResourceOwner: "org1",
+ },
+ Username: "username",
+ Profile: &domain.Profile{
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: AllowedLanguage,
},
Email: &domain.Email{
EmailAddress: "email@test.ch",
@@ -1985,153 +2316,155 @@ func TestCommandSide_ImportHuman(t *testing.T) {
},
{
name: "add human (with idp, creation not allowed), precondition error",
- fields: fields{
- eventstore: eventstoreExpect(
- t,
- expectFilter(
- eventFromEventPusher(
- org.NewDomainPolicyAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- true,
- true,
- true,
+ given: func(t *testing.T) (fields, args) {
+ return fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ true,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ 1,
+ false,
+ false,
+ false,
+ false,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewIDPConfigAddedEvent(context.Background(),
+ &org.NewAggregate("org1").Aggregate,
+ "idpID",
+ "name",
+ domain.IDPConfigTypeOIDC,
+ domain.IDPConfigStylingTypeUnspecified,
+ false,
+ ),
+ ),
+ eventFromEventPusher(
+ org.NewIDPOIDCConfigAddedEvent(context.Background(),
+ &org.NewAggregate("org1").Aggregate,
+ "clientID",
+ "idpID",
+ "issuer",
+ "authEndpoint",
+ "tokenEndpoint",
+ nil,
+ domain.OIDCMappingFieldUnspecified,
+ domain.OIDCMappingFieldUnspecified,
+ ),
+ ),
+ eventFromEventPusher(
+ func() eventstore.Command {
+ e, _ := org.NewOIDCIDPChangedEvent(context.Background(),
+ &org.NewAggregate("org1").Aggregate,
+ "config1",
+ []idp.OIDCIDPChanges{
+ idp.ChangeOIDCOptions(idp.OptionChanges{IsCreationAllowed: gu.Ptr(false)}),
+ },
+ )
+ return e
+ }(),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewIDPConfigAddedEvent(context.Background(),
+ &org.NewAggregate("org1").Aggregate,
+ "idpID",
+ "name",
+ domain.IDPConfigTypeOIDC,
+ domain.IDPConfigStylingTypeUnspecified,
+ false,
+ ),
+ ),
+ eventFromEventPusher(
+ org.NewIDPOIDCConfigAddedEvent(context.Background(),
+ &org.NewAggregate("org1").Aggregate,
+ "clientID",
+ "idpID",
+ "issuer",
+ "authEndpoint",
+ "tokenEndpoint",
+ nil,
+ domain.OIDCMappingFieldUnspecified,
+ domain.OIDCMappingFieldUnspecified,
+ ),
+ ),
+ eventFromEventPusher(
+ func() eventstore.Command {
+ e, _ := org.NewOIDCIDPChangedEvent(context.Background(),
+ &org.NewAggregate("org1").Aggregate,
+ "config1",
+ []idp.OIDCIDPChanges{
+ idp.ChangeOIDCOptions(idp.OptionChanges{IsCreationAllowed: gu.Ptr(false)}),
+ },
+ )
+ return e
+ }(),
+ ),
+ eventFromEventPusher(
+ org.NewIdentityProviderAddedEvent(context.Background(),
+ &org.NewAggregate("org1").Aggregate,
+ "idpID",
+ domain.IdentityProviderTypeOrg,
+ ),
+ ),
),
),
- ),
- expectFilter(
- eventFromEventPusher(
- org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- 1,
- false,
- false,
- false,
- false,
- ),
- ),
- ),
- expectFilter(
- eventFromEventPusher(
- org.NewIDPConfigAddedEvent(context.Background(),
- &org.NewAggregate("org1").Aggregate,
- "idpID",
- "name",
- domain.IDPConfigTypeOIDC,
- domain.IDPConfigStylingTypeUnspecified,
- false,
- ),
- ),
- eventFromEventPusher(
- org.NewIDPOIDCConfigAddedEvent(context.Background(),
- &org.NewAggregate("org1").Aggregate,
- "clientID",
- "idpID",
- "issuer",
- "authEndpoint",
- "tokenEndpoint",
- nil,
- domain.OIDCMappingFieldUnspecified,
- domain.OIDCMappingFieldUnspecified,
- ),
- ),
- eventFromEventPusher(
- func() eventstore.Command {
- e, _ := org.NewOIDCIDPChangedEvent(context.Background(),
- &org.NewAggregate("org1").Aggregate,
- "config1",
- []idp.OIDCIDPChanges{
- idp.ChangeOIDCOptions(idp.OptionChanges{IsCreationAllowed: gu.Ptr(false)}),
- },
- )
- return e
- }(),
- ),
- ),
- expectFilter(
- eventFromEventPusher(
- org.NewIDPConfigAddedEvent(context.Background(),
- &org.NewAggregate("org1").Aggregate,
- "idpID",
- "name",
- domain.IDPConfigTypeOIDC,
- domain.IDPConfigStylingTypeUnspecified,
- false,
- ),
- ),
- eventFromEventPusher(
- org.NewIDPOIDCConfigAddedEvent(context.Background(),
- &org.NewAggregate("org1").Aggregate,
- "clientID",
- "idpID",
- "issuer",
- "authEndpoint",
- "tokenEndpoint",
- nil,
- domain.OIDCMappingFieldUnspecified,
- domain.OIDCMappingFieldUnspecified,
- ),
- ),
- eventFromEventPusher(
- func() eventstore.Command {
- e, _ := org.NewOIDCIDPChangedEvent(context.Background(),
- &org.NewAggregate("org1").Aggregate,
- "config1",
- []idp.OIDCIDPChanges{
- idp.ChangeOIDCOptions(idp.OptionChanges{IsCreationAllowed: gu.Ptr(false)}),
- },
- )
- return e
- }(),
- ),
- eventFromEventPusher(
- org.NewIdentityProviderAddedEvent(context.Background(),
- &org.NewAggregate("org1").Aggregate,
- "idpID",
- domain.IdentityProviderTypeOrg,
- ),
- ),
- ),
- ),
- idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
- userPasswordHasher: mockPasswordHasher("x"),
- },
- args: args{
- ctx: context.Background(),
- orgID: "org1",
- human: &domain.Human{
- Username: "username",
- Profile: &domain.Profile{
- FirstName: "firstname",
- LastName: "lastname",
- PreferredLanguage: language.English,
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
+ userPasswordHasher: mockPasswordHasher("x"),
},
- Email: &domain.Email{
- EmailAddress: "email@test.ch",
- IsEmailVerified: true,
- },
- },
- links: []*domain.UserIDPLink{
- {
- IDPConfigID: "idpID",
- ExternalUserID: "externalID",
- DisplayName: "name",
- },
- },
- secretGenerator: GetMockSecretGenerator(t),
+ args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &domain.Human{
+ Username: "username",
+ Profile: &domain.Profile{
+ FirstName: "firstname",
+ LastName: "lastname",
+ },
+ Email: &domain.Email{
+ EmailAddress: "email@test.ch",
+ IsEmailVerified: true,
+ },
+ },
+ links: []*domain.UserIDPLink{
+ {
+ IDPConfigID: "idpID",
+ ExternalUserID: "externalID",
+ DisplayName: "name",
+ },
+ },
+ secretGenerator: GetMockSecretGenerator(t),
+ }
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
+ f, a := tt.given(t)
r := &Commands{
- eventstore: tt.fields.eventstore,
- idGenerator: tt.fields.idGenerator,
- userPasswordHasher: tt.fields.userPasswordHasher,
+ eventstore: f.eventstore,
+ idGenerator: f.idGenerator,
+ userPasswordHasher: f.userPasswordHasher,
}
- gotHuman, gotCode, err := r.ImportHuman(tt.args.ctx, tt.args.orgID, tt.args.human, tt.args.passwordless, tt.args.links, tt.args.secretGenerator, tt.args.secretGenerator, tt.args.secretGenerator, tt.args.secretGenerator)
+ gotHuman, gotCode, err := r.ImportHuman(a.ctx, a.orgID, a.human, a.passwordless, a.links, a.secretGenerator, a.secretGenerator, a.secretGenerator, a.secretGenerator)
if tt.res.err == nil {
assert.NoError(t, err)
}
@@ -2139,7 +2472,7 @@ func TestCommandSide_ImportHuman(t *testing.T) {
t.Errorf("got wrong err: %v ", err)
}
if tt.res.err == nil {
- assert.Equal(t, tt.res.wantHuman, gotHuman)
+ assert.Equal(t, tt.res.wantHuman.PreferredLanguage, gotHuman.PreferredLanguage)
assert.Equal(t, tt.res.wantCode, gotCode)
}
})
@@ -2192,7 +2525,7 @@ func TestCommandSide_RegisterHuman(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -2222,7 +2555,7 @@ func TestCommandSide_RegisterHuman(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -2262,7 +2595,7 @@ func TestCommandSide_RegisterHuman(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -2310,7 +2643,7 @@ func TestCommandSide_RegisterHuman(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -2380,7 +2713,7 @@ func TestCommandSide_RegisterHuman(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -2450,7 +2783,7 @@ func TestCommandSide_RegisterHuman(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -2537,7 +2870,7 @@ func TestCommandSide_RegisterHuman(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -2625,7 +2958,7 @@ func TestCommandSide_RegisterHuman(t *testing.T) {
),
),
expectPush(
- newRegisterHumanEvent("email@test.ch", "$plain$x$password", false, false, ""),
+ newRegisterHumanEvent("email@test.ch", "$plain$x$password", false, false, "", AllowedLanguage),
user.NewHumanInitialCodeAddedEvent(context.Background(),
&user.NewAggregate("user1", "org1").Aggregate,
&crypto.CryptoValue{
@@ -2649,8 +2982,9 @@ func TestCommandSide_RegisterHuman(t *testing.T) {
SecretString: "password",
},
Profile: &domain.Profile{
- FirstName: "firstname",
- LastName: "lastname",
+ FirstName: "firstname",
+ LastName: "lastname",
+ PreferredLanguage: AllowedLanguage,
},
Email: &domain.Email{
EmailAddress: "email@test.ch",
@@ -2669,7 +3003,7 @@ func TestCommandSide_RegisterHuman(t *testing.T) {
FirstName: "firstname",
LastName: "lastname",
DisplayName: "firstname lastname",
- PreferredLanguage: language.Und,
+ PreferredLanguage: AllowedLanguage,
},
Email: &domain.Email{
EmailAddress: "email@test.ch",
@@ -2730,7 +3064,7 @@ func TestCommandSide_RegisterHuman(t *testing.T) {
),
),
expectPush(
- newRegisterHumanEvent("username", "$plain$x$password", false, false, ""),
+ newRegisterHumanEvent("username", "$plain$x$password", false, false, "", AllowedLanguage),
user.NewHumanInitialCodeAddedEvent(context.Background(),
&user.NewAggregate("user1", "org1").Aggregate,
&crypto.CryptoValue{
@@ -2754,8 +3088,9 @@ func TestCommandSide_RegisterHuman(t *testing.T) {
SecretString: "password",
},
Profile: &domain.Profile{
- FirstName: "firstname",
- LastName: "lastname",
+ FirstName: "firstname",
+ LastName: "lastname",
+ PreferredLanguage: AllowedLanguage,
},
Email: &domain.Email{
EmailAddress: "email@test.ch",
@@ -2775,7 +3110,7 @@ func TestCommandSide_RegisterHuman(t *testing.T) {
FirstName: "firstname",
LastName: "lastname",
DisplayName: "firstname lastname",
- PreferredLanguage: language.Und,
+ PreferredLanguage: AllowedLanguage,
},
Email: &domain.Email{
EmailAddress: "email@test.ch",
@@ -2836,7 +3171,7 @@ func TestCommandSide_RegisterHuman(t *testing.T) {
),
),
expectPush(
- newRegisterHumanEvent("username", "$plain$x$password", false, true, ""),
+ newRegisterHumanEvent("username", "$plain$x$password", false, true, "", AllowedLanguage),
user.NewHumanInitialCodeAddedEvent(context.Background(),
&user.NewAggregate("user1", "org1").Aggregate,
&crypto.CryptoValue{
@@ -2861,8 +3196,9 @@ func TestCommandSide_RegisterHuman(t *testing.T) {
SecretString: "password",
},
Profile: &domain.Profile{
- FirstName: "firstname",
- LastName: "lastname",
+ FirstName: "firstname",
+ LastName: "lastname",
+ PreferredLanguage: AllowedLanguage,
},
Email: &domain.Email{
EmailAddress: "email@test.ch",
@@ -2881,7 +3217,7 @@ func TestCommandSide_RegisterHuman(t *testing.T) {
FirstName: "firstname",
LastName: "lastname",
DisplayName: "firstname lastname",
- PreferredLanguage: language.Und,
+ PreferredLanguage: AllowedLanguage,
},
Email: &domain.Email{
EmailAddress: "email@test.ch",
@@ -2942,7 +3278,7 @@ func TestCommandSide_RegisterHuman(t *testing.T) {
),
),
expectPush(
- newRegisterHumanEvent("username", "$plain$x$password", false, true, ""),
+ newRegisterHumanEvent("username", "$plain$x$password", false, true, "", AllowedLanguage),
user.NewHumanEmailVerifiedEvent(context.Background(),
&user.NewAggregate("user1", "org1").Aggregate),
),
@@ -2959,8 +3295,9 @@ func TestCommandSide_RegisterHuman(t *testing.T) {
SecretString: "password",
},
Profile: &domain.Profile{
- FirstName: "firstname",
- LastName: "lastname",
+ FirstName: "firstname",
+ LastName: "lastname",
+ PreferredLanguage: AllowedLanguage,
},
Email: &domain.Email{
EmailAddress: "email@test.ch",
@@ -2980,7 +3317,7 @@ func TestCommandSide_RegisterHuman(t *testing.T) {
FirstName: "firstname",
LastName: "lastname",
DisplayName: "firstname lastname",
- PreferredLanguage: language.Und,
+ PreferredLanguage: AllowedLanguage,
},
Email: &domain.Email{
EmailAddress: "email@test.ch",
@@ -3042,7 +3379,7 @@ func TestCommandSide_RegisterHuman(t *testing.T) {
),
),
expectPush(
- newRegisterHumanEvent("username", "$plain$x$password", false, true, "+41711234567"),
+ newRegisterHumanEvent("username", "$plain$x$password", false, true, "+41711234567", AllowedLanguage),
user.NewHumanInitialCodeAddedEvent(context.Background(),
&user.NewAggregate("user1", "org1").Aggregate,
&crypto.CryptoValue{
@@ -3074,8 +3411,9 @@ func TestCommandSide_RegisterHuman(t *testing.T) {
human: &domain.Human{
Username: "username",
Profile: &domain.Profile{
- FirstName: "firstname",
- LastName: "lastname",
+ FirstName: "firstname",
+ LastName: "lastname",
+ PreferredLanguage: AllowedLanguage,
},
Email: &domain.Email{
EmailAddress: "email@test.ch",
@@ -3100,7 +3438,7 @@ func TestCommandSide_RegisterHuman(t *testing.T) {
FirstName: "firstname",
LastName: "lastname",
DisplayName: "firstname lastname",
- PreferredLanguage: language.Und,
+ PreferredLanguage: AllowedLanguage,
},
Email: &domain.Email{
EmailAddress: "email@test.ch",
@@ -3164,7 +3502,7 @@ func TestCommandSide_RegisterHuman(t *testing.T) {
),
),
expectPush(
- newRegisterHumanEvent("username", "$plain$x$password", false, true, "+41711234567"),
+ newRegisterHumanEvent("username", "$plain$x$password", false, true, "+41711234567", AllowedLanguage),
user.NewHumanInitialCodeAddedEvent(context.Background(),
&user.NewAggregate("user1", "org1").Aggregate,
&crypto.CryptoValue{
@@ -3189,8 +3527,9 @@ func TestCommandSide_RegisterHuman(t *testing.T) {
human: &domain.Human{
Username: "username",
Profile: &domain.Profile{
- FirstName: "firstname",
- LastName: "lastname",
+ FirstName: "firstname",
+ LastName: "lastname",
+ PreferredLanguage: AllowedLanguage,
},
Email: &domain.Email{
EmailAddress: "email@test.ch",
@@ -3216,7 +3555,7 @@ func TestCommandSide_RegisterHuman(t *testing.T) {
FirstName: "firstname",
LastName: "lastname",
DisplayName: "firstname lastname",
- PreferredLanguage: language.Und,
+ PreferredLanguage: AllowedLanguage,
},
Email: &domain.Email{
EmailAddress: "email@test.ch",
@@ -3228,6 +3567,218 @@ func TestCommandSide_RegisterHuman(t *testing.T) {
},
},
},
+ {
+ name: "add human (with unsupported preferred language), ok",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &org.NewAggregate("org1").Aggregate,
+ true,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
+ &org.NewAggregate("org1").Aggregate,
+ 1,
+ false,
+ false,
+ false,
+ false,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewLoginPolicyAddedEvent(context.Background(),
+ &org.NewAggregate("org1").Aggregate,
+ false,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ domain.PasswordlessTypeNotAllowed,
+ "",
+ time.Hour*1,
+ time.Hour*2,
+ time.Hour*3,
+ time.Hour*4,
+ time.Hour*5,
+ ),
+ ),
+ ),
+ expectPush(
+ newRegisterHumanEvent("username", "$plain$x$password", false, true, "", UnsupportedLanguage),
+ user.NewHumanInitialCodeAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("a"),
+ },
+ time.Hour*1,
+ ),
+ ),
+ ),
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
+ userPasswordHasher: mockPasswordHasher("x"),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &domain.Human{
+ Username: "username",
+ Profile: &domain.Profile{
+ FirstName: "firstname",
+ LastName: "lastname",
+ PreferredLanguage: UnsupportedLanguage,
+ },
+ Email: &domain.Email{
+ EmailAddress: "email@test.ch",
+ },
+ Password: &domain.Password{
+ SecretString: "password",
+ },
+ },
+ secretGenerator: GetMockSecretGenerator(t),
+ },
+ res: res{
+ want: &domain.Human{
+ ObjectRoot: models.ObjectRoot{
+ AggregateID: "user1",
+ ResourceOwner: "org1",
+ },
+ Username: "username",
+ Profile: &domain.Profile{
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: UnsupportedLanguage,
+ },
+ Email: &domain.Email{
+ EmailAddress: "email@test.ch",
+ },
+ State: domain.UserStateInitial,
+ },
+ },
+ },
+ {
+ name: "add human (with undefined preferred language), ok",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &org.NewAggregate("org1").Aggregate,
+ true,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
+ &org.NewAggregate("org1").Aggregate,
+ 1,
+ false,
+ false,
+ false,
+ false,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewLoginPolicyAddedEvent(context.Background(),
+ &org.NewAggregate("org1").Aggregate,
+ false,
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false,
+ domain.PasswordlessTypeNotAllowed,
+ "",
+ time.Hour*1,
+ time.Hour*2,
+ time.Hour*3,
+ time.Hour*4,
+ time.Hour*5,
+ ),
+ ),
+ ),
+ expectPush(
+ newRegisterHumanEvent("username", "$plain$x$password", false, true, "", language.Und),
+ user.NewHumanInitialCodeAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("a"),
+ },
+ time.Hour*1,
+ ),
+ ),
+ ),
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
+ userPasswordHasher: mockPasswordHasher("x"),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &domain.Human{
+ Username: "username",
+ Profile: &domain.Profile{
+ FirstName: "firstname",
+ LastName: "lastname",
+ },
+ Email: &domain.Email{
+ EmailAddress: "email@test.ch",
+ },
+ Password: &domain.Password{
+ SecretString: "password",
+ },
+ },
+ secretGenerator: GetMockSecretGenerator(t),
+ },
+ res: res{
+ want: &domain.Human{
+ ObjectRoot: models.ObjectRoot{
+ AggregateID: "user1",
+ ResourceOwner: "org1",
+ },
+ Username: "username",
+ Profile: &domain.Profile{
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ },
+ Email: &domain.Email{
+ EmailAddress: "email@test.ch",
+ },
+ State: domain.UserStateInitial,
+ },
+ },
+ },
{
name: "add with idp link, email verified, ok",
fields: fields{
@@ -3337,7 +3888,7 @@ func TestCommandSide_RegisterHuman(t *testing.T) {
),
),
expectPush(
- newRegisterHumanEvent("username", "$plain$x$password", false, true, ""),
+ newRegisterHumanEvent("username", "$plain$x$password", false, true, "", AllowedLanguage),
user.NewUserIDPLinkAddedEvent(context.Background(),
&user.NewAggregate("user1", "org1").Aggregate,
"idpID",
@@ -3361,8 +3912,9 @@ func TestCommandSide_RegisterHuman(t *testing.T) {
SecretString: "password",
},
Profile: &domain.Profile{
- FirstName: "firstname",
- LastName: "lastname",
+ FirstName: "firstname",
+ LastName: "lastname",
+ PreferredLanguage: AllowedLanguage,
},
Email: &domain.Email{
EmailAddress: "email@test.ch",
@@ -3387,7 +3939,7 @@ func TestCommandSide_RegisterHuman(t *testing.T) {
FirstName: "firstname",
LastName: "lastname",
DisplayName: "firstname lastname",
- PreferredLanguage: language.Und,
+ PreferredLanguage: AllowedLanguage,
},
Email: &domain.Email{
EmailAddress: "email@test.ch",
@@ -3453,7 +4005,7 @@ func TestCommandSide_HumanMFASkip(t *testing.T) {
userID: "",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -3470,7 +4022,7 @@ func TestCommandSide_HumanMFASkip(t *testing.T) {
userID: "user1",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -3487,7 +4039,7 @@ func TestCommandSide_HumanMFASkip(t *testing.T) {
"lastname",
"nickname",
"displayname",
- language.German,
+ AllowedLanguage,
domain.GenderUnspecified,
"email@test.ch",
true,
@@ -3563,7 +4115,7 @@ func TestCommandSide_HumanSignOut(t *testing.T) {
userIDs: []string{"user1"},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -3579,7 +4131,7 @@ func TestCommandSide_HumanSignOut(t *testing.T) {
userIDs: []string{},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -3611,7 +4163,7 @@ func TestCommandSide_HumanSignOut(t *testing.T) {
"lastname",
"nickname",
"displayname",
- language.German,
+ AllowedLanguage,
domain.GenderUnspecified,
"email@test.ch",
true,
@@ -3651,7 +4203,7 @@ func TestCommandSide_HumanSignOut(t *testing.T) {
"lastname",
"nickname",
"displayname",
- language.German,
+ AllowedLanguage,
domain.GenderUnspecified,
"email@test.ch",
true,
@@ -3667,7 +4219,7 @@ func TestCommandSide_HumanSignOut(t *testing.T) {
"lastname",
"nickname",
"displayname",
- language.German,
+ AllowedLanguage,
domain.GenderUnspecified,
"email@test.ch",
true,
@@ -3714,7 +4266,18 @@ func TestCommandSide_HumanSignOut(t *testing.T) {
}
}
-func newAddHumanEvent(password string, changeRequired, userLoginMustBeDomain bool, phone string) *user.HumanAddedEvent {
+func newAddMachineEvent(userLoginMustBeDomain bool, accessTokenType domain.OIDCTokenType) *user.MachineAddedEvent {
+ return user.NewMachineAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ "name",
+ "description",
+ userLoginMustBeDomain,
+ accessTokenType,
+ )
+}
+
+func newAddHumanEvent(password string, changeRequired, userLoginMustBeDomain bool, phone string, preferredLanguage language.Tag) *user.HumanAddedEvent {
event := user.NewHumanAddedEvent(context.Background(),
&user.NewAggregate("user1", "org1").Aggregate,
"username",
@@ -3722,7 +4285,7 @@ func newAddHumanEvent(password string, changeRequired, userLoginMustBeDomain boo
"lastname",
"",
"firstname lastname",
- language.English,
+ preferredLanguage,
domain.GenderUnspecified,
"email@test.ch",
userLoginMustBeDomain,
@@ -3736,7 +4299,7 @@ func newAddHumanEvent(password string, changeRequired, userLoginMustBeDomain boo
return event
}
-func newRegisterHumanEvent(username, password string, changeRequired, userLoginMustBeUnique bool, phone string) *user.HumanRegisteredEvent {
+func newRegisterHumanEvent(username, password string, changeRequired, userLoginMustBeUnique bool, phone string, preferredLanguage language.Tag) *user.HumanRegisteredEvent {
event := user.NewHumanRegisteredEvent(context.Background(),
&user.NewAggregate("user1", "org1").Aggregate,
username,
@@ -3744,7 +4307,7 @@ func newRegisterHumanEvent(username, password string, changeRequired, userLoginM
"lastname",
"",
"firstname lastname",
- language.Und,
+ preferredLanguage,
domain.GenderUnspecified,
"email@test.ch",
userLoginMustBeUnique,
@@ -3784,27 +4347,28 @@ func TestAddHumanCommand(t *testing.T) {
Email: Email{
Address: "invalid",
},
+ PreferredLanguage: AllowedLanguage,
},
orgID: "ro",
},
want: Want{
- ValidationErr: caos_errs.ThrowInvalidArgument(nil, "EMAIL-599BI", "Errors.User.Email.Invalid"),
+ ValidationErr: zerrors.ThrowInvalidArgument(nil, "EMAIL-599BI", "Errors.User.Email.Invalid"),
},
},
{
name: "invalid first name",
args: args{
human: &AddHuman{
- Username: "username",
- PreferredLanguage: language.English,
+ Username: "username",
Email: Email{
Address: "support@zitadel.com",
},
+ PreferredLanguage: AllowedLanguage,
},
orgID: "ro",
},
want: Want{
- ValidationErr: caos_errs.ThrowInvalidArgument(nil, "USER-UCej2", "Errors.User.Profile.FirstNameEmpty"),
+ ValidationErr: zerrors.ThrowInvalidArgument(nil, "USER-UCej2", "Errors.User.Profile.FirstNameEmpty"),
},
},
{
@@ -3812,14 +4376,14 @@ func TestAddHumanCommand(t *testing.T) {
args: args{
human: &AddHuman{
Username: "username",
- PreferredLanguage: language.English,
FirstName: "hurst",
Email: Email{Address: "support@zitadel.com"},
+ PreferredLanguage: AllowedLanguage,
},
orgID: "ro",
},
want: Want{
- ValidationErr: caos_errs.ThrowInvalidArgument(nil, "USER-4hB7d", "Errors.User.Profile.LastNameEmpty"),
+ ValidationErr: zerrors.ThrowInvalidArgument(nil, "USER-4hB7d", "Errors.User.Profile.LastNameEmpty"),
},
},
{
@@ -3827,17 +4391,17 @@ func TestAddHumanCommand(t *testing.T) {
args: args{
human: &AddHuman{
Email: Email{Address: "support@zitadel.com", Verified: true},
- PreferredLanguage: language.English,
FirstName: "gigi",
LastName: "giraffe",
EncodedPasswordHash: "$foo$x$password",
Username: "username",
+ PreferredLanguage: AllowedLanguage,
},
orgID: "ro",
hasher: mockPasswordHasher("x"),
},
want: Want{
- ValidationErr: caos_errs.ThrowInvalidArgument(nil, "USER-JDk4t", "Errors.User.Password.NotSupported"),
+ ValidationErr: zerrors.ThrowInvalidArgument(nil, "USER-JDk4t", "Errors.User.Password.NotSupported"),
},
},
{
@@ -3848,11 +4412,11 @@ func TestAddHumanCommand(t *testing.T) {
args: args{
human: &AddHuman{
Email: Email{Address: "support@zitadel.com"},
- PreferredLanguage: language.English,
FirstName: "gigi",
LastName: "giraffe",
Password: "short",
Username: "username",
+ PreferredLanguage: AllowedLanguage,
},
orgID: "ro",
filter: NewMultiFilter().Append(
@@ -3888,7 +4452,7 @@ func TestAddHumanCommand(t *testing.T) {
Filter(),
},
want: Want{
- CreateErr: caos_errs.ThrowInvalidArgument(nil, "COMMA-HuJf6", "Errors.User.PasswordComplexityPolicy.MinLength"),
+ CreateErr: zerrors.ThrowInvalidArgument(nil, "COMMA-HuJf6", "Errors.User.PasswordComplexityPolicy.MinLength"),
},
},
{
@@ -3899,11 +4463,11 @@ func TestAddHumanCommand(t *testing.T) {
args: args{
human: &AddHuman{
Email: Email{Address: "support@zitadel.com", Verified: true},
- PreferredLanguage: language.English,
FirstName: "gigi",
LastName: "giraffe",
Password: "password",
Username: "username",
+ PreferredLanguage: AllowedLanguage,
},
orgID: "ro",
hasher: mockPasswordHasher("x"),
@@ -3951,7 +4515,150 @@ func TestAddHumanCommand(t *testing.T) {
"giraffe",
"",
"gigi giraffe",
- language.English,
+ AllowedLanguage,
+ 0,
+ "support@zitadel.com",
+ true,
+ )
+ event.AddPasswordData("$plain$x$password", false)
+ return event
+ }(),
+ user.NewHumanEmailVerifiedEvent(context.Background(), &agg.Aggregate),
+ },
+ },
+ },
+ {
+ name: "undefined preferred language, ok",
+ fields: fields{
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "id"),
+ },
+ args: args{
+ human: &AddHuman{
+ Email: Email{Address: "support@zitadel.com", Verified: true},
+ FirstName: "gigi",
+ LastName: "giraffe",
+ Password: "password",
+ Username: "username",
+ },
+ orgID: "ro",
+ hasher: mockPasswordHasher("x"),
+ codeAlg: crypto.CreateMockEncryptionAlg(gomock.NewController(t)),
+ filter: NewMultiFilter().Append(
+ func(ctx context.Context, queryFactory *eventstore.SearchQueryBuilder) ([]eventstore.Event, error) {
+ return []eventstore.Event{}, nil
+ }).
+ Append(
+ func(ctx context.Context, queryFactory *eventstore.SearchQueryBuilder) ([]eventstore.Event, error) {
+ return []eventstore.Event{
+ org.NewDomainPolicyAddedEvent(
+ ctx,
+ &org.NewAggregate("id").Aggregate,
+ true,
+ true,
+ true,
+ ),
+ }, nil
+ }).
+ Append(
+ func(ctx context.Context, queryFactory *eventstore.SearchQueryBuilder) ([]eventstore.Event, error) {
+ return []eventstore.Event{
+ org.NewPasswordComplexityPolicyAddedEvent(
+ ctx,
+ &org.NewAggregate("id").Aggregate,
+ 2,
+ false,
+ false,
+ false,
+ false,
+ ),
+ }, nil
+ }).
+ Filter(),
+ },
+ want: Want{
+ Commands: []eventstore.Command{
+ func() *user.HumanAddedEvent {
+ event := user.NewHumanAddedEvent(
+ context.Background(),
+ &agg.Aggregate,
+ "username",
+ "gigi",
+ "giraffe",
+ "",
+ "gigi giraffe",
+ language.Und,
+ 0,
+ "support@zitadel.com",
+ true,
+ )
+ event.AddPasswordData("$plain$x$password", false)
+ return event
+ }(),
+ user.NewHumanEmailVerifiedEvent(context.Background(), &agg.Aggregate),
+ },
+ },
+ },
+ {
+ name: "unsupported preferred language, ok",
+ fields: fields{
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "id"),
+ },
+ args: args{
+ human: &AddHuman{
+ Email: Email{Address: "support@zitadel.com", Verified: true},
+ FirstName: "gigi",
+ LastName: "giraffe",
+ Password: "password",
+ Username: "username",
+ PreferredLanguage: UnsupportedLanguage,
+ },
+ orgID: "ro",
+ hasher: mockPasswordHasher("x"),
+ codeAlg: crypto.CreateMockEncryptionAlg(gomock.NewController(t)),
+ filter: NewMultiFilter().Append(
+ func(ctx context.Context, queryFactory *eventstore.SearchQueryBuilder) ([]eventstore.Event, error) {
+ return []eventstore.Event{}, nil
+ }).
+ Append(
+ func(ctx context.Context, queryFactory *eventstore.SearchQueryBuilder) ([]eventstore.Event, error) {
+ return []eventstore.Event{
+ org.NewDomainPolicyAddedEvent(
+ ctx,
+ &org.NewAggregate("id").Aggregate,
+ true,
+ true,
+ true,
+ ),
+ }, nil
+ }).
+ Append(
+ func(ctx context.Context, queryFactory *eventstore.SearchQueryBuilder) ([]eventstore.Event, error) {
+ return []eventstore.Event{
+ org.NewPasswordComplexityPolicyAddedEvent(
+ ctx,
+ &org.NewAggregate("id").Aggregate,
+ 2,
+ false,
+ false,
+ false,
+ false,
+ ),
+ }, nil
+ }).
+ Filter(),
+ },
+ want: Want{
+ Commands: []eventstore.Command{
+ func() *user.HumanAddedEvent {
+ event := user.NewHumanAddedEvent(
+ context.Background(),
+ &agg.Aggregate,
+ "username",
+ "gigi",
+ "giraffe",
+ "",
+ "gigi giraffe",
+ UnsupportedLanguage,
0,
"support@zitadel.com",
true,
@@ -3971,11 +4678,11 @@ func TestAddHumanCommand(t *testing.T) {
args: args{
human: &AddHuman{
Email: Email{Address: "support@zitadel.com", Verified: true},
- PreferredLanguage: language.English,
FirstName: "gigi",
LastName: "giraffe",
EncodedPasswordHash: "$plain$x$password",
Username: "username",
+ PreferredLanguage: AllowedLanguage,
},
orgID: "ro",
hasher: mockPasswordHasher("x"),
@@ -4023,7 +4730,7 @@ func TestAddHumanCommand(t *testing.T) {
"giraffe",
"",
"gigi giraffe",
- language.English,
+ AllowedLanguage,
0,
"support@zitadel.com",
true,
diff --git a/internal/command/user_human_webauthn.go b/internal/command/user_human_webauthn.go
index 70c012884b..3328e95455 100644
--- a/internal/command/user_human_webauthn.go
+++ b/internal/command/user_human_webauthn.go
@@ -8,11 +8,11 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
usr_repo "github.com/zitadel/zitadel/internal/repository/user"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) getHumanU2FTokens(ctx context.Context, userID, resourceowner string) ([]*domain.WebAuthNToken, error) {
@@ -22,7 +22,7 @@ func (c *Commands) getHumanU2FTokens(ctx context.Context, userID, resourceowner
return nil, err
}
if tokenReadModel.UserState == domain.UserStateDeleted {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-4M0ds", "Errors.User.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-4M0ds", "Errors.User.NotFound")
}
return readModelToWebAuthNTokens(tokenReadModel), nil
}
@@ -34,7 +34,7 @@ func (c *Commands) getHumanPasswordlessTokens(ctx context.Context, userID, resou
return nil, err
}
if tokenReadModel.UserState == domain.UserStateDeleted {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-Mv9sd", "Errors.User.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-Mv9sd", "Errors.User.NotFound")
}
return readModelToWebAuthNTokens(tokenReadModel), nil
}
@@ -46,7 +46,7 @@ func (c *Commands) getHumanU2FLogin(ctx context.Context, userID, authReqID, reso
return nil, err
}
if tokenReadModel.State == domain.UserStateUnspecified || tokenReadModel.State == domain.UserStateDeleted {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-5m88U", "Errors.User.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-5m88U", "Errors.User.NotFound")
}
return &domain.WebAuthNLogin{
ObjectRoot: models.ObjectRoot{
@@ -65,7 +65,7 @@ func (c *Commands) getHumanPasswordlessLogin(ctx context.Context, userID, authRe
return nil, err
}
if tokenReadModel.State == domain.UserStateUnspecified || tokenReadModel.State == domain.UserStateDeleted {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-fm84R", "Errors.User.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-fm84R", "Errors.User.NotFound")
}
return &domain.WebAuthNLogin{
ObjectRoot: models.ObjectRoot{
@@ -139,7 +139,7 @@ func (c *Commands) HumanAddPasswordlessSetupInitCode(ctx context.Context, userID
func (c *Commands) addHumanWebAuthN(ctx context.Context, userID, resourceowner, rpID string, tokens []*domain.WebAuthNToken, authenticatorPlatform domain.AuthenticatorAttachment, userVerification domain.UserVerificationRequirement) (*HumanWebAuthNWriteModel, *eventstore.Aggregate, *domain.WebAuthNToken, error) {
if userID == "" {
- return nil, nil, nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-3M0od", "Errors.IDMissing")
+ return nil, nil, nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-3M0od", "Errors.IDMissing")
}
user, err := c.getHuman(ctx, userID, resourceowner)
if err != nil {
@@ -149,7 +149,7 @@ func (c *Commands) addHumanWebAuthN(ctx context.Context, userID, resourceowner,
if err != nil {
return nil, nil, nil, err
}
- orgPolicy, err := c.getOrgDomainPolicy(ctx, org.AggregateID)
+ orgPolicy, err := c.domainPolicyWriteModel(ctx, org.AggregateID)
if err != nil {
return nil, nil, nil, err
}
@@ -265,7 +265,7 @@ func (c *Commands) humanHumanPasswordlessSetup(ctx context.Context, userID, reso
func (c *Commands) verifyHumanWebAuthN(ctx context.Context, userID, resourceowner, tokenName, userAgentID string, credentialData []byte, tokens []*domain.WebAuthNToken) (*eventstore.Aggregate, *domain.WebAuthNToken, *HumanWebAuthNWriteModel, error) {
if userID == "" {
- return nil, nil, nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-3M0od", "Errors.IDMissing")
+ return nil, nil, nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-3M0od", "Errors.IDMissing")
}
user, err := c.getHuman(ctx, userID, resourceowner)
if err != nil {
@@ -336,7 +336,7 @@ func (c *Commands) HumanBeginPasswordlessLogin(ctx context.Context, userID, reso
func (c *Commands) beginWebAuthNLogin(ctx context.Context, userID, resourceOwner string, tokens []*domain.WebAuthNToken, userVerification domain.UserVerificationRequirement) (*eventstore.Aggregate, *domain.WebAuthNLogin, error) {
if userID == "" {
- return nil, nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-hh8K9", "Errors.IDMissing")
+ return nil, nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-hh8K9", "Errors.IDMissing")
}
human, err := c.getHuman(ctx, userID, resourceOwner)
@@ -447,7 +447,7 @@ func (c *Commands) HumanFinishPasswordlessLogin(ctx context.Context, userID, res
func (c *Commands) finishWebAuthNLogin(ctx context.Context, userID, resourceOwner string, credentialData []byte, webAuthN *domain.WebAuthNLogin, tokens []*domain.WebAuthNToken) (*eventstore.Aggregate, *domain.WebAuthNToken, uint32, error) {
if userID == "" {
- return nil, nil, 0, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-hh8K9", "Errors.IDMissing")
+ return nil, nil, 0, zerrors.ThrowPreconditionFailed(nil, "COMMAND-hh8K9", "Errors.IDMissing")
}
human, err := c.getHuman(ctx, userID, resourceOwner)
@@ -461,7 +461,7 @@ func (c *Commands) finishWebAuthNLogin(ctx context.Context, userID, resourceOwne
_, token := domain.GetTokenByKeyID(tokens, credential.ID)
if token == nil {
- return nil, nil, 0, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-3b7zs", "Errors.User.WebAuthN.NotFound")
+ return nil, nil, 0, zerrors.ThrowPreconditionFailed(nil, "COMMAND-3b7zs", "Errors.User.WebAuthN.NotFound")
}
writeModel, err := c.webauthNWriteModelByID(ctx, userID, "", resourceOwner)
@@ -517,7 +517,7 @@ func (c *Commands) HumanSendPasswordlessInitCode(ctx context.Context, userID, re
func (c *Commands) humanAddPasswordlessInitCode(ctx context.Context, userID, resourceOwner string, direct bool, passwordlessCodeGenerator crypto.Generator) (eventstore.Command, *HumanPasswordlessInitCodeWriteModel, string, error) {
if userID == "" {
- return nil, nil, "", caos_errs.ThrowPreconditionFailed(nil, "COMMAND-GVfg3", "Errors.IDMissing")
+ return nil, nil, "", zerrors.ThrowPreconditionFailed(nil, "COMMAND-GVfg3", "Errors.IDMissing")
}
codeID, err := c.idGenerator.Next()
@@ -548,7 +548,7 @@ func (c *Commands) humanAddPasswordlessInitCode(ctx context.Context, userID, res
func (c *Commands) HumanPasswordlessInitCodeSent(ctx context.Context, userID, resourceOwner, codeID string) error {
if userID == "" || codeID == "" {
- return caos_errs.ThrowInvalidArgument(nil, "COMMAND-ADggh", "Errors.IDMissing")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-ADggh", "Errors.IDMissing")
}
initCode := NewHumanPasswordlessInitCodeWriteModel(userID, codeID, resourceOwner)
err := c.eventstore.FilterToQueryReducer(ctx, initCode)
@@ -557,7 +557,7 @@ func (c *Commands) HumanPasswordlessInitCodeSent(ctx context.Context, userID, re
}
if initCode.State != domain.PasswordlessInitCodeStateRequested {
- return caos_errs.ThrowNotFound(nil, "COMMAND-Gdfg3", "Errors.User.Code.NotFound")
+ return zerrors.ThrowNotFound(nil, "COMMAND-Gdfg3", "Errors.User.Code.NotFound")
}
_, err = c.eventstore.Push(ctx,
@@ -568,7 +568,7 @@ func (c *Commands) HumanPasswordlessInitCodeSent(ctx context.Context, userID, re
func (c *Commands) humanVerifyPasswordlessInitCode(ctx context.Context, userID, resourceOwner, codeID, verificationCode string, passwordlessCodeGenerator crypto.Generator) error {
if userID == "" || codeID == "" {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-GVfg3", "Errors.IDMissing")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-GVfg3", "Errors.IDMissing")
}
initCode := NewHumanPasswordlessInitCodeWriteModel(userID, codeID, resourceOwner)
err := c.eventstore.FilterToQueryReducer(ctx, initCode)
@@ -580,14 +580,14 @@ func (c *Commands) humanVerifyPasswordlessInitCode(ctx context.Context, userID,
userAgg := UserAggregateFromWriteModel(&initCode.WriteModel)
_, err = c.eventstore.Push(ctx, usr_repo.NewHumanPasswordlessInitCodeCheckFailedEvent(ctx, userAgg, codeID))
logging.WithFields("userID", userAgg.ID).OnError(err).Error("NewHumanPasswordlessInitCodeCheckFailedEvent push failed")
- return caos_errs.ThrowInvalidArgument(err, "COMMAND-Dhz8i", "Errors.User.Code.Invalid")
+ return zerrors.ThrowInvalidArgument(err, "COMMAND-Dhz8i", "Errors.User.Code.Invalid")
}
return nil
}
func (c *Commands) removeHumanWebAuthN(ctx context.Context, userID, webAuthNID, resourceOwner string, preparedEvent func(*eventstore.Aggregate) eventstore.Command) (*domain.ObjectDetails, error) {
if userID == "" || webAuthNID == "" {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-6M9de", "Errors.IDMissing")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-6M9de", "Errors.IDMissing")
}
existingWebAuthN, err := c.webauthNWriteModelByID(ctx, userID, webAuthNID, resourceOwner)
@@ -595,7 +595,7 @@ func (c *Commands) removeHumanWebAuthN(ctx context.Context, userID, webAuthNID,
return nil, err
}
if existingWebAuthN.State == domain.MFAStateUnspecified || existingWebAuthN.State == domain.MFAStateRemoved {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-DAfb2", "Errors.User.WebAuthN.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-DAfb2", "Errors.User.WebAuthN.NotFound")
}
userAgg := UserAggregateFromWriteModel(&existingWebAuthN.WriteModel)
diff --git a/internal/command/user_idp_link.go b/internal/command/user_idp_link.go
index a66140ec79..afbdb47cdc 100644
--- a/internal/command/user_idp_link.go
+++ b/internal/command/user_idp_link.go
@@ -5,15 +5,15 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/user"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) AddUserIDPLink(ctx context.Context, userID, resourceOwner string, link *AddLink) (_ *domain.ObjectDetails, err error) {
if userID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-03j8f", "Errors.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-03j8f", "Errors.IDMissing")
}
if err := c.checkUserExists(ctx, userID, resourceOwner); err != nil {
return nil, err
@@ -41,10 +41,10 @@ func (c *Commands) AddUserIDPLink(ctx context.Context, userID, resourceOwner str
func (c *Commands) BulkAddedUserIDPLinks(ctx context.Context, userID, resourceOwner string, links []*domain.UserIDPLink) (err error) {
if userID == "" {
- return caos_errs.ThrowInvalidArgument(nil, "COMMAND-03j8f", "Errors.IDMissing")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-03j8f", "Errors.IDMissing")
}
if len(links) == 0 {
- return caos_errs.ThrowInvalidArgument(nil, "COMMAND-Ek9s", "Errors.User.ExternalIDP.MinimumExternalIDPNeeded")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-Ek9s", "Errors.User.ExternalIDP.MinimumExternalIDPNeeded")
}
if err := c.checkUserExists(ctx, userID, resourceOwner); err != nil {
@@ -68,22 +68,22 @@ func (c *Commands) BulkAddedUserIDPLinks(ctx context.Context, userID, resourceOw
func (c *Commands) addUserIDPLink(ctx context.Context, human *eventstore.Aggregate, link *domain.UserIDPLink, linkToExistingUser bool) (eventstore.Command, error) {
if link.AggregateID != "" && human.ID != link.AggregateID {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-33M0g", "Errors.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-33M0g", "Errors.IDMissing")
}
if !link.IsValid() {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-6m9Kd", "Errors.User.ExternalIDP.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-6m9Kd", "Errors.User.ExternalIDP.Invalid")
}
idpWriteModel, err := IDPProviderWriteModel(ctx, c.eventstore.Filter, link.IDPConfigID)
if err != nil {
- return nil, caos_errs.ThrowPreconditionFailed(err, "COMMAND-39nfs", "Errors.IDPConfig.NotExisting")
+ return nil, zerrors.ThrowPreconditionFailed(err, "COMMAND-39nfs", "Errors.IDPConfig.NotExisting")
}
// IDP user will either be linked or created on a new user
// Therefore we need to either check if linking is allowed or creation:
if linkToExistingUser && !idpWriteModel.GetProviderOptions().IsLinkingAllowed {
- return nil, caos_errs.ThrowPreconditionFailed(err, "COMMAND-Sfee2", "Errors.ExternalIDP.LinkingNotAllowed")
+ return nil, zerrors.ThrowPreconditionFailed(err, "COMMAND-Sfee2", "Errors.ExternalIDP.LinkingNotAllowed")
}
if !linkToExistingUser && !idpWriteModel.GetProviderOptions().IsCreationAllowed {
- return nil, caos_errs.ThrowPreconditionFailed(err, "COMMAND-SJI3g", "Errors.ExternalIDP.CreationNotAllowed")
+ return nil, zerrors.ThrowPreconditionFailed(err, "COMMAND-SJI3g", "Errors.ExternalIDP.CreationNotAllowed")
}
return user.NewUserIDPLinkAddedEvent(ctx, human, link.IDPConfigID, link.DisplayName, link.ExternalUserID), nil
@@ -107,7 +107,7 @@ func (c *Commands) RemoveUserIDPLink(ctx context.Context, link *domain.UserIDPLi
func (c *Commands) removeUserIDPLink(ctx context.Context, link *domain.UserIDPLink, cascade bool) (eventstore.Command, *UserIDPLinkWriteModel, error) {
if !link.IsValid() || link.AggregateID == "" {
- return nil, nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-3M9ds", "Errors.IDMissing")
+ return nil, nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-3M9ds", "Errors.IDMissing")
}
existingLink, err := c.userIDPLinkWriteModelByID(ctx, link.AggregateID, link.IDPConfigID, link.ExternalUserID, link.ResourceOwner)
@@ -115,7 +115,7 @@ func (c *Commands) removeUserIDPLink(ctx context.Context, link *domain.UserIDPLi
return nil, nil, err
}
if existingLink.State == domain.UserIDPLinkStateUnspecified || existingLink.State == domain.UserIDPLinkStateRemoved {
- return nil, nil, caos_errs.ThrowNotFound(nil, "COMMAND-1M9xR", "Errors.User.ExternalIDP.NotFound")
+ return nil, nil, zerrors.ThrowNotFound(nil, "COMMAND-1M9xR", "Errors.User.ExternalIDP.NotFound")
}
userAgg := UserAggregateFromWriteModel(&existingLink.WriteModel)
if cascade {
@@ -126,7 +126,7 @@ func (c *Commands) removeUserIDPLink(ctx context.Context, link *domain.UserIDPLi
func (c *Commands) UserIDPLoginChecked(ctx context.Context, orgID, userID string, authRequest *domain.AuthRequest) (err error) {
if userID == "" {
- return caos_errs.ThrowInvalidArgument(nil, "COMMAND-5n8sM", "Errors.IDMissing")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-5n8sM", "Errors.IDMissing")
}
existingHuman, err := c.getHumanWriteModelByID(ctx, userID, orgID)
@@ -134,7 +134,7 @@ func (c *Commands) UserIDPLoginChecked(ctx context.Context, orgID, userID string
return err
}
if existingHuman.UserState == domain.UserStateUnspecified || existingHuman.UserState == domain.UserStateDeleted {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-dn88J", "Errors.User.NotFound")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-dn88J", "Errors.User.NotFound")
}
userAgg := UserAggregateFromWriteModel(&existingHuman.WriteModel)
@@ -144,7 +144,7 @@ func (c *Commands) UserIDPLoginChecked(ctx context.Context, orgID, userID string
func (c *Commands) MigrateUserIDP(ctx context.Context, userID, orgID, idpConfigID, previousID, newID string) (err error) {
if userID == "" {
- return caos_errs.ThrowInvalidArgument(nil, "COMMAND-Sn3l1", "Errors.IDMissing")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-Sn3l1", "Errors.IDMissing")
}
writeModel, err := c.userIDPLinkWriteModelByID(ctx, userID, idpConfigID, previousID, orgID)
@@ -152,7 +152,7 @@ func (c *Commands) MigrateUserIDP(ctx context.Context, userID, orgID, idpConfigI
return err
}
if writeModel.State != domain.UserIDPLinkStateActive {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-KJH2o", "Errors.User.ExternalIDP.NotFound")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-KJH2o", "Errors.User.ExternalIDP.NotFound")
}
userAgg := UserAggregateFromWriteModel(&writeModel.WriteModel)
@@ -160,6 +160,27 @@ func (c *Commands) MigrateUserIDP(ctx context.Context, userID, orgID, idpConfigI
return err
}
+func (c *Commands) UpdateUserIDPLinkUsername(ctx context.Context, userID, orgID, idpConfigID, externalID, newUsername string) (err error) {
+ if userID == "" {
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-SFegz", "Errors.IDMissing")
+ }
+
+ writeModel, err := c.userIDPLinkWriteModelByID(ctx, userID, idpConfigID, externalID, orgID)
+ if err != nil {
+ return err
+ }
+ if writeModel.State != domain.UserIDPLinkStateActive {
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-DGhre", "Errors.User.ExternalIDP.NotFound")
+ }
+ if writeModel.DisplayName == newUsername {
+ return nil
+ }
+
+ userAgg := UserAggregateFromWriteModel(&writeModel.WriteModel) //nolint:contextcheck
+ _, err = c.eventstore.Push(ctx, user.NewUserIDPExternalUsernameEvent(ctx, userAgg, idpConfigID, externalID, newUsername))
+ return err
+}
+
func (c *Commands) userIDPLinkWriteModelByID(ctx context.Context, userID, idpConfigID, externalUserID, resourceOwner string) (writeModel *UserIDPLinkWriteModel, err error) {
ctx, span := tracing.NewSpan(ctx)
defer func() { span.EndWithError(err) }()
diff --git a/internal/command/user_idp_link_test.go b/internal/command/user_idp_link_test.go
index f86ab12db9..f1f7929686 100644
--- a/internal/command/user_idp_link_test.go
+++ b/internal/command/user_idp_link_test.go
@@ -9,13 +9,13 @@ import (
"golang.org/x/text/language"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/idp"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_BulkAddUserIDPLinks(t *testing.T) {
@@ -56,7 +56,7 @@ func TestCommandSide_BulkAddUserIDPLinks(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowInvalidArgument(nil, "COMMAND-03j8f", "Errors.IDMissing"),
+ err: zerrors.ThrowInvalidArgument(nil, "COMMAND-03j8f", "Errors.IDMissing"),
},
},
{
@@ -72,7 +72,7 @@ func TestCommandSide_BulkAddUserIDPLinks(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.ThrowInvalidArgument(nil, "COMMAND-Ek9s", "Errors.User.ExternalIDP.MinimumExternalIDPNeeded"),
+ err: zerrors.ThrowInvalidArgument(nil, "COMMAND-Ek9s", "Errors.User.ExternalIDP.MinimumExternalIDPNeeded"),
},
},
{
@@ -114,7 +114,7 @@ func TestCommandSide_BulkAddUserIDPLinks(t *testing.T) {
},
},
res: res{
- err: caos_errs.ThrowInvalidArgument(nil, "COMMAND-33M0g", "Errors.IDMissing"),
+ err: zerrors.ThrowInvalidArgument(nil, "COMMAND-33M0g", "Errors.IDMissing"),
},
},
{
@@ -156,7 +156,7 @@ func TestCommandSide_BulkAddUserIDPLinks(t *testing.T) {
},
},
res: res{
- err: caos_errs.ThrowInvalidArgument(nil, "COMMAND-6m9Kd", "Errors.User.ExternalIDP.Invalid"),
+ err: zerrors.ThrowInvalidArgument(nil, "COMMAND-6m9Kd", "Errors.User.ExternalIDP.Invalid"),
},
},
{
@@ -199,7 +199,7 @@ func TestCommandSide_BulkAddUserIDPLinks(t *testing.T) {
},
},
res: res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-as02jin", "Errors.IDPConfig.NotExisting"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-as02jin", "Errors.IDPConfig.NotExisting"),
},
},
{
@@ -304,7 +304,7 @@ func TestCommandSide_BulkAddUserIDPLinks(t *testing.T) {
},
},
res: res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Sfee2", "Errors.ExternalIDP.LinkingNotAllowed"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-Sfee2", "Errors.ExternalIDP.LinkingNotAllowed"),
},
},
{
@@ -553,7 +553,7 @@ func TestCommandSide_RemoveUserIDPLink(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -571,7 +571,7 @@ func TestCommandSide_RemoveUserIDPLink(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -610,7 +610,7 @@ func TestCommandSide_RemoveUserIDPLink(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -632,7 +632,7 @@ func TestCommandSide_RemoveUserIDPLink(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -727,7 +727,7 @@ func TestCommandSide_ExternalLoginCheck(t *testing.T) {
userID: "",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -761,7 +761,7 @@ func TestCommandSide_ExternalLoginCheck(t *testing.T) {
userID: "user1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -861,7 +861,7 @@ func TestCommandSide_MigrateUserIDP(t *testing.T) {
newID: "newID",
},
res: res{
- err: caos_errs.ThrowInvalidArgument(nil, "COMMAND-Sn3l1", "Errors.IDMissing"),
+ err: zerrors.ThrowInvalidArgument(nil, "COMMAND-Sn3l1", "Errors.IDMissing"),
},
},
{
@@ -889,7 +889,7 @@ func TestCommandSide_MigrateUserIDP(t *testing.T) {
newID: "newID",
},
res: res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-KJH2o", "Errors.User.ExternalIDP.NotFound"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-KJH2o", "Errors.User.ExternalIDP.NotFound"),
},
},
{
@@ -937,3 +937,141 @@ func TestCommandSide_MigrateUserIDP(t *testing.T) {
})
}
}
+
+func TestCommandSide_UpdateUserIDPLinkUsername(t *testing.T) {
+ type fields struct {
+ eventstore func(t *testing.T) *eventstore.Eventstore
+ }
+ type args struct {
+ ctx context.Context
+ userID string
+ orgID string
+ idpConfigID string
+ externalUserID string
+ newUsername string
+ }
+ type res struct {
+ err error
+ }
+ tests := []struct {
+ name string
+ fields fields
+ args args
+ res res
+ }{
+ {
+ name: "userid missing, invalid argument error",
+ fields: fields{
+ eventstore: expectEventstore(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "",
+ orgID: "org1",
+ idpConfigID: "idpConfig1",
+ externalUserID: "externalUserID",
+ newUsername: "newUsername",
+ },
+ res: res{
+ err: zerrors.ThrowInvalidArgument(nil, "COMMAND-SFegz", "Errors.IDMissing"),
+ },
+ },
+ {
+ name: "idp link not active, precondition failed error",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ user.NewUserIDPLinkAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "idpConfig1",
+ "displayName",
+ "externalUserID",
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ orgID: "org1",
+ idpConfigID: "idpConfig1",
+ externalUserID: "otherID",
+ newUsername: "newUsername",
+ },
+ res: res{
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-DGhre", "Errors.User.ExternalIDP.NotFound"),
+ },
+ },
+ {
+ name: "external username not changed, ok",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ user.NewUserIDPLinkAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "idpConfig1",
+ "displayName",
+ "externalUserID",
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ orgID: "org1",
+ idpConfigID: "idpConfig1",
+ externalUserID: "externalUserID",
+ newUsername: "displayName",
+ },
+ res: res{},
+ },
+ {
+ name: "external username update, ok",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ user.NewUserIDPLinkAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "idpConfig1",
+ "displayName",
+ "externalUserID",
+ ),
+ ),
+ ),
+ expectPush(
+ user.NewUserIDPExternalUsernameEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "idpConfig1",
+ "externalUserID",
+ "newUsername",
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ orgID: "org1",
+ idpConfigID: "idpConfig1",
+ externalUserID: "externalUserID",
+ newUsername: "newUsername",
+ },
+ res: res{},
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ r := &Commands{
+ eventstore: tt.fields.eventstore(t),
+ }
+ err := r.UpdateUserIDPLinkUsername(tt.args.ctx, tt.args.userID, tt.args.orgID, tt.args.idpConfigID, tt.args.externalUserID, tt.args.newUsername)
+ assert.ErrorIs(t, err, tt.res.err)
+ })
+ }
+}
diff --git a/internal/command/user_machine.go b/internal/command/user_machine.go
index 700964f6b7..77953010d3 100644
--- a/internal/command/user_machine.go
+++ b/internal/command/user_machine.go
@@ -5,10 +5,10 @@ import (
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type AddMachine struct {
@@ -33,16 +33,16 @@ func (m *Machine) IsZero() bool {
func AddMachineCommand(a *user.Aggregate, machine *Machine) preparation.Validation {
return func() (_ preparation.CreateCommands, err error) {
if a.ResourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-xiown2", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-xiown2", "Errors.ResourceOwnerMissing")
}
if a.ID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-p0p2mi", "Errors.User.UserIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-p0p2mi", "Errors.User.UserIDMissing")
}
if machine.Name == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-bs9Ds", "Errors.User.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-bs9Ds", "Errors.User.Invalid")
}
if machine.Username == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-bm9Ds", "Errors.User.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-bm9Ds", "Errors.User.Invalid")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
writeModel, err := getMachineWriteModel(ctx, a.ID, a.ResourceOwner, filter)
@@ -50,11 +50,11 @@ func AddMachineCommand(a *user.Aggregate, machine *Machine) preparation.Validati
return nil, err
}
if isUserStateExists(writeModel.UserState) {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-k2una", "Errors.User.AlreadyExisting")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-k2una", "Errors.User.AlreadyExisting")
}
domainPolicy, err := domainPolicyWriteModel(ctx, filter, a.ResourceOwner)
if err != nil {
- return nil, caos_errs.ThrowPreconditionFailed(err, "COMMAND-3M9fs", "Errors.Org.DomainPolicy.NotFound")
+ return nil, zerrors.ThrowPreconditionFailed(err, "COMMAND-3M9fs", "Errors.Org.DomainPolicy.NotFound")
}
return []eventstore.Command{
user.NewMachineAddedEvent(ctx, &a.Aggregate, machine.Username, machine.Name, machine.Description, domainPolicy.UserLoginMustBeDomain, machine.AccessTokenType),
@@ -112,10 +112,10 @@ func (c *Commands) ChangeMachine(ctx context.Context, machine *Machine) (*domain
func changeMachineCommand(a *user.Aggregate, machine *Machine) preparation.Validation {
return func() (_ preparation.CreateCommands, err error) {
if a.ResourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-xiown3", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-xiown3", "Errors.ResourceOwnerMissing")
}
if a.ID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-p0p3mi", "Errors.User.UserIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-p0p3mi", "Errors.User.UserIDMissing")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
writeModel, err := getMachineWriteModel(ctx, a.ID, a.ResourceOwner, filter)
@@ -123,14 +123,14 @@ func changeMachineCommand(a *user.Aggregate, machine *Machine) preparation.Valid
return nil, err
}
if !isUserStateExists(writeModel.UserState) {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-5M0od", "Errors.User.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-5M0od", "Errors.User.NotFound")
}
changedEvent, hasChanged, err := writeModel.NewChangedEvent(ctx, &a.Aggregate, machine.Name, machine.Description, machine.AccessTokenType)
if err != nil {
return nil, err
}
if !hasChanged {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-2n8vs", "Errors.User.NotChanged")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-2n8vs", "Errors.User.NotChanged")
}
return []eventstore.Command{
diff --git a/internal/command/user_machine_key.go b/internal/command/user_machine_key.go
index a3535770d7..1e6ca56f24 100644
--- a/internal/command/user_machine_key.go
+++ b/internal/command/user_machine_key.go
@@ -6,10 +6,10 @@ import (
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type AddMachineKey struct {
@@ -53,23 +53,23 @@ func (key *MachineKey) SetExpirationDate(t time.Time) {
func (key *MachineKey) Detail() ([]byte, error) {
if len(key.PrivateKey) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "KEY-sp2l2m", "Errors.Internal")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "KEY-sp2l2m", "Errors.Internal")
}
if key.Type == domain.AuthNKeyTypeJSON {
return domain.MachineKeyMarshalJSON(key.KeyID, key.PrivateKey, key.AggregateID)
}
- return nil, errors.ThrowPreconditionFailed(nil, "KEY-dsg52", "Errors.Internal")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "KEY-dsg52", "Errors.Internal")
}
func (key *MachineKey) content() error {
if key.ResourceOwner == "" {
- return errors.ThrowInvalidArgument(nil, "COMMAND-kqpoix", "Errors.ResourceOwnerMissing")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-kqpoix", "Errors.ResourceOwnerMissing")
}
if key.AggregateID == "" {
- return errors.ThrowInvalidArgument(nil, "COMMAND-xuiwk2", "Errors.User.UserIDMissing")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-xuiwk2", "Errors.User.UserIDMissing")
}
if key.KeyID == "" {
- return errors.ThrowInvalidArgument(nil, "COMMAND-0p2m1h", "Errors.IDMissing")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-0p2m1h", "Errors.IDMissing")
}
return nil
}
@@ -84,7 +84,7 @@ func (key *MachineKey) valid() (err error) {
func (key *MachineKey) checkAggregate(ctx context.Context, filter preparation.FilterToQueryReducer) error {
if exists, err := ExistsUser(ctx, filter, key.AggregateID, key.ResourceOwner); err != nil || !exists {
- return errors.ThrowPreconditionFailed(err, "COMMAND-bnipwm1", "Errors.User.NotFound")
+ return zerrors.ThrowPreconditionFailed(err, "COMMAND-bnipwm1", "Errors.User.NotFound")
}
return nil
}
@@ -133,7 +133,7 @@ func prepareAddUserMachineKey(machineKey *MachineKey, keySize int) preparation.V
return nil, err
}
if writeModel.Exists() {
- return nil, errors.ThrowAlreadyExists(nil, "COMMAND-091mops", "Errors.User.Machine.Key.AlreadyExists")
+ return nil, zerrors.ThrowAlreadyExists(nil, "COMMAND-091mops", "Errors.User.Machine.Key.AlreadyExists")
}
return []eventstore.Command{
user.NewMachineKeyAddedEvent(
@@ -177,7 +177,7 @@ func prepareRemoveUserMachineKey(machineKey *MachineKey) preparation.Validation
return nil, err
}
if !writeModel.Exists() {
- return nil, errors.ThrowNotFound(nil, "COMMAND-4m77G", "Errors.User.Machine.Key.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-4m77G", "Errors.User.Machine.Key.NotFound")
}
return []eventstore.Command{
user.NewMachineKeyRemovedEvent(
diff --git a/internal/command/user_machine_key_test.go b/internal/command/user_machine_key_test.go
index ffb9747302..7e4a0f069a 100644
--- a/internal/command/user_machine_key_test.go
+++ b/internal/command/user_machine_key_test.go
@@ -10,12 +10,12 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/id"
id_mock "github.com/zitadel/zitadel/internal/id/mock"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommands_AddMachineKey(t *testing.T) {
@@ -59,7 +59,7 @@ func TestCommands_AddMachineKey(t *testing.T) {
},
},
res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -79,7 +79,7 @@ func TestCommands_AddMachineKey(t *testing.T) {
},
},
res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -99,7 +99,7 @@ func TestCommands_AddMachineKey(t *testing.T) {
},
},
res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -119,7 +119,7 @@ func TestCommands_AddMachineKey(t *testing.T) {
},
},
res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
diff --git a/internal/command/user_machine_secret.go b/internal/command/user_machine_secret.go
index ebec62d85f..fbfd63441f 100644
--- a/internal/command/user_machine_secret.go
+++ b/internal/command/user_machine_secret.go
@@ -3,14 +3,12 @@ package command
import (
"context"
- "github.com/zitadel/logging"
-
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type GenerateMachineSecret struct {
@@ -39,10 +37,10 @@ func (c *Commands) GenerateMachineSecret(ctx context.Context, userID string, res
func prepareGenerateMachineSecret(a *user.Aggregate, generator crypto.Generator, set *GenerateMachineSecret) preparation.Validation {
return func() (_ preparation.CreateCommands, err error) {
if a.ResourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-x0992n", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-x0992n", "Errors.ResourceOwnerMissing")
}
if a.ID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-bzoqjs", "Errors.User.UserIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-bzoqjs", "Errors.User.UserIDMissing")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
writeModel, err := getMachineWriteModel(ctx, a.ID, a.ResourceOwner, filter)
@@ -50,7 +48,7 @@ func prepareGenerateMachineSecret(a *user.Aggregate, generator crypto.Generator,
return nil, err
}
if !isUserStateExists(writeModel.UserState) {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-x8910n", "Errors.User.NotExisting")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-x8910n", "Errors.User.NotExisting")
}
clientSecret, secretString, err := domain.NewMachineClientSecret(generator)
@@ -88,10 +86,10 @@ func (c *Commands) RemoveMachineSecret(ctx context.Context, userID string, resou
func prepareRemoveMachineSecret(a *user.Aggregate) preparation.Validation {
return func() (_ preparation.CreateCommands, err error) {
if a.ResourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-0qp2hus", "Errors.ResourceOwnerMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-0qp2hus", "Errors.ResourceOwnerMissing")
}
if a.ID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-bzosjs", "Errors.User.UserIDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-bzosjs", "Errors.User.UserIDMissing")
}
return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
writeModel, err := getMachineWriteModel(ctx, a.ID, a.ResourceOwner, filter)
@@ -99,10 +97,10 @@ func prepareRemoveMachineSecret(a *user.Aggregate) preparation.Validation {
return nil, err
}
if !isUserStateExists(writeModel.UserState) {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-x7s802", "Errors.User.NotExisting")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-x7s802", "Errors.User.NotExisting")
}
if writeModel.ClientSecret == nil {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-coi82n", "Errors.User.Machine.Secret.NotExisting")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-coi82n", "Errors.User.Machine.Secret.NotExisting")
}
return []eventstore.Command{
user.NewMachineSecretRemovedEvent(ctx, &a.Aggregate),
@@ -111,59 +109,12 @@ func prepareRemoveMachineSecret(a *user.Aggregate) preparation.Validation {
}
}
-func (c *Commands) VerifyMachineSecret(ctx context.Context, userID string, resourceOwner string, secret string) (*domain.ObjectDetails, error) {
+func (c *Commands) MachineSecretCheckSucceeded(ctx context.Context, userID, resourceOwner string) {
agg := user.NewAggregate(userID, resourceOwner)
- cmds, err := preparation.PrepareCommands(ctx, c.eventstore.Filter, prepareVerifyMachineSecret(agg, secret, c.codeAlg))
- if err != nil {
- return nil, err
- }
-
- events, err := c.eventstore.Push(ctx, cmds...)
- for _, cmd := range cmds {
- if cmd.Type() == user.MachineSecretCheckFailedType {
- logging.OnError(err).Error("could not push event MachineSecretCheckFailed")
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-3kjh", "Errors.User.Machine.Secret.Invalid")
- }
- }
- if err != nil {
- return nil, err
- }
-
- return &domain.ObjectDetails{
- Sequence: events[len(events)-1].Sequence(),
- EventDate: events[len(events)-1].CreatedAt(),
- ResourceOwner: events[len(events)-1].Aggregate().ResourceOwner,
- }, nil
+ c.asyncPush(ctx, user.NewMachineSecretCheckSucceededEvent(ctx, &agg.Aggregate))
}
-func prepareVerifyMachineSecret(a *user.Aggregate, secret string, algorithm crypto.HashAlgorithm) preparation.Validation {
- return func() (_ preparation.CreateCommands, err error) {
- if a.ResourceOwner == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-0qp2hus", "Errors.ResourceOwnerMissing")
- }
- if a.ID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-bzosjs", "Errors.User.UserIDMissing")
- }
- return func(ctx context.Context, filter preparation.FilterToQueryReducer) ([]eventstore.Command, error) {
- writeModel, err := getMachineWriteModel(ctx, a.ID, a.ResourceOwner, filter)
- if err != nil {
- return nil, err
- }
- if !isUserStateExists(writeModel.UserState) {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-569sh2o", "Errors.User.NotExisting")
- }
- if writeModel.ClientSecret == nil {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-x8910n", "Errors.User.Machine.Secret.NotExisting")
- }
- err = crypto.CompareHash(writeModel.ClientSecret, []byte(secret), algorithm)
- if err == nil {
- return []eventstore.Command{
- user.NewMachineSecretCheckSucceededEvent(ctx, &a.Aggregate),
- }, nil
- }
- return []eventstore.Command{
- user.NewMachineSecretCheckFailedEvent(ctx, &a.Aggregate),
- }, nil
- }, nil
- }
+func (c *Commands) MachineSecretCheckFailed(ctx context.Context, userID, resourceOwner string) {
+ agg := user.NewAggregate(userID, resourceOwner)
+ c.asyncPush(ctx, user.NewMachineSecretCheckFailedEvent(ctx, &agg.Aggregate))
}
diff --git a/internal/command/user_machine_secret_test.go b/internal/command/user_machine_secret_test.go
index 77343c8fb0..ee3d869391 100644
--- a/internal/command/user_machine_secret_test.go
+++ b/internal/command/user_machine_secret_test.go
@@ -3,14 +3,16 @@ package command
import (
"context"
"testing"
+ "time"
"github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_GenerateMachineSecret(t *testing.T) {
@@ -50,7 +52,7 @@ func TestCommandSide_GenerateMachineSecret(t *testing.T) {
set: nil,
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -68,7 +70,7 @@ func TestCommandSide_GenerateMachineSecret(t *testing.T) {
set: nil,
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -87,7 +89,7 @@ func TestCommandSide_GenerateMachineSecret(t *testing.T) {
set: nil,
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -189,7 +191,7 @@ func TestCommandSide_RemoveMachineSecret(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -205,7 +207,7 @@ func TestCommandSide_RemoveMachineSecret(t *testing.T) {
resourceOwner: "",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -222,7 +224,7 @@ func TestCommandSide_RemoveMachineSecret(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -250,7 +252,7 @@ func TestCommandSide_RemoveMachineSecret(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -319,212 +321,34 @@ func TestCommandSide_RemoveMachineSecret(t *testing.T) {
}
}
-func TestCommandSide_VerifyMachineSecret(t *testing.T) {
- type fields struct {
- eventstore *eventstore.Eventstore
- }
- type args struct {
- ctx context.Context
- userID string
- resourceOwner string
- secret string
- }
- type res struct {
- want *domain.ObjectDetails
- err func(error) bool
- }
- tests := []struct {
- name string
- fields fields
- args args
- res res
- }{
- {
- name: "user invalid, invalid argument error userID",
- fields: fields{
- eventstore: eventstoreExpect(
- t,
- ),
- },
- args: args{
- ctx: context.Background(),
- userID: "",
- resourceOwner: "org1",
- },
- res: res{
- err: caos_errs.IsErrorInvalidArgument,
- },
- },
- {
- name: "user invalid, invalid argument error resourceowner",
- fields: fields{
- eventstore: eventstoreExpect(
- t,
- ),
- },
- args: args{
- ctx: context.Background(),
- userID: "user1",
- resourceOwner: "",
- },
- res: res{
- err: caos_errs.IsErrorInvalidArgument,
- },
- },
- {
- name: "user not existing, precondition error",
- fields: fields{
- eventstore: eventstoreExpect(
- t,
- expectFilter(),
- ),
- },
- args: args{
- ctx: context.Background(),
- userID: "user1",
- resourceOwner: "org1",
- },
- res: res{
- err: caos_errs.IsPreconditionFailed,
- },
- },
- {
- name: "user existing without secret, precondition error",
- fields: fields{
- eventstore: eventstoreExpect(
- t,
- expectFilter(
- eventFromEventPusher(
- user.NewMachineAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- "user1",
- "username",
- "user",
- false,
- domain.OIDCTokenTypeBearer,
- ),
- ),
- ),
- ),
- },
- args: args{
- ctx: context.Background(),
- userID: "user1",
- resourceOwner: "org1",
- },
- res: res{
- err: caos_errs.IsPreconditionFailed,
- },
- },
- {
- name: "verify machine secret, ok",
- fields: fields{
- eventstore: eventstoreExpect(
- t,
- expectFilter(
- eventFromEventPusher(
- user.NewMachineAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- "user1",
- "username",
- "user",
- false,
- domain.OIDCTokenTypeBearer,
- ),
- ),
- eventFromEventPusher(
- user.NewMachineSecretSetEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- &crypto.CryptoValue{
- CryptoType: crypto.TypeEncryption,
- Algorithm: "bcrypt",
- KeyID: "id",
- Crypted: []byte("$2a$14$HxC7TAXMeowdqHdSBUfsjOUc0IGajYeApxdYl9lAYC0duZmSkgFia"),
- },
- ),
- ),
- ),
- expectPush(
- user.NewMachineSecretCheckSucceededEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- ),
- ),
- ),
- },
- args: args{
- ctx: context.Background(),
- userID: "user1",
- resourceOwner: "org1",
- secret: "test",
- },
- res: res{
- want: &domain.ObjectDetails{
- ResourceOwner: "org1",
- },
- },
- },
- {
- name: "verify machine secret, failed",
- fields: fields{
- eventstore: eventstoreExpect(
- t,
- expectFilter(
- eventFromEventPusher(
- user.NewMachineAddedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- "user1",
- "username",
- "user",
- false,
- domain.OIDCTokenTypeBearer,
- ),
- ),
- eventFromEventPusher(
- user.NewMachineSecretSetEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- &crypto.CryptoValue{
- CryptoType: crypto.TypeEncryption,
- Algorithm: "bcrypt",
- KeyID: "id",
- Crypted: []byte("$2a$14$HxC7TAXMeowdqHdSBUfsjOUc0IGajYeApxdYl9lAYC0duZmSkgFia"),
- },
- ),
- ),
- ),
- expectPush(
- user.NewMachineSecretCheckFailedEvent(context.Background(),
- &user.NewAggregate("user1", "org1").Aggregate,
- ),
- ),
- ),
- },
- args: args{
- ctx: context.Background(),
- userID: "user1",
- resourceOwner: "org1",
- secret: "wrong",
- },
- res: res{
- err: caos_errs.IsErrorInvalidArgument,
- },
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- r := &Commands{
- eventstore: tt.fields.eventstore,
- codeAlg: crypto.NewBCrypt(14),
- }
- got, err := r.VerifyMachineSecret(tt.args.ctx, tt.args.userID, tt.args.resourceOwner, tt.args.secret)
- if tt.res.err == nil {
- assert.NoError(t, err)
- }
- if tt.res.err != nil && !tt.res.err(err) {
- t.Errorf("got wrong err: %v ", err)
- }
- if tt.res.err == nil {
- assert.Equal(t, tt.res.want, got)
- }
- })
+func TestCommands_MachineSecretCheckSucceeded(t *testing.T) {
+ ctx, cancel := context.WithTimeout(context.Background(), time.Second)
+ defer cancel()
+
+ agg := user.NewAggregate("userID", "orgID")
+ cmd := user.NewMachineSecretCheckSucceededEvent(ctx, &agg.Aggregate)
+
+ c := &Commands{
+ eventstore: eventstoreExpect(t,
+ expectPushSlow(time.Second/100, cmd),
+ ),
}
+ c.MachineSecretCheckSucceeded(ctx, "userID", "orgID")
+ require.NoError(t, c.Close(ctx))
+}
+
+func TestCommands_MachineSecretCheckFailed(t *testing.T) {
+ ctx, cancel := context.WithTimeout(context.Background(), time.Second)
+ defer cancel()
+
+ agg := user.NewAggregate("userID", "orgID")
+ cmd := user.NewMachineSecretCheckFailedEvent(ctx, &agg.Aggregate)
+
+ c := &Commands{
+ eventstore: eventstoreExpect(t,
+ expectPushSlow(time.Second/100, cmd),
+ ),
+ }
+ c.MachineSecretCheckFailed(ctx, "userID", "orgID")
+ require.NoError(t, c.Close(ctx))
}
diff --git a/internal/command/user_machine_test.go b/internal/command/user_machine_test.go
index 9c91c17cc5..e047c0b47f 100644
--- a/internal/command/user_machine_test.go
+++ b/internal/command/user_machine_test.go
@@ -7,13 +7,13 @@ import (
"github.com/stretchr/testify/assert"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/id"
id_mock "github.com/zitadel/zitadel/internal/id/mock"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_AddMachine(t *testing.T) {
@@ -53,7 +53,7 @@ func TestCommandSide_AddMachine(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -74,7 +74,7 @@ func TestCommandSide_AddMachine(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -99,7 +99,7 @@ func TestCommandSide_AddMachine(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -204,7 +204,7 @@ func TestCommandSide_ChangeMachine(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -224,7 +224,7 @@ func TestCommandSide_ChangeMachine(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -247,7 +247,7 @@ func TestCommandSide_ChangeMachine(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -282,7 +282,7 @@ func TestCommandSide_ChangeMachine(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
diff --git a/internal/command/user_metadata.go b/internal/command/user_metadata.go
index dcc0c3cf99..e33da532cd 100644
--- a/internal/command/user_metadata.go
+++ b/internal/command/user_metadata.go
@@ -4,9 +4,9 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (c *Commands) SetUserMetadata(ctx context.Context, metadata *domain.Metadata, userID, resourceOwner string) (_ *domain.Metadata, err error) {
@@ -34,7 +34,7 @@ func (c *Commands) SetUserMetadata(ctx context.Context, metadata *domain.Metadat
func (c *Commands) BulkSetUserMetadata(ctx context.Context, userID, resourceOwner string, metadatas ...*domain.Metadata) (_ *domain.ObjectDetails, err error) {
if len(metadatas) == 0 {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "META-9mm2d", "Errors.Metadata.NoData")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "META-9mm2d", "Errors.Metadata.NoData")
}
err = c.checkUserExists(ctx, userID, resourceOwner)
if err != nil {
@@ -66,7 +66,7 @@ func (c *Commands) BulkSetUserMetadata(ctx context.Context, userID, resourceOwne
func (c *Commands) setUserMetadata(ctx context.Context, userAgg *eventstore.Aggregate, metadata *domain.Metadata) (command eventstore.Command, err error) {
if !metadata.IsValid() {
- return nil, caos_errs.ThrowInvalidArgument(nil, "META-2m00f", "Errors.Metadata.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "META-2m00f", "Errors.Metadata.Invalid")
}
return user.NewMetadataSetEvent(
ctx,
@@ -78,7 +78,7 @@ func (c *Commands) setUserMetadata(ctx context.Context, userAgg *eventstore.Aggr
func (c *Commands) RemoveUserMetadata(ctx context.Context, metadataKey, userID, resourceOwner string) (_ *domain.ObjectDetails, err error) {
if metadataKey == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "META-2n0fs", "Errors.Metadata.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "META-2n0fs", "Errors.Metadata.Invalid")
}
err = c.checkUserExists(ctx, userID, resourceOwner)
if err != nil {
@@ -89,7 +89,7 @@ func (c *Commands) RemoveUserMetadata(ctx context.Context, metadataKey, userID,
return nil, err
}
if !removeMetadata.State.Exists() {
- return nil, caos_errs.ThrowNotFound(nil, "META-ncnw3", "Errors.Metadata.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "META-ncnw3", "Errors.Metadata.NotFound")
}
userAgg := UserAggregateFromWriteModel(&removeMetadata.WriteModel)
event, err := c.removeUserMetadata(ctx, userAgg, metadataKey)
@@ -110,7 +110,7 @@ func (c *Commands) RemoveUserMetadata(ctx context.Context, metadataKey, userID,
func (c *Commands) BulkRemoveUserMetadata(ctx context.Context, userID, resourceOwner string, metadataKeys ...string) (_ *domain.ObjectDetails, err error) {
if len(metadataKeys) == 0 {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "META-9mm2d", "Errors.Metadata.NoData")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "META-9mm2d", "Errors.Metadata.NoData")
}
err = c.checkUserExists(ctx, userID, resourceOwner)
if err != nil {
@@ -125,10 +125,10 @@ func (c *Commands) BulkRemoveUserMetadata(ctx context.Context, userID, resourceO
userAgg := UserAggregateFromWriteModel(&removeMetadata.WriteModel)
for i, key := range metadataKeys {
if key == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-m29ds", "Errors.Metadata.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-m29ds", "Errors.Metadata.Invalid")
}
if _, found := removeMetadata.metadataList[key]; !found {
- return nil, caos_errs.ThrowNotFound(nil, "META-2nnds", "Errors.Metadata.KeyNotExisting")
+ return nil, zerrors.ThrowNotFound(nil, "META-2nnds", "Errors.Metadata.KeyNotExisting")
}
event, err := c.removeUserMetadata(ctx, userAgg, key)
if err != nil {
diff --git a/internal/command/user_metadata_test.go b/internal/command/user_metadata_test.go
index f2ef90cf6b..812ef529da 100644
--- a/internal/command/user_metadata_test.go
+++ b/internal/command/user_metadata_test.go
@@ -8,10 +8,10 @@ import (
"golang.org/x/text/language"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_SetUserMetadata(t *testing.T) {
@@ -54,7 +54,7 @@ func TestCommandSide_SetUserMetadata(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -89,7 +89,7 @@ func TestCommandSide_SetUserMetadata(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -198,7 +198,7 @@ func TestCommandSide_BulkSetUserMetadata(t *testing.T) {
userID: "user1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -219,7 +219,7 @@ func TestCommandSide_BulkSetUserMetadata(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -255,7 +255,7 @@ func TestCommandSide_BulkSetUserMetadata(t *testing.T) {
},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -365,7 +365,7 @@ func TestCommandSide_UserRemoveMetadata(t *testing.T) {
metadataKey: "key",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -382,7 +382,7 @@ func TestCommandSide_UserRemoveMetadata(t *testing.T) {
metadataKey: "",
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -416,7 +416,7 @@ func TestCommandSide_UserRemoveMetadata(t *testing.T) {
metadataKey: "key",
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -524,7 +524,7 @@ func TestCommandSide_BulkRemoveUserMetadata(t *testing.T) {
userID: "user1",
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -542,7 +542,7 @@ func TestCommandSide_BulkRemoveUserMetadata(t *testing.T) {
metadataList: []string{"key", "key1"},
},
res: res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -584,7 +584,7 @@ func TestCommandSide_BulkRemoveUserMetadata(t *testing.T) {
metadataList: []string{"key", "key1"},
},
res: res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -633,7 +633,7 @@ func TestCommandSide_BulkRemoveUserMetadata(t *testing.T) {
metadataList: []string{""},
},
res: res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
diff --git a/internal/command/user_password_complexity_policy.go b/internal/command/user_password_complexity_policy.go
index 9b3d22dc66..877421a9a7 100644
--- a/internal/command/user_password_complexity_policy.go
+++ b/internal/command/user_password_complexity_policy.go
@@ -5,7 +5,7 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/command/preparation"
- "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func passwordComplexityPolicyWriteModel(ctx context.Context, filter preparation.FilterToQueryReducer) (*PasswordComplexityPolicyWriteModel, error) {
@@ -17,7 +17,7 @@ func passwordComplexityPolicyWriteModel(ctx context.Context, filter preparation.
if err != nil || wm != nil {
return wm, err
}
- return nil, errors.ThrowInternal(nil, "USER-uQ96e", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(nil, "USER-uQ96e", "Errors.Internal")
}
func customPasswordComplexityPolicy(ctx context.Context, filter preparation.FilterToQueryReducer) (*PasswordComplexityPolicyWriteModel, error) {
diff --git a/internal/command/user_password_complexity_policy_test.go b/internal/command/user_password_complexity_policy_test.go
index e4d79ab746..92dc18f5d6 100644
--- a/internal/command/user_password_complexity_policy_test.go
+++ b/internal/command/user_password_complexity_policy_test.go
@@ -8,10 +8,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func Test_customPasswordComplexityPolicy(t *testing.T) {
@@ -28,7 +28,7 @@ func Test_customPasswordComplexityPolicy(t *testing.T) {
name: "err from filter",
args: args{
filter: func(_ context.Context, _ *eventstore.SearchQueryBuilder) ([]eventstore.Event, error) {
- return nil, errors.ThrowInternal(nil, "USER-IgYlN", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(nil, "USER-IgYlN", "Errors.Internal")
},
},
want: nil,
@@ -105,7 +105,7 @@ func Test_defaultPasswordComplexityPolicy(t *testing.T) {
name: "err from filter",
args: args{
filter: func(_ context.Context, _ *eventstore.SearchQueryBuilder) ([]eventstore.Event, error) {
- return nil, errors.ThrowInternal(nil, "USER-IgYlN", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(nil, "USER-IgYlN", "Errors.Internal")
},
},
want: nil,
@@ -183,7 +183,7 @@ func Test_passwordComplexityPolicy(t *testing.T) {
name: "err from filter custom",
args: args{
filter: func(_ context.Context, _ *eventstore.SearchQueryBuilder) ([]eventstore.Event, error) {
- return nil, errors.ThrowInternal(nil, "USER-IgYlN", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(nil, "USER-IgYlN", "Errors.Internal")
},
},
want: nil,
@@ -229,7 +229,7 @@ func Test_passwordComplexityPolicy(t *testing.T) {
return nil, nil
}).
Append(func(ctx context.Context, queryFactory *eventstore.SearchQueryBuilder) ([]eventstore.Event, error) {
- return nil, errors.ThrowInternal(nil, "USER-6HnsD", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(nil, "USER-6HnsD", "Errors.Internal")
}).
Filter(),
},
diff --git a/internal/command/user_personal_access_token.go b/internal/command/user_personal_access_token.go
index fb8d01c828..0faf85d5eb 100644
--- a/internal/command/user_personal_access_token.go
+++ b/internal/command/user_personal_access_token.go
@@ -8,10 +8,10 @@ import (
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type AddPat struct {
@@ -44,13 +44,13 @@ func NewPersonalAccessToken(resourceOwner string, userID string, expirationDate
func (pat *PersonalAccessToken) content() error {
if pat.ResourceOwner == "" {
- return errors.ThrowInvalidArgument(nil, "COMMAND-xs0k2n", "Errors.ResourceOwnerMissing")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-xs0k2n", "Errors.ResourceOwnerMissing")
}
if pat.AggregateID == "" {
- return errors.ThrowInvalidArgument(nil, "COMMAND-0pzb1", "Errors.User.UserIDMissing")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-0pzb1", "Errors.User.UserIDMissing")
}
if pat.TokenID == "" {
- return errors.ThrowInvalidArgument(nil, "COMMAND-68xm2o", "Errors.IDMissing")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-68xm2o", "Errors.IDMissing")
}
return nil
}
@@ -69,10 +69,10 @@ func (pat *PersonalAccessToken) checkAggregate(ctx context.Context, filter prepa
return err
}
if !isUserStateExists(userWriteModel.UserState) {
- return errors.ThrowPreconditionFailed(nil, "COMMAND-Dggw2", "Errors.User.NotFound")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-Dggw2", "Errors.User.NotFound")
}
if pat.AllowedUserType != domain.UserTypeUnspecified && userWriteModel.UserType != pat.AllowedUserType {
- return errors.ThrowPreconditionFailed(nil, "COMMAND-Df2f1", "Errors.User.WrongType")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-Df2f1", "Errors.User.WrongType")
}
return nil
}
@@ -160,7 +160,7 @@ func prepareRemovePersonalAccessToken(pat *PersonalAccessToken) preparation.Vali
return nil, err
}
if !writeModel.Exists() {
- return nil, errors.ThrowNotFound(nil, "COMMAND-4m77G", "Errors.User.PAT.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-4m77G", "Errors.User.PAT.NotFound")
}
return []eventstore.Command{
user.NewPersonalAccessTokenRemovedEvent(
diff --git a/internal/command/user_personal_access_token_test.go b/internal/command/user_personal_access_token_test.go
index b8748ca417..335a59e701 100644
--- a/internal/command/user_personal_access_token_test.go
+++ b/internal/command/user_personal_access_token_test.go
@@ -11,12 +11,12 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/id"
id_mock "github.com/zitadel/zitadel/internal/id/mock"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommands_AddPersonalAccessToken(t *testing.T) {
@@ -60,7 +60,7 @@ func TestCommands_AddPersonalAccessToken(t *testing.T) {
},
},
res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -95,7 +95,7 @@ func TestCommands_AddPersonalAccessToken(t *testing.T) {
},
},
res{
- err: caos_errs.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -115,7 +115,7 @@ func TestCommands_AddPersonalAccessToken(t *testing.T) {
},
},
res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -135,7 +135,7 @@ func TestCommands_AddPersonalAccessToken(t *testing.T) {
},
},
res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -155,7 +155,7 @@ func TestCommands_AddPersonalAccessToken(t *testing.T) {
},
},
res{
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -313,7 +313,7 @@ func TestCommands_RemovePersonalAccessToken(t *testing.T) {
},
},
res{
- err: caos_errs.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
diff --git a/internal/command/user_test.go b/internal/command/user_test.go
index 7073071cf4..9f2244a458 100644
--- a/internal/command/user_test.go
+++ b/internal/command/user_test.go
@@ -10,13 +10,13 @@ import (
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/id"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/project"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommandSide_UsernameChange(t *testing.T) {
@@ -53,7 +53,7 @@ func TestCommandSide_UsernameChange(t *testing.T) {
username: "username",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -68,7 +68,7 @@ func TestCommandSide_UsernameChange(t *testing.T) {
username: "username",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -83,7 +83,7 @@ func TestCommandSide_UsernameChange(t *testing.T) {
username: "",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -98,7 +98,7 @@ func TestCommandSide_UsernameChange(t *testing.T) {
username: " ",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -115,7 +115,7 @@ func TestCommandSide_UsernameChange(t *testing.T) {
username: "username",
},
res: res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -147,7 +147,7 @@ func TestCommandSide_UsernameChange(t *testing.T) {
username: "username",
},
res: res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -179,7 +179,7 @@ func TestCommandSide_UsernameChange(t *testing.T) {
username: "username ",
},
res: res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -211,7 +211,7 @@ func TestCommandSide_UsernameChange(t *testing.T) {
username: "username",
},
res: res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -262,7 +262,7 @@ func TestCommandSide_UsernameChange(t *testing.T) {
username: "test@test.ch",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -539,7 +539,7 @@ func TestCommandSide_DeactivateUser(t *testing.T) {
userID: "",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -556,7 +556,7 @@ func TestCommandSide_DeactivateUser(t *testing.T) {
userID: "user1",
},
res: res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -593,7 +593,7 @@ func TestCommandSide_DeactivateUser(t *testing.T) {
userID: "user1",
},
res: res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -689,7 +689,7 @@ func TestCommandSide_ReactivateUser(t *testing.T) {
userID: "",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -706,7 +706,7 @@ func TestCommandSide_ReactivateUser(t *testing.T) {
userID: "user1",
},
res: res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -738,7 +738,7 @@ func TestCommandSide_ReactivateUser(t *testing.T) {
userID: "user1",
},
res: res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -838,7 +838,7 @@ func TestCommandSide_LockUser(t *testing.T) {
userID: "",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -855,7 +855,7 @@ func TestCommandSide_LockUser(t *testing.T) {
userID: "user1",
},
res: res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -892,7 +892,7 @@ func TestCommandSide_LockUser(t *testing.T) {
userID: "user1",
},
res: res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -988,7 +988,7 @@ func TestCommandSide_UnlockUser(t *testing.T) {
userID: "",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1005,7 +1005,7 @@ func TestCommandSide_UnlockUser(t *testing.T) {
userID: "user1",
},
res: res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1037,7 +1037,7 @@ func TestCommandSide_UnlockUser(t *testing.T) {
userID: "user1",
},
res: res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -1140,7 +1140,7 @@ func TestCommandSide_RemoveUser(t *testing.T) {
userID: "",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1157,7 +1157,7 @@ func TestCommandSide_RemoveUser(t *testing.T) {
userID: "user1",
},
res: res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1191,7 +1191,7 @@ func TestCommandSide_RemoveUser(t *testing.T) {
userID: "user1",
},
res: res{
- err: errors.IsPreconditionFailed,
+ err: zerrors.IsPreconditionFailed,
},
},
{
@@ -1473,7 +1473,7 @@ func TestCommandSide_AddUserToken(t *testing.T) {
userID: "",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1490,7 +1490,7 @@ func TestCommandSide_AddUserToken(t *testing.T) {
userID: "user1",
},
res: res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
}
@@ -1547,7 +1547,7 @@ func TestCommands_RevokeAccessToken(t *testing.T) {
},
res{
nil,
- errors.IsErrorInvalidArgument,
+ zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1579,7 +1579,7 @@ func TestCommands_RevokeAccessToken(t *testing.T) {
},
res{
nil,
- errors.IsNotFound,
+ zerrors.IsNotFound,
},
},
{
@@ -1672,7 +1672,7 @@ func TestCommandSide_UserDomainClaimedSent(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -1689,7 +1689,7 @@ func TestCommandSide_UserDomainClaimedSent(t *testing.T) {
resourceOwner: "org1",
},
res: res{
- err: errors.IsNotFound,
+ err: zerrors.IsNotFound,
},
},
{
@@ -1875,7 +1875,7 @@ func TestExistsUser(t *testing.T) {
name: "error durring filter",
args: args{
filter: func(_ context.Context, _ *eventstore.SearchQueryBuilder) ([]eventstore.Event, error) {
- return nil, errors.ThrowInternal(nil, "USER-Drebn", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(nil, "USER-Drebn", "Errors.Internal")
},
id: "id",
resourceOwner: "ro",
diff --git a/internal/command/user_v2.go b/internal/command/user_v2.go
new file mode 100644
index 0000000000..032ac0b8f7
--- /dev/null
+++ b/internal/command/user_v2.go
@@ -0,0 +1,213 @@
+package command
+
+import (
+ "context"
+
+ "github.com/zitadel/logging"
+
+ "github.com/zitadel/zitadel/internal/api/authz"
+ "github.com/zitadel/zitadel/internal/domain"
+ "github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
+)
+
+func (c *Commands) LockUserV2(ctx context.Context, userID string) (*domain.ObjectDetails, error) {
+ if userID == "" {
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-agz3eczifm", "Errors.User.UserIDMissing")
+ }
+
+ existingHuman, err := c.userStateWriteModel(ctx, userID)
+ if err != nil {
+ return nil, err
+ }
+ if !isUserStateExists(existingHuman.UserState) {
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-450yxuqrh1", "Errors.User.NotFound")
+ }
+ if !hasUserState(existingHuman.UserState, domain.UserStateActive, domain.UserStateInitial) {
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-lgws8wtsqf", "Errors.User.ShouldBeActiveOrInitial")
+ }
+
+ if err := c.checkPermissionUpdateUser(ctx, existingHuman.ResourceOwner, existingHuman.AggregateID); err != nil {
+ return nil, err
+ }
+
+ if err := c.pushAppendAndReduce(ctx, existingHuman, user.NewUserLockedEvent(ctx, &existingHuman.Aggregate().Aggregate)); err != nil {
+ return nil, err
+ }
+ return writeModelToObjectDetails(&existingHuman.WriteModel), nil
+}
+
+func (c *Commands) UnlockUserV2(ctx context.Context, userID string) (*domain.ObjectDetails, error) {
+ if userID == "" {
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-a9ld4xckax", "Errors.User.UserIDMissing")
+ }
+
+ existingHuman, err := c.userStateWriteModel(ctx, userID)
+ if err != nil {
+ return nil, err
+ }
+ if !isUserStateExists(existingHuman.UserState) {
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-x377t913pw", "Errors.User.NotFound")
+ }
+ if !hasUserState(existingHuman.UserState, domain.UserStateLocked) {
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-olb9vb0oca", "Errors.User.NotLocked")
+ }
+ if err := c.checkPermissionUpdateUser(ctx, existingHuman.ResourceOwner, existingHuman.AggregateID); err != nil {
+ return nil, err
+ }
+
+ if err := c.pushAppendAndReduce(ctx, existingHuman, user.NewUserUnlockedEvent(ctx, &existingHuman.Aggregate().Aggregate)); err != nil {
+ return nil, err
+ }
+ return writeModelToObjectDetails(&existingHuman.WriteModel), nil
+}
+
+func (c *Commands) DeactivateUserV2(ctx context.Context, userID string) (*domain.ObjectDetails, error) {
+ if userID == "" {
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-78iiirat8y", "Errors.User.UserIDMissing")
+ }
+
+ existingHuman, err := c.userStateWriteModel(ctx, userID)
+ if err != nil {
+ return nil, err
+ }
+ if !isUserStateExists(existingHuman.UserState) {
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-5gp2p62iin", "Errors.User.NotFound")
+ }
+ if isUserStateInitial(existingHuman.UserState) {
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-gvx4kct9r2", "Errors.User.CantDeactivateInitial")
+ }
+ if isUserStateInactive(existingHuman.UserState) {
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-5gunjw0cd7", "Errors.User.AlreadyInactive")
+ }
+ if err := c.checkPermissionUpdateUser(ctx, existingHuman.ResourceOwner, existingHuman.AggregateID); err != nil {
+ return nil, err
+ }
+
+ if err := c.pushAppendAndReduce(ctx, existingHuman, user.NewUserDeactivatedEvent(ctx, &existingHuman.Aggregate().Aggregate)); err != nil {
+ return nil, err
+ }
+ return writeModelToObjectDetails(&existingHuman.WriteModel), nil
+}
+
+func (c *Commands) ReactivateUserV2(ctx context.Context, userID string) (*domain.ObjectDetails, error) {
+ if userID == "" {
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-0nx1ie38fw", "Errors.User.UserIDMissing")
+ }
+
+ existingHuman, err := c.userStateWriteModel(ctx, userID)
+ if err != nil {
+ return nil, err
+ }
+ if !isUserStateExists(existingHuman.UserState) {
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-9hy5kzbuk6", "Errors.User.NotFound")
+ }
+ if !isUserStateInactive(existingHuman.UserState) {
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-s5qqcz97hf", "Errors.User.NotInactive")
+ }
+ if err := c.checkPermissionUpdateUser(ctx, existingHuman.ResourceOwner, existingHuman.AggregateID); err != nil {
+ return nil, err
+ }
+
+ if err := c.pushAppendAndReduce(ctx, existingHuman, user.NewUserReactivatedEvent(ctx, &existingHuman.Aggregate().Aggregate)); err != nil {
+ return nil, err
+ }
+ return writeModelToObjectDetails(&existingHuman.WriteModel), nil
+}
+
+func (c *Commands) checkPermissionUpdateUser(ctx context.Context, resourceOwner, userID string) error {
+ if userID != "" && userID == authz.GetCtxData(ctx).UserID {
+ return nil
+ }
+ if err := c.checkPermission(ctx, domain.PermissionUserWrite, resourceOwner, userID); err != nil {
+ return err
+ }
+ return nil
+}
+
+func (c *Commands) checkPermissionDeleteUser(ctx context.Context, resourceOwner, userID string) error {
+ if userID != "" && userID == authz.GetCtxData(ctx).UserID {
+ return nil
+ }
+ if err := c.checkPermission(ctx, domain.PermissionUserDelete, resourceOwner, userID); err != nil {
+ return err
+ }
+ return nil
+}
+
+func (c *Commands) userStateWriteModel(ctx context.Context, userID string) (writeModel *UserV2WriteModel, err error) {
+ ctx, span := tracing.NewSpan(ctx)
+ defer func() { span.EndWithError(err) }()
+
+ writeModel = NewUserStateWriteModel(userID, "")
+ err = c.eventstore.FilterToQueryReducer(ctx, writeModel)
+ if err != nil {
+ return nil, err
+ }
+ return writeModel, nil
+}
+
+func (c *Commands) RemoveUserV2(ctx context.Context, userID string, cascadingUserMemberships []*CascadingMembership, cascadingGrantIDs ...string) (*domain.ObjectDetails, error) {
+ if userID == "" {
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-vaipl7s13l", "Errors.User.UserIDMissing")
+ }
+
+ existingUser, err := c.userRemoveWriteModel(ctx, userID)
+ if err != nil {
+ return nil, err
+ }
+ if !isUserStateExists(existingUser.UserState) {
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-bd4ir1mblj", "Errors.User.NotFound")
+ }
+ if err := c.checkPermissionDeleteUser(ctx, existingUser.ResourceOwner, existingUser.AggregateID); err != nil {
+ return nil, err
+ }
+
+ domainPolicy, err := c.domainPolicyWriteModel(ctx, existingUser.ResourceOwner)
+ if err != nil {
+ return nil, zerrors.ThrowPreconditionFailed(err, "COMMAND-l40ykb3xh2", "Errors.Org.DomainPolicy.NotExisting")
+ }
+ var events []eventstore.Command
+ events = append(events, user.NewUserRemovedEvent(ctx, &existingUser.Aggregate().Aggregate, existingUser.UserName, existingUser.IDPLinks, domainPolicy.UserLoginMustBeDomain))
+
+ for _, grantID := range cascadingGrantIDs {
+ removeEvent, _, err := c.removeUserGrant(ctx, grantID, "", true)
+ if err != nil {
+ logging.WithFields("usergrantid", grantID).WithError(err).Warn("could not cascade remove role on user grant")
+ continue
+ }
+ events = append(events, removeEvent)
+ }
+
+ if len(cascadingUserMemberships) > 0 {
+ membershipEvents, err := c.removeUserMemberships(ctx, cascadingUserMemberships)
+ if err != nil {
+ return nil, err
+ }
+ events = append(events, membershipEvents...)
+ }
+
+ pushedEvents, err := c.eventstore.Push(ctx, events...)
+ if err != nil {
+ return nil, err
+ }
+ err = AppendAndReduce(existingUser, pushedEvents...)
+ if err != nil {
+ return nil, err
+ }
+ return writeModelToObjectDetails(&existingUser.WriteModel), nil
+}
+
+func (c *Commands) userRemoveWriteModel(ctx context.Context, userID string) (writeModel *UserV2WriteModel, err error) {
+ ctx, span := tracing.NewSpan(ctx)
+ defer func() { span.EndWithError(err) }()
+
+ writeModel = NewUserRemoveWriteModel(userID, "")
+ err = c.eventstore.FilterToQueryReducer(ctx, writeModel)
+ if err != nil {
+ return nil, err
+ }
+ return writeModel, nil
+}
diff --git a/internal/command/user_v2_email.go b/internal/command/user_v2_email.go
index d00eb0f040..3f1b4439e9 100644
--- a/internal/command/user_v2_email.go
+++ b/internal/command/user_v2_email.go
@@ -9,9 +9,9 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
// ChangeUserEmail sets a user's email address, generates a code
@@ -67,6 +67,14 @@ func (c *Commands) changeUserEmailWithCode(ctx context.Context, userID, resource
// When the plain text code is returned, no notification e-mail will be send to the user.
// urlTmpl allows changing the target URL that is used by the e-mail and should be a validated Go template, if used.
func (c *Commands) changeUserEmailWithGenerator(ctx context.Context, userID, resourceOwner, email string, gen crypto.Generator, returnCode bool, urlTmpl string) (*domain.Email, error) {
+ cmd, err := c.changeUserEmailWithGeneratorEvents(ctx, userID, resourceOwner, email, gen, returnCode, urlTmpl)
+ if err != nil {
+ return nil, err
+ }
+ return cmd.Push(ctx)
+}
+
+func (c *Commands) changeUserEmailWithGeneratorEvents(ctx context.Context, userID, resourceOwner, email string, gen crypto.Generator, returnCode bool, urlTmpl string) (*UserEmailEvents, error) {
cmd, err := c.NewUserEmailEvents(ctx, userID, resourceOwner)
if err != nil {
return nil, err
@@ -82,7 +90,7 @@ func (c *Commands) changeUserEmailWithGenerator(ctx context.Context, userID, res
if err = cmd.AddGeneratedCode(ctx, gen, urlTmpl, returnCode); err != nil {
return nil, err
}
- return cmd.Push(ctx)
+ return cmd, nil
}
func (c *Commands) VerifyUserEmail(ctx context.Context, userID, resourceOwner, code string, alg crypto.EncryptionAlgorithm) (*domain.ObjectDetails, error) {
@@ -125,7 +133,7 @@ type UserEmailEvents struct {
// If a model cannot be found, or it's state is invalid and error is returned.
func (c *Commands) NewUserEmailEvents(ctx context.Context, userID, resourceOwner string) (*UserEmailEvents, error) {
if userID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-0Gzs3", "Errors.User.Email.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-0Gzs3", "Errors.User.Email.IDMissing")
}
model, err := c.emailWriteModel(ctx, userID, resourceOwner)
@@ -133,10 +141,10 @@ func (c *Commands) NewUserEmailEvents(ctx context.Context, userID, resourceOwner
return nil, err
}
if model.UserState == domain.UserStateUnspecified || model.UserState == domain.UserStateDeleted {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-ieJ2e", "Errors.User.Email.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-ieJ2e", "Errors.User.Email.NotFound")
}
if model.UserState == domain.UserStateInitial {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-uz0Uu", "Errors.User.NotInitialised")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-uz0Uu", "Errors.User.NotInitialised")
}
return &UserEmailEvents{
eventstore: c.eventstore,
@@ -153,7 +161,7 @@ func (c *UserEmailEvents) Change(ctx context.Context, email domain.EmailAddress)
}
event, hasChanged := c.model.NewChangedEvent(ctx, c.aggregate, email)
if !hasChanged {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Uch5e", "Errors.User.Email.NotChanged")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-Uch5e", "Errors.User.Email.NotChanged")
}
c.events = append(c.events, event)
return nil
@@ -167,21 +175,33 @@ func (c *UserEmailEvents) SetVerified(ctx context.Context) {
// AddGeneratedCode generates a new encrypted code and sets it to the email address.
// When returnCode a plain text of the code will be returned from Push.
func (c *UserEmailEvents) AddGeneratedCode(ctx context.Context, gen crypto.Generator, urlTmpl string, returnCode bool) error {
- value, plain, err := crypto.NewCode(gen)
+ cmd, code, err := generateCodeCommand(ctx, c.aggregate, gen, urlTmpl, returnCode)
if err != nil {
return err
}
-
- c.events = append(c.events, user.NewHumanEmailCodeAddedEventV2(ctx, c.aggregate, value, gen.Expiry(), urlTmpl, returnCode))
+ c.events = append(c.events, cmd)
if returnCode {
- c.plainCode = &plain
+ c.plainCode = &code
}
return nil
}
+func generateCodeCommand(ctx context.Context, agg *eventstore.Aggregate, gen crypto.Generator, urlTmpl string, returnCode bool) (eventstore.Command, string, error) {
+ value, plain, err := crypto.NewCode(gen)
+ if err != nil {
+ return nil, "", err
+ }
+
+ cmd := user.NewHumanEmailCodeAddedEventV2(ctx, agg, value, gen.Expiry(), urlTmpl, returnCode)
+ if returnCode {
+ return cmd, plain, nil
+ }
+ return cmd, "", nil
+}
+
func (c *UserEmailEvents) VerifyCode(ctx context.Context, code string, gen crypto.Generator) error {
if code == "" {
- return caos_errs.ThrowInvalidArgument(nil, "COMMAND-Fia4a", "Errors.User.Code.Empty")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-Fia4a", "Errors.User.Code.Empty")
}
err := crypto.VerifyCode(c.model.CodeCreationDate, c.model.CodeExpiry, c.model.Code, code, gen)
@@ -191,7 +211,7 @@ func (c *UserEmailEvents) VerifyCode(ctx context.Context, code string, gen crypt
}
_, err = c.eventstore.Push(ctx, user.NewHumanEmailVerificationFailedEvent(ctx, c.aggregate))
logging.WithFields("id", "COMMAND-Zoo6b", "userID", c.aggregate.ID).OnError(err).Error("NewHumanEmailVerificationFailedEvent push failed")
- return caos_errs.ThrowInvalidArgument(err, "COMMAND-eis9R", "Errors.User.Code.Invalid")
+ return zerrors.ThrowInvalidArgument(err, "COMMAND-eis9R", "Errors.User.Code.Invalid")
}
// Push all events to the eventstore and Reduce them into the Model.
diff --git a/internal/command/user_v2_email_test.go b/internal/command/user_v2_email_test.go
index e768f68c93..262e672d00 100644
--- a/internal/command/user_v2_email_test.go
+++ b/internal/command/user_v2_email_test.go
@@ -13,11 +13,11 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommands_ChangeUserEmail(t *testing.T) {
@@ -74,7 +74,7 @@ func TestCommands_ChangeUserEmail(t *testing.T) {
resourceOwner: "org1",
email: "",
},
- wantErr: caos_errs.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
+ wantErr: zerrors.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
},
{
name: "missing email",
@@ -114,7 +114,7 @@ func TestCommands_ChangeUserEmail(t *testing.T) {
resourceOwner: "org1",
email: "",
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "EMAIL-spblu", "Errors.User.Email.Empty"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "EMAIL-spblu", "Errors.User.Email.Empty"),
},
{
name: "not changed",
@@ -154,7 +154,7 @@ func TestCommands_ChangeUserEmail(t *testing.T) {
resourceOwner: "org1",
email: "email@test.ch",
},
- wantErr: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Uch5e", "Errors.User.Email.NotChanged"),
+ wantErr: zerrors.ThrowPreconditionFailed(nil, "COMMAND-Uch5e", "Errors.User.Email.NotChanged"),
},
}
for _, tt := range tests {
@@ -198,7 +198,7 @@ func TestCommands_ChangeUserEmailURLTemplate(t *testing.T) {
email: "email-changed@test.ch",
urlTmpl: "{{",
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "DOMAIN-oGh5e", "Errors.User.InvalidURLTemplate"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "DOMAIN-oGh5e", "Errors.User.InvalidURLTemplate"),
},
{
name: "permission missing",
@@ -239,7 +239,7 @@ func TestCommands_ChangeUserEmailURLTemplate(t *testing.T) {
email: "email@test.ch",
urlTmpl: "https://example.com/email/verify?userID={{.UserID}}&code={{.Code}}&orgID={{.OrgID}}",
},
- wantErr: caos_errs.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
+ wantErr: zerrors.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
},
{
name: "not changed",
@@ -280,7 +280,7 @@ func TestCommands_ChangeUserEmailURLTemplate(t *testing.T) {
email: "email@test.ch",
urlTmpl: "https://example.com/email/verify?userID={{.UserID}}&code={{.Code}}&orgID={{.OrgID}}",
},
- wantErr: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Uch5e", "Errors.User.Email.NotChanged"),
+ wantErr: zerrors.ThrowPreconditionFailed(nil, "COMMAND-Uch5e", "Errors.User.Email.NotChanged"),
},
}
for _, tt := range tests {
@@ -350,7 +350,7 @@ func TestCommands_ChangeUserEmailReturnCode(t *testing.T) {
resourceOwner: "org1",
email: "email@test.ch",
},
- wantErr: caos_errs.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
+ wantErr: zerrors.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
},
{
name: "missing email",
@@ -390,7 +390,7 @@ func TestCommands_ChangeUserEmailReturnCode(t *testing.T) {
resourceOwner: "org1",
email: "",
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "EMAIL-spblu", "Errors.User.Email.Empty"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "EMAIL-spblu", "Errors.User.Email.Empty"),
},
}
for _, tt := range tests {
@@ -434,7 +434,7 @@ func TestCommands_ChangeUserEmailVerified(t *testing.T) {
resourceOwner: "org1",
email: "email@test.ch",
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "COMMAND-0Gzs3", "Errors.User.Email.IDMissing"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "COMMAND-0Gzs3", "Errors.User.Email.IDMissing"),
},
{
name: "missing permission",
@@ -465,7 +465,7 @@ func TestCommands_ChangeUserEmailVerified(t *testing.T) {
resourceOwner: "org1",
email: "email-changed@test.ch",
},
- wantErr: caos_errs.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
+ wantErr: zerrors.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
},
{
name: "missing email",
@@ -496,7 +496,7 @@ func TestCommands_ChangeUserEmailVerified(t *testing.T) {
resourceOwner: "org1",
email: "",
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "EMAIL-spblu", "Errors.User.Email.Empty"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "EMAIL-spblu", "Errors.User.Email.Empty"),
},
{
name: "email changed",
@@ -590,7 +590,7 @@ func TestCommands_changeUserEmailWithGenerator(t *testing.T) {
returnCode: false,
urlTmpl: "",
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "COMMAND-0Gzs3", "Errors.User.Email.IDMissing"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "COMMAND-0Gzs3", "Errors.User.Email.IDMissing"),
},
{
name: "missing permission",
@@ -623,7 +623,7 @@ func TestCommands_changeUserEmailWithGenerator(t *testing.T) {
returnCode: false,
urlTmpl: "",
},
- wantErr: caos_errs.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
+ wantErr: zerrors.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
},
{
name: "missing email",
@@ -656,7 +656,7 @@ func TestCommands_changeUserEmailWithGenerator(t *testing.T) {
returnCode: false,
urlTmpl: "",
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "EMAIL-spblu", "Errors.User.Email.Empty"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "EMAIL-spblu", "Errors.User.Email.Empty"),
},
{
name: "not changed",
@@ -689,7 +689,7 @@ func TestCommands_changeUserEmailWithGenerator(t *testing.T) {
returnCode: false,
urlTmpl: "",
},
- wantErr: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Uch5e", "Errors.User.Email.NotChanged"),
+ wantErr: zerrors.ThrowPreconditionFailed(nil, "COMMAND-Uch5e", "Errors.User.Email.NotChanged"),
},
{
name: "email changed",
@@ -913,7 +913,7 @@ func TestCommands_VerifyUserEmail(t *testing.T) {
resourceOwner: "org1",
code: "a",
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "COMMAND-0Gzs3", "Errors.User.Email.IDMissing"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "COMMAND-0Gzs3", "Errors.User.Email.IDMissing"),
},
{
name: "missing code",
@@ -952,7 +952,7 @@ func TestCommands_VerifyUserEmail(t *testing.T) {
resourceOwner: "org1",
code: "",
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "COMMAND-Fia4a", "Errors.User.Code.Empty"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "COMMAND-Fia4a", "Errors.User.Code.Empty"),
},
{
name: "wrong code",
@@ -1009,7 +1009,7 @@ func TestCommands_VerifyUserEmail(t *testing.T) {
resourceOwner: "org1",
code: "wrong",
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "COMMAND-eis9R", "Errors.User.Code.Invalid"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "COMMAND-eis9R", "Errors.User.Code.Invalid"),
},
}
for _, tt := range tests {
@@ -1050,7 +1050,7 @@ func TestCommands_verifyUserEmailWithGenerator(t *testing.T) {
resourceOwner: "org1",
code: "a",
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "COMMAND-0Gzs3", "Errors.User.Email.IDMissing"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "COMMAND-0Gzs3", "Errors.User.Email.IDMissing"),
},
{
name: "missing code",
@@ -1080,7 +1080,7 @@ func TestCommands_verifyUserEmailWithGenerator(t *testing.T) {
resourceOwner: "org1",
code: "",
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "COMMAND-Fia4a", "Errors.User.Code.Empty"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "COMMAND-Fia4a", "Errors.User.Code.Empty"),
},
{
name: "good code",
@@ -1128,7 +1128,7 @@ func TestCommands_verifyUserEmailWithGenerator(t *testing.T) {
resourceOwner: "org1",
code: "wrong",
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "COMMAND-eis9R", "Errors.User.Code.Invalid"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "COMMAND-eis9R", "Errors.User.Code.Invalid"),
},
{
name: "wrong code",
@@ -1216,7 +1216,7 @@ func TestCommands_NewUserEmailEvents(t *testing.T) {
userID: "",
resourceOwner: "org1",
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "COMMAND-0Gzs3", "Errors.User.Email.IDMissing"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "COMMAND-0Gzs3", "Errors.User.Email.IDMissing"),
},
{
name: "not found",
@@ -1227,7 +1227,7 @@ func TestCommands_NewUserEmailEvents(t *testing.T) {
userID: "user1",
resourceOwner: "org1",
},
- wantErr: caos_errs.ThrowNotFound(nil, "COMMAND-ieJ2e", "Errors.User.Email.NotFound"),
+ wantErr: zerrors.ThrowNotFound(nil, "COMMAND-ieJ2e", "Errors.User.Email.NotFound"),
},
{
name: "user not initialized",
@@ -1262,7 +1262,7 @@ func TestCommands_NewUserEmailEvents(t *testing.T) {
userID: "user1",
resourceOwner: "org1",
},
- wantErr: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-uz0Uu", "Errors.User.NotInitialised"),
+ wantErr: zerrors.ThrowPreconditionFailed(nil, "COMMAND-uz0Uu", "Errors.User.NotInitialised"),
},
}
for _, tt := range tests {
diff --git a/internal/command/user_v2_human.go b/internal/command/user_v2_human.go
new file mode 100644
index 0000000000..c0a61b5a30
--- /dev/null
+++ b/internal/command/user_v2_human.go
@@ -0,0 +1,457 @@
+package command
+
+import (
+ "context"
+
+ "golang.org/x/text/language"
+
+ "github.com/zitadel/zitadel/internal/crypto"
+ "github.com/zitadel/zitadel/internal/domain"
+ "github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
+)
+
+type ChangeHuman struct {
+ ID string
+ Username *string
+ Profile *Profile
+ Email *Email
+ Phone *Phone
+
+ Password *Password
+
+ // Details are set after a successful execution of the command
+ Details *domain.ObjectDetails
+
+ // EmailCode is set by the command
+ EmailCode *string
+
+ // PhoneCode is set by the command
+ PhoneCode *string
+}
+
+type Profile struct {
+ FirstName *string
+ LastName *string
+ NickName *string
+ DisplayName *string
+ PreferredLanguage *language.Tag
+ Gender *domain.Gender
+}
+
+type Password struct {
+ // Either you have to have permission, a password code or the old password to change
+ PasswordCode *string
+ OldPassword *string
+ Password *string
+ EncodedPasswordHash *string
+
+ ChangeRequired bool
+}
+
+func (h *ChangeHuman) Validate(hasher *crypto.PasswordHasher) (err error) {
+ if h.Email != nil && h.Email.Address != "" {
+ if err := h.Email.Validate(); err != nil {
+ return err
+ }
+ }
+
+ if h.Phone != nil && h.Phone.Number != "" {
+ if h.Phone.Number, err = h.Phone.Number.Normalize(); err != nil {
+ return err
+ }
+ }
+
+ if h.Password != nil {
+ if err := h.Password.Validate(hasher); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+
+func (p *Password) Validate(hasher *crypto.PasswordHasher) error {
+ if p.EncodedPasswordHash != nil {
+ if !hasher.EncodingSupported(*p.EncodedPasswordHash) {
+ return zerrors.ThrowInvalidArgument(nil, "USER-oz74onzvqr", "Errors.User.Password.NotSupported")
+ }
+ }
+ if p.Password == nil && p.EncodedPasswordHash == nil {
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-3klek4sbns", "Errors.User.Password.Empty")
+ }
+ return nil
+}
+
+func (h *ChangeHuman) Changed() bool {
+ if h.Username != nil {
+ return true
+ }
+ if h.Profile != nil {
+ return true
+ }
+ if h.Email != nil {
+ return true
+ }
+ if h.Phone != nil {
+ return true
+ }
+ if h.Password != nil {
+ return true
+ }
+ return false
+}
+
+func (c *Commands) AddUserHuman(ctx context.Context, resourceOwner string, human *AddHuman, allowInitMail bool, alg crypto.EncryptionAlgorithm) (err error) {
+ if resourceOwner == "" {
+ return zerrors.ThrowInvalidArgument(nil, "COMMA-095xh8fll1", "Errors.Internal")
+ }
+
+ if err := human.Validate(c.userPasswordHasher); err != nil {
+ return err
+ }
+
+ if human.ID == "" {
+ human.ID, err = c.idGenerator.Next()
+ if err != nil {
+ return err
+ }
+ }
+
+ // only check if user is already existing
+ existingHuman, err := c.userExistsWriteModel(
+ ctx,
+ human.ID,
+ )
+ if err != nil {
+ return err
+ }
+ if isUserStateExists(existingHuman.UserState) {
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-7yiox1isql", "Errors.User.AlreadyExisting")
+ }
+ // check for permission to create user on resourceOwner
+ if err := c.checkPermission(ctx, domain.PermissionUserWrite, resourceOwner, human.ID); err != nil {
+ return err
+ }
+ // add resourceowner for the events with the aggregate
+ existingHuman.ResourceOwner = resourceOwner
+
+ domainPolicy, err := c.domainPolicyWriteModel(ctx, resourceOwner)
+ if err != nil {
+ return err
+ }
+
+ if err = c.userValidateDomain(ctx, resourceOwner, human.Username, domainPolicy.UserLoginMustBeDomain); err != nil {
+ return err
+ }
+ var createCmd humanCreationCommand
+ if human.Register {
+ createCmd = user.NewHumanRegisteredEvent(
+ ctx,
+ &existingHuman.Aggregate().Aggregate,
+ human.Username,
+ human.FirstName,
+ human.LastName,
+ human.NickName,
+ human.DisplayName,
+ human.PreferredLanguage,
+ human.Gender,
+ human.Email.Address,
+ domainPolicy.UserLoginMustBeDomain,
+ )
+ } else {
+ createCmd = user.NewHumanAddedEvent(
+ ctx,
+ &existingHuman.Aggregate().Aggregate,
+ human.Username,
+ human.FirstName,
+ human.LastName,
+ human.NickName,
+ human.DisplayName,
+ human.PreferredLanguage,
+ human.Gender,
+ human.Email.Address,
+ domainPolicy.UserLoginMustBeDomain,
+ )
+ }
+
+ if human.Phone.Number != "" {
+ createCmd.AddPhoneData(human.Phone.Number)
+ }
+
+ // separated to change when old user logic is not used anymore
+ filter := c.eventstore.Filter //nolint:staticcheck
+ if err := addHumanCommandPassword(ctx, filter, createCmd, human, c.userPasswordHasher); err != nil {
+ return err
+ }
+
+ cmds := make([]eventstore.Command, 0, 3)
+ cmds = append(cmds, createCmd)
+
+ cmds, err = c.addHumanCommandEmail(ctx, filter, cmds, existingHuman.Aggregate(), human, alg, allowInitMail)
+ if err != nil {
+ return err
+ }
+
+ cmds, err = c.addHumanCommandPhone(ctx, filter, cmds, existingHuman.Aggregate(), human, alg)
+ if err != nil {
+ return err
+ }
+
+ for _, metadataEntry := range human.Metadata {
+ cmds = append(cmds, user.NewMetadataSetEvent(
+ ctx,
+ &existingHuman.Aggregate().Aggregate,
+ metadataEntry.Key,
+ metadataEntry.Value,
+ ))
+ }
+ for _, link := range human.Links {
+ cmd, err := addLink(ctx, filter, existingHuman.Aggregate(), link)
+ if err != nil {
+ return err
+ }
+ cmds = append(cmds, cmd)
+ }
+
+ if len(cmds) == 0 {
+ human.Details = writeModelToObjectDetails(&existingHuman.WriteModel)
+ return nil
+ }
+
+ err = c.pushAppendAndReduce(ctx, existingHuman, cmds...)
+ if err != nil {
+ return err
+ }
+ human.Details = writeModelToObjectDetails(&existingHuman.WriteModel)
+ return nil
+}
+
+func (c *Commands) ChangeUserHuman(ctx context.Context, human *ChangeHuman, alg crypto.EncryptionAlgorithm) (err error) {
+ if err := human.Validate(c.userPasswordHasher); err != nil {
+ return err
+ }
+
+ existingHuman, err := c.userHumanWriteModel(
+ ctx,
+ human.ID,
+ human.Profile != nil,
+ human.Email != nil,
+ human.Phone != nil,
+ human.Password != nil,
+ false, // avatar not updateable
+ false, // IDPLinks not updateable
+ )
+ if err != nil {
+ return err
+ }
+ if !isUserStateExists(existingHuman.UserState) {
+ return zerrors.ThrowNotFound(nil, "COMMAND-ugjs0upun6", "Errors.User.NotFound")
+ }
+
+ if human.Changed() {
+ if err := c.checkPermissionUpdateUser(ctx, existingHuman.ResourceOwner, existingHuman.AggregateID); err != nil {
+ return err
+ }
+ }
+
+ cmds := make([]eventstore.Command, 0)
+ if human.Username != nil {
+ cmds, err = c.changeUsername(ctx, cmds, existingHuman, *human.Username)
+ if err != nil {
+ return err
+ }
+ }
+ if human.Profile != nil {
+ cmds, err = changeUserProfile(ctx, cmds, existingHuman, human.Profile)
+ if err != nil {
+ return err
+ }
+ }
+ if human.Email != nil {
+ cmds, human.EmailCode, err = c.changeUserEmail(ctx, cmds, existingHuman, human.Email, alg)
+ if err != nil {
+ return err
+ }
+ }
+ if human.Phone != nil {
+ cmds, human.PhoneCode, err = c.changeUserPhone(ctx, cmds, existingHuman, human.Phone, alg)
+ if err != nil {
+ return err
+ }
+ }
+ if human.Password != nil {
+ cmds, err = c.changeUserPassword(ctx, cmds, existingHuman, human.Password, alg)
+ if err != nil {
+ return err
+ }
+ }
+
+ if len(cmds) == 0 {
+ human.Details = writeModelToObjectDetails(&existingHuman.WriteModel)
+ return nil
+ }
+ err = c.pushAppendAndReduce(ctx, existingHuman, cmds...)
+ if err != nil {
+ return err
+ }
+ human.Details = writeModelToObjectDetails(&existingHuman.WriteModel)
+ return nil
+}
+
+func (c *Commands) changeUserEmail(ctx context.Context, cmds []eventstore.Command, wm *UserV2WriteModel, email *Email, alg crypto.EncryptionAlgorithm) (_ []eventstore.Command, code *string, err error) {
+ ctx, span := tracing.NewSpan(ctx)
+ defer func() { span.End() }()
+
+ if email.Address != "" && email.Address != wm.Email {
+ cmds = append(cmds, user.NewHumanEmailChangedEvent(ctx, &wm.Aggregate().Aggregate, email.Address))
+
+ if email.Verified {
+ return append(cmds, user.NewHumanEmailVerifiedEvent(ctx, &wm.Aggregate().Aggregate)), code, nil
+ } else {
+ cryptoCode, err := c.newEmailCode(ctx, c.eventstore.Filter, alg) //nolint:staticcheck
+ if err != nil {
+ return cmds, code, err
+ }
+ cmds = append(cmds, user.NewHumanEmailCodeAddedEventV2(ctx, &wm.Aggregate().Aggregate, cryptoCode.Crypted, cryptoCode.Expiry, email.URLTemplate, email.ReturnCode))
+ if email.ReturnCode {
+ code = &cryptoCode.Plain
+ }
+ return cmds, code, nil
+ }
+ }
+ // only create separate event of verified if email was not changed
+ if email.Verified && wm.IsEmailVerified != email.Verified {
+ return append(cmds, user.NewHumanEmailVerifiedEvent(ctx, &wm.Aggregate().Aggregate)), nil, nil
+ }
+ return cmds, code, nil
+}
+
+func (c *Commands) changeUserPhone(ctx context.Context, cmds []eventstore.Command, wm *UserV2WriteModel, phone *Phone, alg crypto.EncryptionAlgorithm) (_ []eventstore.Command, code *string, err error) {
+ ctx, span := tracing.NewSpan(ctx)
+ defer func() { span.End() }()
+
+ if phone.Number != "" && phone.Number != wm.Phone {
+ cmds = append(cmds, user.NewHumanPhoneChangedEvent(ctx, &wm.Aggregate().Aggregate, phone.Number))
+
+ if phone.Verified {
+ return append(cmds, user.NewHumanPhoneVerifiedEvent(ctx, &wm.Aggregate().Aggregate)), code, nil
+ } else {
+ cryptoCode, err := c.newPhoneCode(ctx, c.eventstore.Filter, alg) //nolint:staticcheck
+ if err != nil {
+ return cmds, code, err
+ }
+ cmds = append(cmds, user.NewHumanPhoneCodeAddedEventV2(ctx, &wm.Aggregate().Aggregate, cryptoCode.Crypted, cryptoCode.Expiry, phone.ReturnCode))
+ if phone.ReturnCode {
+ code = &cryptoCode.Plain
+ }
+ return cmds, code, nil
+ }
+ }
+ // only create separate event of verified if email was not changed
+ if phone.Verified && wm.IsPhoneVerified != phone.Verified {
+ return append(cmds, user.NewHumanPhoneVerifiedEvent(ctx, &wm.Aggregate().Aggregate)), code, nil
+ }
+ return cmds, code, nil
+}
+
+func changeUserProfile(ctx context.Context, cmds []eventstore.Command, wm *UserV2WriteModel, profile *Profile) ([]eventstore.Command, error) {
+ ctx, span := tracing.NewSpan(ctx)
+ defer func() { span.End() }()
+
+ cmd, err := wm.NewProfileChangedEvent(ctx, profile.FirstName, profile.LastName, profile.NickName, profile.DisplayName, profile.PreferredLanguage, profile.Gender)
+ if cmd != nil {
+ return append(cmds, cmd), err
+ }
+ return cmds, err
+}
+
+func (c *Commands) changeUserPassword(ctx context.Context, cmds []eventstore.Command, wm *UserV2WriteModel, password *Password, alg crypto.EncryptionAlgorithm) ([]eventstore.Command, error) {
+ ctx, span := tracing.NewSpan(ctx)
+ defer func() { span.End() }()
+
+ // Either have a code to set the password
+ if password.PasswordCode != nil {
+ if err := crypto.VerifyCodeWithAlgorithm(wm.PasswordCodeCreationDate, wm.PasswordCodeExpiry, wm.PasswordCode, *password.PasswordCode, alg); err != nil {
+ return cmds, err
+ }
+ }
+ var encodedPassword string
+ // or have the old password to change it
+ if password.OldPassword != nil {
+ // newly encode old password if no new and already encoded password is set
+ pw := *password.OldPassword
+ if password.Password != nil {
+ pw = *password.Password
+ }
+ alreadyEncodedPassword, err := c.verifyAndUpdatePassword(ctx, wm.PasswordEncodedHash, *password.OldPassword, pw)
+ if err != nil {
+ return cmds, err
+ }
+ encodedPassword = alreadyEncodedPassword
+ }
+
+ // password already hashed in request
+ if password.EncodedPasswordHash != nil {
+ cmd, err := c.setPasswordCommand(ctx, &wm.Aggregate().Aggregate, wm.UserState, *password.EncodedPasswordHash, password.ChangeRequired, true)
+ if cmd != nil {
+ return append(cmds, cmd), err
+ }
+ return cmds, err
+ }
+ // password already hashed in verify
+ if encodedPassword != "" {
+ cmd, err := c.setPasswordCommand(ctx, &wm.Aggregate().Aggregate, wm.UserState, encodedPassword, password.ChangeRequired, true)
+ if cmd != nil {
+ return append(cmds, cmd), err
+ }
+ return cmds, err
+ }
+ // password still to be hashed
+ if password.Password != nil {
+ cmd, err := c.setPasswordCommand(ctx, &wm.Aggregate().Aggregate, wm.UserState, *password.Password, password.ChangeRequired, false)
+ if cmd != nil {
+ return append(cmds, cmd), err
+ }
+ return cmds, err
+ }
+ // no password changes necessary
+ return cmds, nil
+}
+
+func (c *Commands) userExistsWriteModel(ctx context.Context, userID string) (writeModel *UserV2WriteModel, err error) {
+ ctx, span := tracing.NewSpan(ctx)
+ defer func() { span.EndWithError(err) }()
+
+ writeModel = NewUserExistsWriteModel(userID, "")
+ err = c.eventstore.FilterToQueryReducer(ctx, writeModel)
+ if err != nil {
+ return nil, err
+ }
+ return writeModel, nil
+}
+
+func (c *Commands) userHumanWriteModel(ctx context.Context, userID string, profileWM, emailWM, phoneWM, passwordWM, avatarWM, idpLinksWM bool) (writeModel *UserV2WriteModel, err error) {
+ ctx, span := tracing.NewSpan(ctx)
+ defer func() { span.EndWithError(err) }()
+
+ writeModel = NewUserHumanWriteModel(userID, "", profileWM, emailWM, phoneWM, passwordWM, avatarWM, idpLinksWM)
+ err = c.eventstore.FilterToQueryReducer(ctx, writeModel)
+ if err != nil {
+ return nil, err
+ }
+ return writeModel, nil
+}
+
+func (c *Commands) orgDomainVerifiedWriteModel(ctx context.Context, domain string) (writeModel *OrgDomainVerifiedWriteModel, err error) {
+ ctx, span := tracing.NewSpan(ctx)
+ defer func() { span.EndWithError(err) }()
+
+ writeModel = NewOrgDomainVerifiedWriteModel(domain)
+ err = c.eventstore.FilterToQueryReducer(ctx, writeModel)
+ if err != nil {
+ return nil, err
+ }
+ return writeModel, nil
+}
diff --git a/internal/command/user_v2_human_test.go b/internal/command/user_v2_human_test.go
new file mode 100644
index 0000000000..e0f99034bb
--- /dev/null
+++ b/internal/command/user_v2_human_test.go
@@ -0,0 +1,2568 @@
+package command
+
+import (
+ "context"
+ "errors"
+ "testing"
+ "time"
+
+ "github.com/muhlemmer/gu"
+ "github.com/stretchr/testify/assert"
+ "go.uber.org/mock/gomock"
+ "golang.org/x/text/language"
+
+ "github.com/zitadel/zitadel/internal/crypto"
+ "github.com/zitadel/zitadel/internal/domain"
+ "github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/id"
+ id_mock "github.com/zitadel/zitadel/internal/id/mock"
+ "github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
+)
+
+func TestCommandSide_AddUserHuman(t *testing.T) {
+ type fields struct {
+ eventstore func(t *testing.T) *eventstore.Eventstore
+ idGenerator id.Generator
+ userPasswordHasher *crypto.PasswordHasher
+ newCode cryptoCodeFunc
+ checkPermission domain.PermissionCheck
+ }
+ type args struct {
+ ctx context.Context
+ orgID string
+ human *AddHuman
+ secretGenerator crypto.Generator
+ allowInitMail bool
+ codeAlg crypto.EncryptionAlgorithm
+ }
+ type res struct {
+ want *domain.ObjectDetails
+ wantID string
+ wantEmailCode string
+ err func(error) bool
+ }
+
+ userAgg := user.NewAggregate("user1", "org1")
+
+ tests := []struct {
+ name string
+ fields fields
+ args args
+ res res
+ }{
+ {
+ name: "orgid missing, invalid argument error",
+ fields: fields{
+ eventstore: expectEventstore(),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "",
+ human: &AddHuman{
+ Username: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ Email: Email{
+ Address: "email@test.ch",
+ },
+ },
+ allowInitMail: true,
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "COMMA-095xh8fll1", "Errors.Internal"))
+ },
+ },
+ },
+ {
+ name: "user invalid, invalid argument error",
+ fields: fields{
+ eventstore: expectEventstore(),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &AddHuman{
+ Username: "username",
+ FirstName: "firstname",
+ },
+ allowInitMail: true,
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "EMAIL-spblu", "Errors.User.Email.Empty"))
+ },
+ },
+ },
+ {
+ name: "with id, already exists, precondition error",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &AddHuman{
+ ID: "user1",
+ Username: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ Email: Email{
+ Address: "email@test.ch",
+ },
+ PreferredLanguage: language.English,
+ },
+ allowInitMail: true,
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowPreconditionFailed(nil, "COMMAND-7yiox1isql", "Errors.User.AlreadyExisting"))
+ },
+ },
+ },
+ {
+ name: "domain policy not found, precondition error",
+ fields: fields{
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
+ eventstore: expectEventstore(
+ expectFilter(),
+ expectFilter(),
+ expectFilter(),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &AddHuman{
+ Username: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ Email: Email{
+ Address: "email@test.ch",
+ },
+ PreferredLanguage: language.English,
+ },
+ allowInitMail: true,
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowInternal(nil, "USER-Ggk9n", "Errors.Internal"))
+ },
+ },
+ },
+ {
+ name: "password policy not found, precondition error",
+ fields: fields{
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
+ eventstore: expectEventstore(
+ expectFilter(),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ true,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectFilter(),
+ expectFilter(),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &AddHuman{
+ Username: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ Password: "pass",
+ Email: Email{
+ Address: "email@test.ch",
+ Verified: true,
+ },
+ PreferredLanguage: language.English,
+ },
+ allowInitMail: true,
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowInternal(nil, "USER-uQ96e", "Errors.Internal"))
+ },
+ },
+ },
+ {
+ name: "register human (with initial code), ok",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ true,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectPush(
+ user.NewHumanRegisteredEvent(context.Background(),
+ &userAgg.Aggregate,
+ "username",
+ "firstname",
+ "lastname",
+ "",
+ "firstname lastname",
+ language.English,
+ domain.GenderUnspecified,
+ "email@test.ch",
+ true,
+ ),
+ user.NewHumanInitialCodeAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("userinit"),
+ },
+ time.Hour*1,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
+ newCode: mockCode("userinit", time.Hour),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &AddHuman{
+ Username: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ Email: Email{
+ Address: "email@test.ch",
+ },
+ PreferredLanguage: language.English,
+ Register: true,
+ },
+ secretGenerator: GetMockSecretGenerator(t),
+ allowInitMail: true,
+ codeAlg: crypto.CreateMockEncryptionAlg(gomock.NewController(t)),
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ Sequence: 0,
+ EventDate: time.Time{},
+ ResourceOwner: "org1",
+ },
+ wantID: "user1",
+ },
+ },
+ {
+ name: "add human (with initial code), no permission",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(),
+ ),
+ checkPermission: newMockPermissionCheckNotAllowed(),
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
+ newCode: mockCode("userinit", time.Hour),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &AddHuman{
+ Username: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ Email: Email{
+ Address: "email@test.ch",
+ },
+ PreferredLanguage: language.English,
+ },
+ secretGenerator: GetMockSecretGenerator(t),
+ allowInitMail: true,
+ codeAlg: crypto.CreateMockEncryptionAlg(gomock.NewController(t)),
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"))
+ },
+ },
+ },
+ {
+ name: "add human (with initial code), ok",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ true,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectPush(
+ user.NewHumanAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "username",
+ "firstname",
+ "lastname",
+ "",
+ "firstname lastname",
+ language.English,
+ domain.GenderUnspecified,
+ "email@test.ch",
+ true,
+ ),
+ user.NewHumanInitialCodeAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("userinit"),
+ },
+ time.Hour*1,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
+ newCode: mockCode("userinit", time.Hour),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &AddHuman{
+ Username: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ Email: Email{
+ Address: "email@test.ch",
+ },
+ PreferredLanguage: language.English,
+ },
+ secretGenerator: GetMockSecretGenerator(t),
+ allowInitMail: true,
+ codeAlg: crypto.CreateMockEncryptionAlg(gomock.NewController(t)),
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ Sequence: 0,
+ EventDate: time.Time{},
+ ResourceOwner: "org1",
+ },
+ wantID: "user1",
+ },
+ },
+ {
+ name: "add human (with password and initial code), ok",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ true,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ 1,
+ false,
+ false,
+ false,
+ false,
+ ),
+ ),
+ ),
+ expectPush(
+ newAddHumanEvent("$plain$x$password", false, true, "", language.English),
+ user.NewHumanInitialCodeAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("userinit"),
+ },
+ 1*time.Hour,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
+ userPasswordHasher: mockPasswordHasher("x"),
+ newCode: mockCode("userinit", time.Hour),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &AddHuman{
+ Username: "username",
+ Password: "password",
+ FirstName: "firstname",
+ LastName: "lastname",
+ Email: Email{
+ Address: "email@test.ch",
+ },
+ PreferredLanguage: language.English,
+ },
+ secretGenerator: GetMockSecretGenerator(t),
+ allowInitMail: true,
+ codeAlg: crypto.CreateMockEncryptionAlg(gomock.NewController(t)),
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ ResourceOwner: "org1",
+ },
+ wantID: "user1",
+ },
+ },
+ {
+ name: "add human (with password and email code custom template), ok",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ true,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ 1,
+ false,
+ false,
+ false,
+ false,
+ ),
+ ),
+ ),
+ expectPush(
+ newAddHumanEvent("$plain$x$password", false, true, "", language.English),
+ user.NewHumanEmailCodeAddedEventV2(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("emailCode"),
+ },
+ 1*time.Hour,
+ "https://example.com/email/verify?userID={{.UserID}}&code={{.Code}}",
+ false,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
+ userPasswordHasher: mockPasswordHasher("x"),
+ newCode: mockCode("emailCode", time.Hour),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &AddHuman{
+ Username: "username",
+ Password: "password",
+ FirstName: "firstname",
+ LastName: "lastname",
+ Email: Email{
+ Address: "email@test.ch",
+ URLTemplate: "https://example.com/email/verify?userID={{.UserID}}&code={{.Code}}",
+ },
+ PreferredLanguage: language.English,
+ },
+ secretGenerator: GetMockSecretGenerator(t),
+ allowInitMail: false,
+ codeAlg: crypto.CreateMockEncryptionAlg(gomock.NewController(t)),
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ ResourceOwner: "org1",
+ },
+ wantID: "user1",
+ },
+ },
+ {
+ name: "add human (with password and return email code), ok",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ true,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ 1,
+ false,
+ false,
+ false,
+ false,
+ ),
+ ),
+ ),
+ expectPush(
+ newAddHumanEvent("$plain$x$password", false, true, "", language.English),
+ user.NewHumanEmailCodeAddedEventV2(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("emailCode"),
+ },
+ 1*time.Hour,
+ "",
+ true,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
+ userPasswordHasher: mockPasswordHasher("x"),
+ newCode: mockCode("emailCode", time.Hour),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &AddHuman{
+ Username: "username",
+ Password: "password",
+ FirstName: "firstname",
+ LastName: "lastname",
+ Email: Email{
+ Address: "email@test.ch",
+ ReturnCode: true,
+ },
+ PreferredLanguage: language.English,
+ },
+ secretGenerator: GetMockSecretGenerator(t),
+ allowInitMail: false,
+ codeAlg: crypto.CreateMockEncryptionAlg(gomock.NewController(t)),
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ ResourceOwner: "org1",
+ },
+ wantID: "user1",
+ wantEmailCode: "emailCode",
+ },
+ },
+ {
+ name: "add human email verified, ok",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ true,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ 1,
+ false,
+ false,
+ false,
+ false,
+ ),
+ ),
+ ),
+ expectPush(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ user.NewHumanEmailVerifiedEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
+ userPasswordHasher: mockPasswordHasher("x"),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &AddHuman{
+ Username: "username",
+ Password: "password",
+ FirstName: "firstname",
+ LastName: "lastname",
+ Email: Email{
+ Address: "email@test.ch",
+ Verified: true,
+ },
+ PreferredLanguage: language.English,
+ PasswordChangeRequired: true,
+ },
+ secretGenerator: GetMockSecretGenerator(t),
+ allowInitMail: true,
+ codeAlg: crypto.CreateMockEncryptionAlg(gomock.NewController(t)),
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ ResourceOwner: "org1",
+ },
+ wantID: "user1",
+ },
+ },
+ {
+ name: "add human email verified, trim spaces, ok",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ true,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ 1,
+ false,
+ false,
+ false,
+ false,
+ ),
+ ),
+ ),
+ expectPush(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ user.NewHumanEmailVerifiedEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
+ userPasswordHasher: mockPasswordHasher("x"),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &AddHuman{
+ Username: " username ",
+ Password: "password",
+ FirstName: "firstname",
+ LastName: "lastname",
+ Email: Email{
+ Address: "email@test.ch",
+ Verified: true,
+ },
+ PreferredLanguage: language.English,
+ PasswordChangeRequired: true,
+ },
+ secretGenerator: GetMockSecretGenerator(t),
+ allowInitMail: true,
+ codeAlg: crypto.CreateMockEncryptionAlg(gomock.NewController(t)),
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ ResourceOwner: "org1",
+ },
+ wantID: "user1",
+ },
+ },
+ {
+ name: "add human, email verified, userLoginMustBeDomain false, ok",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ false,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ 1,
+ false,
+ false,
+ false,
+ false,
+ ),
+ ),
+ ),
+ expectPush(
+ newAddHumanEvent("$plain$x$password", true, false, "", language.English),
+ user.NewHumanEmailVerifiedEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
+ userPasswordHasher: mockPasswordHasher("x"),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &AddHuman{
+ Username: "username",
+ Password: "password",
+ FirstName: "firstname",
+ LastName: "lastname",
+ Email: Email{
+ Address: "email@test.ch",
+ Verified: true,
+ },
+ PreferredLanguage: language.English,
+ PasswordChangeRequired: true,
+ },
+ secretGenerator: GetMockSecretGenerator(t),
+ allowInitMail: true,
+ codeAlg: crypto.CreateMockEncryptionAlg(gomock.NewController(t)),
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ ResourceOwner: "org1",
+ },
+ wantID: "user1",
+ },
+ },
+ {
+ name: "add human claimed domain, userLoginMustBeDomain false, error",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ false,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainVerifiedEvent(context.Background(),
+ &org.NewAggregate("org2").Aggregate,
+ "test.ch",
+ ),
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
+ userPasswordHasher: mockPasswordHasher("x"),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &AddHuman{
+ Username: "username@test.ch",
+ Password: "password",
+ FirstName: "firstname",
+ LastName: "lastname",
+ Email: Email{
+ Address: "email@test.ch",
+ Verified: true,
+ },
+ PreferredLanguage: language.English,
+ PasswordChangeRequired: true,
+ },
+ secretGenerator: GetMockSecretGenerator(t),
+ allowInitMail: true,
+ codeAlg: crypto.CreateMockEncryptionAlg(gomock.NewController(t)),
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "COMMAND-SFd21", "Errors.User.DomainNotAllowedAsUsername"))
+ },
+ },
+ },
+ {
+ name: "add human domain, userLoginMustBeDomain false, ok",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ false,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainVerifiedEvent(context.Background(),
+ &org.NewAggregate("org1").Aggregate,
+ "test.ch",
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ 1,
+ false,
+ false,
+ false,
+ false,
+ ),
+ ),
+ ),
+ expectPush(
+ func() eventstore.Command {
+ event := user.NewHumanAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username@test.ch",
+ "firstname",
+ "lastname",
+ "",
+ "firstname lastname",
+ language.English,
+ domain.GenderUnspecified,
+ "email@test.ch",
+ false,
+ )
+ event.AddPasswordData("$plain$x$password", true)
+ return event
+ }(),
+ user.NewHumanEmailVerifiedEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
+ userPasswordHasher: mockPasswordHasher("x"),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &AddHuman{
+ Username: "username@test.ch",
+ Password: "password",
+ FirstName: "firstname",
+ LastName: "lastname",
+ Email: Email{
+ Address: "email@test.ch",
+ Verified: true,
+ },
+ PreferredLanguage: language.English,
+ PasswordChangeRequired: true,
+ },
+ secretGenerator: GetMockSecretGenerator(t),
+ allowInitMail: true,
+ codeAlg: crypto.CreateMockEncryptionAlg(gomock.NewController(t)),
+ },
+
+ res: res{
+ want: &domain.ObjectDetails{
+ ResourceOwner: "org1",
+ },
+ wantID: "user1",
+ },
+ },
+ {
+ name: "add human (with phone), ok",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ true,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ 1,
+ false,
+ false,
+ false,
+ false,
+ ),
+ ),
+ ),
+ expectPush(
+ newAddHumanEvent("$plain$x$password", false, true, "+41711234567", language.English),
+ user.NewHumanEmailVerifiedEvent(
+ context.Background(),
+ &userAgg.Aggregate,
+ ),
+ user.NewHumanPhoneCodeAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("phonecode"),
+ },
+ time.Hour*1,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
+ userPasswordHasher: mockPasswordHasher("x"),
+ newCode: mockCode("phonecode", time.Hour),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &AddHuman{
+ Username: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ Password: "password",
+ Email: Email{
+ Address: "email@test.ch",
+ Verified: true,
+ },
+ Phone: Phone{
+ Number: "+41711234567",
+ },
+ PreferredLanguage: language.English,
+ },
+ secretGenerator: GetMockSecretGenerator(t),
+ allowInitMail: true,
+ codeAlg: crypto.CreateMockEncryptionAlg(gomock.NewController(t)),
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ ResourceOwner: "org1",
+ },
+ wantID: "user1",
+ },
+ },
+ {
+ name: "add human (with verified phone), ok",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ true,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectPush(
+ newAddHumanEvent("", false, true, "+41711234567", language.English),
+ user.NewHumanInitialCodeAddedEvent(
+ context.Background(),
+ &userAgg.Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("userinit"),
+ },
+ 1*time.Hour,
+ ),
+ user.NewHumanPhoneVerifiedEvent(
+ context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
+ newCode: mockCode("userinit", time.Hour),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &AddHuman{
+ Username: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ Email: Email{
+ Address: "email@test.ch",
+ },
+ Phone: Phone{
+ Number: "+41711234567",
+ Verified: true,
+ },
+ PreferredLanguage: language.English,
+ },
+ secretGenerator: GetMockSecretGenerator(t),
+ allowInitMail: true,
+ codeAlg: crypto.CreateMockEncryptionAlg(gomock.NewController(t)),
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ ResourceOwner: "org1",
+ },
+ wantID: "user1",
+ },
+ }, {
+ name: "add human (with return code), ok",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ true,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ 1,
+ false,
+ false,
+ false,
+ false,
+ ),
+ ),
+ ),
+ expectPush(
+ newAddHumanEvent("$plain$x$password", false, true, "+41711234567", language.English),
+ user.NewHumanEmailVerifiedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate),
+ user.NewHumanPhoneCodeAddedEventV2(
+ context.Background(),
+ &userAgg.Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("phoneCode"),
+ },
+ 1*time.Hour,
+ true,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
+ userPasswordHasher: mockPasswordHasher("x"),
+ newCode: mockCode("phoneCode", time.Hour),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &AddHuman{
+ Username: "username",
+ Password: "password",
+ FirstName: "firstname",
+ LastName: "lastname",
+ Email: Email{
+ Address: "email@test.ch",
+ Verified: true,
+ },
+ Phone: Phone{
+ Number: "+41711234567",
+ ReturnCode: true,
+ },
+ PreferredLanguage: language.English,
+ },
+ secretGenerator: GetMockSecretGenerator(t),
+ allowInitMail: true,
+ codeAlg: crypto.CreateMockEncryptionAlg(gomock.NewController(t)),
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ ResourceOwner: "org1",
+ },
+ wantID: "user1",
+ },
+ },
+ {
+ name: "add human with metadata, ok",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ true,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectPush(
+ newAddHumanEvent("", false, true, "", language.English),
+ user.NewHumanInitialCodeAddedEvent(
+ context.Background(),
+ &userAgg.Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("userinit"),
+ },
+ 1*time.Hour,
+ ),
+ user.NewMetadataSetEvent(
+ context.Background(),
+ &userAgg.Aggregate,
+ "testKey",
+ []byte("testValue"),
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ idGenerator: id_mock.NewIDGeneratorExpectIDs(t, "user1"),
+ newCode: mockCode("userinit", time.Hour),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &AddHuman{
+ Username: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ Email: Email{
+ Address: "email@test.ch",
+ },
+ PreferredLanguage: language.English,
+ Metadata: []*AddMetadataEntry{
+ {
+ Key: "testKey",
+ Value: []byte("testValue"),
+ },
+ },
+ },
+ secretGenerator: GetMockSecretGenerator(t),
+ allowInitMail: true,
+ codeAlg: crypto.CreateMockEncryptionAlg(gomock.NewController(t)),
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ ResourceOwner: "org1",
+ },
+ wantID: "user1",
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ r := &Commands{
+ eventstore: tt.fields.eventstore(t),
+ userPasswordHasher: tt.fields.userPasswordHasher,
+ idGenerator: tt.fields.idGenerator,
+ newCode: tt.fields.newCode,
+ checkPermission: tt.fields.checkPermission,
+ }
+ err := r.AddUserHuman(tt.args.ctx, tt.args.orgID, tt.args.human, tt.args.allowInitMail, tt.args.codeAlg)
+ if tt.res.err == nil {
+ if !assert.NoError(t, err) {
+ t.FailNow()
+ }
+ } else if !tt.res.err(err) {
+ t.Errorf("got wrong err: %v ", err)
+ return
+ }
+ if tt.res.err == nil {
+ assert.Equal(t, tt.res.want, tt.args.human.Details)
+ assert.Equal(t, tt.res.wantID, tt.args.human.ID)
+ assert.Equal(t, tt.res.wantEmailCode, gu.Value(tt.args.human.EmailCode))
+ }
+ })
+ }
+}
+
+func TestCommandSide_ChangeUserHuman(t *testing.T) {
+ type fields struct {
+ eventstore func(t *testing.T) *eventstore.Eventstore
+ userPasswordHasher *crypto.PasswordHasher
+ newCode cryptoCodeFunc
+ checkPermission domain.PermissionCheck
+ }
+ type args struct {
+ ctx context.Context
+ orgID string
+ human *ChangeHuman
+ codeAlg crypto.EncryptionAlgorithm
+ }
+ type res struct {
+ want *domain.ObjectDetails
+ wantEmailCode *string
+ wantPhoneCode *string
+ err func(error) bool
+ }
+
+ userAgg := user.NewAggregate("user1", "org1")
+
+ tests := []struct {
+ name string
+ fields fields
+ args args
+ res res
+ }{
+ {
+ name: "domain policy not found, precondition error",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ ),
+ expectFilter(),
+ expectFilter(),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &ChangeHuman{
+ Username: gu.Ptr("changed"),
+ },
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowPreconditionFailed(nil, "COMMAND-79pv6e1q62", "Errors.Org.DomainPolicy.NotExisting"))
+ },
+ },
+ },
+ {
+ name: "change human username, no permission",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckNotAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &ChangeHuman{
+ Username: gu.Ptr("changed"),
+ },
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"))
+ },
+ },
+ },
+ {
+ name: "change human username, not found",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &ChangeHuman{
+ Username: gu.Ptr("changed"),
+ },
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowNotFound(nil, "COMMAND-ugjs0upun6", "Errors.User.NotFound"))
+ },
+ },
+ },
+ {
+ name: "change human username, ok",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ true,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectPush(
+ user.NewUsernameChangedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "username",
+ "changed",
+ true,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &ChangeHuman{
+ Username: gu.Ptr("changed"),
+ },
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ Sequence: 0,
+ EventDate: time.Time{},
+ ResourceOwner: "org1",
+ },
+ },
+ },
+ {
+ name: "change human username, no change",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &ChangeHuman{
+ Username: gu.Ptr("username"),
+ },
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ Sequence: 0,
+ EventDate: time.Time{},
+ ResourceOwner: "org1",
+ },
+ },
+ },
+ {
+ name: "change human profile, no permission",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckNotAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &ChangeHuman{
+ Profile: &Profile{
+ FirstName: gu.Ptr("changedfn"),
+ LastName: gu.Ptr("changedln"),
+ NickName: gu.Ptr("changednn"),
+ DisplayName: gu.Ptr("changeddn"),
+ PreferredLanguage: gu.Ptr(language.Afrikaans),
+ Gender: gu.Ptr(domain.GenderDiverse),
+ },
+ },
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"))
+ },
+ },
+ },
+ {
+ name: "change human profile, ok",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ ),
+ expectPush(
+ func() eventstore.Command {
+ cmd, _ := user.NewHumanProfileChangedEvent(context.Background(),
+ &userAgg.Aggregate,
+ []user.ProfileChanges{
+ user.ChangeFirstName("changedfn"),
+ user.ChangeLastName("changedln"),
+ user.ChangeNickName("changednn"),
+ user.ChangeDisplayName("changeddn"),
+ user.ChangePreferredLanguage(language.Afrikaans),
+ user.ChangeGender(domain.GenderDiverse),
+ },
+ )
+ return cmd
+ }(),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &ChangeHuman{
+ Profile: &Profile{
+ FirstName: gu.Ptr("changedfn"),
+ LastName: gu.Ptr("changedln"),
+ NickName: gu.Ptr("changednn"),
+ DisplayName: gu.Ptr("changeddn"),
+ PreferredLanguage: gu.Ptr(language.Afrikaans),
+ Gender: gu.Ptr(domain.GenderDiverse),
+ },
+ },
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ Sequence: 0,
+ EventDate: time.Time{},
+ ResourceOwner: "org1",
+ },
+ },
+ },
+ {
+ name: "change human profile, no change",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &ChangeHuman{
+ Profile: &Profile{
+ FirstName: gu.Ptr("firstname"),
+ LastName: gu.Ptr("lastname"),
+ NickName: gu.Ptr(""),
+ DisplayName: gu.Ptr("firstname lastname"),
+ PreferredLanguage: gu.Ptr(language.English),
+ Gender: gu.Ptr(domain.GenderUnspecified),
+ },
+ },
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ Sequence: 0,
+ EventDate: time.Time{},
+ ResourceOwner: "org1",
+ },
+ },
+ },
+ {
+ name: "change human email, ok",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ ),
+ expectPush(
+ user.NewHumanEmailChangedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "changed@example.com",
+ ),
+ user.NewHumanEmailCodeAddedEventV2(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("emailCode"),
+ },
+ time.Hour,
+ "",
+ false,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ newCode: mockCode("emailCode", time.Hour),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &ChangeHuman{
+ Email: &Email{
+ Address: "changed@example.com",
+ },
+ },
+ codeAlg: crypto.CreateMockEncryptionAlg(gomock.NewController(t)),
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ Sequence: 0,
+ EventDate: time.Time{},
+ ResourceOwner: "org1",
+ },
+ },
+ },
+ {
+ name: "change human email, no change",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &ChangeHuman{
+ Email: &Email{
+ Address: "email@test.ch",
+ },
+ },
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ Sequence: 0,
+ EventDate: time.Time{},
+ ResourceOwner: "org1",
+ },
+ },
+ },
+ {
+ name: "change human email verified, not allowed",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckNotAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &ChangeHuman{
+ Email: &Email{
+ Address: "changed@example.com",
+ Verified: true,
+ },
+ },
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"))
+ },
+ },
+ },
+ {
+ name: "change human email verified, ok",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ ),
+ expectPush(
+ user.NewHumanEmailChangedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "changed@example.com",
+ ),
+ user.NewHumanEmailVerifiedEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &ChangeHuman{
+ Email: &Email{
+ Address: "changed@example.com",
+ Verified: true,
+ },
+ },
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ Sequence: 0,
+ EventDate: time.Time{},
+ ResourceOwner: "org1",
+ },
+ },
+ },
+ {
+ name: "change human email isVerified, ok",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ ),
+ expectPush(
+ user.NewHumanEmailVerifiedEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &ChangeHuman{
+ Email: &Email{
+ Verified: true,
+ },
+ },
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ Sequence: 0,
+ EventDate: time.Time{},
+ ResourceOwner: "org1",
+ },
+ },
+ },
+ {
+ name: "change human email returnCode, ok",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ ),
+ expectPush(
+ user.NewHumanEmailChangedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "changed@test.com",
+ ),
+ user.NewHumanEmailCodeAddedEventV2(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("emailCode"),
+ },
+ time.Hour,
+ "",
+ true,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ newCode: mockCode("emailCode", time.Hour),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &ChangeHuman{
+ Email: &Email{
+ Address: "changed@test.com",
+ ReturnCode: true,
+ },
+ },
+ codeAlg: crypto.CreateMockEncryptionAlg(gomock.NewController(t)),
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ Sequence: 0,
+ EventDate: time.Time{},
+ ResourceOwner: "org1",
+ },
+ wantEmailCode: gu.Ptr("emailCode"),
+ },
+ },
+ {
+ name: "change human phone, ok",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ ),
+ expectPush(
+ user.NewHumanPhoneChangedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "+41791234567",
+ ),
+ user.NewHumanPhoneCodeAddedEventV2(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("phoneCode"),
+ },
+ time.Hour,
+ false,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ newCode: mockCode("phoneCode", time.Hour),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &ChangeHuman{
+ Phone: &Phone{
+ Number: "+41791234567",
+ },
+ },
+ codeAlg: crypto.CreateMockEncryptionAlg(gomock.NewController(t)),
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ Sequence: 0,
+ EventDate: time.Time{},
+ ResourceOwner: "org1",
+ },
+ },
+ }, {
+ name: "change human phone verified, not allowed",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckNotAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &ChangeHuman{
+ Phone: &Phone{
+ Number: "+41791234567",
+ Verified: true,
+ },
+ },
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"))
+ },
+ },
+ },
+ {
+ name: "change human phone verified, ok",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ ),
+ expectPush(
+ user.NewHumanPhoneChangedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "+41791234567",
+ ),
+ user.NewHumanPhoneVerifiedEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &ChangeHuman{
+ Phone: &Phone{
+ Number: "+41791234567",
+ Verified: true,
+ },
+ },
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ Sequence: 0,
+ EventDate: time.Time{},
+ ResourceOwner: "org1",
+ },
+ },
+ },
+ {
+ name: "change human phone isVerified, ok",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ ),
+ expectPush(
+ user.NewHumanPhoneVerifiedEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &ChangeHuman{
+ Phone: &Phone{
+ Verified: true,
+ },
+ },
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ Sequence: 0,
+ EventDate: time.Time{},
+ ResourceOwner: "org1",
+ },
+ },
+ },
+ {
+ name: "change human phone returnCode, ok",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ ),
+ expectPush(
+ user.NewHumanPhoneChangedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "+41791234567",
+ ),
+ user.NewHumanPhoneCodeAddedEventV2(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("phoneCode"),
+ },
+ time.Hour,
+ true,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ newCode: mockCode("phoneCode", time.Hour),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &ChangeHuman{
+ Phone: &Phone{
+ Number: "+41791234567",
+ ReturnCode: true,
+ },
+ },
+ codeAlg: crypto.CreateMockEncryptionAlg(gomock.NewController(t)),
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ Sequence: 0,
+ EventDate: time.Time{},
+ ResourceOwner: "org1",
+ },
+ wantPhoneCode: gu.Ptr("phoneCode"),
+ },
+ },
+ {
+ name: "password change, no password, invalid argument error",
+ fields: fields{
+ eventstore: expectEventstore(),
+ checkPermission: newMockPermissionCheckAllowed(),
+ userPasswordHasher: mockPasswordHasher("x"),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &ChangeHuman{
+ Password: &Password{},
+ },
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "COMMAND-3klek4sbns", "Errors.User.Password.Empty"))
+ },
+ },
+ },
+ {
+ name: "change human password, not initialized",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewHumanInitialCodeAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ nil, time.Hour*1,
+ ),
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ userPasswordHasher: mockPasswordHasher("x"),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &ChangeHuman{
+ Password: &Password{
+ Password: gu.Ptr("password2"),
+ OldPassword: gu.Ptr("password"),
+ ChangeRequired: true,
+ },
+ },
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowPreconditionFailed(nil, "COMMAND-M9dse", "Errors.User.NotInitialised"))
+ },
+ },
+ },
+ {
+ name: "change human password, not in complexity",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewHumanInitializedCheckSucceededEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ 1,
+ false,
+ true,
+ false,
+ false,
+ ),
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ userPasswordHasher: mockPasswordHasher("x"),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &ChangeHuman{
+ Password: &Password{
+ Password: gu.Ptr("password2"),
+ OldPassword: gu.Ptr("password"),
+ ChangeRequired: true,
+ },
+ },
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "DOMAIN-VoaRj", "Errors.User.PasswordComplexityPolicy.HasUpper"))
+ },
+ },
+ },
+ {
+ name: "change human password, empty",
+ fields: fields{
+ eventstore: expectEventstore(),
+ checkPermission: newMockPermissionCheckAllowed(),
+ userPasswordHasher: mockPasswordHasher("x"),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &ChangeHuman{
+ Password: &Password{
+ OldPassword: gu.Ptr("password"),
+ ChangeRequired: true,
+ },
+ },
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "COMMAND-3klek4sbns", "Errors.User.Password.Empty"))
+ },
+ },
+ },
+ {
+ name: "change human password, not allowed",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewHumanInitializedCheckSucceededEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ ),
+ ),
+ userPasswordHasher: mockPasswordHasher("x"),
+ checkPermission: newMockPermissionCheckNotAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &ChangeHuman{
+ Password: &Password{
+ Password: gu.Ptr("password2"),
+ ChangeRequired: true,
+ },
+ },
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"))
+ },
+ },
+ },
+ {
+ name: "change human password, permission, ok",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewHumanInitializedCheckSucceededEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ 1,
+ false,
+ false,
+ false,
+ false,
+ ),
+ ),
+ ),
+ expectPush(
+ user.NewHumanPasswordChangedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "$plain$x$password2",
+ true,
+ "",
+ ),
+ ),
+ ),
+ userPasswordHasher: mockPasswordHasher("x"),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &ChangeHuman{
+ Password: &Password{
+ Password: gu.Ptr("password2"),
+ ChangeRequired: true,
+ },
+ },
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ Sequence: 0,
+ EventDate: time.Time{},
+ ResourceOwner: "org1",
+ },
+ },
+ },
+ {
+ name: "change human password, old password, ok",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewHumanInitializedCheckSucceededEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ 1,
+ false,
+ false,
+ false,
+ false,
+ ),
+ ),
+ ),
+ expectPush(
+ user.NewHumanPasswordChangedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "$plain$x$password2",
+ true,
+ "",
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ userPasswordHasher: mockPasswordHasher("x"),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &ChangeHuman{
+ Password: &Password{
+ Password: gu.Ptr("password2"),
+ OldPassword: gu.Ptr("password"),
+ ChangeRequired: true,
+ },
+ },
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ Sequence: 0,
+ EventDate: time.Time{},
+ ResourceOwner: "org1",
+ },
+ },
+ },
+ {
+ name: "change human password, old password, failed",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewHumanInitializedCheckSucceededEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ userPasswordHasher: mockPasswordHasher("x"),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &ChangeHuman{
+ Password: &Password{
+ Password: gu.Ptr("password2"),
+ OldPassword: gu.Ptr("wrong"),
+ ChangeRequired: true,
+ },
+ },
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "COMMAND-3M0fs", "Errors.User.Password.Invalid"))
+ },
+ },
+ },
+ {
+ name: "change human password, password code, ok",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewHumanInitializedCheckSucceededEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ eventFromEventPusherWithCreationDateNow(
+ user.NewHumanPasswordCodeAddedEventV2(context.Background(),
+ &userAgg.Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("code"),
+ },
+ time.Hour*1,
+ domain.NotificationTypeEmail,
+ "",
+ false,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ 1,
+ false,
+ false,
+ false,
+ false,
+ ),
+ ),
+ ),
+ expectPush(
+ user.NewHumanPasswordChangedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "$plain$x$password2",
+ true,
+ "",
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ userPasswordHasher: mockPasswordHasher("x"),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &ChangeHuman{
+ Password: &Password{
+ Password: gu.Ptr("password2"),
+ PasswordCode: gu.Ptr("code"),
+ ChangeRequired: true,
+ },
+ },
+ codeAlg: crypto.CreateMockEncryptionAlg(gomock.NewController(t)),
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ Sequence: 0,
+ EventDate: time.Time{},
+ ResourceOwner: "org1",
+ },
+ },
+ },
+ {
+ name: "change human password, password code, wrong code",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewHumanInitializedCheckSucceededEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ eventFromEventPusherWithCreationDateNow(
+ user.NewHumanPasswordCodeAddedEventV2(context.Background(),
+ &userAgg.Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("code"),
+ },
+ time.Hour*1,
+ domain.NotificationTypeEmail,
+ "",
+ false,
+ ),
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ userPasswordHasher: mockPasswordHasher("x"),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &ChangeHuman{
+ Password: &Password{
+ Password: gu.Ptr("password2"),
+ PasswordCode: gu.Ptr("wrong"),
+ ChangeRequired: true,
+ },
+ },
+ codeAlg: crypto.CreateMockEncryptionAlg(gomock.NewController(t)),
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "CODE-woT0xc", "Errors.User.Code.Invalid"))
+ },
+ },
+ },
+ {
+ name: "change human password encoded, password code, ok",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewHumanInitializedCheckSucceededEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ eventFromEventPusherWithCreationDateNow(
+ user.NewHumanPasswordCodeAddedEventV2(context.Background(),
+ &userAgg.Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("code"),
+ },
+ time.Hour*1,
+ domain.NotificationTypeEmail,
+ "",
+ false,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ 1,
+ false,
+ false,
+ false,
+ false,
+ ),
+ ),
+ ),
+ expectPush(
+ user.NewHumanPasswordChangedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "$plain$x$password2",
+ true,
+ "",
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ userPasswordHasher: mockPasswordHasher("x"),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &ChangeHuman{
+ Password: &Password{
+ EncodedPasswordHash: gu.Ptr("$plain$x$password2"),
+ PasswordCode: gu.Ptr("code"),
+ ChangeRequired: true,
+ },
+ },
+ codeAlg: crypto.CreateMockEncryptionAlg(gomock.NewController(t)),
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ Sequence: 0,
+ EventDate: time.Time{},
+ ResourceOwner: "org1",
+ },
+ },
+ },
+ {
+ name: "change human password and password encoded, password code, encoded used",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewHumanInitializedCheckSucceededEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ eventFromEventPusherWithCreationDateNow(
+ user.NewHumanPasswordCodeAddedEventV2(context.Background(),
+ &userAgg.Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("code"),
+ },
+ time.Hour*1,
+ domain.NotificationTypeEmail,
+ "",
+ false,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewPasswordComplexityPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ 1,
+ false,
+ false,
+ false,
+ false,
+ ),
+ ),
+ ),
+ expectPush(
+ user.NewHumanPasswordChangedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "$plain$x$password2",
+ true,
+ "",
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ userPasswordHasher: mockPasswordHasher("x"),
+ },
+ args: args{
+ ctx: context.Background(),
+ orgID: "org1",
+ human: &ChangeHuman{
+ Password: &Password{
+ Password: gu.Ptr("passwordnotused"),
+ EncodedPasswordHash: gu.Ptr("$plain$x$password2"),
+ PasswordCode: gu.Ptr("code"),
+ ChangeRequired: true,
+ },
+ },
+ codeAlg: crypto.CreateMockEncryptionAlg(gomock.NewController(t)),
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ Sequence: 0,
+ EventDate: time.Time{},
+ ResourceOwner: "org1",
+ },
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ r := &Commands{
+ eventstore: tt.fields.eventstore(t),
+ userPasswordHasher: tt.fields.userPasswordHasher,
+ newCode: tt.fields.newCode,
+ checkPermission: tt.fields.checkPermission,
+ }
+ err := r.ChangeUserHuman(tt.args.ctx, tt.args.human, tt.args.codeAlg)
+ if tt.res.err == nil {
+ if !assert.NoError(t, err) {
+ t.FailNow()
+ }
+ } else if !tt.res.err(err) {
+ t.Errorf("got wrong err: %v ", err)
+ return
+ }
+ if tt.res.err == nil {
+ assert.Equal(t, tt.res.want, tt.args.human.Details)
+ assert.Equal(t, tt.res.wantEmailCode, tt.args.human.EmailCode)
+ assert.Equal(t, tt.res.wantPhoneCode, tt.args.human.PhoneCode)
+ }
+ })
+ }
+}
diff --git a/internal/command/user_v2_model.go b/internal/command/user_v2_model.go
new file mode 100644
index 0000000000..381a463884
--- /dev/null
+++ b/internal/command/user_v2_model.go
@@ -0,0 +1,558 @@
+package command
+
+import (
+ "context"
+ "time"
+
+ "golang.org/x/text/language"
+
+ "github.com/zitadel/zitadel/internal/crypto"
+ "github.com/zitadel/zitadel/internal/domain"
+ "github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/repository/user"
+)
+
+type UserV2WriteModel struct {
+ eventstore.WriteModel
+
+ UserName string
+
+ MachineWriteModel bool
+ Name string
+ Description string
+ AccessTokenType domain.OIDCTokenType
+
+ MachineSecretWriteModel bool
+ ClientSecret *crypto.CryptoValue
+
+ ProfileWriteModel bool
+ FirstName string
+ LastName string
+ NickName string
+ DisplayName string
+ PreferredLanguage language.Tag
+ Gender domain.Gender
+
+ AvatarWriteModel bool
+ Avatar string
+
+ HumanWriteModel bool
+ InitCode *crypto.CryptoValue
+ InitCodeCreationDate time.Time
+ InitCodeExpiry time.Duration
+ InitCheckFailedCount uint64
+
+ PasswordWriteModel bool
+ PasswordEncodedHash string
+ PasswordChangeRequired bool
+ PasswordCode *crypto.CryptoValue
+ PasswordCodeCreationDate time.Time
+ PasswordCodeExpiry time.Duration
+ PasswordCheckFailedCount uint64
+
+ EmailWriteModel bool
+ Email domain.EmailAddress
+ IsEmailVerified bool
+ EmailCode *crypto.CryptoValue
+ EmailCodeCreationDate time.Time
+ EmailCodeExpiry time.Duration
+ EmailCheckFailedCount uint64
+
+ PhoneWriteModel bool
+ Phone domain.PhoneNumber
+ IsPhoneVerified bool
+ PhoneCode *crypto.CryptoValue
+ PhoneCodeCreationDate time.Time
+ PhoneCodeExpiry time.Duration
+ PhoneCheckFailedCount uint64
+
+ StateWriteModel bool
+ UserState domain.UserState
+
+ IDPLinkWriteModel bool
+ IDPLinks []*domain.UserIDPLink
+}
+
+func NewUserExistsWriteModel(userID, resourceOwner string) *UserV2WriteModel {
+ return newUserV2WriteModel(userID, resourceOwner, WithHuman(), WithMachine())
+}
+
+func NewUserStateWriteModel(userID, resourceOwner string) *UserV2WriteModel {
+ return newUserV2WriteModel(userID, resourceOwner, WithHuman(), WithMachine(), WithState())
+}
+
+func NewUserRemoveWriteModel(userID, resourceOwner string) *UserV2WriteModel {
+ return newUserV2WriteModel(userID, resourceOwner, WithHuman(), WithMachine(), WithState(), WithIDPLinks())
+}
+
+func NewUserHumanWriteModel(userID, resourceOwner string, profileWM, emailWM, phoneWM, passwordWM, avatarWM, idpLinks bool) *UserV2WriteModel {
+ opts := []UserV2WMOption{WithHuman(), WithState()}
+ if profileWM {
+ opts = append(opts, WithProfile())
+ }
+ if emailWM {
+ opts = append(opts, WithEmail())
+ }
+ if phoneWM {
+ opts = append(opts, WithPhone())
+ }
+ if passwordWM {
+ opts = append(opts, WithPassword())
+ }
+ if avatarWM {
+ opts = append(opts, WithAvatar())
+ }
+ if idpLinks {
+ opts = append(opts, WithIDPLinks())
+ }
+ return newUserV2WriteModel(userID, resourceOwner, opts...)
+}
+
+func newUserV2WriteModel(userID, resourceOwner string, opts ...UserV2WMOption) *UserV2WriteModel {
+ wm := &UserV2WriteModel{
+ WriteModel: eventstore.WriteModel{
+ AggregateID: userID,
+ ResourceOwner: resourceOwner,
+ },
+ }
+
+ for _, optFunc := range opts {
+ optFunc(wm)
+ }
+ return wm
+}
+
+type UserV2WMOption func(o *UserV2WriteModel)
+
+func WithHuman() UserV2WMOption {
+ return func(o *UserV2WriteModel) {
+ o.HumanWriteModel = true
+ }
+}
+func WithMachine() UserV2WMOption {
+ return func(o *UserV2WriteModel) {
+ o.MachineWriteModel = true
+ }
+}
+func WithProfile() UserV2WMOption {
+ return func(o *UserV2WriteModel) {
+ o.ProfileWriteModel = true
+ }
+}
+func WithEmail() UserV2WMOption {
+ return func(o *UserV2WriteModel) {
+ o.EmailWriteModel = true
+ }
+}
+func WithPhone() UserV2WMOption {
+ return func(o *UserV2WriteModel) {
+ o.PhoneWriteModel = true
+ }
+}
+func WithPassword() UserV2WMOption {
+ return func(o *UserV2WriteModel) {
+ o.PasswordWriteModel = true
+ }
+}
+func WithState() UserV2WMOption {
+ return func(o *UserV2WriteModel) {
+ o.StateWriteModel = true
+ }
+}
+func WithAvatar() UserV2WMOption {
+ return func(o *UserV2WriteModel) {
+ o.AvatarWriteModel = true
+ }
+}
+func WithIDPLinks() UserV2WMOption {
+ return func(o *UserV2WriteModel) {
+ o.IDPLinkWriteModel = true
+ }
+}
+
+func (wm *UserV2WriteModel) Reduce() error {
+ for _, event := range wm.Events {
+ switch e := event.(type) {
+ case *user.HumanAddedEvent:
+ wm.reduceHumanAddedEvent(e)
+ case *user.HumanRegisteredEvent:
+ wm.reduceHumanRegisteredEvent(e)
+
+ case *user.HumanInitialCodeAddedEvent:
+ wm.UserState = domain.UserStateInitial
+ wm.SetInitCode(e.Code, e.Expiry, e.CreationDate())
+ case *user.HumanInitializedCheckSucceededEvent:
+ wm.UserState = domain.UserStateActive
+ wm.EmptyInitCode()
+ case *user.HumanInitializedCheckFailedEvent:
+ wm.InitCheckFailedCount += 1
+
+ case *user.UsernameChangedEvent:
+ wm.UserName = e.UserName
+ case *user.HumanProfileChangedEvent:
+ wm.reduceHumanProfileChangedEvent(e)
+
+ case *user.MachineChangedEvent:
+ if e.Name != nil {
+ wm.Name = *e.Name
+ }
+ if e.Description != nil {
+ wm.Description = *e.Description
+ }
+ if e.AccessTokenType != nil {
+ wm.AccessTokenType = *e.AccessTokenType
+ }
+
+ case *user.MachineAddedEvent:
+ wm.UserName = e.UserName
+ wm.Name = e.Name
+ wm.Description = e.Description
+ wm.AccessTokenType = e.AccessTokenType
+ wm.UserState = domain.UserStateActive
+
+ case *user.HumanEmailChangedEvent:
+ wm.Email = e.EmailAddress
+ wm.IsEmailVerified = false
+ wm.EmptyEmailCode()
+ case *user.HumanEmailCodeAddedEvent:
+ wm.IsEmailVerified = false
+ wm.SetEMailCode(e.Code, e.Expiry, e.CreationDate())
+ case *user.HumanEmailVerifiedEvent:
+ wm.IsEmailVerified = true
+ wm.EmptyEmailCode()
+ case *user.HumanEmailVerificationFailedEvent:
+ wm.EmailCheckFailedCount += 1
+
+ case *user.HumanPhoneChangedEvent:
+ wm.IsPhoneVerified = false
+ wm.Phone = e.PhoneNumber
+ wm.EmptyPhoneCode()
+ case *user.HumanPhoneCodeAddedEvent:
+ wm.IsPhoneVerified = false
+ wm.SetPhoneCode(e.Code, e.Expiry, e.CreationDate())
+ case *user.HumanPhoneVerifiedEvent:
+ wm.IsPhoneVerified = true
+ wm.EmptyPhoneCode()
+ case *user.HumanPhoneVerificationFailedEvent:
+ wm.PhoneCheckFailedCount += 1
+ case *user.HumanPhoneRemovedEvent:
+ wm.EmptyPhoneCode()
+ wm.Phone = ""
+ wm.IsPhoneVerified = false
+
+ case *user.HumanAvatarAddedEvent:
+ wm.Avatar = e.StoreKey
+ case *user.HumanAvatarRemovedEvent:
+ wm.Avatar = ""
+
+ case *user.UserLockedEvent:
+ wm.UserState = domain.UserStateLocked
+ case *user.UserUnlockedEvent:
+ wm.PasswordCheckFailedCount = 0
+ wm.UserState = domain.UserStateActive
+
+ case *user.UserDeactivatedEvent:
+ wm.UserState = domain.UserStateInactive
+ case *user.UserReactivatedEvent:
+ wm.UserState = domain.UserStateActive
+
+ case *user.UserRemovedEvent:
+ wm.UserState = domain.UserStateDeleted
+
+ case *user.HumanPasswordHashUpdatedEvent:
+ wm.PasswordEncodedHash = e.EncodedHash
+ case *user.HumanPasswordCheckFailedEvent:
+ wm.PasswordCheckFailedCount += 1
+ case *user.HumanPasswordCheckSucceededEvent:
+ wm.PasswordCheckFailedCount = 0
+ case *user.HumanPasswordChangedEvent:
+ wm.PasswordEncodedHash = user.SecretOrEncodedHash(e.Secret, e.EncodedHash)
+ wm.PasswordChangeRequired = e.ChangeRequired
+ wm.EmptyPasswordCode()
+ case *user.HumanPasswordCodeAddedEvent:
+ wm.SetPasswordCode(e.Code, e.Expiry, e.CreationDate())
+ case *user.UserIDPLinkAddedEvent:
+ wm.AddIDPLink(e.IDPConfigID, e.DisplayName, e.ExternalUserID)
+ case *user.UserIDPLinkRemovedEvent:
+ wm.RemoveIDPLink(e.IDPConfigID, e.ExternalUserID)
+ case *user.UserIDPLinkCascadeRemovedEvent:
+ wm.RemoveIDPLink(e.IDPConfigID, e.ExternalUserID)
+ }
+ }
+ return wm.WriteModel.Reduce()
+}
+
+func (wm *UserV2WriteModel) AddIDPLink(configID, displayName, externalUserID string) {
+ wm.IDPLinks = append(wm.IDPLinks, &domain.UserIDPLink{IDPConfigID: configID, DisplayName: displayName, ExternalUserID: externalUserID})
+}
+
+func (wm *UserV2WriteModel) RemoveIDPLink(configID, externalUserID string) {
+ idx, _ := wm.IDPLinkByID(configID, externalUserID)
+ if idx < 0 {
+ return
+ }
+ copy(wm.IDPLinks[idx:], wm.IDPLinks[idx+1:])
+ wm.IDPLinks[len(wm.IDPLinks)-1] = nil
+ wm.IDPLinks = wm.IDPLinks[:len(wm.IDPLinks)-1]
+}
+
+func (wm *UserV2WriteModel) EmptyInitCode() {
+ wm.InitCode = nil
+ wm.InitCodeExpiry = 0
+ wm.InitCodeCreationDate = time.Time{}
+ wm.InitCheckFailedCount = 0
+}
+func (wm *UserV2WriteModel) SetInitCode(code *crypto.CryptoValue, expiry time.Duration, creationDate time.Time) {
+ wm.InitCode = code
+ wm.InitCodeExpiry = expiry
+ wm.InitCodeCreationDate = creationDate
+ wm.InitCheckFailedCount = 0
+}
+func (wm *UserV2WriteModel) EmptyEmailCode() {
+ wm.EmailCode = nil
+ wm.EmailCodeExpiry = 0
+ wm.EmailCodeCreationDate = time.Time{}
+ wm.EmailCheckFailedCount = 0
+}
+func (wm *UserV2WriteModel) SetEMailCode(code *crypto.CryptoValue, expiry time.Duration, creationDate time.Time) {
+ wm.EmailCode = code
+ wm.EmailCodeExpiry = expiry
+ wm.EmailCodeCreationDate = creationDate
+ wm.EmailCheckFailedCount = 0
+}
+func (wm *UserV2WriteModel) EmptyPhoneCode() {
+ wm.PhoneCode = nil
+ wm.PhoneCodeExpiry = 0
+ wm.PhoneCodeCreationDate = time.Time{}
+ wm.PhoneCheckFailedCount = 0
+}
+func (wm *UserV2WriteModel) SetPhoneCode(code *crypto.CryptoValue, expiry time.Duration, creationDate time.Time) {
+ wm.PhoneCode = code
+ wm.PhoneCodeExpiry = expiry
+ wm.PhoneCodeCreationDate = creationDate
+ wm.PhoneCheckFailedCount = 0
+}
+func (wm *UserV2WriteModel) EmptyPasswordCode() {
+ wm.PasswordCode = nil
+ wm.PasswordCodeExpiry = 0
+ wm.PasswordCodeCreationDate = time.Time{}
+}
+func (wm *UserV2WriteModel) SetPasswordCode(code *crypto.CryptoValue, expiry time.Duration, creationDate time.Time) {
+ wm.PasswordCode = code
+ wm.PasswordCodeExpiry = expiry
+ wm.PasswordCodeCreationDate = creationDate
+}
+
+func (wm *UserV2WriteModel) Query() *eventstore.SearchQueryBuilder {
+ // remove events are always processed
+ // and username is based for machine and human
+ eventTypes := []eventstore.EventType{
+ user.UserRemovedType,
+ user.UserUserNameChangedType,
+ }
+
+ if wm.HumanWriteModel {
+ eventTypes = append(eventTypes,
+ user.UserV1AddedType,
+ user.HumanAddedType,
+ user.UserV1RegisteredType,
+ user.HumanRegisteredType,
+ )
+ }
+
+ if wm.MachineWriteModel {
+ eventTypes = append(eventTypes,
+ user.MachineChangedEventType,
+ user.MachineAddedEventType,
+ )
+ }
+
+ if wm.EmailWriteModel {
+ eventTypes = append(eventTypes,
+ user.UserV1EmailChangedType,
+ user.HumanEmailChangedType,
+ user.UserV1EmailCodeAddedType,
+ user.HumanEmailCodeAddedType,
+
+ user.UserV1EmailVerifiedType,
+ user.HumanEmailVerifiedType,
+ user.HumanEmailVerificationFailedType,
+ user.UserV1EmailVerificationFailedType,
+ )
+ }
+ if wm.PhoneWriteModel {
+ eventTypes = append(eventTypes,
+ user.UserV1PhoneChangedType,
+ user.HumanPhoneChangedType,
+ user.UserV1PhoneCodeAddedType,
+ user.HumanPhoneCodeAddedType,
+
+ user.UserV1PhoneVerifiedType,
+ user.HumanPhoneVerifiedType,
+ user.HumanPhoneVerificationFailedType,
+ user.UserV1PhoneVerificationFailedType,
+
+ user.UserV1PhoneRemovedType,
+ user.HumanPhoneRemovedType,
+ )
+ }
+ if wm.ProfileWriteModel {
+ eventTypes = append(eventTypes,
+ user.UserV1ProfileChangedType,
+ user.HumanProfileChangedType,
+ )
+ }
+ if wm.StateWriteModel {
+ eventTypes = append(eventTypes,
+ user.UserV1InitialCodeAddedType,
+ user.HumanInitialCodeAddedType,
+
+ user.UserV1InitializedCheckSucceededType,
+ user.HumanInitializedCheckSucceededType,
+ user.HumanInitializedCheckFailedType,
+ user.UserV1InitializedCheckFailedType,
+
+ user.UserLockedType,
+ user.UserUnlockedType,
+ user.UserDeactivatedType,
+ user.UserReactivatedType,
+ )
+ }
+ if wm.AvatarWriteModel {
+ eventTypes = append(eventTypes,
+ user.HumanAvatarAddedType,
+ user.HumanAvatarRemovedType,
+ )
+ }
+ if wm.PasswordWriteModel {
+ eventTypes = append(eventTypes,
+ user.HumanPasswordHashUpdatedType,
+
+ user.HumanPasswordChangedType,
+ user.UserV1PasswordChangedType,
+ user.HumanPasswordCodeAddedType,
+ user.UserV1PasswordCodeAddedType,
+
+ user.HumanPasswordCheckFailedType,
+ user.UserV1PasswordCheckFailedType,
+ user.HumanPasswordCheckSucceededType,
+ user.UserV1PasswordCheckSucceededType,
+ )
+ }
+ if wm.IDPLinkWriteModel {
+ eventTypes = append(eventTypes,
+ user.UserIDPLinkAddedType,
+ user.UserIDPLinkRemovedType,
+ user.UserIDPLinkCascadeRemovedType,
+ )
+ }
+
+ query := eventstore.NewSearchQueryBuilder(eventstore.ColumnsEvent).
+ AddQuery().
+ AggregateTypes(user.AggregateType).
+ AggregateIDs(wm.AggregateID).
+ EventTypes(eventTypes...).
+ Builder()
+ if wm.ResourceOwner != "" {
+ query.ResourceOwner(wm.ResourceOwner)
+ }
+ return query
+}
+
+func (wm *UserV2WriteModel) reduceHumanAddedEvent(e *user.HumanAddedEvent) {
+ wm.UserName = e.UserName
+ wm.FirstName = e.FirstName
+ wm.LastName = e.LastName
+ wm.NickName = e.NickName
+ wm.DisplayName = e.DisplayName
+ wm.PreferredLanguage = e.PreferredLanguage
+ wm.Gender = e.Gender
+ wm.Email = e.EmailAddress
+ wm.Phone = e.PhoneNumber
+ wm.UserState = domain.UserStateActive
+ wm.PasswordEncodedHash = user.SecretOrEncodedHash(e.Secret, e.EncodedHash)
+ wm.PasswordChangeRequired = e.ChangeRequired
+}
+
+func (wm *UserV2WriteModel) reduceHumanRegisteredEvent(e *user.HumanRegisteredEvent) {
+ wm.UserName = e.UserName
+ wm.FirstName = e.FirstName
+ wm.LastName = e.LastName
+ wm.NickName = e.NickName
+ wm.DisplayName = e.DisplayName
+ wm.PreferredLanguage = e.PreferredLanguage
+ wm.Gender = e.Gender
+ wm.Email = e.EmailAddress
+ wm.Phone = e.PhoneNumber
+ wm.UserState = domain.UserStateActive
+ wm.PasswordEncodedHash = user.SecretOrEncodedHash(e.Secret, e.EncodedHash)
+ wm.PasswordChangeRequired = e.ChangeRequired
+}
+
+func (wm *UserV2WriteModel) reduceHumanProfileChangedEvent(e *user.HumanProfileChangedEvent) {
+ if e.FirstName != "" {
+ wm.FirstName = e.FirstName
+ }
+ if e.LastName != "" {
+ wm.LastName = e.LastName
+ }
+ if e.NickName != nil {
+ wm.NickName = *e.NickName
+ }
+ if e.DisplayName != nil {
+ wm.DisplayName = *e.DisplayName
+ }
+ if e.PreferredLanguage != nil {
+ wm.PreferredLanguage = *e.PreferredLanguage
+ }
+ if e.Gender != nil {
+ wm.Gender = *e.Gender
+ }
+}
+
+func (wm *UserV2WriteModel) Aggregate() *user.Aggregate {
+ return user.NewAggregate(wm.AggregateID, wm.ResourceOwner)
+}
+
+func (wm *UserV2WriteModel) NewProfileChangedEvent(
+ ctx context.Context,
+ firstName,
+ lastName,
+ nickName,
+ displayName *string,
+ preferredLanguage *language.Tag,
+ gender *domain.Gender,
+) (*user.HumanProfileChangedEvent, error) {
+ changes := make([]user.ProfileChanges, 0)
+ if firstName != nil && wm.FirstName != *firstName {
+ changes = append(changes, user.ChangeFirstName(*firstName))
+ }
+ if lastName != nil && wm.LastName != *lastName {
+ changes = append(changes, user.ChangeLastName(*lastName))
+ }
+ if nickName != nil && wm.NickName != *nickName {
+ changes = append(changes, user.ChangeNickName(*nickName))
+ }
+ if displayName != nil && wm.DisplayName != *displayName {
+ changes = append(changes, user.ChangeDisplayName(*displayName))
+ }
+ if preferredLanguage != nil && wm.PreferredLanguage != *preferredLanguage {
+ changes = append(changes, user.ChangePreferredLanguage(*preferredLanguage))
+ }
+ if gender != nil && wm.Gender != *gender {
+ changes = append(changes, user.ChangeGender(*gender))
+ }
+ if len(changes) == 0 {
+ return nil, nil
+ }
+ return user.NewHumanProfileChangedEvent(ctx, &wm.Aggregate().Aggregate, changes)
+}
+
+func (wm *UserV2WriteModel) IDPLinkByID(idpID, externalUserID string) (idx int, idp *domain.UserIDPLink) {
+ for idx, idp = range wm.IDPLinks {
+ if idp.IDPConfigID == idpID && idp.ExternalUserID == externalUserID {
+ return idx, idp
+ }
+ }
+ return -1, nil
+}
diff --git a/internal/command/user_v2_model_test.go b/internal/command/user_v2_model_test.go
new file mode 100644
index 0000000000..7c77e491fd
--- /dev/null
+++ b/internal/command/user_v2_model_test.go
@@ -0,0 +1,2386 @@
+package command
+
+import (
+ "context"
+ "testing"
+ "time"
+
+ "github.com/stretchr/testify/assert"
+ "golang.org/x/text/language"
+
+ "github.com/zitadel/zitadel/internal/crypto"
+ "github.com/zitadel/zitadel/internal/domain"
+ "github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/repository/user"
+)
+
+func TestCommandSide_userExistsWriteModel(t *testing.T) {
+ type fields struct {
+ eventstore func(t *testing.T) *eventstore.Eventstore
+ }
+ type args struct {
+ ctx context.Context
+ userID string
+ }
+ type res struct {
+ want *UserV2WriteModel
+ err func(error) bool
+ }
+
+ userAgg := user.NewAggregate("user1", "org1")
+
+ tests := []struct {
+ name string
+ fields fields
+ args args
+ res res
+ }{
+ {
+ name: "user added",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ MachineWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "$plain$x$password",
+ PasswordChangeRequired: true,
+ Email: "email@test.ch",
+ IsEmailVerified: false,
+ InitCode: nil,
+ InitCodeCreationDate: time.Time{},
+ InitCodeExpiry: 0,
+ UserState: domain.UserStateActive,
+ },
+ },
+ },
+ {
+ name: "user registered",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newRegisterHumanEvent("username", "$plain$x$password", true, true, "", language.English),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ MachineWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PasswordEncodedHash: "$plain$x$password",
+ PasswordChangeRequired: true,
+ Email: "email@test.ch",
+ IsEmailVerified: false,
+ InitCode: nil,
+ InitCodeCreationDate: time.Time{},
+ InitCodeExpiry: 0,
+ PreferredLanguage: language.English,
+ UserState: domain.UserStateActive,
+ },
+ },
+ },
+ {
+ name: "user machine added",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddMachineEvent(true, domain.OIDCTokenTypeBearer),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ MachineWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ Name: "name",
+ Description: "description",
+ AccessTokenType: domain.OIDCTokenTypeBearer,
+ UserState: domain.UserStateActive,
+ },
+ },
+ },
+ {
+ name: "user added with init code",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newRegisterHumanEvent("username", "$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewHumanInitialCodeAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("a"),
+ },
+ time.Hour*1,
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ MachineWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "$plain$x$password",
+ PasswordChangeRequired: true,
+ Email: "email@test.ch",
+ IsEmailVerified: false,
+ InitCode: &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("a"),
+ },
+ InitCodeCreationDate: time.Time{},
+ InitCodeExpiry: time.Hour * 1,
+ UserState: domain.UserStateInitial,
+ },
+ },
+ },
+ {
+ name: "user added with initialized",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newRegisterHumanEvent("username", "$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewHumanInitialCodeAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("a"),
+ },
+ time.Hour*1,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewHumanInitializedCheckSucceededEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ MachineWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "$plain$x$password",
+ PasswordChangeRequired: true,
+ Email: "email@test.ch",
+ IsEmailVerified: false,
+ UserState: domain.UserStateActive,
+ },
+ },
+ },
+ {
+ name: "user added with initialized failed",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newRegisterHumanEvent("username", "$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewHumanInitialCodeAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("a"),
+ },
+ time.Hour*1,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewHumanInitializedCheckFailedEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ MachineWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "$plain$x$password",
+ PasswordChangeRequired: true,
+ Email: "email@test.ch",
+ IsEmailVerified: false,
+ InitCode: &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("a"),
+ },
+ InitCodeCreationDate: time.Time{},
+ InitCodeExpiry: time.Hour * 1,
+ InitCheckFailedCount: 1,
+ UserState: domain.UserStateInitial,
+ },
+ },
+ },
+ {
+ name: "user added with username changed",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newRegisterHumanEvent("username", "$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewUsernameChangedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "username",
+ "changed",
+ true,
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ MachineWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "changed",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "$plain$x$password",
+ PasswordChangeRequired: true,
+ Email: "email@test.ch",
+ IsEmailVerified: false,
+ UserState: domain.UserStateActive,
+ },
+ },
+ },
+ {
+ name: "user removed",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewUserRemovedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "username",
+ []*domain.UserIDPLink{},
+ true,
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ MachineWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "$plain$x$password",
+ PasswordChangeRequired: true,
+ Email: "email@test.ch",
+ IsEmailVerified: false,
+ UserState: domain.UserStateDeleted,
+ },
+ },
+ },
+ {
+ name: "user machine removed",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddMachineEvent(true, domain.OIDCTokenTypeBearer),
+ ),
+ eventFromEventPusher(
+ user.NewUserRemovedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "username",
+ []*domain.UserIDPLink{},
+ true,
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ MachineWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ Name: "name",
+ Description: "description",
+ AccessTokenType: domain.OIDCTokenTypeBearer,
+ UserState: domain.UserStateDeleted,
+ },
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ r := &Commands{
+ eventstore: tt.fields.eventstore(t),
+ }
+ wm, err := r.userExistsWriteModel(tt.args.ctx, tt.args.userID)
+ if tt.res.err == nil {
+ if !assert.NoError(t, err) {
+ t.FailNow()
+ }
+ } else if !tt.res.err(err) {
+ t.Errorf("got wrong err: %v ", err)
+ return
+ }
+ if tt.res.err == nil {
+ assert.Equal(t, tt.res.want, wm)
+ }
+ })
+ }
+}
+
+func TestCommandSide_userHumanWriteModel_profile(t *testing.T) {
+ type fields struct {
+ eventstore func(t *testing.T) *eventstore.Eventstore
+ }
+ type args struct {
+ ctx context.Context
+ userID string
+ }
+ type res struct {
+ want *UserV2WriteModel
+ err func(error) bool
+ }
+
+ userAgg := user.NewAggregate("user1", "org1")
+ tests := []struct {
+ name string
+ fields fields
+ args args
+ res res
+ }{
+ {
+ name: "user added with profile changed",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newRegisterHumanEvent("username", "$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ func() eventstore.Command {
+ cmd, _ := user.NewHumanProfileChangedEvent(context.Background(),
+ &userAgg.Aggregate,
+ []user.ProfileChanges{
+ user.ChangeFirstName("changedfn"),
+ user.ChangeLastName("changedln"),
+ user.ChangeNickName("changednn"),
+ user.ChangeDisplayName("changeddn"),
+ user.ChangePreferredLanguage(language.Afrikaans),
+ user.ChangeGender(domain.GenderDiverse),
+ },
+ )
+ return cmd
+ }(),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ ProfileWriteModel: true,
+ StateWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "changedfn",
+ LastName: "changedln",
+ DisplayName: "changeddn",
+ NickName: "changednn",
+ PreferredLanguage: language.Afrikaans,
+ Gender: domain.GenderDiverse,
+ PasswordEncodedHash: "$plain$x$password",
+ PasswordChangeRequired: true,
+ Email: "email@test.ch",
+ IsEmailVerified: false,
+ UserState: domain.UserStateActive,
+ },
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ r := &Commands{
+ eventstore: tt.fields.eventstore(t),
+ }
+ wm, err := r.userHumanWriteModel(tt.args.ctx, tt.args.userID, true, false, false, false, false, false)
+ if tt.res.err == nil {
+ if !assert.NoError(t, err) {
+ t.FailNow()
+ }
+ } else if !tt.res.err(err) {
+ t.Errorf("got wrong err: %v ", err)
+ return
+ }
+ if tt.res.err == nil {
+ assert.Equal(t, tt.res.want, wm)
+ }
+ })
+ }
+}
+
+func TestCommandSide_userHumanWriteModel_email(t *testing.T) {
+ type fields struct {
+ eventstore func(t *testing.T) *eventstore.Eventstore
+ }
+ type args struct {
+ ctx context.Context
+ userID string
+ }
+ type res struct {
+ want *UserV2WriteModel
+ err func(error) bool
+ }
+
+ userAgg := user.NewAggregate("user1", "org1")
+
+ tests := []struct {
+ name string
+ fields fields
+ args args
+ res res
+ }{
+ {
+ name: "user added email changed",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewHumanEmailChangedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "changed@test.com",
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ EmailWriteModel: true,
+ StateWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "$plain$x$password",
+ PasswordChangeRequired: true,
+ Email: "changed@test.com",
+ IsEmailVerified: false,
+ InitCode: nil,
+ InitCodeCreationDate: time.Time{},
+ InitCodeExpiry: 0,
+ UserState: domain.UserStateActive,
+ },
+ },
+ },
+ {
+ name: "user added with email code",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newRegisterHumanEvent("username", "$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewHumanEmailCodeAddedEventV2(context.Background(),
+ &userAgg.Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("a"),
+ },
+ time.Hour*1,
+ "",
+ false,
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ EmailWriteModel: true,
+ StateWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "$plain$x$password",
+ PasswordChangeRequired: true,
+ Email: "email@test.ch",
+ IsEmailVerified: false,
+ EmailCode: &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("a"),
+ },
+ EmailCodeCreationDate: time.Time{},
+ EmailCodeExpiry: time.Hour * 1,
+ UserState: domain.UserStateActive,
+ },
+ },
+ },
+ {
+ name: "user added with email code verified",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newRegisterHumanEvent("username", "$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewHumanEmailCodeAddedEventV2(context.Background(),
+ &userAgg.Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("a"),
+ },
+ time.Hour*1,
+ "",
+ false,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewHumanEmailVerifiedEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ EmailWriteModel: true,
+ StateWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "$plain$x$password",
+ PasswordChangeRequired: true,
+ Email: "email@test.ch",
+ IsEmailVerified: true,
+ UserState: domain.UserStateActive,
+ },
+ },
+ },
+ {
+ name: "user added with email code verified failed",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newRegisterHumanEvent("username", "$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewHumanEmailCodeAddedEventV2(context.Background(),
+ &userAgg.Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("a"),
+ },
+ time.Hour*1,
+ "",
+ false,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewHumanEmailVerificationFailedEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ EmailWriteModel: true,
+ StateWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "$plain$x$password",
+ PasswordChangeRequired: true,
+ Email: "email@test.ch",
+ IsEmailVerified: false,
+ EmailCode: &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("a"),
+ },
+ EmailCodeCreationDate: time.Time{},
+ EmailCodeExpiry: time.Hour * 1,
+ EmailCheckFailedCount: 1,
+ UserState: domain.UserStateActive,
+ },
+ },
+ },
+ {
+ name: "user added with email code verified, then changed",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newRegisterHumanEvent("username", "$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewHumanEmailCodeAddedEventV2(context.Background(),
+ &userAgg.Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("a"),
+ },
+ time.Hour*1,
+ "",
+ false,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewHumanEmailVerifiedEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewHumanEmailChangedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "changed@test.com",
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ EmailWriteModel: true,
+ StateWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "$plain$x$password",
+ PasswordChangeRequired: true,
+ Email: "changed@test.com",
+ IsEmailVerified: false,
+ UserState: domain.UserStateActive,
+ },
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ r := &Commands{
+ eventstore: tt.fields.eventstore(t),
+ }
+ wm, err := r.userHumanWriteModel(tt.args.ctx, tt.args.userID, false, true, false, false, false, false)
+ if tt.res.err == nil {
+ if !assert.NoError(t, err) {
+ t.FailNow()
+ }
+ } else if !tt.res.err(err) {
+ t.Errorf("got wrong err: %v ", err)
+ return
+ }
+ if tt.res.err == nil {
+ assert.Equal(t, tt.res.want, wm)
+ }
+ })
+ }
+}
+
+func TestCommandSide_userHumanWriteModel_phone(t *testing.T) {
+ type fields struct {
+ eventstore func(t *testing.T) *eventstore.Eventstore
+ }
+ type args struct {
+ ctx context.Context
+ userID string
+ }
+ type res struct {
+ want *UserV2WriteModel
+ err func(error) bool
+ }
+
+ userAgg := user.NewAggregate("user1", "org1")
+
+ tests := []struct {
+ name string
+ fields fields
+ args args
+ res res
+ }{
+ {
+ name: "user added phone changed",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewHumanPhoneChangedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "+41791234567",
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ PhoneWriteModel: true,
+ StateWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "$plain$x$password",
+ PasswordChangeRequired: true,
+ Email: "email@test.ch",
+ IsEmailVerified: false,
+ Phone: "+41791234567",
+ IsPhoneVerified: false,
+ UserState: domain.UserStateActive,
+ },
+ },
+ },
+ {
+ name: "user added with phone code",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newRegisterHumanEvent("username", "$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewHumanPhoneChangedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "+41791234567",
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewHumanPhoneCodeAddedEventV2(context.Background(),
+ &userAgg.Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("a"),
+ },
+ time.Hour*1,
+ false,
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ PhoneWriteModel: true,
+ StateWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "$plain$x$password",
+ PasswordChangeRequired: true,
+ Email: "email@test.ch",
+ IsEmailVerified: false,
+ Phone: "+41791234567",
+ IsPhoneVerified: false,
+ PhoneCode: &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("a"),
+ },
+ PhoneCodeCreationDate: time.Time{},
+ PhoneCodeExpiry: time.Hour * 1,
+ UserState: domain.UserStateActive,
+ },
+ },
+ },
+ {
+ name: "user added with phone code verified",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newRegisterHumanEvent("username", "$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewHumanPhoneChangedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "+41791234567",
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewHumanPhoneCodeAddedEventV2(context.Background(),
+ &userAgg.Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("a"),
+ },
+ time.Hour*1,
+ false,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewHumanPhoneVerifiedEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ PhoneWriteModel: true,
+ StateWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "$plain$x$password",
+ PasswordChangeRequired: true,
+ Email: "email@test.ch",
+ IsEmailVerified: false,
+ Phone: "+41791234567",
+ IsPhoneVerified: true,
+ UserState: domain.UserStateActive,
+ },
+ },
+ },
+ {
+ name: "user added with phone code verified failed",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newRegisterHumanEvent("username", "$plain$x$password", true, true, "", language.English),
+ ),
+
+ eventFromEventPusher(
+ user.NewHumanPhoneChangedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "+41791234567",
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewHumanPhoneCodeAddedEventV2(context.Background(),
+ &userAgg.Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("a"),
+ },
+ time.Hour*1,
+ false,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewHumanPhoneVerificationFailedEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ PhoneWriteModel: true,
+ StateWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "$plain$x$password",
+ PasswordChangeRequired: true,
+ Email: "email@test.ch",
+ IsEmailVerified: false,
+ Phone: "+41791234567",
+ IsPhoneVerified: false,
+ PhoneCode: &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("a"),
+ },
+ PhoneCodeCreationDate: time.Time{},
+ PhoneCodeExpiry: time.Hour * 1,
+ PhoneCheckFailedCount: 1,
+ UserState: domain.UserStateActive,
+ },
+ },
+ },
+ {
+ name: "user added with email code verified, then changed",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newRegisterHumanEvent("username", "$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewHumanPhoneChangedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "+41791234567",
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewHumanPhoneCodeAddedEventV2(context.Background(),
+ &userAgg.Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("a"),
+ },
+ time.Hour*1,
+ false,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewHumanPhoneVerifiedEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewHumanPhoneChangedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "+41797654321",
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ PhoneWriteModel: true,
+ StateWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "$plain$x$password",
+ PasswordChangeRequired: true,
+ Email: "email@test.ch",
+ IsEmailVerified: false,
+ Phone: "+41797654321",
+ IsPhoneVerified: false,
+ UserState: domain.UserStateActive,
+ },
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ r := &Commands{
+ eventstore: tt.fields.eventstore(t),
+ }
+ wm, err := r.userHumanWriteModel(tt.args.ctx, tt.args.userID, false, false, true, false, false, false)
+ if tt.res.err == nil {
+ if !assert.NoError(t, err) {
+ t.FailNow()
+ }
+ } else if !tt.res.err(err) {
+ t.Errorf("got wrong err: %v ", err)
+ return
+ }
+ if tt.res.err == nil {
+ assert.Equal(t, tt.res.want, wm)
+ }
+ })
+ }
+}
+
+func TestCommandSide_userHumanWriteModel_password(t *testing.T) {
+ type fields struct {
+ eventstore func(t *testing.T) *eventstore.Eventstore
+ }
+ type args struct {
+ ctx context.Context
+ userID string
+ }
+ type res struct {
+ want *UserV2WriteModel
+ err func(error) bool
+ }
+
+ userAgg := user.NewAggregate("user1", "org1")
+
+ tests := []struct {
+ name string
+ fields fields
+ args args
+ res res
+ }{
+ {
+ name: "user added password hashchanged",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewHumanPasswordHashUpdatedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "hash",
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ PasswordWriteModel: true,
+ StateWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "hash",
+ PasswordChangeRequired: true,
+ Email: "email@test.ch",
+ IsEmailVerified: false,
+ UserState: domain.UserStateActive,
+ },
+ },
+ },
+ {
+ name: "user added password changed",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewHumanPasswordChangedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "hash",
+ false,
+ "",
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ PasswordWriteModel: true,
+ StateWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "hash",
+ PasswordChangeRequired: false,
+ Email: "email@test.ch",
+ IsEmailVerified: false,
+ UserState: domain.UserStateActive,
+ },
+ },
+ },
+ {
+ name: "user added with password code",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newRegisterHumanEvent("username", "$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewHumanPasswordCodeAddedEventV2(context.Background(),
+ &userAgg.Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("a"),
+ },
+ time.Hour*1,
+ domain.NotificationTypeEmail,
+ "",
+ false,
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ PasswordWriteModel: true,
+ StateWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "$plain$x$password",
+ PasswordChangeRequired: true,
+ Email: "email@test.ch",
+ IsEmailVerified: false,
+ PasswordCode: &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("a"),
+ },
+ PasswordCodeCreationDate: time.Time{},
+ PasswordCodeExpiry: time.Hour * 1,
+ UserState: domain.UserStateActive,
+ },
+ },
+ },
+ {
+ name: "user added with password code and then change",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newRegisterHumanEvent("username", "$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewHumanPasswordCodeAddedEventV2(context.Background(),
+ &userAgg.Aggregate,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeEncryption,
+ Algorithm: "enc",
+ KeyID: "id",
+ Crypted: []byte("a"),
+ },
+ time.Hour*1,
+ domain.NotificationTypeEmail,
+ "",
+ false,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewHumanPasswordChangedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "hash",
+ true,
+ "",
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ PasswordWriteModel: true,
+ StateWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "hash",
+ PasswordChangeRequired: true,
+ Email: "email@test.ch",
+ IsEmailVerified: false,
+ UserState: domain.UserStateActive,
+ },
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ r := &Commands{
+ eventstore: tt.fields.eventstore(t),
+ }
+ wm, err := r.userHumanWriteModel(tt.args.ctx, tt.args.userID, false, false, false, true, false, false)
+ if tt.res.err == nil {
+ if !assert.NoError(t, err) {
+ t.FailNow()
+ }
+ } else if !tt.res.err(err) {
+ t.Errorf("got wrong err: %v ", err)
+ return
+ }
+ if tt.res.err == nil {
+ assert.Equal(t, tt.res.want, wm)
+ }
+ })
+ }
+}
+
+func TestCommandSide_userStateWriteModel(t *testing.T) {
+ type fields struct {
+ eventstore func(t *testing.T) *eventstore.Eventstore
+ }
+ type args struct {
+ ctx context.Context
+ userID string
+ }
+ type res struct {
+ want *UserV2WriteModel
+ err func(error) bool
+ }
+
+ userAgg := user.NewAggregate("user1", "org1")
+
+ tests := []struct {
+ name string
+ fields fields
+ args args
+ res res
+ }{
+ {
+ name: "user added",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ MachineWriteModel: true,
+ StateWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "$plain$x$password",
+ PasswordChangeRequired: true,
+ PasswordCheckFailedCount: 0,
+ Email: "email@test.ch",
+ IsEmailVerified: false,
+ UserState: domain.UserStateActive,
+ },
+ },
+ },
+ {
+ name: "user added initialized",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewHumanInitializedCheckSucceededEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ MachineWriteModel: true,
+ StateWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "$plain$x$password",
+ PasswordChangeRequired: true,
+ PasswordCheckFailedCount: 0,
+ Email: "email@test.ch",
+ IsEmailVerified: false,
+ UserState: domain.UserStateActive,
+ },
+ },
+ },
+ {
+ name: "user machine added",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddMachineEvent(true, domain.OIDCTokenTypeBearer),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ MachineWriteModel: true,
+ StateWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ Name: "name",
+ Description: "description",
+ AccessTokenType: domain.OIDCTokenTypeBearer,
+ UserState: domain.UserStateActive,
+ },
+ },
+ },
+ {
+ name: "user added locked",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewHumanPasswordCheckFailedEvent(context.Background(),
+ &userAgg.Aggregate,
+ nil,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewHumanPasswordCheckFailedEvent(context.Background(),
+ &userAgg.Aggregate,
+ nil,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewHumanPasswordCheckFailedEvent(context.Background(),
+ &userAgg.Aggregate,
+ nil,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewUserLockedEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ MachineWriteModel: true,
+ StateWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "$plain$x$password",
+ PasswordChangeRequired: true,
+ PasswordCheckFailedCount: 3,
+ Email: "email@test.ch",
+ IsEmailVerified: false,
+ UserState: domain.UserStateLocked,
+ },
+ },
+ },
+ {
+ name: "user added locked and unlocked",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newRegisterHumanEvent("username", "$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewHumanPasswordCheckFailedEvent(context.Background(),
+ &userAgg.Aggregate,
+ nil,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewHumanPasswordCheckFailedEvent(context.Background(),
+ &userAgg.Aggregate,
+ nil,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewHumanPasswordCheckFailedEvent(context.Background(),
+ &userAgg.Aggregate,
+ nil,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewUserLockedEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewUserUnlockedEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ MachineWriteModel: true,
+ StateWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "$plain$x$password",
+ PasswordChangeRequired: true,
+ PasswordCheckFailedCount: 0,
+ Email: "email@test.ch",
+ IsEmailVerified: false,
+ UserState: domain.UserStateActive,
+ },
+ },
+ },
+ {
+ name: "user added deactivated",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newRegisterHumanEvent("username", "$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewUserDeactivatedEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ MachineWriteModel: true,
+ StateWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "$plain$x$password",
+ PasswordChangeRequired: true,
+ Email: "email@test.ch",
+ IsEmailVerified: false,
+ UserState: domain.UserStateInactive,
+ },
+ },
+ },
+ {
+ name: "user added deactivated and reactived",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newRegisterHumanEvent("username", "$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewUserDeactivatedEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewUserReactivatedEvent(context.Background(),
+ &userAgg.Aggregate,
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ MachineWriteModel: true,
+ StateWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "$plain$x$password",
+ PasswordChangeRequired: true,
+ Email: "email@test.ch",
+ IsEmailVerified: false,
+ UserState: domain.UserStateActive,
+ },
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ r := &Commands{
+ eventstore: tt.fields.eventstore(t),
+ }
+ wm, err := r.userStateWriteModel(tt.args.ctx, tt.args.userID)
+ if tt.res.err == nil {
+ if !assert.NoError(t, err) {
+ t.FailNow()
+ }
+ } else if !tt.res.err(err) {
+ t.Errorf("got wrong err: %v ", err)
+ return
+ }
+ if tt.res.err == nil {
+ assert.Equal(t, tt.res.want, wm)
+ }
+ })
+ }
+}
+
+func TestCommandSide_userHumanWriteModel_avatar(t *testing.T) {
+ type fields struct {
+ eventstore func(t *testing.T) *eventstore.Eventstore
+ }
+ type args struct {
+ ctx context.Context
+ userID string
+ }
+ type res struct {
+ want *UserV2WriteModel
+ err func(error) bool
+ }
+
+ userAgg := user.NewAggregate("user1", "org1")
+
+ tests := []struct {
+ name string
+ fields fields
+ args args
+ res res
+ }{
+ {
+ name: "user added with avatar",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewHumanAvatarAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "key",
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ AvatarWriteModel: true,
+ StateWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "$plain$x$password",
+ PasswordChangeRequired: true,
+ Email: "email@test.ch",
+ IsEmailVerified: false,
+ UserState: domain.UserStateActive,
+ Avatar: "key",
+ },
+ },
+ },
+
+ {
+ name: "user added with avatar and then removed",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewHumanAvatarAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "key",
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewHumanAvatarRemovedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "key",
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ AvatarWriteModel: true,
+ StateWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "$plain$x$password",
+ PasswordChangeRequired: true,
+ Email: "email@test.ch",
+ IsEmailVerified: false,
+ UserState: domain.UserStateActive,
+ },
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ r := &Commands{
+ eventstore: tt.fields.eventstore(t),
+ }
+ wm, err := r.userHumanWriteModel(tt.args.ctx, tt.args.userID, false, false, false, false, true, false)
+ if tt.res.err == nil {
+ if !assert.NoError(t, err) {
+ t.FailNow()
+ }
+ } else if !tt.res.err(err) {
+ t.Errorf("got wrong err: %v ", err)
+ return
+ }
+ if tt.res.err == nil {
+ assert.Equal(t, tt.res.want, wm)
+ }
+ })
+ }
+}
+
+func TestCommandSide_userHumanWriteModel_idpLinks(t *testing.T) {
+ type fields struct {
+ eventstore func(t *testing.T) *eventstore.Eventstore
+ }
+ type args struct {
+ ctx context.Context
+ userID string
+ }
+ type res struct {
+ want *UserV2WriteModel
+ err func(error) bool
+ }
+
+ userAgg := user.NewAggregate("user1", "org1")
+
+ tests := []struct {
+ name string
+ fields fields
+ args args
+ res res
+ }{
+ {
+ name: "user added with idp link",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewUserIDPLinkAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "idp",
+ "name",
+ "externalID",
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ MachineWriteModel: true,
+ StateWriteModel: true,
+ IDPLinkWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "$plain$x$password",
+ PasswordChangeRequired: true,
+ Email: "email@test.ch",
+ IsEmailVerified: false,
+ UserState: domain.UserStateActive,
+ IDPLinks: []*domain.UserIDPLink{
+ {IDPConfigID: "idp", DisplayName: "name", ExternalUserID: "externalID"},
+ },
+ },
+ },
+ },
+ {
+ name: "user added with idp links",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewUserIDPLinkAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "idp1",
+ "name1",
+ "externalID1",
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewUserIDPLinkAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "idp2",
+ "name2",
+ "externalID2",
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewUserIDPLinkAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "idp3",
+ "name3",
+ "externalID3",
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ MachineWriteModel: true,
+ StateWriteModel: true,
+ IDPLinkWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "$plain$x$password",
+ PasswordChangeRequired: true,
+ Email: "email@test.ch",
+ IsEmailVerified: false,
+ UserState: domain.UserStateActive,
+ IDPLinks: []*domain.UserIDPLink{
+ {IDPConfigID: "idp1", DisplayName: "name1", ExternalUserID: "externalID1"},
+ {IDPConfigID: "idp2", DisplayName: "name2", ExternalUserID: "externalID2"},
+ {IDPConfigID: "idp3", DisplayName: "name3", ExternalUserID: "externalID3"},
+ },
+ },
+ },
+ },
+ {
+ name: "user added with idp links and removed",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewUserIDPLinkAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "idp1",
+ "name1",
+ "externalID1",
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewUserIDPLinkAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "idp2",
+ "name2",
+ "externalID2",
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewUserIDPLinkAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "idp3",
+ "name3",
+ "externalID3",
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewUserIDPLinkCascadeRemovedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "idp2",
+ "externalID2",
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewUserIDPLinkRemovedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "idp3",
+ "externalID3",
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewUserIDPLinkAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "idp4",
+ "name4",
+ "externalID4",
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ MachineWriteModel: true,
+ StateWriteModel: true,
+ IDPLinkWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "$plain$x$password",
+ PasswordChangeRequired: true,
+ Email: "email@test.ch",
+ IsEmailVerified: false,
+ UserState: domain.UserStateActive,
+ IDPLinks: []*domain.UserIDPLink{
+ {IDPConfigID: "idp1", DisplayName: "name1", ExternalUserID: "externalID1"},
+ {IDPConfigID: "idp4", DisplayName: "name4", ExternalUserID: "externalID4"},
+ },
+ },
+ },
+ },
+ {
+ name: "user added with idp link and removed",
+ fields: fields{
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(
+ newAddHumanEvent("$plain$x$password", true, true, "", language.English),
+ ),
+ eventFromEventPusher(
+ user.NewUserIDPLinkAddedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "idp",
+ "name",
+ "externalID",
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewUserIDPLinkRemovedEvent(context.Background(),
+ &userAgg.Aggregate,
+ "idp",
+ "externalID",
+ ),
+ ),
+ ),
+ ),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &UserV2WriteModel{
+ HumanWriteModel: true,
+ MachineWriteModel: true,
+ StateWriteModel: true,
+ IDPLinkWriteModel: true,
+ WriteModel: eventstore.WriteModel{
+ AggregateID: "user1",
+ Events: []eventstore.Event{},
+ ProcessedSequence: 0,
+ ResourceOwner: "org1",
+ },
+ UserName: "username",
+ FirstName: "firstname",
+ LastName: "lastname",
+ DisplayName: "firstname lastname",
+ PreferredLanguage: language.English,
+ PasswordEncodedHash: "$plain$x$password",
+ PasswordChangeRequired: true,
+ Email: "email@test.ch",
+ IsEmailVerified: false,
+ UserState: domain.UserStateActive,
+ IDPLinks: []*domain.UserIDPLink{},
+ },
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ r := &Commands{
+ eventstore: tt.fields.eventstore(t),
+ }
+ wm, err := r.userRemoveWriteModel(tt.args.ctx, tt.args.userID)
+ if tt.res.err == nil {
+ if !assert.NoError(t, err) {
+ t.FailNow()
+ }
+ } else if !tt.res.err(err) {
+ t.Errorf("got wrong err: %v ", err)
+ return
+ }
+ if tt.res.err == nil {
+ assert.Equal(t, tt.res.want, wm)
+ }
+ })
+ }
+}
diff --git a/internal/command/user_v2_passkey.go b/internal/command/user_v2_passkey.go
index 47af8c134e..698b805d76 100644
--- a/internal/command/user_v2_passkey.go
+++ b/internal/command/user_v2_passkey.go
@@ -10,9 +10,9 @@ import (
"github.com/zitadel/zitadel/internal/command/preparation"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
// RegisterUserPasskey creates a passkey registration for the current authenticated user.
@@ -51,7 +51,7 @@ func (c *Commands) verifyUserPasskeyCode(ctx context.Context, userID, resourceOw
err = verifyCryptoCode(ctx, c.eventstore.Filter, domain.SecretGeneratorTypePasswordlessInitCode, alg, wm.ChangeDate, wm.Expiration, wm.CryptoCode, code)
if err != nil || wm.State != domain.PasswordlessInitCodeStateActive {
c.verifyUserPasskeyCodeFailed(ctx, wm)
- return nil, caos_errs.ThrowInvalidArgument(err, "COMMAND-Eeb2a", "Errors.User.Code.Invalid")
+ return nil, zerrors.ThrowInvalidArgument(err, "COMMAND-Eeb2a", "Errors.User.Code.Invalid")
}
return func(ctx context.Context, userAgg *eventstore.Aggregate) eventstore.Command {
return user.NewHumanPasswordlessInitCodeCheckSucceededEvent(ctx, userAgg, codeID)
diff --git a/internal/command/user_v2_passkey_test.go b/internal/command/user_v2_passkey_test.go
index 52c5fea7fe..1e972bbfd6 100644
--- a/internal/command/user_v2_passkey_test.go
+++ b/internal/command/user_v2_passkey_test.go
@@ -14,13 +14,13 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/id"
id_mock "github.com/zitadel/zitadel/internal/id/mock"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/user"
webauthn_helper "github.com/zitadel/zitadel/internal/webauthn"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommands_RegisterUserPasskey(t *testing.T) {
@@ -56,7 +56,7 @@ func TestCommands_RegisterUserPasskey(t *testing.T) {
resourceOwner: "org1",
authenticator: domain.AuthenticatorAttachmentCrossPlattform,
},
- wantErr: caos_errs.ThrowPermissionDenied(nil, "AUTH-Bohd2", "Errors.User.UserIDWrong"),
+ wantErr: zerrors.ThrowPermissionDenied(nil, "AUTH-Bohd2", "Errors.User.UserIDWrong"),
},
{
name: "get human passwordless error",
@@ -186,7 +186,7 @@ func TestCommands_RegisterUserPasskeyWithCode(t *testing.T) {
codeID: "123",
code: "wrong",
},
- wantErr: caos_errs.ThrowInvalidArgument(err, "COMMAND-Eeb2a", "Errors.User.Code.Invalid"),
+ wantErr: zerrors.ThrowInvalidArgument(err, "COMMAND-Eeb2a", "Errors.User.Code.Invalid"),
},
{
name: "code verification ok, get human passwordless error",
@@ -296,7 +296,7 @@ func TestCommands_verifyUserPasskeyCode(t *testing.T) {
codeID: "123",
code: "wrong",
},
- wantErr: caos_errs.ThrowInvalidArgument(err, "COMMAND-Eeb2a", "Errors.User.Code.Invalid"),
+ wantErr: zerrors.ThrowInvalidArgument(err, "COMMAND-Eeb2a", "Errors.User.Code.Invalid"),
},
{
name: "success",
@@ -573,7 +573,7 @@ func TestCommands_AddUserPasskeyCodeURLTemplate(t *testing.T) {
resourceOwner: "org1",
urlTmpl: "{{",
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "DOMAIN-oGh5e", "Errors.User.InvalidURLTemplate"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "DOMAIN-oGh5e", "Errors.User.InvalidURLTemplate"),
},
{
name: "id generator error",
diff --git a/internal/command/user_v2_password.go b/internal/command/user_v2_password.go
index 53b25c5e4a..d94bc0286c 100644
--- a/internal/command/user_v2_password.go
+++ b/internal/command/user_v2_password.go
@@ -6,8 +6,8 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
// RequestPasswordReset generates a code
@@ -38,17 +38,17 @@ func (c *Commands) RequestPasswordResetReturnCode(ctx context.Context, userID st
// urlTmpl allows changing the target URL that is used by the e-mail and should be a validated Go template, if used.
func (c *Commands) requestPasswordReset(ctx context.Context, userID string, returnCode bool, urlTmpl string, notificationType domain.NotificationType) (_ *domain.ObjectDetails, plainCode *string, err error) {
if userID == "" {
- return nil, nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-SAFdda", "Errors.User.IDMissing")
+ return nil, nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-SAFdda", "Errors.User.IDMissing")
}
model, err := c.getHumanWriteModelByID(ctx, userID, "")
if err != nil {
return nil, nil, err
}
if !model.UserState.Exists() {
- return nil, nil, caos_errs.ThrowNotFound(nil, "COMMAND-SAF4f", "Errors.User.NotFound")
+ return nil, nil, zerrors.ThrowNotFound(nil, "COMMAND-SAF4f", "Errors.User.NotFound")
}
if model.UserState == domain.UserStateInitial {
- return nil, nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Sfe4g", "Errors.User.NotInitialised")
+ return nil, nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-Sfe4g", "Errors.User.NotInitialised")
}
if authz.GetCtxData(ctx).UserID != userID {
if err = c.checkPermission(ctx, domain.PermissionUserWrite, model.ResourceOwner, userID); err != nil {
diff --git a/internal/command/user_v2_password_test.go b/internal/command/user_v2_password_test.go
index 2465c240f3..0b72c49220 100644
--- a/internal/command/user_v2_password_test.go
+++ b/internal/command/user_v2_password_test.go
@@ -5,16 +5,16 @@ import (
"testing"
"time"
+ "golang.org/x/text/language"
+
"github.com/muhlemmer/gu"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
- "golang.org/x/text/language"
-
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommands_RequestPasswordReset(t *testing.T) {
@@ -42,7 +42,7 @@ func TestCommands_RequestPasswordReset(t *testing.T) {
ctx: context.Background(),
userID: "",
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "COMMAND-SAFdda", "Errors.User.IDMissing"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "COMMAND-SAFdda", "Errors.User.IDMissing"),
},
{
name: "user not existing",
@@ -55,7 +55,7 @@ func TestCommands_RequestPasswordReset(t *testing.T) {
ctx: context.Background(),
userID: "userID",
},
- wantErr: caos_errs.ThrowNotFound(nil, "COMMAND-SAF4f", "Errors.User.NotFound"),
+ wantErr: zerrors.ThrowNotFound(nil, "COMMAND-SAF4f", "Errors.User.NotFound"),
},
{
name: "user not initialized",
@@ -78,7 +78,7 @@ func TestCommands_RequestPasswordReset(t *testing.T) {
ctx: context.Background(),
userID: "userID",
},
- wantErr: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Sfe4g", "Errors.User.NotInitialised"),
+ wantErr: zerrors.ThrowPreconditionFailed(nil, "COMMAND-Sfe4g", "Errors.User.NotInitialised"),
},
{
name: "missing permission",
@@ -98,7 +98,7 @@ func TestCommands_RequestPasswordReset(t *testing.T) {
ctx: context.Background(),
userID: "userID",
},
- wantErr: caos_errs.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
+ wantErr: zerrors.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
},
}
for _, tt := range tests {
@@ -140,7 +140,7 @@ func TestCommands_RequestPasswordResetReturnCode(t *testing.T) {
ctx: context.Background(),
userID: "",
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "COMMAND-SAFdda", "Errors.User.IDMissing"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "COMMAND-SAFdda", "Errors.User.IDMissing"),
},
{
name: "user not existing",
@@ -153,7 +153,7 @@ func TestCommands_RequestPasswordResetReturnCode(t *testing.T) {
ctx: context.Background(),
userID: "userID",
},
- wantErr: caos_errs.ThrowNotFound(nil, "COMMAND-SAF4f", "Errors.User.NotFound"),
+ wantErr: zerrors.ThrowNotFound(nil, "COMMAND-SAF4f", "Errors.User.NotFound"),
},
{
name: "user not initialized",
@@ -176,7 +176,7 @@ func TestCommands_RequestPasswordResetReturnCode(t *testing.T) {
ctx: context.Background(),
userID: "userID",
},
- wantErr: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Sfe4g", "Errors.User.NotInitialised"),
+ wantErr: zerrors.ThrowPreconditionFailed(nil, "COMMAND-Sfe4g", "Errors.User.NotInitialised"),
},
{
name: "missing permission",
@@ -196,7 +196,7 @@ func TestCommands_RequestPasswordResetReturnCode(t *testing.T) {
ctx: context.Background(),
userID: "userID",
},
- wantErr: caos_errs.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
+ wantErr: zerrors.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
},
}
for _, tt := range tests {
@@ -240,7 +240,7 @@ func TestCommands_RequestPasswordResetURLTemplate(t *testing.T) {
userID: "user1",
urlTmpl: "{{",
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "DOMAIN-oGh5e", "Errors.User.InvalidURLTemplate"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "DOMAIN-oGh5e", "Errors.User.InvalidURLTemplate"),
},
{
@@ -252,7 +252,7 @@ func TestCommands_RequestPasswordResetURLTemplate(t *testing.T) {
ctx: context.Background(),
userID: "",
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "COMMAND-SAFdda", "Errors.User.IDMissing"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "COMMAND-SAFdda", "Errors.User.IDMissing"),
},
{
name: "user not existing",
@@ -265,7 +265,7 @@ func TestCommands_RequestPasswordResetURLTemplate(t *testing.T) {
ctx: context.Background(),
userID: "userID",
},
- wantErr: caos_errs.ThrowNotFound(nil, "COMMAND-SAF4f", "Errors.User.NotFound"),
+ wantErr: zerrors.ThrowNotFound(nil, "COMMAND-SAF4f", "Errors.User.NotFound"),
},
{
name: "user not initialized",
@@ -288,7 +288,7 @@ func TestCommands_RequestPasswordResetURLTemplate(t *testing.T) {
ctx: context.Background(),
userID: "userID",
},
- wantErr: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Sfe4g", "Errors.User.NotInitialised"),
+ wantErr: zerrors.ThrowPreconditionFailed(nil, "COMMAND-Sfe4g", "Errors.User.NotInitialised"),
},
{
name: "missing permission",
@@ -308,7 +308,7 @@ func TestCommands_RequestPasswordResetURLTemplate(t *testing.T) {
ctx: context.Background(),
userID: "userID",
},
- wantErr: caos_errs.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
+ wantErr: zerrors.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
},
}
for _, tt := range tests {
@@ -360,7 +360,7 @@ func TestCommands_requestPasswordReset(t *testing.T) {
userID: "",
},
res: res{
- err: caos_errs.ThrowInvalidArgument(nil, "COMMAND-SAFdda", "Errors.User.IDMissing"),
+ err: zerrors.ThrowInvalidArgument(nil, "COMMAND-SAFdda", "Errors.User.IDMissing"),
},
},
{
@@ -375,7 +375,7 @@ func TestCommands_requestPasswordReset(t *testing.T) {
userID: "userID",
},
res: res{
- err: caos_errs.ThrowNotFound(nil, "COMMAND-SAF4f", "Errors.User.NotFound"),
+ err: zerrors.ThrowNotFound(nil, "COMMAND-SAF4f", "Errors.User.NotFound"),
},
},
{
@@ -400,7 +400,7 @@ func TestCommands_requestPasswordReset(t *testing.T) {
userID: "userID",
},
res: res{
- err: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Sfe4g", "Errors.User.NotInitialised"),
+ err: zerrors.ThrowPreconditionFailed(nil, "COMMAND-Sfe4g", "Errors.User.NotInitialised"),
},
},
{
@@ -422,7 +422,7 @@ func TestCommands_requestPasswordReset(t *testing.T) {
userID: "userID",
},
res: res{
- err: caos_errs.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
+ err: zerrors.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
},
},
{
diff --git a/internal/command/user_v2_phone.go b/internal/command/user_v2_phone.go
index b8e1174690..e501b3e3f1 100644
--- a/internal/command/user_v2_phone.go
+++ b/internal/command/user_v2_phone.go
@@ -8,9 +8,9 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
// ChangeUserPhone sets a user's phone number, generates a code
@@ -113,7 +113,7 @@ type UserPhoneEvents struct {
// If a model cannot be found, or it's state is invalid and error is returned.
func (c *Commands) NewUserPhoneEvents(ctx context.Context, userID, resourceOwner string) (*UserPhoneEvents, error) {
if userID == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-xP292j", "Errors.User.Phone.IDMissing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-xP292j", "Errors.User.Phone.IDMissing")
}
model, err := c.phoneWriteModelByID(ctx, userID, resourceOwner)
@@ -121,10 +121,10 @@ func (c *Commands) NewUserPhoneEvents(ctx context.Context, userID, resourceOwner
return nil, err
}
if model.UserState == domain.UserStateUnspecified || model.UserState == domain.UserStateDeleted {
- return nil, caos_errs.ThrowNotFound(nil, "COMMAND-ieJ2e", "Errors.User.Phone.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "COMMAND-ieJ2e", "Errors.User.Phone.NotFound")
}
if model.UserState == domain.UserStateInitial {
- return nil, caos_errs.ThrowPreconditionFailed(nil, "COMMAND-uz0Uu", "Errors.User.NotInitialised")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "COMMAND-uz0Uu", "Errors.User.NotInitialised")
}
return &UserPhoneEvents{
eventstore: c.eventstore,
@@ -142,7 +142,7 @@ func (c *UserPhoneEvents) Change(ctx context.Context, phone domain.PhoneNumber)
}
event, hasChanged := c.model.NewChangedEvent(ctx, c.aggregate, phone)
if !hasChanged {
- return caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Uch5e", "Errors.User.Phone.NotChanged")
+ return zerrors.ThrowPreconditionFailed(nil, "COMMAND-Uch5e", "Errors.User.Phone.NotChanged")
}
c.events = append(c.events, event)
return nil
@@ -170,7 +170,7 @@ func (c *UserPhoneEvents) AddGeneratedCode(ctx context.Context, gen crypto.Gener
func (c *UserPhoneEvents) VerifyCode(ctx context.Context, code string, gen crypto.Generator) error {
if code == "" {
- return caos_errs.ThrowInvalidArgument(nil, "COMMAND-Fia4a", "Errors.User.Code.Empty")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-Fia4a", "Errors.User.Code.Empty")
}
err := crypto.VerifyCode(c.model.CodeCreationDate, c.model.CodeExpiry, c.model.Code, code, gen)
@@ -180,7 +180,7 @@ func (c *UserPhoneEvents) VerifyCode(ctx context.Context, code string, gen crypt
}
_, err = c.eventstore.Push(ctx, user.NewHumanPhoneVerificationFailedEvent(ctx, c.aggregate))
logging.WithFields("id", "COMMAND-Zoo6b", "userID", c.aggregate.ID).OnError(err).Error("NewHumanPhoneVerificationFailedEvent push failed")
- return caos_errs.ThrowInvalidArgument(err, "COMMAND-eis9R", "Errors.User.Code.Invalid")
+ return zerrors.ThrowInvalidArgument(err, "COMMAND-eis9R", "Errors.User.Code.Invalid")
}
// Push all events to the eventstore and Reduce them into the Model.
diff --git a/internal/command/user_v2_phone_test.go b/internal/command/user_v2_phone_test.go
index 5e8ac63a9c..fe0c9f636f 100644
--- a/internal/command/user_v2_phone_test.go
+++ b/internal/command/user_v2_phone_test.go
@@ -13,11 +13,11 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommands_ChangeUserPhone(t *testing.T) {
@@ -78,7 +78,7 @@ func TestCommands_ChangeUserPhone(t *testing.T) {
resourceOwner: "org1",
phone: "",
},
- wantErr: caos_errs.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
+ wantErr: zerrors.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
},
{
name: "missing phone",
@@ -122,7 +122,7 @@ func TestCommands_ChangeUserPhone(t *testing.T) {
resourceOwner: "org1",
phone: "",
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "PHONE-Zt0NV", "Errors.User.Phone.Empty"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "PHONE-Zt0NV", "Errors.User.Phone.Empty"),
},
{
name: "not changed",
@@ -166,7 +166,7 @@ func TestCommands_ChangeUserPhone(t *testing.T) {
resourceOwner: "org1",
phone: "+41791234567",
},
- wantErr: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Uch5e", "Errors.User.Phone.NotChanged"),
+ wantErr: zerrors.ThrowPreconditionFailed(nil, "COMMAND-Uch5e", "Errors.User.Phone.NotChanged"),
},
}
for _, tt := range tests {
@@ -240,7 +240,7 @@ func TestCommands_ChangeUserPhoneReturnCode(t *testing.T) {
resourceOwner: "org1",
phone: "+41791234567",
},
- wantErr: caos_errs.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
+ wantErr: zerrors.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
},
{
name: "missing phone",
@@ -284,7 +284,7 @@ func TestCommands_ChangeUserPhoneReturnCode(t *testing.T) {
resourceOwner: "org1",
phone: "",
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "PHONE-Zt0NV", "Errors.User.Phone.Empty"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "PHONE-Zt0NV", "Errors.User.Phone.Empty"),
},
}
for _, tt := range tests {
@@ -328,7 +328,7 @@ func TestCommands_ChangeUserPhoneVerified(t *testing.T) {
resourceOwner: "org1",
phone: "+41791234567",
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "COMMAND-xP292j", "Errors.User.Phone.IDMissing"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "COMMAND-xP292j", "Errors.User.Phone.IDMissing"),
},
{
name: "missing permission",
@@ -363,7 +363,7 @@ func TestCommands_ChangeUserPhoneVerified(t *testing.T) {
resourceOwner: "org1",
phone: "+41791234567",
},
- wantErr: caos_errs.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
+ wantErr: zerrors.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
},
{
name: "missing phone",
@@ -398,7 +398,7 @@ func TestCommands_ChangeUserPhoneVerified(t *testing.T) {
resourceOwner: "org1",
phone: "",
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "PHONE-Zt0NV", "Errors.User.Phone.Empty"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "PHONE-Zt0NV", "Errors.User.Phone.Empty"),
},
{
name: "phone changed",
@@ -494,7 +494,7 @@ func TestCommands_changeUserPhoneWithGenerator(t *testing.T) {
phone: "+41791234567",
returnCode: false,
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "COMMAND-xP292j", "Errors.User.Phone.IDMissing"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "COMMAND-xP292j", "Errors.User.Phone.IDMissing"),
},
{
name: "missing permission",
@@ -530,7 +530,7 @@ func TestCommands_changeUserPhoneWithGenerator(t *testing.T) {
phone: "+41791234567",
returnCode: false,
},
- wantErr: caos_errs.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
+ wantErr: zerrors.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"),
},
{
name: "missing phone",
@@ -566,7 +566,7 @@ func TestCommands_changeUserPhoneWithGenerator(t *testing.T) {
phone: "",
returnCode: false,
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "PHONE-Zt0NV", "Errors.User.Phone.Empty"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "PHONE-Zt0NV", "Errors.User.Phone.Empty"),
},
{
name: "not changed",
@@ -602,7 +602,7 @@ func TestCommands_changeUserPhoneWithGenerator(t *testing.T) {
phone: "+41791234567",
returnCode: false,
},
- wantErr: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-Uch5e", "Errors.User.Phone.NotChanged"),
+ wantErr: zerrors.ThrowPreconditionFailed(nil, "COMMAND-Uch5e", "Errors.User.Phone.NotChanged"),
},
{
name: "phone changed",
diff --git a/internal/command/user_v2_test.go b/internal/command/user_v2_test.go
new file mode 100644
index 0000000000..15597b7dd7
--- /dev/null
+++ b/internal/command/user_v2_test.go
@@ -0,0 +1,1413 @@
+package command
+
+import (
+ "context"
+ "errors"
+ "testing"
+ "time"
+
+ "github.com/stretchr/testify/assert"
+ "golang.org/x/text/language"
+
+ "github.com/zitadel/zitadel/internal/domain"
+ "github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
+)
+
+func TestCommandSide_LockUserV2(t *testing.T) {
+ type fields struct {
+ eventstore *eventstore.Eventstore
+ checkPermission domain.PermissionCheck
+ }
+ type (
+ args struct {
+ ctx context.Context
+ userID string
+ }
+ )
+ type res struct {
+ want *domain.ObjectDetails
+ err func(error) bool
+ }
+ tests := []struct {
+ name string
+ fields fields
+ args args
+ res res
+ }{
+ {
+ name: "userid missing, invalid argument error",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "",
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "COMMAND-agz3eczifm", "Errors.User.UserIDMissing"))
+ },
+ },
+ },
+ {
+ name: "user not existing, not found error",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowNotFound(nil, "COMMAND-450yxuqrh1", "Errors.User.NotFound"))
+ },
+ },
+ },
+ {
+ name: "user already locked, precondition error",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ user.NewHumanAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ "firstname",
+ "lastname",
+ "nickname",
+ "displayname",
+ language.German,
+ domain.GenderUnspecified,
+ "email@test.ch",
+ true,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewUserLockedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ ),
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowPreconditionFailed(nil, "COMMAND-lgws8wtsqf", "Errors.User.ShouldBeActiveOrInitial"))
+ },
+ },
+ },
+ {
+ name: "user already locked, precondition error",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ user.NewMachineAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ "name",
+ "description",
+ true,
+ domain.OIDCTokenTypeBearer,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewUserLockedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ ),
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowPreconditionFailed(nil, "COMMAND-lgws8wtsqf", "Errors.User.ShouldBeActiveOrInitial"))
+ },
+ },
+ },
+ {
+ name: "lock user, ok",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ user.NewHumanAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ "firstname",
+ "lastname",
+ "nickname",
+ "displayname",
+ language.German,
+ domain.GenderUnspecified,
+ "email@test.ch",
+ true,
+ ),
+ ),
+ ),
+ expectPush(
+ user.NewUserLockedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ ResourceOwner: "org1",
+ },
+ },
+ },
+ {
+ name: "lock user, no permission",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ user.NewHumanAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ "firstname",
+ "lastname",
+ "nickname",
+ "displayname",
+ language.German,
+ domain.GenderUnspecified,
+ "email@test.ch",
+ true,
+ ),
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckNotAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"))
+ },
+ },
+ },
+ {
+ name: "lock user machine, ok",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ user.NewMachineAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ "name",
+ "description",
+ true,
+ domain.OIDCTokenTypeBearer,
+ ),
+ ),
+ ),
+ expectPush(
+ user.NewUserLockedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ ResourceOwner: "org1",
+ },
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ r := &Commands{
+ eventstore: tt.fields.eventstore,
+ checkPermission: tt.fields.checkPermission,
+ }
+ got, err := r.LockUserV2(tt.args.ctx, tt.args.userID)
+ if tt.res.err == nil {
+ assert.NoError(t, err)
+ }
+ if tt.res.err != nil && !tt.res.err(err) {
+ t.Errorf("got wrong err: %v ", err)
+ }
+ if tt.res.err == nil {
+ assert.Equal(t, tt.res.want, got)
+ }
+ })
+ }
+}
+
+func TestCommandSide_UnlockUserV2(t *testing.T) {
+ type fields struct {
+ eventstore *eventstore.Eventstore
+ checkPermission domain.PermissionCheck
+ }
+ type (
+ args struct {
+ ctx context.Context
+ userID string
+ }
+ )
+ type res struct {
+ want *domain.ObjectDetails
+ err func(error) bool
+ }
+ tests := []struct {
+ name string
+ fields fields
+ args args
+ res res
+ }{
+ {
+ name: "userid missing, invalid argument error",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "",
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "COMMAND-a9ld4xckax", "Errors.User.UserIDMissing"))
+ },
+ },
+ },
+ {
+ name: "user not existing, not found error",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowNotFound(nil, "COMMAND-x377t913pw", "Errors.User.NotFound"))
+ },
+ },
+ },
+ {
+ name: "user already active, precondition error",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ user.NewHumanAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ "firstname",
+ "lastname",
+ "nickname",
+ "displayname",
+ language.German,
+ domain.GenderUnspecified,
+ "email@test.ch",
+ true,
+ ),
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowPreconditionFailed(nil, "COMMAND-olb9vb0oca", "Errors.User.NotLocked"))
+ },
+ },
+ },
+ {
+ name: "user already active, precondition error",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ user.NewMachineAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ "name",
+ "description",
+ true,
+ domain.OIDCTokenTypeBearer,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowPreconditionFailed(nil, "COMMAND-olb9vb0oca", "Errors.User.NotLocked"))
+ },
+ },
+ },
+ {
+ name: "unlock user, ok",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ user.NewHumanAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ "firstname",
+ "lastname",
+ "nickname",
+ "displayname",
+ language.German,
+ domain.GenderUnspecified,
+ "email@test.ch",
+ true,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewUserLockedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate),
+ ),
+ ),
+ expectPush(
+ user.NewUserUnlockedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ ResourceOwner: "org1",
+ },
+ },
+ },
+ {
+ name: "unlock user, no permission",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ user.NewHumanAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ "firstname",
+ "lastname",
+ "nickname",
+ "displayname",
+ language.German,
+ domain.GenderUnspecified,
+ "email@test.ch",
+ true,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewUserLockedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate),
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckNotAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"))
+ },
+ },
+ },
+ {
+ name: "unlock user machine, ok",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ user.NewMachineAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ "name",
+ "description",
+ true,
+ domain.OIDCTokenTypeBearer,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewUserLockedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate),
+ ),
+ ),
+ expectPush(
+ user.NewUserUnlockedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ ResourceOwner: "org1",
+ },
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ r := &Commands{
+ eventstore: tt.fields.eventstore,
+ checkPermission: tt.fields.checkPermission,
+ }
+ got, err := r.UnlockUserV2(tt.args.ctx, tt.args.userID)
+ if tt.res.err == nil {
+ assert.NoError(t, err)
+ }
+ if tt.res.err != nil && !tt.res.err(err) {
+ t.Errorf("got wrong err: %v ", err)
+ }
+ if tt.res.err == nil {
+ assert.Equal(t, tt.res.want, got)
+ }
+ })
+ }
+}
+
+func TestCommandSide_DeactivateUserV2(t *testing.T) {
+ type fields struct {
+ eventstore *eventstore.Eventstore
+ checkPermission domain.PermissionCheck
+ }
+ type (
+ args struct {
+ ctx context.Context
+ userID string
+ }
+ )
+ type res struct {
+ want *domain.ObjectDetails
+ err func(error) bool
+ }
+ tests := []struct {
+ name string
+ fields fields
+ args args
+ res res
+ }{
+ {
+ name: "userid missing, invalid argument error",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "",
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "COMMAND-78iiirat8y", "Errors.User.UserIDMissing"))
+ },
+ },
+ },
+ {
+ name: "user not existing, not found error",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowNotFound(nil, "COMMAND-5gp2p62iin", "Errors.User.NotFound"))
+ },
+ },
+ },
+ {
+ name: "user initial, precondition error",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ user.NewHumanAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ "firstname",
+ "lastname",
+ "nickname",
+ "displayname",
+ language.German,
+ domain.GenderUnspecified,
+ "email@test.ch",
+ true,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewHumanInitialCodeAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ nil, time.Hour*1,
+ ),
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowPreconditionFailed(nil, "COMMAND-gvx4kct9r2", "Errors.User.CantDeactivateInitial"))
+ },
+ },
+ },
+ {
+ name: "user already inactive, precondition error",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ user.NewHumanAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ "firstname",
+ "lastname",
+ "nickname",
+ "displayname",
+ language.German,
+ domain.GenderUnspecified,
+ "email@test.ch",
+ true,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewUserDeactivatedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ ),
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowPreconditionFailed(nil, "COMMAND-5gunjw0cd7", "Errors.User.AlreadyInactive"))
+ },
+ },
+ },
+ {
+ name: "deactivate user, ok",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ user.NewHumanAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ "firstname",
+ "lastname",
+ "nickname",
+ "displayname",
+ language.German,
+ domain.GenderUnspecified,
+ "email@test.ch",
+ true,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewHumanInitializedCheckSucceededEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ ),
+ ),
+ ),
+ expectPush(
+ user.NewUserDeactivatedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ ResourceOwner: "org1",
+ },
+ },
+ },
+ {
+ name: "deactivate user, no permission",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ user.NewHumanAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ "firstname",
+ "lastname",
+ "nickname",
+ "displayname",
+ language.German,
+ domain.GenderUnspecified,
+ "email@test.ch",
+ true,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewHumanInitializedCheckSucceededEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ ),
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckNotAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"))
+ },
+ },
+ },
+ {
+ name: "user machine already inactive, precondition error",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ user.NewMachineAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ "name",
+ "description",
+ true,
+ domain.OIDCTokenTypeBearer,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewUserDeactivatedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ ),
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowPreconditionFailed(nil, "COMMAND-5gunjw0cd7", "Errors.User.AlreadyInactive"))
+ },
+ },
+ },
+ {
+ name: "deactivate user machine, ok",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ user.NewMachineAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ "name",
+ "description",
+ true,
+ domain.OIDCTokenTypeBearer,
+ ),
+ ),
+ ),
+ expectPush(
+ user.NewUserDeactivatedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ ResourceOwner: "org1",
+ },
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ r := &Commands{
+ eventstore: tt.fields.eventstore,
+ checkPermission: tt.fields.checkPermission,
+ }
+ got, err := r.DeactivateUserV2(tt.args.ctx, tt.args.userID)
+ if tt.res.err == nil {
+ assert.NoError(t, err)
+ }
+ if tt.res.err != nil && !tt.res.err(err) {
+ t.Errorf("got wrong err: %v ", err)
+ }
+ if tt.res.err == nil {
+ assert.Equal(t, tt.res.want, got)
+ }
+ })
+ }
+}
+
+func TestCommandSide_ReactivateUserV2(t *testing.T) {
+ type fields struct {
+ eventstore *eventstore.Eventstore
+ checkPermission domain.PermissionCheck
+ }
+ type (
+ args struct {
+ ctx context.Context
+ userID string
+ }
+ )
+ type res struct {
+ want *domain.ObjectDetails
+ err func(error) bool
+ }
+ tests := []struct {
+ name string
+ fields fields
+ args args
+ res res
+ }{
+ {
+ name: "userid missing, invalid argument error",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "",
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "COMMAND-0nx1ie38fw", "Errors.User.UserIDMissing"))
+ },
+ },
+ },
+ {
+ name: "user not existing, not found error",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowNotFound(nil, "COMMAND-9hy5kzbuk6", "Errors.User.NotFound"))
+ },
+ },
+ },
+ {
+ name: "user already active, precondition error",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ user.NewHumanAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ "firstname",
+ "lastname",
+ "nickname",
+ "displayname",
+ language.German,
+ domain.GenderUnspecified,
+ "email@test.ch",
+ true,
+ ),
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowPreconditionFailed(nil, "COMMAND-s5qqcz97hf", "Errors.User.NotInactive"))
+ },
+ },
+ },
+ {
+ name: "user machine already active, precondition error",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ user.NewMachineAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ "name",
+ "description",
+ true,
+ domain.OIDCTokenTypeBearer,
+ ),
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowPreconditionFailed(nil, "COMMAND-s5qqcz97hf", "Errors.User.NotInactive"))
+ },
+ },
+ },
+ {
+ name: "reactivate user, ok",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ user.NewHumanAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ "firstname",
+ "lastname",
+ "nickname",
+ "displayname",
+ language.German,
+ domain.GenderUnspecified,
+ "email@test.ch",
+ true,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewUserDeactivatedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate),
+ ),
+ ),
+ expectPush(
+ user.NewUserReactivatedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ ResourceOwner: "org1",
+ },
+ },
+ },
+ {
+ name: "reactivate user, no permission",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ user.NewHumanAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ "firstname",
+ "lastname",
+ "nickname",
+ "displayname",
+ language.German,
+ domain.GenderUnspecified,
+ "email@test.ch",
+ true,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewUserDeactivatedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate),
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckNotAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"))
+ },
+ },
+ },
+ {
+ name: "reactivate user machine, ok",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ user.NewMachineAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ "name",
+ "description",
+ true,
+ domain.OIDCTokenTypeBearer,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewUserDeactivatedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate),
+ ),
+ ),
+ expectPush(
+ user.NewUserReactivatedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ ResourceOwner: "org1",
+ },
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ r := &Commands{
+ eventstore: tt.fields.eventstore,
+ checkPermission: tt.fields.checkPermission,
+ }
+ got, err := r.ReactivateUserV2(tt.args.ctx, tt.args.userID)
+ if tt.res.err == nil {
+ assert.NoError(t, err)
+ }
+ if tt.res.err != nil && !tt.res.err(err) {
+ t.Errorf("got wrong err: %v ", err)
+ }
+ if tt.res.err == nil {
+ assert.Equal(t, tt.res.want, got)
+ }
+ })
+ }
+}
+
+func TestCommandSide_RemoveUserV2(t *testing.T) {
+ type fields struct {
+ eventstore *eventstore.Eventstore
+ checkPermission domain.PermissionCheck
+ }
+ type (
+ args struct {
+ ctx context.Context
+ userID string
+ cascadingMemberships []*CascadingMembership
+ grantIDs []string
+ }
+ )
+ type res struct {
+ want *domain.ObjectDetails
+ err func(error) bool
+ }
+ tests := []struct {
+ name string
+ fields fields
+ args args
+ res res
+ }{
+ {
+ name: "userid missing, invalid argument error",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "",
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowInvalidArgument(nil, "COMMAND-vaipl7s13l", "Errors.User.UserIDMissing"))
+ },
+ },
+ },
+ {
+ name: "user not existing, not found error",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowNotFound(nil, "COMMAND-bd4ir1mblj", "Errors.User.NotFound"))
+ },
+ },
+ },
+ {
+ name: "user removed, notfound error",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ user.NewHumanAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ "firstname",
+ "lastname",
+ "nickname",
+ "displayname",
+ language.German,
+ domain.GenderUnspecified,
+ "email@test.ch",
+ true,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewUserRemovedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ nil,
+ true,
+ ),
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowNotFound(nil, "COMMAND-bd4ir1mblj", "Errors.User.NotFound"))
+ },
+ },
+ },
+ {
+ name: "remove user, ok",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ user.NewHumanAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ "firstname",
+ "lastname",
+ "nickname",
+ "displayname",
+ language.German,
+ domain.GenderUnspecified,
+ "email@test.ch",
+ true,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ true,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectPush(
+ user.NewUserRemovedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ nil,
+ true,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ ResourceOwner: "org1",
+ },
+ },
+ },
+ {
+ name: "remove user, no permission",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ user.NewHumanAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ "firstname",
+ "lastname",
+ "nickname",
+ "displayname",
+ language.German,
+ domain.GenderUnspecified,
+ "email@test.ch",
+ true,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewHumanInitializedCheckSucceededEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ ),
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckNotAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowPermissionDenied(nil, "AUTHZ-HKJD33", "Errors.PermissionDenied"))
+ },
+ },
+ },
+ {
+ name: "user machine already removed, notfound error",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ user.NewMachineAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ "name",
+ "description",
+ true,
+ domain.OIDCTokenTypeBearer,
+ ),
+ ),
+ eventFromEventPusher(
+ user.NewUserRemovedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ nil,
+ true,
+ ),
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ err: func(err error) bool {
+ return errors.Is(err, zerrors.ThrowNotFound(nil, "COMMAND-bd4ir1mblj", "Errors.User.NotFound"))
+ },
+ },
+ },
+ {
+ name: "remove user machine, ok",
+ fields: fields{
+ eventstore: eventstoreExpect(
+ t,
+ expectFilter(
+ eventFromEventPusher(
+ user.NewMachineAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ "name",
+ "description",
+ true,
+ domain.OIDCTokenTypeBearer,
+ ),
+ ),
+ ),
+ expectFilter(
+ eventFromEventPusher(
+ org.NewDomainPolicyAddedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ true,
+ true,
+ true,
+ ),
+ ),
+ ),
+ expectPush(
+ user.NewUserRemovedEvent(context.Background(),
+ &user.NewAggregate("user1", "org1").Aggregate,
+ "username",
+ nil,
+ true,
+ ),
+ ),
+ ),
+ checkPermission: newMockPermissionCheckAllowed(),
+ },
+ args: args{
+ ctx: context.Background(),
+ userID: "user1",
+ },
+ res: res{
+ want: &domain.ObjectDetails{
+ ResourceOwner: "org1",
+ },
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ r := &Commands{
+ eventstore: tt.fields.eventstore,
+ checkPermission: tt.fields.checkPermission,
+ }
+ got, err := r.RemoveUserV2(tt.args.ctx, tt.args.userID, tt.args.cascadingMemberships, tt.args.grantIDs...)
+ if tt.res.err == nil {
+ assert.NoError(t, err)
+ }
+ if tt.res.err != nil && !tt.res.err(err) {
+ t.Errorf("got wrong err: %v ", err)
+ }
+ if tt.res.err == nil {
+ assert.Equal(t, tt.res.want, got)
+ }
+ })
+ }
+}
diff --git a/internal/command/user_v2_totp_test.go b/internal/command/user_v2_totp_test.go
index 206686d42d..4e1df191d5 100644
--- a/internal/command/user_v2_totp_test.go
+++ b/internal/command/user_v2_totp_test.go
@@ -14,10 +14,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommands_AddUserTOTP(t *testing.T) {
@@ -44,7 +44,7 @@ func TestCommands_AddUserTOTP(t *testing.T) {
userID: "foo",
resourceowner: "org1",
},
- wantErr: caos_errs.ThrowPermissionDenied(nil, "AUTH-Bohd2", "Errors.User.UserIDWrong"),
+ wantErr: zerrors.ThrowPermissionDenied(nil, "AUTH-Bohd2", "Errors.User.UserIDWrong"),
},
{
name: "create otp error",
@@ -58,7 +58,7 @@ func TestCommands_AddUserTOTP(t *testing.T) {
expectFilter(),
),
},
- wantErr: caos_errs.ThrowPreconditionFailed(nil, "COMMAND-SqyJz", "Errors.User.NotFound"),
+ wantErr: zerrors.ThrowPreconditionFailed(nil, "COMMAND-SqyJz", "Errors.User.NotFound"),
},
{
name: "push error",
@@ -217,7 +217,7 @@ func TestCommands_CheckUserTOTP(t *testing.T) {
args: args{
userID: "foo",
},
- wantErr: caos_errs.ThrowPermissionDenied(nil, "AUTH-Bohd2", "Errors.User.UserIDWrong"),
+ wantErr: zerrors.ThrowPermissionDenied(nil, "AUTH-Bohd2", "Errors.User.UserIDWrong"),
},
{
name: "success",
diff --git a/internal/command/user_v2_u2f_test.go b/internal/command/user_v2_u2f_test.go
index 9eb850004a..a69dac062e 100644
--- a/internal/command/user_v2_u2f_test.go
+++ b/internal/command/user_v2_u2f_test.go
@@ -11,13 +11,13 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/id"
id_mock "github.com/zitadel/zitadel/internal/id/mock"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/user"
webauthn_helper "github.com/zitadel/zitadel/internal/webauthn"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCommands_RegisterUserU2F(t *testing.T) {
@@ -51,7 +51,7 @@ func TestCommands_RegisterUserU2F(t *testing.T) {
userID: "foo",
resourceOwner: "org1",
},
- wantErr: caos_errs.ThrowPermissionDenied(nil, "AUTH-Bohd2", "Errors.User.UserIDWrong"),
+ wantErr: zerrors.ThrowPermissionDenied(nil, "AUTH-Bohd2", "Errors.User.UserIDWrong"),
},
{
name: "get human passwordless error",
diff --git a/internal/command/user_v2_username.go b/internal/command/user_v2_username.go
new file mode 100644
index 0000000000..8dd6af7b36
--- /dev/null
+++ b/internal/command/user_v2_username.go
@@ -0,0 +1,37 @@
+package command
+
+import (
+ "context"
+ "strings"
+
+ "github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
+)
+
+func (c *Commands) changeUsername(ctx context.Context, cmds []eventstore.Command, wm *UserV2WriteModel, userName string) ([]eventstore.Command, error) {
+ if wm.UserName == userName {
+ return cmds, nil
+ }
+ orgID := wm.ResourceOwner
+
+ domainPolicy, err := c.domainPolicyWriteModel(ctx, orgID)
+ if err != nil {
+ return cmds, zerrors.ThrowPreconditionFailed(err, "COMMAND-79pv6e1q62", "Errors.Org.DomainPolicy.NotExisting")
+ }
+ if !domainPolicy.UserLoginMustBeDomain {
+ index := strings.LastIndex(userName, "@")
+ if index > 1 {
+ domainCheck := NewOrgDomainVerifiedWriteModel(userName[index+1:])
+ if err := c.eventstore.FilterToQueryReducer(ctx, domainCheck); err != nil {
+ return cmds, err
+ }
+ if domainCheck.Verified && domainCheck.ResourceOwner != orgID {
+ return cmds, zerrors.ThrowInvalidArgument(nil, "COMMAND-Di2ei", "Errors.User.DomainNotAllowedAsUsername")
+ }
+ }
+ }
+ return append(cmds,
+ user.NewUsernameChangedEvent(ctx, &wm.Aggregate().Aggregate, wm.UserName, userName, domainPolicy.UserLoginMustBeDomain),
+ ), nil
+}
diff --git a/internal/config/config.go b/internal/config/config.go
index 0f60aa227c..b454cea41f 100644
--- a/internal/config/config.go
+++ b/internal/config/config.go
@@ -9,7 +9,7 @@ import (
"github.com/BurntSushi/toml"
"sigs.k8s.io/yaml"
- "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type ValidatableConfiguration interface {
@@ -52,13 +52,13 @@ func readConfigFile(readerFunc ReaderFunc, configFile string, obj interface{}) e
configStr, err := ioutil.ReadFile(configFile)
if err != nil {
- return errors.ThrowInternalf(err, "CONFI-nJk2a", "failed to read config file %s", configFile)
+ return zerrors.ThrowInternalf(err, "CONFI-nJk2a", "failed to read config file %s", configFile)
}
configStr = []byte(os.ExpandEnv(string(configStr)))
if err := readerFunc(configStr, obj); err != nil {
- return errors.ThrowInternalf(err, "CONFI-2Mc3c", "error parse config file %s", configFile)
+ return zerrors.ThrowInternalf(err, "CONFI-2Mc3c", "error parse config file %s", configFile)
}
return nil
@@ -74,5 +74,5 @@ func readerFuncForFile(configFile string) (ReaderFunc, error) {
case ".toml":
return TOMLReader, nil
}
- return nil, errors.ThrowUnimplementedf(nil, "CONFI-ZLk4u", "file extension (%s) not supported", ext)
+ return nil, zerrors.ThrowUnimplementedf(nil, "CONFI-ZLk4u", "file extension (%s) not supported", ext)
}
diff --git a/internal/config/hook/tag_to_language.go b/internal/config/hook/tag_to_language.go
index b8ac8c4f39..e7e5f3acac 100644
--- a/internal/config/hook/tag_to_language.go
+++ b/internal/config/hook/tag_to_language.go
@@ -5,6 +5,8 @@ import (
"github.com/mitchellh/mapstructure"
"golang.org/x/text/language"
+
+ "github.com/zitadel/zitadel/internal/domain"
)
func TagToLanguageHookFunc() mapstructure.DecodeHookFuncType {
@@ -21,6 +23,7 @@ func TagToLanguageHookFunc() mapstructure.DecodeHookFuncType {
return data, nil
}
- return language.Parse(data.(string))
+ lang, err := domain.ParseLanguage(data.(string))
+ return lang[0], err
}
}
diff --git a/internal/crypto/aes.go b/internal/crypto/aes.go
index 15c89e7f94..e943c2ca8e 100644
--- a/internal/crypto/aes.go
+++ b/internal/crypto/aes.go
@@ -7,7 +7,7 @@ import (
"encoding/base64"
"io"
- "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var _ EncryptionAlgorithm = (*AESCrypto)(nil)
@@ -73,7 +73,7 @@ func (a *AESCrypto) encryptionKey() string {
func (a *AESCrypto) decryptionKey(keyID string) (string, error) {
key, ok := a.keys[keyID]
if !ok {
- return "", errors.ThrowNotFound(nil, "CRYPT-nkj1s", "unknown key id")
+ return "", zerrors.ThrowNotFound(nil, "CRYPT-nkj1s", "unknown key id")
}
return key, nil
}
@@ -94,7 +94,7 @@ func EncryptAES(plainText []byte, key string) ([]byte, error) {
maxSize := 64 * 1024 * 1024
if len(plainText) > maxSize {
- return nil, errors.ThrowPreconditionFailedf(nil, "CRYPT-AGg4t3", "data too large, max bytes: %v", maxSize)
+ return nil, zerrors.ThrowPreconditionFailedf(nil, "CRYPT-AGg4t3", "data too large, max bytes: %v", maxSize)
}
cipherText := make([]byte, aes.BlockSize+len(plainText))
iv := cipherText[:aes.BlockSize]
@@ -130,7 +130,7 @@ func DecryptAES(text []byte, key string) ([]byte, error) {
}
if len(cipherText) < aes.BlockSize {
- err = errors.ThrowPreconditionFailed(nil, "CRYPT-23kH1", "cipher text block too short")
+ err = zerrors.ThrowPreconditionFailed(nil, "CRYPT-23kH1", "cipher text block too short")
return nil, err
}
iv := cipherText[:aes.BlockSize]
diff --git a/internal/crypto/code.go b/internal/crypto/code.go
index 60d1496ece..2c67c39cd6 100644
--- a/internal/crypto/code.go
+++ b/internal/crypto/code.go
@@ -4,7 +4,7 @@ import (
"crypto/rand"
"time"
- "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -126,7 +126,7 @@ func VerifyCode(creationDate time.Time, expiry time.Duration, cryptoCode *Crypto
func VerifyCodeWithAlgorithm(creationDate time.Time, expiry time.Duration, cryptoCode *CryptoValue, verificationCode string, algorithm Crypto) error {
if IsCodeExpired(creationDate, expiry) {
- return errors.ThrowPreconditionFailed(nil, "CODE-QvUQ4P", "Errors.User.Code.Expired")
+ return zerrors.ThrowPreconditionFailed(nil, "CODE-QvUQ4P", "Errors.User.Code.Expired")
}
switch alg := algorithm.(type) {
case EncryptionAlgorithm:
@@ -134,7 +134,7 @@ func VerifyCodeWithAlgorithm(creationDate time.Time, expiry time.Duration, crypt
case HashAlgorithm:
return verifyHashedCode(cryptoCode, verificationCode, alg)
}
- return errors.ThrowInvalidArgument(nil, "CODE-fW2gNa", "Errors.User.Code.GeneratorAlgNotSupported")
+ return zerrors.ThrowInvalidArgument(nil, "CODE-fW2gNa", "Errors.User.Code.GeneratorAlgNotSupported")
}
func GenerateRandomString(length uint, chars []rune) (string, error) {
@@ -161,7 +161,7 @@ func GenerateRandomString(length uint, chars []rune) (string, error) {
func verifyEncryptedCode(cryptoCode *CryptoValue, verificationCode string, alg EncryptionAlgorithm) error {
if cryptoCode == nil {
- return errors.ThrowInvalidArgument(nil, "CRYPT-aqrFV", "Errors.User.Code.CryptoCodeNil")
+ return zerrors.ThrowInvalidArgument(nil, "CRYPT-aqrFV", "Errors.User.Code.CryptoCodeNil")
}
code, err := DecryptString(cryptoCode, alg)
if err != nil {
@@ -169,14 +169,14 @@ func verifyEncryptedCode(cryptoCode *CryptoValue, verificationCode string, alg E
}
if code != verificationCode {
- return errors.ThrowInvalidArgument(nil, "CODE-woT0xc", "Errors.User.Code.Invalid")
+ return zerrors.ThrowInvalidArgument(nil, "CODE-woT0xc", "Errors.User.Code.Invalid")
}
return nil
}
func verifyHashedCode(cryptoCode *CryptoValue, verificationCode string, alg HashAlgorithm) error {
if cryptoCode == nil {
- return errors.ThrowInvalidArgument(nil, "CRYPT-2q3r", "cryptoCode must not be nil")
+ return zerrors.ThrowInvalidArgument(nil, "CRYPT-2q3r", "cryptoCode must not be nil")
}
return CompareHash(cryptoCode, []byte(verificationCode), alg)
}
diff --git a/internal/crypto/code_mocker.go b/internal/crypto/code_mocker.go
index 9cd208f6de..66071ccab4 100644
--- a/internal/crypto/code_mocker.go
+++ b/internal/crypto/code_mocker.go
@@ -5,7 +5,7 @@ import (
"go.uber.org/mock/gomock"
- "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func CreateMockEncryptionAlg(ctrl *gomock.Controller) EncryptionAlgorithm {
@@ -26,7 +26,7 @@ func CreateMockEncryptionAlgWithCode(ctrl *gomock.Controller, code string) Encry
ctrl,
func(c []byte) ([]byte, error) {
if len(c) != len(code) {
- return nil, errors.ThrowInvalidArgumentf(nil, "id", "invalid code length - expected %d, got %d", len(code), len(c))
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "id", "invalid code length - expected %d, got %d", len(code), len(c))
}
return []byte(code), nil
},
@@ -44,7 +44,7 @@ func createMockEncryptionAlgorithm(ctrl *gomock.Controller, encryptFunction func
mCrypto.EXPECT().DecryptString(gomock.Any(), gomock.Any()).AnyTimes().DoAndReturn(
func(code []byte, keyID string) (string, error) {
if keyID != "id" {
- return "", errors.ThrowInternal(nil, "id", "invalid key id")
+ return "", zerrors.ThrowInternal(nil, "id", "invalid key id")
}
return string(code), nil
},
@@ -52,7 +52,7 @@ func createMockEncryptionAlgorithm(ctrl *gomock.Controller, encryptFunction func
mCrypto.EXPECT().Decrypt(gomock.Any(), gomock.Any()).AnyTimes().DoAndReturn(
func(code []byte, keyID string) ([]byte, error) {
if keyID != "id" {
- return nil, errors.ThrowInternal(nil, "id", "invalid key id")
+ return nil, zerrors.ThrowInternal(nil, "id", "invalid key id")
}
return code, nil
},
@@ -71,7 +71,7 @@ func CreateMockHashAlg(ctrl *gomock.Controller) HashAlgorithm {
mCrypto.EXPECT().CompareHash(gomock.Any(), gomock.Any()).AnyTimes().DoAndReturn(
func(hashed, comparer []byte) error {
if string(hashed) != string(comparer) {
- return errors.ThrowInternal(nil, "id", "invalid")
+ return zerrors.ThrowInternal(nil, "id", "invalid")
}
return nil
},
diff --git a/internal/crypto/crypto.go b/internal/crypto/crypto.go
index 5cc0575907..14c249e987 100644
--- a/internal/crypto/crypto.go
+++ b/internal/crypto/crypto.go
@@ -5,7 +5,7 @@ import (
"encoding/base64"
"encoding/json"
- "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -66,13 +66,13 @@ func Crypt(value []byte, c Crypto) (*CryptoValue, error) {
case HashAlgorithm:
return Hash(value, alg)
}
- return nil, errors.ThrowInternal(nil, "CRYPT-r4IaHZ", "algorithm not supported")
+ return nil, zerrors.ThrowInternal(nil, "CRYPT-r4IaHZ", "algorithm not supported")
}
func Encrypt(value []byte, alg EncryptionAlgorithm) (*CryptoValue, error) {
encrypted, err := alg.Encrypt(value)
if err != nil {
- return nil, errors.ThrowInternal(err, "CRYPT-qCD0JB", "error encrypting value")
+ return nil, zerrors.ThrowInternal(err, "CRYPT-qCD0JB", "error encrypting value")
}
return &CryptoValue{
CryptoType: TypeEncryption,
@@ -98,20 +98,20 @@ func DecryptString(value *CryptoValue, alg EncryptionAlgorithm) (string, error)
func checkEncryptionAlgorithm(value *CryptoValue, alg EncryptionAlgorithm) error {
if value.Algorithm != alg.Algorithm() {
- return errors.ThrowInvalidArgument(nil, "CRYPT-Nx7XlT", "value was encrypted with a different key")
+ return zerrors.ThrowInvalidArgument(nil, "CRYPT-Nx7XlT", "value was encrypted with a different key")
}
for _, id := range alg.DecryptionKeyIDs() {
if id == value.KeyID {
return nil
}
}
- return errors.ThrowInvalidArgument(nil, "CRYPT-Kq12vn", "value was encrypted with a different key")
+ return zerrors.ThrowInvalidArgument(nil, "CRYPT-Kq12vn", "value was encrypted with a different key")
}
func Hash(value []byte, alg HashAlgorithm) (*CryptoValue, error) {
hashed, err := alg.Hash(value)
if err != nil {
- return nil, errors.ThrowInternal(err, "CRYPT-rBVaJU", "error hashing value")
+ return nil, zerrors.ThrowInternal(err, "CRYPT-rBVaJU", "error hashing value")
}
return &CryptoValue{
CryptoType: TypeHash,
@@ -122,7 +122,7 @@ func Hash(value []byte, alg HashAlgorithm) (*CryptoValue, error) {
func CompareHash(value *CryptoValue, comparer []byte, alg HashAlgorithm) error {
if value.Algorithm != alg.Algorithm() {
- return errors.ThrowInvalidArgument(nil, "CRYPT-HF32f", "value was hashed with a different algorithm")
+ return zerrors.ThrowInvalidArgument(nil, "CRYPT-HF32f", "value was hashed with a different algorithm")
}
return alg.CompareHash(value.Crypted, comparer)
}
@@ -137,18 +137,18 @@ func FillHash(value []byte, alg HashAlgorithm) *CryptoValue {
func CheckToken(alg EncryptionAlgorithm, token string, content string) error {
if token == "" {
- return errors.ThrowPermissionDenied(nil, "CRYPTO-Sfefs", "Errors.Intent.InvalidToken")
+ return zerrors.ThrowPermissionDenied(nil, "CRYPTO-Sfefs", "Errors.Intent.InvalidToken")
}
data, err := base64.RawURLEncoding.DecodeString(token)
if err != nil {
- return errors.ThrowPermissionDenied(err, "CRYPTO-Swg31", "Errors.Intent.InvalidToken")
+ return zerrors.ThrowPermissionDenied(err, "CRYPTO-Swg31", "Errors.Intent.InvalidToken")
}
decryptedToken, err := alg.DecryptString(data, alg.EncryptionKeyID())
if err != nil {
- return errors.ThrowPermissionDenied(err, "CRYPTO-Sf4gt", "Errors.Intent.InvalidToken")
+ return zerrors.ThrowPermissionDenied(err, "CRYPTO-Sf4gt", "Errors.Intent.InvalidToken")
}
if decryptedToken != content {
- return errors.ThrowPermissionDenied(nil, "CRYPTO-CRYPTO", "Errors.Intent.InvalidToken")
+ return zerrors.ThrowPermissionDenied(nil, "CRYPTO-CRYPTO", "Errors.Intent.InvalidToken")
}
return nil
}
diff --git a/internal/crypto/database/database.go b/internal/crypto/database/database.go
index 7cbf46dc5b..8fac222d9d 100644
--- a/internal/crypto/database/database.go
+++ b/internal/crypto/database/database.go
@@ -7,7 +7,7 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
z_db "github.com/zitadel/zitadel/internal/database"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type database struct {
@@ -41,18 +41,18 @@ func (d *database) ReadKeys() (crypto.Keys, error) {
From(EncryptionKeysTable).
ToSql()
if err != nil {
- return nil, caos_errs.ThrowInternal(err, "", "unable to read keys")
+ return nil, zerrors.ThrowInternal(err, "", "unable to read keys")
}
err = d.client.Query(func(rows *sql.Rows) error {
for rows.Next() {
var id, encryptionKey string
err = rows.Scan(&id, &encryptionKey)
if err != nil {
- return caos_errs.ThrowInternal(err, "", "unable to read keys")
+ return zerrors.ThrowInternal(err, "", "unable to read keys")
}
key, err := d.decrypt(encryptionKey, d.masterKey)
if err != nil {
- return caos_errs.ThrowInternal(err, "", "unable to decrypt key")
+ return zerrors.ThrowInternal(err, "", "unable to decrypt key")
}
keys[id] = key
}
@@ -60,7 +60,7 @@ func (d *database) ReadKeys() (crypto.Keys, error) {
}, stmt, args...)
if err != nil {
- return nil, caos_errs.ThrowInternal(err, "", "unable to read keys")
+ return nil, zerrors.ThrowInternal(err, "", "unable to read keys")
}
return keys, nil
@@ -73,23 +73,23 @@ func (d *database) ReadKey(id string) (_ *crypto.Key, err error) {
PlaceholderFormat(sq.Dollar).
ToSql()
if err != nil {
- return nil, caos_errs.ThrowInternal(err, "", "unable to read key")
+ return nil, zerrors.ThrowInternal(err, "", "unable to read key")
}
var key string
err = d.client.QueryRow(func(row *sql.Row) error {
var encryptionKey string
err = row.Scan(&encryptionKey)
if err != nil {
- return caos_errs.ThrowInternal(err, "", "unable to read key")
+ return zerrors.ThrowInternal(err, "", "unable to read key")
}
key, err = d.decrypt(encryptionKey, d.masterKey)
if err != nil {
- return caos_errs.ThrowInternal(err, "", "unable to decrypt key")
+ return zerrors.ThrowInternal(err, "", "unable to decrypt key")
}
return nil
}, stmt, args...)
if err != nil {
- return nil, caos_errs.ThrowInternal(err, "", "unable to read key")
+ return nil, zerrors.ThrowInternal(err, "", "unable to read key")
}
return &crypto.Key{
@@ -104,33 +104,33 @@ func (d *database) CreateKeys(keys ...*crypto.Key) error {
for _, key := range keys {
encryptionKey, err := d.encrypt(key.Value, d.masterKey)
if err != nil {
- return caos_errs.ThrowInternal(err, "", "unable to encrypt key")
+ return zerrors.ThrowInternal(err, "", "unable to encrypt key")
}
insert = insert.Values(key.ID, encryptionKey)
}
stmt, args, err := insert.ToSql()
if err != nil {
- return caos_errs.ThrowInternal(err, "", "unable to insert new keys")
+ return zerrors.ThrowInternal(err, "", "unable to insert new keys")
}
tx, err := d.client.Begin()
if err != nil {
- return caos_errs.ThrowInternal(err, "", "unable to insert new keys")
+ return zerrors.ThrowInternal(err, "", "unable to insert new keys")
}
_, err = tx.Exec(stmt, args...)
if err != nil {
tx.Rollback()
- return caos_errs.ThrowInternal(err, "", "unable to insert new keys")
+ return zerrors.ThrowInternal(err, "", "unable to insert new keys")
}
err = tx.Commit()
if err != nil {
- return caos_errs.ThrowInternal(err, "", "unable to insert new keys")
+ return zerrors.ThrowInternal(err, "", "unable to insert new keys")
}
return nil
}
func checkMasterKeyLength(masterKey string) error {
if length := len([]byte(masterKey)); length != 32 {
- return caos_errs.ThrowInternalf(nil, "", "masterkey must be 32 bytes, but is %d", length)
+ return zerrors.ThrowInternalf(nil, "", "masterkey must be 32 bytes, but is %d", length)
}
return nil
}
diff --git a/internal/crypto/database/database_test.go b/internal/crypto/database/database_test.go
index 62a089ab31..f7c8313355 100644
--- a/internal/crypto/database/database_test.go
+++ b/internal/crypto/database/database_test.go
@@ -13,7 +13,7 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
z_db "github.com/zitadel/zitadel/internal/database"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func Test_database_ReadKeys(t *testing.T) {
@@ -62,7 +62,7 @@ func Test_database_ReadKeys(t *testing.T) {
},
},
res{
- err: caos_errs.IsInternal,
+ err: zerrors.IsInternal,
},
},
{
@@ -187,7 +187,7 @@ func Test_database_ReadKey(t *testing.T) {
id: "id1",
},
res{
- err: caos_errs.IsInternal,
+ err: zerrors.IsInternal,
},
},
{
@@ -212,7 +212,7 @@ func Test_database_ReadKey(t *testing.T) {
id: "id1",
},
res{
- err: caos_errs.IsInternal,
+ err: zerrors.IsInternal,
},
},
{
@@ -303,7 +303,7 @@ func Test_database_CreateKeys(t *testing.T) {
},
},
res{
- err: caos_errs.IsInternal,
+ err: zerrors.IsInternal,
},
},
{
@@ -422,7 +422,7 @@ func Test_checkMasterKeyLength(t *testing.T) {
args{
masterKey: "",
},
- caos_errs.IsInternal,
+ zerrors.IsInternal,
},
{
"valid length",
diff --git a/internal/crypto/key.go b/internal/crypto/key.go
index 8730f4ed20..5b4a22f696 100644
--- a/internal/crypto/key.go
+++ b/internal/crypto/key.go
@@ -5,7 +5,7 @@ import (
"github.com/zitadel/logging"
- "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type KeyConfig struct {
@@ -41,7 +41,7 @@ func LoadKey(id string, keyStorage KeyStorage) (string, error) {
func LoadKeys(config *KeyConfig, keyStorage KeyStorage) (Keys, []string, error) {
if config == nil {
- return nil, nil, errors.ThrowInvalidArgument(nil, "CRYPT-dJK8s", "config must not be nil")
+ return nil, nil, zerrors.ThrowInvalidArgument(nil, "CRYPT-dJK8s", "config must not be nil")
}
readKeys, err := keyStorage.ReadKeys()
if err != nil {
@@ -52,7 +52,7 @@ func LoadKeys(config *KeyConfig, keyStorage KeyStorage) (Keys, []string, error)
if config.EncryptionKeyID != "" {
key, ok := readKeys[config.EncryptionKeyID]
if !ok {
- return nil, nil, errors.ThrowInternalf(nil, "CRYPT-v2Kas", "encryption key %s not found", config.EncryptionKeyID)
+ return nil, nil, zerrors.ThrowInternalf(nil, "CRYPT-v2Kas", "encryption key %s not found", config.EncryptionKeyID)
}
keys[config.EncryptionKeyID] = key
ids = append(ids, config.EncryptionKeyID)
diff --git a/internal/crypto/passwap.go b/internal/crypto/passwap.go
index 479d5731e4..280fbe4d86 100644
--- a/internal/crypto/passwap.go
+++ b/internal/crypto/passwap.go
@@ -13,7 +13,7 @@ import (
"github.com/zitadel/passwap/scrypt"
"github.com/zitadel/passwap/verifier"
- "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type PasswordHasher struct {
@@ -62,11 +62,11 @@ type PasswordHashConfig struct {
func (c *PasswordHashConfig) PasswordHasher() (*PasswordHasher, error) {
verifiers, vPrefixes, err := c.buildVerifiers()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "CRYPT-sahW9", "password hash config invalid")
+ return nil, zerrors.ThrowInvalidArgument(err, "CRYPT-sahW9", "password hash config invalid")
}
hasher, hPrefixes, err := c.Hasher.buildHasher()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "CRYPT-Que4r", "password hash config invalid")
+ return nil, zerrors.ThrowInvalidArgument(err, "CRYPT-Que4r", "password hash config invalid")
}
return &PasswordHasher{
Swapper: passwap.NewSwapper(hasher, verifiers...),
@@ -145,11 +145,15 @@ func (c *HasherConfig) buildHasher() (hasher passwap.Hasher, prefixes []string,
}
}
+// decodeParams uses a mapstructure decoder from the Params map to dst.
+// The decoder fails when there are unused fields in dst.
+// It uses weak input typing, to allow conversion of env strings to ints.
func (c *HasherConfig) decodeParams(dst any) error {
decoder, err := mapstructure.NewDecoder(&mapstructure.DecoderConfig{
- ErrorUnused: false,
- ErrorUnset: true,
- Result: dst,
+ ErrorUnused: false,
+ ErrorUnset: true,
+ WeaklyTypedInput: true,
+ Result: dst,
})
if err != nil {
return err
diff --git a/internal/crypto/passwap_test.go b/internal/crypto/passwap_test.go
index 0538ac631a..38ca0d5d3d 100644
--- a/internal/crypto/passwap_test.go
+++ b/internal/crypto/passwap_test.go
@@ -397,7 +397,11 @@ func TestHasherConfig_decodeParams(t *testing.T) {
"a": 1,
"b": "2",
},
- wantErr: true,
+ want: dst{
+ A: 1,
+ B: 2,
+ },
+ wantErr: false, // https://github.com/zitadel/zitadel/issues/6913
},
{
name: "ok",
diff --git a/internal/database/database.go b/internal/database/database.go
index ea27ef55f2..cd72d6d242 100644
--- a/internal/database/database.go
+++ b/internal/database/database.go
@@ -6,6 +6,7 @@ import (
"encoding/json"
"errors"
"reflect"
+ "strings"
"github.com/mitchellh/mapstructure"
"github.com/zitadel/logging"
@@ -13,7 +14,7 @@ import (
_ "github.com/zitadel/zitadel/internal/database/cockroach"
"github.com/zitadel/zitadel/internal/database/dialect"
_ "github.com/zitadel/zitadel/internal/database/postgres"
- zerrors "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Config struct {
@@ -84,6 +85,7 @@ func (db *DB) QueryRowContext(ctx context.Context, scan func(row *sql.Row) error
}()
row := tx.QueryRowContext(ctx, query, args...)
+ logging.OnError(row.Err()).Error("unexpected query error")
err = scan(row)
if err != nil {
@@ -170,3 +172,9 @@ func (c Config) Password() string {
func (c Config) Type() string {
return c.connector.Type()
}
+
+func EscapeLikeWildcards(value string) string {
+ value = strings.ReplaceAll(value, "%", "\\%")
+ value = strings.ReplaceAll(value, "_", "\\_")
+ return value
+}
diff --git a/internal/database/database_test.go b/internal/database/database_test.go
new file mode 100644
index 0000000000..38c76e698a
--- /dev/null
+++ b/internal/database/database_test.go
@@ -0,0 +1,92 @@
+package database
+
+import (
+ "context"
+ "database/sql"
+ "database/sql/driver"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+
+ "github.com/zitadel/zitadel/internal/database/mock"
+ "github.com/zitadel/zitadel/internal/zerrors"
+)
+
+func TestQueryJSONObject(t *testing.T) {
+ type dst struct {
+ A int `json:"a,omitempty"`
+ }
+ const (
+ query = `select $1;`
+ arg = 1
+ )
+
+ tests := []struct {
+ name string
+ mock func(*testing.T) *mock.SQLMock
+ want *dst
+ wantErr error
+ }{
+ {
+ name: "tx error",
+ mock: func(t *testing.T) *mock.SQLMock {
+ return mock.NewSQLMock(t, mock.ExpectBegin(sql.ErrConnDone))
+ },
+ wantErr: zerrors.ThrowInternal(sql.ErrConnDone, "DATAB-Oath6", "Errors.Internal"),
+ },
+ {
+ name: "no rows",
+ mock: func(t *testing.T) *mock.SQLMock {
+ return mock.NewSQLMock(t,
+ mock.ExpectBegin(nil),
+ mock.ExpectQuery(query,
+ mock.WithQueryArgs(arg),
+ mock.WithQueryResult([]string{"json"}, [][]driver.Value{}),
+ ),
+ )
+ },
+ wantErr: sql.ErrNoRows,
+ },
+ {
+ name: "unmarshal error",
+ mock: func(t *testing.T) *mock.SQLMock {
+ return mock.NewSQLMock(t,
+ mock.ExpectBegin(nil),
+ mock.ExpectQuery(query,
+ mock.WithQueryArgs(arg),
+ mock.WithQueryResult([]string{"json"}, [][]driver.Value{{`~~~`}}),
+ ),
+ mock.ExpectCommit(nil),
+ )
+ },
+ wantErr: zerrors.ThrowInternal(nil, "DATAB-Vohs6", "Errors.Internal"),
+ },
+ {
+ name: "success",
+ mock: func(t *testing.T) *mock.SQLMock {
+ return mock.NewSQLMock(t,
+ mock.ExpectBegin(nil),
+ mock.ExpectQuery(query,
+ mock.WithQueryArgs(arg),
+ mock.WithQueryResult([]string{"json"}, [][]driver.Value{{`{"a":1}`}}),
+ ),
+ mock.ExpectCommit(nil),
+ )
+ },
+ want: &dst{A: 1},
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ mock := tt.mock(t)
+ defer mock.Assert(t)
+ db := &DB{
+ DB: mock.DB,
+ }
+ got, err := QueryJSONObject[dst](context.Background(), db, query, arg)
+ require.ErrorIs(t, err, tt.wantErr)
+ assert.Equal(t, tt.want, got)
+ })
+ }
+}
diff --git a/internal/database/mock/sql_mock.go b/internal/database/mock/sql_mock.go
index 07d74151e0..e05b188afc 100644
--- a/internal/database/mock/sql_mock.go
+++ b/internal/database/mock/sql_mock.go
@@ -53,6 +53,15 @@ func ExpectBegin(err error) expectation {
}
}
+func ExpectCommit(err error) expectation {
+ return func(m sqlmock.Sqlmock) {
+ e := m.ExpectCommit()
+ if err != nil {
+ e.WillReturnError(err)
+ }
+ }
+}
+
type ExecOpt func(e *sqlmock.ExpectedExec) *sqlmock.ExpectedExec
func WithExecArgs(args ...driver.Value) ExecOpt {
diff --git a/internal/domain/application_key.go b/internal/domain/application_key.go
index 7d6407ee5f..329c3ab1a1 100644
--- a/internal/domain/application_key.go
+++ b/internal/domain/application_key.go
@@ -4,8 +4,8 @@ import (
"encoding/json"
"time"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type ApplicationKey struct {
@@ -40,7 +40,7 @@ func (k *ApplicationKey) Detail() ([]byte, error) {
if k.Type == AuthNKeyTypeJSON {
return k.MarshalJSON()
}
- return nil, errors.ThrowPreconditionFailed(nil, "KEY-dsg52", "Errors.Internal")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "KEY-dsg52", "Errors.Internal")
}
func (k *ApplicationKey) MarshalJSON() ([]byte, error) {
diff --git a/internal/domain/application_oauth.go b/internal/domain/application_oauth.go
index 9bcb675d1c..816eba4fda 100644
--- a/internal/domain/application_oauth.go
+++ b/internal/domain/application_oauth.go
@@ -7,8 +7,8 @@ import (
"github.com/zitadel/logging"
"github.com/zitadel/zitadel/internal/crypto"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/id"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type oAuthApplication interface {
@@ -17,7 +17,7 @@ type oAuthApplication interface {
requiresClientSecret() bool
}
-//ClientID random_number@projectname (eg. 495894098234@zitadel)
+// ClientID random_number@projectname (eg. 495894098234@zitadel)
func SetNewClientID(a oAuthApplication, idGenerator id.Generator, project *Project) error {
clientID, err := NewClientID(idGenerator, project.Name)
if err != nil {
@@ -53,7 +53,7 @@ func NewClientSecret(generator crypto.Generator) (*crypto.CryptoValue, string, e
cryptoValue, stringSecret, err := crypto.NewCode(generator)
if err != nil {
logging.Log("MODEL-UpnTI").OnError(err).Error("unable to create client secret")
- return nil, "", errors.ThrowInternal(err, "MODEL-gH2Wl", "Errors.Project.CouldNotGenerateClientSecret")
+ return nil, "", zerrors.ThrowInternal(err, "MODEL-gH2Wl", "Errors.Project.CouldNotGenerateClientSecret")
}
return cryptoValue, stringSecret, nil
}
diff --git a/internal/domain/auth_request.go b/internal/domain/auth_request.go
index 7d776b6d30..cf406c7625 100644
--- a/internal/domain/auth_request.go
+++ b/internal/domain/auth_request.go
@@ -6,7 +6,7 @@ import (
"golang.org/x/text/language"
- "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type AuthRequest struct {
@@ -110,6 +110,23 @@ const (
MFATypeOTPEmail
)
+func (m MFAType) UserAuthMethodType() UserAuthMethodType {
+ switch m {
+ case MFATypeTOTP:
+ return UserAuthMethodTypeTOTP
+ case MFATypeU2F:
+ return UserAuthMethodTypeU2F
+ case MFATypeU2FUserVerification:
+ return UserAuthMethodTypePasswordless
+ case MFATypeOTPSMS:
+ return UserAuthMethodTypeOTPSMS
+ case MFATypeOTPEmail:
+ return UserAuthMethodTypeOTPEmail
+ default:
+ return UserAuthMethodTypeUnspecified
+ }
+}
+
type MFALevel int
const (
@@ -139,7 +156,7 @@ func NewAuthRequestFromType(requestType AuthRequestType) (*AuthRequest, error) {
case AuthRequestTypeDevice:
return &AuthRequest{Request: &AuthRequestDevice{}}, nil
}
- return nil, errors.ThrowInvalidArgument(nil, "DOMAIN-ds2kl", "invalid request type")
+ return nil, zerrors.ThrowInvalidArgument(nil, "DOMAIN-ds2kl", "invalid request type")
}
func (a *AuthRequest) WithCurrentInfo(info *BrowserInfo) *AuthRequest {
@@ -223,3 +240,14 @@ func (a *AuthRequest) PrivateLabelingOrgID(defaultID string) string {
}
return defaultID
}
+
+func (a *AuthRequest) UserAuthMethodTypes() []UserAuthMethodType {
+ list := make([]UserAuthMethodType, 0, len(a.MFAsVerified)+1)
+ if a.PasswordVerified {
+ list = append(list, UserAuthMethodTypePassword)
+ }
+ for _, mfa := range a.MFAsVerified {
+ list = append(list, mfa.UserAuthMethodType())
+ }
+ return list
+}
diff --git a/internal/domain/auth_request_test.go b/internal/domain/auth_request_test.go
new file mode 100644
index 0000000000..0a37e8f9e8
--- /dev/null
+++ b/internal/domain/auth_request_test.go
@@ -0,0 +1,108 @@
+package domain
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestMFAType_UserAuthMethodType(t *testing.T) {
+ tests := []struct {
+ name string
+ m MFAType
+ want UserAuthMethodType
+ }{
+ {
+ name: "totp",
+ m: MFATypeTOTP,
+ want: UserAuthMethodTypeTOTP,
+ },
+ {
+ name: "u2f",
+ m: MFATypeU2F,
+ want: UserAuthMethodTypeU2F,
+ },
+ {
+ name: "passwordless",
+ m: MFATypeU2FUserVerification,
+ want: UserAuthMethodTypePasswordless,
+ },
+ {
+ name: "otp sms",
+ m: MFATypeOTPSMS,
+ want: UserAuthMethodTypeOTPSMS,
+ },
+ {
+ name: "otp email",
+ m: MFATypeOTPEmail,
+ want: UserAuthMethodTypeOTPEmail,
+ },
+ {
+ name: "unspecified",
+ m: 99,
+ want: UserAuthMethodTypeUnspecified,
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ got := tt.m.UserAuthMethodType()
+ assert.Equal(t, tt.want, got)
+ })
+ }
+}
+
+func TestAuthRequest_UserAuthMethodTypes(t *testing.T) {
+ type fields struct {
+ PasswordVerified bool
+ MFAsVerified []MFAType
+ }
+ tests := []struct {
+ name string
+ fields fields
+ want []UserAuthMethodType
+ }{
+ {
+ name: "no auth methods",
+ fields: fields{
+ PasswordVerified: false,
+ MFAsVerified: nil,
+ },
+ want: []UserAuthMethodType{},
+ },
+ {
+ name: "only password",
+ fields: fields{
+ PasswordVerified: true,
+ MFAsVerified: nil,
+ },
+ want: []UserAuthMethodType{
+ UserAuthMethodTypePassword,
+ },
+ },
+ {
+ name: "password, with mfa",
+ fields: fields{
+ PasswordVerified: true,
+ MFAsVerified: []MFAType{
+ MFATypeTOTP,
+ MFATypeU2F,
+ },
+ },
+ want: []UserAuthMethodType{
+ UserAuthMethodTypePassword,
+ UserAuthMethodTypeTOTP,
+ UserAuthMethodTypeU2F,
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ a := &AuthRequest{
+ PasswordVerified: tt.fields.PasswordVerified,
+ MFAsVerified: tt.fields.MFAsVerified,
+ }
+ got := a.UserAuthMethodTypes()
+ assert.Equal(t, tt.want, got)
+ })
+ }
+}
diff --git a/internal/domain/authn_key.go b/internal/domain/authn_key.go
index eb45e359ef..6e0f113d3d 100644
--- a/internal/domain/authn_key.go
+++ b/internal/domain/authn_key.go
@@ -4,7 +4,7 @@ import (
"github.com/zitadel/logging"
"github.com/zitadel/zitadel/internal/crypto"
- "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type authNKey interface {
@@ -53,12 +53,12 @@ func NewAuthNKeyPair(keySize int) (privateKey, publicKey []byte, err error) {
private, public, err := crypto.GenerateKeyPair(keySize)
if err != nil {
logging.Log("AUTHN-Ud51I").WithError(err).Error("unable to create authn key pair")
- return nil, nil, errors.ThrowInternal(err, "AUTHN-gdg2l", "Errors.Project.CouldNotGenerateClientSecret")
+ return nil, nil, zerrors.ThrowInternal(err, "AUTHN-gdg2l", "Errors.Project.CouldNotGenerateClientSecret")
}
publicKey, err = crypto.PublicKeyToBytes(public)
if err != nil {
logging.Log("AUTHN-Dbb35").WithError(err).Error("unable to convert public key")
- return nil, nil, errors.ThrowInternal(err, "AUTHN-Bne3f", "Errors.Project.CouldNotGenerateClientSecret")
+ return nil, nil, zerrors.ThrowInternal(err, "AUTHN-Bne3f", "Errors.Project.CouldNotGenerateClientSecret")
}
privateKey = crypto.PrivateKeyToBytes(private)
return privateKey, publicKey, nil
diff --git a/internal/domain/custom_login_text.go b/internal/domain/custom_login_text.go
index 18d999ce93..63a5599eb8 100644
--- a/internal/domain/custom_login_text.go
+++ b/internal/domain/custom_login_text.go
@@ -343,8 +343,11 @@ type CustomLoginText struct {
Footer FooterText
}
-func (m *CustomLoginText) IsValid() bool {
- return m.Language != language.Und
+func (m *CustomLoginText) IsValid(supportedLanguages []language.Tag) error {
+ if err := LanguageIsDefined(m.Language); err != nil {
+ return err
+ }
+ return LanguagesAreSupported(supportedLanguages, m.Language)
}
type SelectAccountScreenText struct {
diff --git a/internal/domain/custom_message_text.go b/internal/domain/custom_message_text.go
index 263cd57794..4ae0a3925a 100644
--- a/internal/domain/custom_message_text.go
+++ b/internal/domain/custom_message_text.go
@@ -4,6 +4,7 @@ import (
"golang.org/x/text/language"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -51,8 +52,14 @@ type CustomMessageText struct {
FooterText string
}
-func (m *CustomMessageText) IsValid() bool {
- return m.MessageTextType != "" && m.Language != language.Und
+func (m *CustomMessageText) IsValid(supportedLanguages []language.Tag) error {
+ if m.MessageTextType == "" {
+ return zerrors.ThrowInvalidArgument(nil, "INSTANCE-kd9fs", "Errors.CustomMessageText.Invalid")
+ }
+ if err := LanguageIsDefined(m.Language); err != nil {
+ return err
+ }
+ return LanguagesAreSupported(supportedLanguages, m.Language)
}
func IsMessageTextType(textType string) bool {
diff --git a/internal/domain/device_auth.go b/internal/domain/device_auth.go
index da076663aa..d8e4bb3870 100644
--- a/internal/domain/device_auth.go
+++ b/internal/domain/device_auth.go
@@ -2,28 +2,11 @@ package domain
import (
"strconv"
- "time"
-
- "github.com/zitadel/zitadel/internal/eventstore/v1/models"
)
-// DeviceAuth describes a Device Authorization request.
-// It is used as input and output model in the command and query packages.
-type DeviceAuth struct {
- models.ObjectRoot
-
- ClientID string
- DeviceCode string
- UserCode string
- Expires time.Time
- Scopes []string
- Subject string
- State DeviceAuthState
-}
-
// DeviceAuthState describes the step the
// the device authorization process is in.
-// We generate the Stringer implemntation for pretier
+// We generate the Stringer implementation for prettier
// log output.
//
//go:generate stringer -type=DeviceAuthState -linecomment
@@ -35,13 +18,14 @@ const (
DeviceAuthStateApproved // approved
DeviceAuthStateDenied // denied
DeviceAuthStateExpired // expired
- DeviceAuthStateRemoved // removed
+
+ deviceAuthStateCount // invalid
)
// Exists returns true when not Undefined and
-// any status lower than Removed.
+// any status lower than deviceAuthStateCount.
func (s DeviceAuthState) Exists() bool {
- return s > DeviceAuthStateUndefined && s < DeviceAuthStateRemoved
+ return s > DeviceAuthStateUndefined && s < deviceAuthStateCount
}
// Done returns true when DeviceAuthState is Approved.
diff --git a/internal/domain/device_auth_test.go b/internal/domain/device_auth_test.go
index c3fcf359da..bd0bf925eb 100644
--- a/internal/domain/device_auth_test.go
+++ b/internal/domain/device_auth_test.go
@@ -30,7 +30,7 @@ func TestDeviceAuthState_Exists(t *testing.T) {
want: true,
},
{
- s: DeviceAuthStateRemoved,
+ s: deviceAuthStateCount,
want: false,
},
}
@@ -68,10 +68,6 @@ func TestDeviceAuthState_Done(t *testing.T) {
s: DeviceAuthStateExpired,
want: false,
},
- {
- s: DeviceAuthStateRemoved,
- want: false,
- },
}
for _, tt := range tests {
t.Run(tt.s.String(), func(t *testing.T) {
@@ -108,10 +104,6 @@ func TestDeviceAuthState_Denied(t *testing.T) {
s: DeviceAuthStateExpired,
want: true,
},
- {
- s: DeviceAuthStateRemoved,
- want: true,
- },
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
diff --git a/internal/domain/deviceauthstate_string.go b/internal/domain/deviceauthstate_string.go
index b47a6bc7e8..0381287c71 100644
--- a/internal/domain/deviceauthstate_string.go
+++ b/internal/domain/deviceauthstate_string.go
@@ -13,10 +13,10 @@ func _() {
_ = x[DeviceAuthStateApproved-2]
_ = x[DeviceAuthStateDenied-3]
_ = x[DeviceAuthStateExpired-4]
- _ = x[DeviceAuthStateRemoved-5]
+ _ = x[deviceAuthStateCount-5]
}
-const _DeviceAuthState_name = "undefinedinitiatedapproveddeniedexpiredremoved"
+const _DeviceAuthState_name = "undefinedinitiatedapproveddeniedexpiredinvalid"
var _DeviceAuthState_index = [...]uint8{0, 9, 18, 26, 32, 39, 46}
diff --git a/internal/domain/expiration.go b/internal/domain/expiration.go
index 9b74702d16..bea1b5df8d 100644
--- a/internal/domain/expiration.go
+++ b/internal/domain/expiration.go
@@ -3,7 +3,7 @@ package domain
import (
"time"
- "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -30,7 +30,7 @@ func ValidateExpirationDate(date time.Time) (time.Time, error) {
return defaultExpDate, nil
}
if date.Before(time.Now()) {
- return time.Time{}, errors.ThrowInvalidArgument(nil, "DOMAIN-dv3t5", "Errors.AuthNKey.ExpireBeforeNow")
+ return time.Time{}, zerrors.ThrowInvalidArgument(nil, "DOMAIN-dv3t5", "Errors.AuthNKey.ExpireBeforeNow")
}
return date, nil
}
diff --git a/internal/domain/human.go b/internal/domain/human.go
index 0454a36651..6c2ec4daa0 100644
--- a/internal/domain/human.go
+++ b/internal/domain/human.go
@@ -5,9 +5,8 @@ import (
"time"
"github.com/zitadel/zitadel/internal/crypto"
- "github.com/zitadel/zitadel/internal/errors"
- caos_errors "github.com/zitadel/zitadel/internal/errors"
es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Human struct {
@@ -59,7 +58,7 @@ func (f Gender) Specified() bool {
func (u *Human) Normalize() error {
if u.Username == "" {
- return errors.ThrowInvalidArgument(nil, "COMMAND-00p2b", "Errors.User.Username.Empty")
+ return zerrors.ThrowInvalidArgument(nil, "COMMAND-00p2b", "Errors.User.Username.Empty")
}
if err := u.Profile.Validate(); err != nil {
return err
@@ -77,7 +76,7 @@ func (u *Human) Normalize() error {
func (u *Human) CheckDomainPolicy(policy *DomainPolicy) error {
if policy == nil {
- return caos_errors.ThrowPreconditionFailed(nil, "DOMAIN-zSH7j", "Errors.Users.DomainPolicyNil")
+ return zerrors.ThrowPreconditionFailed(nil, "DOMAIN-zSH7j", "Errors.Users.DomainPolicyNil")
}
if !policy.UserLoginMustBeDomain && u.Profile != nil && u.Username == "" && u.Email != nil {
u.Username = string(u.EmailAddress)
diff --git a/internal/domain/human_email.go b/internal/domain/human_email.go
index 86fd2f9e1c..489787c6c9 100644
--- a/internal/domain/human_email.go
+++ b/internal/domain/human_email.go
@@ -7,8 +7,8 @@ import (
"time"
"github.com/zitadel/zitadel/internal/crypto"
- "github.com/zitadel/zitadel/internal/errors"
es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -19,10 +19,10 @@ type EmailAddress string
func (e EmailAddress) Validate() error {
if e == "" {
- return errors.ThrowInvalidArgument(nil, "EMAIL-spblu", "Errors.User.Email.Empty")
+ return zerrors.ThrowInvalidArgument(nil, "EMAIL-spblu", "Errors.User.Email.Empty")
}
if !emailRegex.MatchString(string(e)) {
- return errors.ThrowInvalidArgument(nil, "EMAIL-599BI", "Errors.User.Email.Invalid")
+ return zerrors.ThrowInvalidArgument(nil, "EMAIL-599BI", "Errors.User.Email.Invalid")
}
return nil
}
@@ -49,7 +49,7 @@ type EmailCode struct {
func (e *Email) Validate() error {
if e == nil {
- return errors.ThrowInvalidArgument(nil, "EMAIL-spblu", "Errors.User.Email.Empty")
+ return zerrors.ThrowInvalidArgument(nil, "EMAIL-spblu", "Errors.User.Email.Empty")
}
return e.EmailAddress.Validate()
}
diff --git a/internal/domain/human_email_test.go b/internal/domain/human_email_test.go
index 4b30dd667f..42aa77fd78 100644
--- a/internal/domain/human_email_test.go
+++ b/internal/domain/human_email_test.go
@@ -7,7 +7,7 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestEmailValid(t *testing.T) {
@@ -100,7 +100,7 @@ func TestRenderConfirmURLTemplate(t *testing.T) {
code: "123",
orgID: "org1",
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "DOMAIN-oGh5e", "Errors.User.InvalidURLTemplate"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "DOMAIN-oGh5e", "Errors.User.InvalidURLTemplate"),
},
{
name: "execution error",
@@ -110,7 +110,7 @@ func TestRenderConfirmURLTemplate(t *testing.T) {
code: "123",
orgID: "org1",
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "DOMAIN-ieYa7", "Errors.User.InvalidURLTemplate"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "DOMAIN-ieYa7", "Errors.User.InvalidURLTemplate"),
},
{
name: "success",
diff --git a/internal/domain/human_otp.go b/internal/domain/human_otp.go
index 8dd9ddcb37..68b4b4ca0d 100644
--- a/internal/domain/human_otp.go
+++ b/internal/domain/human_otp.go
@@ -5,7 +5,7 @@ import (
"github.com/pquerna/otp/totp"
"github.com/zitadel/zitadel/internal/crypto"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type TOTP struct {
@@ -18,7 +18,7 @@ type TOTP struct {
func NewTOTPKey(issuer, accountName string, cryptoAlg crypto.EncryptionAlgorithm) (*otp.Key, *crypto.CryptoValue, error) {
key, err := totp.Generate(totp.GenerateOpts{Issuer: issuer, AccountName: accountName})
if err != nil {
- return nil, nil, caos_errs.ThrowInternal(err, "TOTP-ieY3o", "Errors.Internal")
+ return nil, nil, zerrors.ThrowInternal(err, "TOTP-ieY3o", "Errors.Internal")
}
encryptedSecret, err := crypto.Encrypt([]byte(key.Secret()), cryptoAlg)
if err != nil {
@@ -35,7 +35,7 @@ func VerifyTOTP(code string, secret *crypto.CryptoValue, cryptoAlg crypto.Encryp
valid := totp.Validate(code, decrypt)
if !valid {
- return caos_errs.ThrowInvalidArgument(nil, "EVENT-8isk2", "Errors.User.MFA.OTP.InvalidCode")
+ return zerrors.ThrowInvalidArgument(nil, "EVENT-8isk2", "Errors.User.MFA.OTP.InvalidCode")
}
return nil
}
diff --git a/internal/domain/human_password.go b/internal/domain/human_password.go
index 35bcbeaf28..779ed4dba7 100644
--- a/internal/domain/human_password.go
+++ b/internal/domain/human_password.go
@@ -4,8 +4,8 @@ import (
"time"
"github.com/zitadel/zitadel/internal/crypto"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Password struct {
@@ -35,7 +35,7 @@ func (p *Password) HashPasswordIfExisting(policy *PasswordComplexityPolicy, hash
return nil
}
if policy == nil {
- return caos_errs.ThrowPreconditionFailed(nil, "DOMAIN-s8ifS", "Errors.User.PasswordComplexityPolicy.NotFound")
+ return zerrors.ThrowPreconditionFailed(nil, "DOMAIN-s8ifS", "Errors.User.PasswordComplexityPolicy.NotFound")
}
if err := policy.Check(p.SecretString); err != nil {
return err
diff --git a/internal/domain/human_phone.go b/internal/domain/human_phone.go
index 44eb5fe968..f350ea72a0 100644
--- a/internal/domain/human_phone.go
+++ b/internal/domain/human_phone.go
@@ -6,8 +6,8 @@ import (
"github.com/ttacon/libphonenumber"
"github.com/zitadel/zitadel/internal/crypto"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const defaultRegion = "CH"
@@ -16,11 +16,11 @@ type PhoneNumber string
func (p PhoneNumber) Normalize() (PhoneNumber, error) {
if p == "" {
- return p, caos_errs.ThrowInvalidArgument(nil, "PHONE-Zt0NV", "Errors.User.Phone.Empty")
+ return p, zerrors.ThrowInvalidArgument(nil, "PHONE-Zt0NV", "Errors.User.Phone.Empty")
}
phoneNr, err := libphonenumber.Parse(string(p), defaultRegion)
if err != nil {
- return p, caos_errs.ThrowInvalidArgument(err, "PHONE-so0wa", "Errors.User.Phone.Invalid")
+ return p, zerrors.ThrowInvalidArgument(err, "PHONE-so0wa", "Errors.User.Phone.Invalid")
}
return PhoneNumber(libphonenumber.Format(phoneNr, libphonenumber.E164)), nil
}
@@ -43,7 +43,7 @@ type PhoneCode struct {
func (p *Phone) Normalize() error {
if p == nil {
- return caos_errs.ThrowInvalidArgument(nil, "PHONE-YlbwO", "Errors.User.Phone.Empty")
+ return zerrors.ThrowInvalidArgument(nil, "PHONE-YlbwO", "Errors.User.Phone.Empty")
}
normalizedNumber, err := p.PhoneNumber.Normalize()
if err != nil {
diff --git a/internal/domain/human_phone_test.go b/internal/domain/human_phone_test.go
index c16680de46..1bcd2ee87f 100644
--- a/internal/domain/human_phone_test.go
+++ b/internal/domain/human_phone_test.go
@@ -3,7 +3,7 @@ package domain
import (
"testing"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestFormatPhoneNumber(t *testing.T) {
@@ -23,7 +23,7 @@ func TestFormatPhoneNumber(t *testing.T) {
PhoneNumber: "PhoneNumber",
},
},
- errFunc: caos_errs.IsErrorInvalidArgument,
+ errFunc: zerrors.IsErrorInvalidArgument,
},
{
name: "format phone 071...",
diff --git a/internal/domain/human_profile.go b/internal/domain/human_profile.go
index ac220c7758..02b68ebe98 100644
--- a/internal/domain/human_profile.go
+++ b/internal/domain/human_profile.go
@@ -3,8 +3,8 @@ package domain
import (
"golang.org/x/text/language"
- "github.com/zitadel/zitadel/internal/errors"
es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Profile struct {
@@ -22,13 +22,13 @@ type Profile struct {
func (p *Profile) Validate() error {
if p == nil {
- return errors.ThrowInvalidArgument(nil, "PROFILE-GPY3p", "Errors.User.Profile.Empty")
+ return zerrors.ThrowInvalidArgument(nil, "PROFILE-GPY3p", "Errors.User.Profile.Empty")
}
if p.FirstName == "" {
- return errors.ThrowInvalidArgument(nil, "PROFILE-RF5z2", "Errors.User.Profile.FirstNameEmpty")
+ return zerrors.ThrowInvalidArgument(nil, "PROFILE-RF5z2", "Errors.User.Profile.FirstNameEmpty")
}
if p.LastName == "" {
- return errors.ThrowInvalidArgument(nil, "PROFILE-DSUkN", "Errors.User.Profile.LastNameEmpty")
+ return zerrors.ThrowInvalidArgument(nil, "PROFILE-DSUkN", "Errors.User.Profile.LastNameEmpty")
}
return nil
}
diff --git a/internal/domain/language.go b/internal/domain/language.go
new file mode 100644
index 0000000000..555104f50c
--- /dev/null
+++ b/internal/domain/language.go
@@ -0,0 +1,130 @@
+package domain
+
+import (
+ "errors"
+
+ "golang.org/x/text/language"
+
+ "github.com/zitadel/zitadel/internal/zerrors"
+)
+
+func StringsToLanguages(langs []string) []language.Tag {
+ return GenericMapSlice(langs, language.Make)
+}
+
+func LanguagesToStrings(langs []language.Tag) []string {
+ return GenericMapSlice(langs, func(lang language.Tag) string { return lang.String() })
+}
+
+func GenericMapSlice[T any, U any](from []T, mapTo func(T) U) []U {
+ if from == nil {
+ return nil
+ }
+ result := make([]U, len(from))
+ for i, lang := range from {
+ result[i] = mapTo(lang)
+ }
+ return result
+}
+
+// LanguagesDiffer returns true if the languages differ.
+func LanguagesDiffer(left, right []language.Tag) bool {
+ if left == nil && right == nil {
+ return false
+ }
+ if left == nil || right == nil || len(left) != len(right) {
+ return true
+ }
+ return !languagesAreContained(left, right)
+}
+
+func LanguageIsAllowed(allowUndefined bool, allowedLanguages []language.Tag, lang language.Tag) error {
+ err := LanguageIsDefined(lang)
+ if err != nil && allowUndefined {
+ return nil
+ }
+ if err != nil {
+ return err
+ }
+ if len(allowedLanguages) > 0 && !languageIsContained(allowedLanguages, lang) {
+ return zerrors.ThrowPreconditionFailed(nil, "LANG-2M9fs", "Errors.Language.NotAllowed")
+ }
+ return nil
+}
+
+func LanguagesAreSupported(supportedLanguages []language.Tag, lang ...language.Tag) error {
+ unsupported := make([]language.Tag, 0)
+ for _, l := range lang {
+ if l.IsRoot() {
+ continue
+ }
+ if !languageIsContained(supportedLanguages, l) {
+ unsupported = append(unsupported, l)
+ }
+ }
+ if len(unsupported) == 0 {
+ return nil
+ }
+ if len(unsupported) == 1 {
+ return zerrors.ThrowInvalidArgument(nil, "LANG-lg4DP", "Errors.Language.NotSupported")
+ }
+ return zerrors.ThrowInvalidArgumentf(nil, "LANG-XHiK5", "Errors.Languages.NotSupported: %s", LanguagesToStrings(unsupported))
+}
+
+func LanguageIsDefined(lang language.Tag) error {
+ if lang.IsRoot() {
+ return zerrors.ThrowInvalidArgument(nil, "LANG-3M9f2", "Errors.Language.Undefined")
+ }
+ return nil
+}
+
+// LanguagesHaveDuplicates returns an error if the passed slices contains duplicates.
+// The error lists the duplicates.
+func LanguagesHaveDuplicates(langs []language.Tag) error {
+ unique := make(map[language.Tag]struct{})
+ duplicates := make([]language.Tag, 0)
+ for _, lang := range langs {
+ if _, ok := unique[lang]; ok {
+ duplicates = append(duplicates, lang)
+ }
+ unique[lang] = struct{}{}
+ }
+ if len(duplicates) == 0 {
+ return nil
+ }
+ if len(duplicates) > 1 {
+ return zerrors.ThrowInvalidArgument(nil, "LANG-3M9f2", "Errors.Language.Duplicate")
+ }
+ return zerrors.ThrowInvalidArgumentf(nil, "LANG-XHiK5", "Errors.Languages.Duplicate: %s", LanguagesToStrings(duplicates))
+}
+
+func ParseLanguage(lang ...string) (tags []language.Tag, err error) {
+ tags = make([]language.Tag, len(lang))
+ for i := range lang {
+ var parseErr error
+ tags[i], parseErr = language.Parse(lang[i])
+ err = errors.Join(err, parseErr)
+ }
+ if err != nil {
+ err = zerrors.ThrowInvalidArgument(err, "LANG-jc8Sq", "Errors.Language.NotParsed")
+ }
+ return tags, err
+}
+
+func languagesAreContained(languages, search []language.Tag) bool {
+ for _, s := range search {
+ if !languageIsContained(languages, s) {
+ return false
+ }
+ }
+ return true
+}
+
+func languageIsContained(languages []language.Tag, search language.Tag) bool {
+ for _, lang := range languages {
+ if lang == search {
+ return true
+ }
+ }
+ return false
+}
diff --git a/internal/domain/machine_key.go b/internal/domain/machine_key.go
index 43abfd83b9..ea7777d6da 100644
--- a/internal/domain/machine_key.go
+++ b/internal/domain/machine_key.go
@@ -4,8 +4,8 @@ import (
"encoding/json"
"time"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type MachineKey struct {
@@ -38,7 +38,7 @@ func (key *MachineKey) Detail() ([]byte, error) {
if key.Type == AuthNKeyTypeJSON {
return key.MarshalJSON()
}
- return nil, errors.ThrowPreconditionFailed(nil, "KEY-dsg52", "Errors.Internal")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "KEY-dsg52", "Errors.Internal")
}
func (key *MachineKey) MarshalJSON() ([]byte, error) {
diff --git a/internal/domain/machine_secret.go b/internal/domain/machine_secret.go
index d8b0633b48..ba9bfe7b99 100644
--- a/internal/domain/machine_secret.go
+++ b/internal/domain/machine_secret.go
@@ -2,13 +2,13 @@ package domain
import (
"github.com/zitadel/zitadel/internal/crypto"
- "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func NewMachineClientSecret(generator crypto.Generator) (*crypto.CryptoValue, string, error) {
cryptoValue, stringSecret, err := crypto.NewCode(generator)
if err != nil {
- return nil, "", errors.ThrowInternal(err, "MODEL-57cjsiw", "Errors.User.Machine.Secret.CouldNotGenerate")
+ return nil, "", zerrors.ThrowInternal(err, "MODEL-57cjsiw", "Errors.User.Machine.Secret.CouldNotGenerate")
}
return cryptoValue, stringSecret, nil
}
diff --git a/internal/domain/metadata.go b/internal/domain/metadata.go
index f0db03c880..357a20d236 100644
--- a/internal/domain/metadata.go
+++ b/internal/domain/metadata.go
@@ -3,8 +3,8 @@ package domain
import (
"time"
- caos_errors "github.com/zitadel/zitadel/internal/errors"
es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Metadata struct {
@@ -66,7 +66,7 @@ type MetadataSearchResponse struct {
func (r *MetadataSearchRequest) EnsureLimit(limit uint64) error {
if r.Limit > limit {
- return caos_errors.ThrowInvalidArgument(nil, "SEARCH-0ds32", "Errors.Limit.ExceedsDefault")
+ return zerrors.ThrowInvalidArgument(nil, "SEARCH-0ds32", "Errors.Limit.ExceedsDefault")
}
if r.Limit == 0 {
r.Limit = limit
diff --git a/internal/domain/mfa.go b/internal/domain/mfa.go
index 65ad9486fd..3b408109f7 100644
--- a/internal/domain/mfa.go
+++ b/internal/domain/mfa.go
@@ -13,10 +13,6 @@ const (
stateCount
)
-func (f MFAState) Valid() bool {
- return f >= 0 && f < stateCount
-}
-
type MultifactorConfigs struct {
OTP OTPConfig
}
diff --git a/internal/domain/notification.go b/internal/domain/notification.go
index f4af3ea515..756c400c66 100644
--- a/internal/domain/notification.go
+++ b/internal/domain/notification.go
@@ -9,10 +9,6 @@ const (
notificationCount
)
-func (f NotificationType) Valid() bool {
- return f >= 0 && f < notificationCount
-}
-
type NotificationProviderState int32
const (
diff --git a/internal/domain/org_domain.go b/internal/domain/org_domain.go
index bbd2e664e5..ff3ca4db0c 100644
--- a/internal/domain/org_domain.go
+++ b/internal/domain/org_domain.go
@@ -6,8 +6,8 @@ import (
http_util "github.com/zitadel/zitadel/internal/api/http"
"github.com/zitadel/zitadel/internal/crypto"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type OrgDomain struct {
@@ -73,7 +73,7 @@ func NewIAMDomainName(orgName, iamDomain string) (string, error) {
return strings.ToLower(label + "." + iamDomain), nil
}
- return "", errors.ThrowInvalidArgument(nil, "ORG-RrfXY", "Errors.Org.Domain.EmptyString")
+ return "", zerrors.ThrowInvalidArgument(nil, "ORG-RrfXY", "Errors.Org.Domain.EmptyString")
}
type OrgDomainValidationType int32
diff --git a/internal/domain/permission.go b/internal/domain/permission.go
index ebd7981ab0..fd20f77cf0 100644
--- a/internal/domain/permission.go
+++ b/internal/domain/permission.go
@@ -29,6 +29,7 @@ type PermissionCheck func(ctx context.Context, permission, orgID, resourceID str
const (
PermissionUserWrite = "user.write"
PermissionUserRead = "user.read"
+ PermissionUserDelete = "user.delete"
PermissionSessionWrite = "session.write"
PermissionSessionDelete = "session.delete"
)
diff --git a/internal/domain/policy.go b/internal/domain/policy.go
index 457152f3c3..6efe5520d7 100644
--- a/internal/domain/policy.go
+++ b/internal/domain/policy.go
@@ -10,10 +10,6 @@ const (
policyStateCount
)
-func (f PolicyState) Valid() bool {
- return f >= 0 && f < policyStateCount
-}
-
func (s PolicyState) Exists() bool {
return s != PolicyStateUnspecified && s != PolicyStateRemoved
}
diff --git a/internal/domain/policy_label.go b/internal/domain/policy_label.go
index b5517bc54c..b9f2560ae0 100644
--- a/internal/domain/policy_label.go
+++ b/internal/domain/policy_label.go
@@ -3,8 +3,8 @@ package domain
import (
"regexp"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var colorRegex = regexp.MustCompile("^$|^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$")
@@ -58,36 +58,28 @@ const (
func (f LabelPolicy) IsValid() error {
if !colorRegex.MatchString(f.PrimaryColor) {
- return caos_errs.ThrowInvalidArgument(nil, "POLICY-391dG", "Errors.Policy.Label.Invalid.PrimaryColor")
+ return zerrors.ThrowInvalidArgument(nil, "POLICY-391dG", "Errors.Policy.Label.Invalid.PrimaryColor")
}
if !colorRegex.MatchString(f.BackgroundColor) {
- return caos_errs.ThrowInvalidArgument(nil, "POLICY-502F1", "Errors.Policy.Label.Invalid.BackgroundColor")
+ return zerrors.ThrowInvalidArgument(nil, "POLICY-502F1", "Errors.Policy.Label.Invalid.BackgroundColor")
}
if !colorRegex.MatchString(f.WarnColor) {
- return caos_errs.ThrowInvalidArgument(nil, "POLICY-nvw33", "Errors.Policy.Label.Invalid.WarnColor")
+ return zerrors.ThrowInvalidArgument(nil, "POLICY-nvw33", "Errors.Policy.Label.Invalid.WarnColor")
}
if !colorRegex.MatchString(f.FontColor) {
- return caos_errs.ThrowInvalidArgument(nil, "POLICY-93mSf", "Errors.Policy.Label.Invalid.FontColor")
+ return zerrors.ThrowInvalidArgument(nil, "POLICY-93mSf", "Errors.Policy.Label.Invalid.FontColor")
}
if !colorRegex.MatchString(f.PrimaryColorDark) {
- return caos_errs.ThrowInvalidArgument(nil, "POLICY-391dG", "Errors.Policy.Label.Invalid.PrimaryColorDark")
+ return zerrors.ThrowInvalidArgument(nil, "POLICY-391dG", "Errors.Policy.Label.Invalid.PrimaryColorDark")
}
if !colorRegex.MatchString(f.BackgroundColorDark) {
- return caos_errs.ThrowInvalidArgument(nil, "POLICY-llsp2", "Errors.Policy.Label.Invalid.BackgroundColorDark")
+ return zerrors.ThrowInvalidArgument(nil, "POLICY-llsp2", "Errors.Policy.Label.Invalid.BackgroundColorDark")
}
if !colorRegex.MatchString(f.WarnColorDark) {
- return caos_errs.ThrowInvalidArgument(nil, "POLICY-2b6sf", "Errors.Policy.Label.Invalid.WarnColorDark")
+ return zerrors.ThrowInvalidArgument(nil, "POLICY-2b6sf", "Errors.Policy.Label.Invalid.WarnColorDark")
}
if !colorRegex.MatchString(f.FontColorDark) {
- return caos_errs.ThrowInvalidArgument(nil, "POLICY-3M0fs", "Errors.Policy.Label.Invalid.FontColorDark")
+ return zerrors.ThrowInvalidArgument(nil, "POLICY-3M0fs", "Errors.Policy.Label.Invalid.FontColorDark")
}
return nil
}
-
-func (f LabelPolicyState) Valid() bool {
- return f >= 0 && f < labelPolicyStateCount
-}
-
-func (s LabelPolicyState) Exists() bool {
- return s != LabelPolicyStateUnspecified && s != LabelPolicyStateRemoved
-}
diff --git a/internal/domain/policy_label_test.go b/internal/domain/policy_label_test.go
index 9e84669e19..e120bbb467 100644
--- a/internal/domain/policy_label_test.go
+++ b/internal/domain/policy_label_test.go
@@ -5,7 +5,7 @@ import (
"github.com/stretchr/testify/assert"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestLabelPolicyPrimaryColorValid(t *testing.T) {
@@ -40,21 +40,21 @@ func TestLabelPolicyPrimaryColorValid(t *testing.T) {
args: args{
policy: &LabelPolicy{PrimaryColor: "#0f9wfm"},
},
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
{
name: "color code with wrong count of characters, invalid",
args: args{
policy: &LabelPolicy{PrimaryColor: "#00"},
},
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
{
name: "color code with no #, invalid",
args: args{
policy: &LabelPolicy{PrimaryColor: "#00"},
},
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
}
for _, tt := range tests {
@@ -102,21 +102,21 @@ func TestLabelPolicyBackgroundColorValid(t *testing.T) {
args: args{
policy: &LabelPolicy{BackgroundColor: "#0f9wfm"},
},
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
{
name: "color code with wrong count of characters, invalid",
args: args{
policy: &LabelPolicy{BackgroundColor: "#00"},
},
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
{
name: "color code with no #, invalid",
args: args{
policy: &LabelPolicy{BackgroundColor: "#00"},
},
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
}
for _, tt := range tests {
@@ -164,21 +164,21 @@ func TestLabelPolicyWarnColorValid(t *testing.T) {
args: args{
policy: &LabelPolicy{WarnColor: "#0f9wfm"},
},
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
{
name: "color code with wrong count of characters, invalid",
args: args{
policy: &LabelPolicy{WarnColor: "#00"},
},
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
{
name: "color code with no #, invalid",
args: args{
policy: &LabelPolicy{WarnColor: "#00"},
},
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
}
for _, tt := range tests {
@@ -226,21 +226,21 @@ func TestLabelPolicyFontColorValid(t *testing.T) {
args: args{
policy: &LabelPolicy{FontColor: "#0f9wfm"},
},
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
{
name: "color code with wrong count of characters, invalid",
args: args{
policy: &LabelPolicy{FontColor: "#00"},
},
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
{
name: "color code with no #, invalid",
args: args{
policy: &LabelPolicy{FontColor: "#00"},
},
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
}
for _, tt := range tests {
@@ -288,21 +288,21 @@ func TestLabelPolicyPrimaryColorDarkValid(t *testing.T) {
args: args{
policy: &LabelPolicy{PrimaryColorDark: "#0f9wfm"},
},
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
{
name: "color code with wrong count of characters, invalid",
args: args{
policy: &LabelPolicy{PrimaryColorDark: "#00"},
},
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
{
name: "color code with no #, invalid",
args: args{
policy: &LabelPolicy{PrimaryColorDark: "#00"},
},
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
}
for _, tt := range tests {
@@ -350,21 +350,21 @@ func TestLabelPolicyBackgroundColorDarkValid(t *testing.T) {
args: args{
policy: &LabelPolicy{BackgroundColorDark: "#0f9wfm"},
},
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
{
name: "color code with wrong count of characters, invalid",
args: args{
policy: &LabelPolicy{BackgroundColorDark: "#00"},
},
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
{
name: "color code with no #, invalid",
args: args{
policy: &LabelPolicy{BackgroundColorDark: "#00"},
},
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
}
for _, tt := range tests {
@@ -412,21 +412,21 @@ func TestLabelPolicyWarnColorDarkValid(t *testing.T) {
args: args{
policy: &LabelPolicy{WarnColorDark: "#0f9wfm"},
},
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
{
name: "color code with wrong count of characters, invalid",
args: args{
policy: &LabelPolicy{WarnColorDark: "#00"},
},
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
{
name: "color code with no #, invalid",
args: args{
policy: &LabelPolicy{WarnColorDark: "#00"},
},
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
}
for _, tt := range tests {
@@ -474,21 +474,21 @@ func TestLabelPolicyFontColorDarkValid(t *testing.T) {
args: args{
policy: &LabelPolicy{FontColorDark: "#0f9wfm"},
},
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
{
name: "color code with wrong count of characters, invalid",
args: args{
policy: &LabelPolicy{FontColorDark: "#00"},
},
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
{
name: "color code with no #, invalid",
args: args{
policy: &LabelPolicy{FontColorDark: "#00"},
},
- err: caos_errs.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
}
for _, tt := range tests {
diff --git a/internal/domain/policy_login.go b/internal/domain/policy_login.go
index c898ea2544..6c4214724d 100644
--- a/internal/domain/policy_login.go
+++ b/internal/domain/policy_login.go
@@ -66,12 +66,6 @@ func (p IDPProvider) IsValid() bool {
return p.IDPConfigID != ""
}
-// DisplayName returns the name or a default
-// to be used when always a name must be displayed (e.g. login)
-func (p IDPProvider) DisplayName() string {
- return IDPName(p.Name, p.IDPType)
-}
-
type PasswordlessType int32
const (
@@ -88,7 +82,3 @@ func (f PasswordlessType) Valid() bool {
func (p *LoginPolicy) HasSecondFactors() bool {
return len(p.SecondFactors) > 0
}
-
-func (p *LoginPolicy) HasMultiFactors() bool {
- return len(p.MultiFactors) > 0
-}
diff --git a/internal/domain/policy_password_complexity.go b/internal/domain/policy_password_complexity.go
index 99549477c7..e5280508c5 100644
--- a/internal/domain/policy_password_complexity.go
+++ b/internal/domain/policy_password_complexity.go
@@ -3,8 +3,8 @@ package domain
import (
"regexp"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -28,30 +28,30 @@ type PasswordComplexityPolicy struct {
func (p *PasswordComplexityPolicy) IsValid() error {
if p.MinLength == 0 || p.MinLength > 72 {
- return caos_errs.ThrowInvalidArgument(nil, "MODEL-Lsp0e", "Errors.User.PasswordComplexityPolicy.MinLengthNotAllowed")
+ return zerrors.ThrowInvalidArgument(nil, "MODEL-Lsp0e", "Errors.User.PasswordComplexityPolicy.MinLengthNotAllowed")
}
return nil
}
func (p *PasswordComplexityPolicy) Check(password string) error {
if p.MinLength != 0 && uint64(len(password)) < p.MinLength {
- return caos_errs.ThrowInvalidArgument(nil, "DOMAIN-HuJf6", "Errors.User.PasswordComplexityPolicy.MinLength")
+ return zerrors.ThrowInvalidArgument(nil, "DOMAIN-HuJf6", "Errors.User.PasswordComplexityPolicy.MinLength")
}
if p.HasLowercase && !hasStringLowerCase(password) {
- return caos_errs.ThrowInvalidArgument(nil, "DOMAIN-co3Xw", "Errors.User.PasswordComplexityPolicy.HasLower")
+ return zerrors.ThrowInvalidArgument(nil, "DOMAIN-co3Xw", "Errors.User.PasswordComplexityPolicy.HasLower")
}
if p.HasUppercase && !hasStringUpperCase(password) {
- return caos_errs.ThrowInvalidArgument(nil, "DOMAIN-VoaRj", "Errors.User.PasswordComplexityPolicy.HasUpper")
+ return zerrors.ThrowInvalidArgument(nil, "DOMAIN-VoaRj", "Errors.User.PasswordComplexityPolicy.HasUpper")
}
if p.HasNumber && !hasNumber(password) {
- return caos_errs.ThrowInvalidArgument(nil, "DOMAIN-ZBv4H", "Errors.User.PasswordComplexityPolicy.HasNumber")
+ return zerrors.ThrowInvalidArgument(nil, "DOMAIN-ZBv4H", "Errors.User.PasswordComplexityPolicy.HasNumber")
}
if p.HasSymbol && !hasSymbol(password) {
- return caos_errs.ThrowInvalidArgument(nil, "DOMAIN-ZDLwA", "Errors.User.PasswordComplexityPolicy.HasSymbol")
+ return zerrors.ThrowInvalidArgument(nil, "DOMAIN-ZDLwA", "Errors.User.PasswordComplexityPolicy.HasSymbol")
}
return nil
}
diff --git a/internal/domain/project_grant.go b/internal/domain/project_grant.go
index 09604913a8..fecf38ec63 100644
--- a/internal/domain/project_grant.go
+++ b/internal/domain/project_grant.go
@@ -11,11 +11,6 @@ type ProjectGrant struct {
RoleKeys []string
}
-type ProjectGrantIDs struct {
- ProjectID string
- GrantID string
-}
-
type ProjectGrantState int32
const (
diff --git a/internal/domain/project_grant_member.go b/internal/domain/project_grant_member.go
index 8c1a840437..bc3fd902fa 100644
--- a/internal/domain/project_grant_member.go
+++ b/internal/domain/project_grant_member.go
@@ -12,17 +12,6 @@ type ProjectGrantMember struct {
Roles []string
}
-func NewProjectGrantMember(aggregateID, userID, grantID string, roles ...string) *ProjectGrantMember {
- return &ProjectGrantMember{
- ObjectRoot: es_models.ObjectRoot{
- AggregateID: aggregateID,
- },
- GrantID: grantID,
- UserID: userID,
- Roles: roles,
- }
-}
-
func (i *ProjectGrantMember) IsValid() bool {
return i.AggregateID != "" && i.GrantID != "" && i.UserID != "" && len(i.Roles) != 0
}
diff --git a/internal/domain/provider.go b/internal/domain/provider.go
index b21a5e2a61..16dc2800b7 100644
--- a/internal/domain/provider.go
+++ b/internal/domain/provider.go
@@ -9,10 +9,6 @@ const (
identityProviderCount
)
-func (f IdentityProviderType) Valid() bool {
- return f >= 0 && f < identityProviderCount
-}
-
type IdentityProviderState int32
const (
@@ -22,7 +18,3 @@ const (
idpProviderState
)
-
-func (s IdentityProviderState) Valid() bool {
- return s >= 0 && s < idpProviderState
-}
diff --git a/internal/domain/refresh_token.go b/internal/domain/refresh_token.go
index 84567897e2..31f342c35f 100644
--- a/internal/domain/refresh_token.go
+++ b/internal/domain/refresh_token.go
@@ -5,7 +5,7 @@ import (
"strings"
"github.com/zitadel/zitadel/internal/crypto"
- caos_errors "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func NewRefreshToken(userID, tokenID string, algorithm crypto.EncryptionAlgorithm) (string, error) {
@@ -31,7 +31,7 @@ func FromRefreshToken(refreshToken string, algorithm crypto.EncryptionAlgorithm)
}
split := strings.Split(string(decrypted), ":")
if len(split) != 3 {
- return "", "", "", caos_errors.ThrowInternal(nil, "DOMAIN-BGDhn", "Errors.User.RefreshToken.Invalid")
+ return "", "", "", zerrors.ThrowInternal(nil, "DOMAIN-BGDhn", "Errors.User.RefreshToken.Invalid")
}
return split[0], split[1], split[2], nil
}
diff --git a/internal/domain/request.go b/internal/domain/request.go
index 7f91463921..bbacddc757 100644
--- a/internal/domain/request.go
+++ b/internal/domain/request.go
@@ -59,7 +59,7 @@ func (a *AuthRequestSAML) IsValid() bool {
}
type AuthRequestDevice struct {
- ID string
+ ClientID string
DeviceCode string
UserCode string
Scopes []string
@@ -70,5 +70,5 @@ func (*AuthRequestDevice) Type() AuthRequestType {
}
func (a *AuthRequestDevice) IsValid() bool {
- return a.DeviceCode != "" && a.UserCode != "" && len(a.Scopes) > 0
+ return a.DeviceCode != "" && a.UserCode != ""
}
diff --git a/internal/domain/step.go b/internal/domain/step.go
deleted file mode 100644
index dc3641389b..0000000000
--- a/internal/domain/step.go
+++ /dev/null
@@ -1,29 +0,0 @@
-package domain
-
-type Step int
-
-const (
- Step1 Step = iota + 1
- Step2
- Step3
- Step4
- Step5
- Step6
- Step7
- Step8
- Step9
- Step10
- Step11
- Step12
- Step13
- Step14
- Step15
- Step16
- Step17
- Step18
- Step19
- Step20
- Step21
- //StepCount marks the the length of possible steps (StepCount-1 == last possible step)
- StepCount
-)
diff --git a/internal/domain/unique_constraint_migration.go b/internal/domain/unique_constraint_migration.go
deleted file mode 100644
index f699e68ae3..0000000000
--- a/internal/domain/unique_constraint_migration.go
+++ /dev/null
@@ -1,9 +0,0 @@
-package domain
-
-type UniqueConstraintMigration struct {
- AggregateID string
- ObjectID string
- UniqueType string
- UniqueField string
- ErrorMessage string
-}
diff --git a/internal/domain/url_template.go b/internal/domain/url_template.go
index 172de3496c..ed39a8257e 100644
--- a/internal/domain/url_template.go
+++ b/internal/domain/url_template.go
@@ -4,16 +4,16 @@ import (
"io"
"text/template"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func renderURLTemplate(w io.Writer, tmpl string, data any) error {
parsed, err := template.New("").Parse(tmpl)
if err != nil {
- return caos_errs.ThrowInvalidArgument(err, "DOMAIN-oGh5e", "Errors.User.InvalidURLTemplate")
+ return zerrors.ThrowInvalidArgument(err, "DOMAIN-oGh5e", "Errors.User.InvalidURLTemplate")
}
if err = parsed.Execute(w, data); err != nil {
- return caos_errs.ThrowInvalidArgument(err, "DOMAIN-ieYa7", "Errors.User.InvalidURLTemplate")
+ return zerrors.ThrowInvalidArgument(err, "DOMAIN-ieYa7", "Errors.User.InvalidURLTemplate")
}
return nil
}
diff --git a/internal/domain/url_template_test.go b/internal/domain/url_template_test.go
index 1140d14245..dbd3e19ab3 100644
--- a/internal/domain/url_template_test.go
+++ b/internal/domain/url_template_test.go
@@ -7,7 +7,7 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func Test_renderURLTemplate(t *testing.T) {
@@ -26,7 +26,7 @@ func Test_renderURLTemplate(t *testing.T) {
args: args{
tmpl: "{{",
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "DOMAIN-oGh5e", "Errors.User.InvalidURLTemplate"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "DOMAIN-oGh5e", "Errors.User.InvalidURLTemplate"),
},
{
name: "execution error",
@@ -34,7 +34,7 @@ func Test_renderURLTemplate(t *testing.T) {
tmpl: "{{.Some}}",
data: struct{ Foo int }{Foo: 1},
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "DOMAIN-ieYa7", "Errors.User.InvalidURLTemplate"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "DOMAIN-ieYa7", "Errors.User.InvalidURLTemplate"),
},
{
name: "success",
diff --git a/internal/domain/user.go b/internal/domain/user.go
index 18fa2db9af..7450d06417 100644
--- a/internal/domain/user.go
+++ b/internal/domain/user.go
@@ -1,10 +1,5 @@
package domain
-type User interface {
- GetUsername() string
- GetState() UserState
-}
-
type UserState int32
const (
@@ -19,10 +14,6 @@ const (
userStateCount
)
-func (f UserState) Valid() bool {
- return f >= 0 && f < userStateCount
-}
-
func (s UserState) Exists() bool {
return s != UserStateUnspecified && s != UserStateDeleted
}
@@ -40,10 +31,6 @@ const (
userTypeCount
)
-func (f UserType) Valid() bool {
- return f >= 0 && f < userTypeCount
-}
-
type UserAuthMethodType int32
const (
@@ -58,10 +45,6 @@ const (
userAuthMethodTypeCount
)
-func (f UserAuthMethodType) Valid() bool {
- return f >= 0 && f < userAuthMethodTypeCount
-}
-
// HasMFA checks whether the user authenticated with multiple auth factors.
// This can either be true if the list contains a [UserAuthMethodType] which by itself is MFA (e.g. [UserAuthMethodTypePasswordless])
// or if multiple factors were used (e.g. [UserAuthMethodTypePassword] and [UserAuthMethodTypeU2F])
diff --git a/internal/domain/user_membership.go b/internal/domain/user_membership.go
deleted file mode 100644
index ae786237ea..0000000000
--- a/internal/domain/user_membership.go
+++ /dev/null
@@ -1,29 +0,0 @@
-package domain
-
-import "time"
-
-type UserMembership struct {
- UserID string
- MemberType MemberType
- AggregateID string
- //ObjectID differs from aggregate id if obejct is sub of an aggregate
- ObjectID string
-
- Roles []string
- DisplayName string
- CreationDate time.Time
- ChangeDate time.Time
- ResourceOwner string
- ResourceOwnerName string
- Sequence uint64
-}
-
-type MemberType int32
-
-const (
- MemberTypeUnspecified MemberType = iota
- MemberTypeOrganisation
- MemberTypeProject
- MemberTypeProjectGrant
- MemberTypeIam
-)
diff --git a/internal/domain/user_v2_passkey_test.go b/internal/domain/user_v2_passkey_test.go
index 74cb1695e0..7eb0b289a9 100644
--- a/internal/domain/user_v2_passkey_test.go
+++ b/internal/domain/user_v2_passkey_test.go
@@ -7,7 +7,7 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestRenderPasskeyURLTemplate(t *testing.T) {
@@ -29,7 +29,7 @@ func TestRenderPasskeyURLTemplate(t *testing.T) {
args: args{
tmpl: "{{",
},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "DOMAIN-oGh5e", "Errors.User.InvalidURLTemplate"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "DOMAIN-oGh5e", "Errors.User.InvalidURLTemplate"),
},
{
name: "success",
diff --git a/internal/errors/already_exists_test.go b/internal/errors/already_exists_test.go
deleted file mode 100644
index 549d0af0ac..0000000000
--- a/internal/errors/already_exists_test.go
+++ /dev/null
@@ -1,34 +0,0 @@
-package errors_test
-
-import (
- "errors"
- "testing"
-
- "github.com/stretchr/testify/assert"
-
- caos_errs "github.com/zitadel/zitadel/internal/errors"
-)
-
-func TestAlreadyExistsError(t *testing.T) {
- var alreadyExistsError interface{}
- alreadyExistsError = new(caos_errs.AlreadyExistsError)
- _, ok := alreadyExistsError.(caos_errs.AlreadyExists)
- assert.True(t, ok)
-}
-
-func TestThrowAlreadyExistsf(t *testing.T) {
- err := caos_errs.ThrowAlreadyExistsf(nil, "id", "msg")
-
- _, ok := err.(*caos_errs.AlreadyExistsError)
- assert.True(t, ok)
-}
-
-func TestIsErrorAlreadyExists(t *testing.T) {
- err := caos_errs.ThrowAlreadyExists(nil, "id", "msg")
- ok := caos_errs.IsErrorAlreadyExists(err)
- assert.True(t, ok)
-
- err = errors.New("Already Exists!")
- ok = caos_errs.IsErrorAlreadyExists(err)
- assert.False(t, ok)
-}
diff --git a/internal/errors/deadline_exceeded_test.go b/internal/errors/deadline_exceeded_test.go
deleted file mode 100644
index 1a26e30992..0000000000
--- a/internal/errors/deadline_exceeded_test.go
+++ /dev/null
@@ -1,33 +0,0 @@
-package errors_test
-
-import (
- "errors"
- "testing"
-
- "github.com/stretchr/testify/assert"
-
- caos_errs "github.com/zitadel/zitadel/internal/errors"
-)
-
-func TestDeadlineExceededError(t *testing.T) {
- var err interface{}
- err = new(caos_errs.DeadlineExceededError)
- _, ok := err.(caos_errs.DeadlineExceeded)
- assert.True(t, ok)
-}
-
-func TestThrowDeadlineExceededf(t *testing.T) {
- err := caos_errs.ThrowDeadlineExceededf(nil, "id", "msg")
- _, ok := err.(*caos_errs.DeadlineExceededError)
- assert.True(t, ok)
-}
-
-func TestIsDeadlineExceeded(t *testing.T) {
- err := caos_errs.ThrowDeadlineExceeded(nil, "id", "msg")
- ok := caos_errs.IsDeadlineExceeded(err)
- assert.True(t, ok)
-
- err = errors.New("I am found!")
- ok = caos_errs.IsDeadlineExceeded(err)
- assert.False(t, ok)
-}
diff --git a/internal/errors/generate/error_test.go.tmpl b/internal/errors/generate/error_test.go.tmpl
deleted file mode 100644
index 38a0eb2cae..0000000000
--- a/internal/errors/generate/error_test.go.tmpl
+++ /dev/null
@@ -1,33 +0,0 @@
-package errors_test
-
-import (
- "errors"
- "testing"
-
- "github.com/stretchr/testify/assert"
-
- caos_errs "github.com/zitadel/zitadel/internal/errors"
-)
-
-func Test{{.ErrorName}}Error(t *testing.T) {
- var err interface{}
- err = new(caos_errs.{{.ErrorName}}Error)
- _, ok := err.(*caos_errs.{{.ErrorName}})
- assert.True(t, ok)
-}
-
-func TestThrow{{.ErrorName}}f(t *testing.T) {
- err := caos_errs.Throw{{.ErrorName}}f(nil, "id", "msg")
- _, ok := err.(*caos_errs.{{.ErrorName}}Error)
- assert.True(t, ok)
-}
-
-func TestIs{{.ErrorName}}(t *testing.T) {
- err := caos_errs.Throw{{.ErrorName}}(nil, "id", "msg")
- ok := caos_errs.Is{{.ErrorName}}(err)
- assert.True(t, ok)
-
- err = errors.New("I am found!")
- ok = caos_errs.Is{{.ErrorName}}(err)
- assert.False(t, ok)
-}
diff --git a/internal/errors/internal_test.go b/internal/errors/internal_test.go
deleted file mode 100644
index d13f7def84..0000000000
--- a/internal/errors/internal_test.go
+++ /dev/null
@@ -1,33 +0,0 @@
-package errors_test
-
-import (
- "errors"
- "testing"
-
- "github.com/stretchr/testify/assert"
-
- caos_errs "github.com/zitadel/zitadel/internal/errors"
-)
-
-func TestInternalError(t *testing.T) {
- var err interface{}
- err = new(caos_errs.InternalError)
- _, ok := err.(caos_errs.Internal)
- assert.True(t, ok)
-}
-
-func TestThrowInternalf(t *testing.T) {
- err := caos_errs.ThrowInternalf(nil, "id", "msg")
- _, ok := err.(*caos_errs.InternalError)
- assert.True(t, ok)
-}
-
-func TestIsInternal(t *testing.T) {
- err := caos_errs.ThrowInternal(nil, "id", "msg")
- ok := caos_errs.IsInternal(err)
- assert.True(t, ok)
-
- err = errors.New("I am found!")
- ok = caos_errs.IsInternal(err)
- assert.False(t, ok)
-}
diff --git a/internal/errors/invalid_argument_test.go b/internal/errors/invalid_argument_test.go
deleted file mode 100644
index 6de64b0081..0000000000
--- a/internal/errors/invalid_argument_test.go
+++ /dev/null
@@ -1,33 +0,0 @@
-package errors_test
-
-import (
- "errors"
- "testing"
-
- "github.com/stretchr/testify/assert"
-
- caos_errs "github.com/zitadel/zitadel/internal/errors"
-)
-
-func TestInvalidArgumentError(t *testing.T) {
- var invalidArgumentError interface{}
- invalidArgumentError = new(caos_errs.InvalidArgumentError)
- _, ok := invalidArgumentError.(caos_errs.InvalidArgument)
- assert.True(t, ok)
-}
-
-func TestThrowInvalidArgumentf(t *testing.T) {
- err := caos_errs.ThrowInvalidArgumentf(nil, "id", "msg")
- _, ok := err.(*caos_errs.InvalidArgumentError)
- assert.True(t, ok)
-}
-
-func TestIsErrorInvalidArgument(t *testing.T) {
- err := caos_errs.ThrowInvalidArgument(nil, "id", "msg")
- ok := caos_errs.IsErrorInvalidArgument(err)
- assert.True(t, ok)
-
- err = errors.New("I am invalid!")
- ok = caos_errs.IsErrorInvalidArgument(err)
- assert.False(t, ok)
-}
diff --git a/internal/errors/not_found_test.go b/internal/errors/not_found_test.go
deleted file mode 100644
index 45f0ebb0b2..0000000000
--- a/internal/errors/not_found_test.go
+++ /dev/null
@@ -1,33 +0,0 @@
-package errors_test
-
-import (
- "errors"
- "testing"
-
- "github.com/stretchr/testify/assert"
-
- caos_errs "github.com/zitadel/zitadel/internal/errors"
-)
-
-func TestNotFoundError(t *testing.T) {
- var notFoundError interface{}
- notFoundError = new(caos_errs.NotFoundError)
- _, ok := notFoundError.(caos_errs.NotFound)
- assert.True(t, ok)
-}
-
-func TestThrowNotFoundf(t *testing.T) {
- err := caos_errs.ThrowNotFoundf(nil, "id", "msg")
- _, ok := err.(*caos_errs.NotFoundError)
- assert.True(t, ok)
-}
-
-func TestIsNotFound(t *testing.T) {
- err := caos_errs.ThrowNotFound(nil, "id", "msg")
- ok := caos_errs.IsNotFound(err)
- assert.True(t, ok)
-
- err = errors.New("I am found!")
- ok = caos_errs.IsNotFound(err)
- assert.False(t, ok)
-}
diff --git a/internal/errors/permission_denied_test.go b/internal/errors/permission_denied_test.go
deleted file mode 100644
index bf994321ac..0000000000
--- a/internal/errors/permission_denied_test.go
+++ /dev/null
@@ -1,33 +0,0 @@
-package errors_test
-
-import (
- "errors"
- "testing"
-
- "github.com/stretchr/testify/assert"
-
- caos_errs "github.com/zitadel/zitadel/internal/errors"
-)
-
-func TestPermissionDeniedError(t *testing.T) {
- var err interface{}
- err = new(caos_errs.PermissionDeniedError)
- _, ok := err.(caos_errs.PermissionDenied)
- assert.True(t, ok)
-}
-
-func TestThrowPermissionDeniedf(t *testing.T) {
- err := caos_errs.ThrowPermissionDeniedf(nil, "id", "msg")
- _, ok := err.(*caos_errs.PermissionDeniedError)
- assert.True(t, ok)
-}
-
-func TestIsPermissionDenied(t *testing.T) {
- err := caos_errs.ThrowPermissionDenied(nil, "id", "msg")
- ok := caos_errs.IsPermissionDenied(err)
- assert.True(t, ok)
-
- err = errors.New("I am found!")
- ok = caos_errs.IsPermissionDenied(err)
- assert.False(t, ok)
-}
diff --git a/internal/errors/precondition_failed_test.go b/internal/errors/precondition_failed_test.go
deleted file mode 100644
index 2503063b71..0000000000
--- a/internal/errors/precondition_failed_test.go
+++ /dev/null
@@ -1,33 +0,0 @@
-package errors_test
-
-import (
- "errors"
- "testing"
-
- "github.com/stretchr/testify/assert"
-
- caos_errs "github.com/zitadel/zitadel/internal/errors"
-)
-
-func TestPreconditionFailedError(t *testing.T) {
- var err interface{}
- err = new(caos_errs.PreconditionFailedError)
- _, ok := err.(caos_errs.PreconditionFailed)
- assert.True(t, ok)
-}
-
-func TestThrowPreconditionFailedf(t *testing.T) {
- err := caos_errs.ThrowPreconditionFailedf(nil, "id", "msg")
- _, ok := err.(*caos_errs.PreconditionFailedError)
- assert.True(t, ok)
-}
-
-func TestIsPreconditionFailed(t *testing.T) {
- err := caos_errs.ThrowPreconditionFailed(nil, "id", "msg")
- ok := caos_errs.IsPreconditionFailed(err)
- assert.True(t, ok)
-
- err = errors.New("Precondition failed!")
- ok = caos_errs.IsPreconditionFailed(err)
- assert.False(t, ok)
-}
diff --git a/internal/errors/resource_exhausted_test.go b/internal/errors/resource_exhausted_test.go
deleted file mode 100644
index dd2bd7866a..0000000000
--- a/internal/errors/resource_exhausted_test.go
+++ /dev/null
@@ -1,34 +0,0 @@
-package errors_test
-
-import (
- "errors"
- "testing"
-
- "github.com/stretchr/testify/assert"
-
- caos_errs "github.com/zitadel/zitadel/internal/errors"
-)
-
-func TestResourceExhaustedError(t *testing.T) {
- var err interface{} = new(caos_errs.ResourceExhaustedError)
- _, ok := err.(caos_errs.ResourceExhausted)
- assert.True(t, ok)
-}
-
-func TestThrowResourceExhaustedf(t *testing.T) {
- err := caos_errs.ThrowResourceExhaustedf(nil, "id", "msg")
- // TODO: refactor errors package
- //nolint:errorlint
- _, ok := err.(*caos_errs.ResourceExhaustedError)
- assert.True(t, ok)
-}
-
-func TestIsResourceExhausted(t *testing.T) {
- err := caos_errs.ThrowResourceExhausted(nil, "id", "msg")
- ok := caos_errs.IsResourceExhausted(err)
- assert.True(t, ok)
-
- err = errors.New("I am found!")
- ok = caos_errs.IsResourceExhausted(err)
- assert.False(t, ok)
-}
diff --git a/internal/errors/unauthenticated_test.go b/internal/errors/unauthenticated_test.go
deleted file mode 100644
index faba8bbbc3..0000000000
--- a/internal/errors/unauthenticated_test.go
+++ /dev/null
@@ -1,33 +0,0 @@
-package errors_test
-
-import (
- "errors"
- "testing"
-
- "github.com/stretchr/testify/assert"
-
- caos_errs "github.com/zitadel/zitadel/internal/errors"
-)
-
-func TestUnauthenticatedError(t *testing.T) {
- var err interface{}
- err = new(caos_errs.UnauthenticatedError)
- _, ok := err.(caos_errs.Unauthenticated)
- assert.True(t, ok)
-}
-
-func TestThrowUnauthenticatedf(t *testing.T) {
- err := caos_errs.ThrowUnauthenticatedf(nil, "id", "msg")
- _, ok := err.(*caos_errs.UnauthenticatedError)
- assert.True(t, ok)
-}
-
-func TestIsUnauthenticated(t *testing.T) {
- err := caos_errs.ThrowUnauthenticated(nil, "id", "msg")
- ok := caos_errs.IsUnauthenticated(err)
- assert.True(t, ok)
-
- err = errors.New("I am found!")
- ok = caos_errs.IsUnauthenticated(err)
- assert.False(t, ok)
-}
diff --git a/internal/errors/unavailable_test.go b/internal/errors/unavailable_test.go
deleted file mode 100644
index 37fd549ea4..0000000000
--- a/internal/errors/unavailable_test.go
+++ /dev/null
@@ -1,33 +0,0 @@
-package errors_test
-
-import (
- "errors"
- "testing"
-
- "github.com/stretchr/testify/assert"
-
- caos_errs "github.com/zitadel/zitadel/internal/errors"
-)
-
-func TestUnavailableError(t *testing.T) {
- var err interface{}
- err = new(caos_errs.UnavailableError)
- _, ok := err.(caos_errs.Unavailable)
- assert.True(t, ok)
-}
-
-func TestThrowUnavailablef(t *testing.T) {
- err := caos_errs.ThrowUnavailablef(nil, "id", "msg")
- _, ok := err.(*caos_errs.UnavailableError)
- assert.True(t, ok)
-}
-
-func TestIsUnavailable(t *testing.T) {
- err := caos_errs.ThrowUnavailable(nil, "id", "msg")
- ok := caos_errs.IsUnavailable(err)
- assert.True(t, ok)
-
- err = errors.New("I am found!")
- ok = caos_errs.IsUnavailable(err)
- assert.False(t, ok)
-}
diff --git a/internal/errors/unimplemented_test.go b/internal/errors/unimplemented_test.go
deleted file mode 100644
index acaba5a424..0000000000
--- a/internal/errors/unimplemented_test.go
+++ /dev/null
@@ -1,33 +0,0 @@
-package errors_test
-
-import (
- "errors"
- "testing"
-
- "github.com/stretchr/testify/assert"
-
- caos_errs "github.com/zitadel/zitadel/internal/errors"
-)
-
-func TestUnimplementedError(t *testing.T) {
- var unimplementedError interface{}
- unimplementedError = new(caos_errs.UnimplementedError)
- _, ok := unimplementedError.(caos_errs.Unimplemented)
- assert.True(t, ok)
-}
-
-func TestThrowUnimplementedf(t *testing.T) {
- err := caos_errs.ThrowUnimplementedf(nil, "id", "msg")
- _, ok := err.(*caos_errs.UnimplementedError)
- assert.True(t, ok)
-}
-
-func TestIsUnimplemented(t *testing.T) {
- err := caos_errs.ThrowUnimplemented(nil, "id", "msg")
- ok := caos_errs.IsUnimplemented(err)
- assert.True(t, ok)
-
- err = errors.New("I am found!")
- ok = caos_errs.IsUnimplemented(err)
- assert.False(t, ok)
-}
diff --git a/internal/errors/unknown_test.go b/internal/errors/unknown_test.go
deleted file mode 100644
index 2b21c06475..0000000000
--- a/internal/errors/unknown_test.go
+++ /dev/null
@@ -1,33 +0,0 @@
-package errors_test
-
-import (
- "errors"
- "testing"
-
- "github.com/stretchr/testify/assert"
-
- caos_errs "github.com/zitadel/zitadel/internal/errors"
-)
-
-func TestUnknownError(t *testing.T) {
- var err interface{}
- err = new(caos_errs.UnknownError)
- _, ok := err.(caos_errs.Unknown)
- assert.True(t, ok)
-}
-
-func TestThrowUnknownf(t *testing.T) {
- err := caos_errs.ThrowUnknownf(nil, "id", "msg")
- _, ok := err.(*caos_errs.UnknownError)
- assert.True(t, ok)
-}
-
-func TestIsUnknown(t *testing.T) {
- err := caos_errs.ThrowUnknown(nil, "id", "msg")
- ok := caos_errs.IsUnknown(err)
- assert.True(t, ok)
-
- err = errors.New("I am found!")
- ok = caos_errs.IsUnknown(err)
- assert.False(t, ok)
-}
diff --git a/internal/eventstore/aggregate.go b/internal/eventstore/aggregate.go
index 30053079da..9939d8335c 100644
--- a/internal/eventstore/aggregate.go
+++ b/internal/eventstore/aggregate.go
@@ -55,6 +55,7 @@ func AggregateFromWriteModel(
version Version,
) *Aggregate {
return NewAggregate(
+ // TODO: the linter complains if this function is called without passing a context
context.Background(),
wm.AggregateID,
typ,
diff --git a/internal/eventstore/event.go b/internal/eventstore/event.go
index 4cb1d2ddc6..6c7f47b738 100644
--- a/internal/eventstore/event.go
+++ b/internal/eventstore/event.go
@@ -5,7 +5,7 @@ import (
"reflect"
"time"
- "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type action interface {
@@ -63,7 +63,7 @@ func EventData(event Command) ([]byte, error) {
if json.Valid(data) {
return data, nil
}
- return nil, errors.ThrowInvalidArgument(nil, "V2-6SbbS", "data bytes are not json")
+ return nil, zerrors.ThrowInvalidArgument(nil, "V2-6SbbS", "data bytes are not json")
}
dataType := reflect.TypeOf(event.Payload())
if dataType.Kind() == reflect.Ptr {
@@ -72,11 +72,11 @@ func EventData(event Command) ([]byte, error) {
if dataType.Kind() == reflect.Struct {
dataBytes, err := json.Marshal(event.Payload())
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "V2-xG87M", "could not marshal data")
+ return nil, zerrors.ThrowInvalidArgument(err, "V2-xG87M", "could not marshal data")
}
return dataBytes, nil
}
- return nil, errors.ThrowInvalidArgument(nil, "V2-91NRm", "wrong type of event data")
+ return nil, zerrors.ThrowInvalidArgument(nil, "V2-91NRm", "wrong type of event data")
}
type BaseEventSetter[T any] interface {
@@ -91,7 +91,7 @@ func GenericEventMapper[T any, PT BaseEventSetter[T]](event Event) (Event, error
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "ES-Thai6", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "ES-Thai6", "unable to unmarshal event")
}
return e, nil
diff --git a/internal/eventstore/eventstore_test.go b/internal/eventstore/eventstore_test.go
index 8fe9fd8592..fe8400be2d 100644
--- a/internal/eventstore/eventstore_test.go
+++ b/internal/eventstore/eventstore_test.go
@@ -10,7 +10,7 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/service"
- "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
// testEvent implements the Event interface
@@ -122,7 +122,7 @@ func Test_eventstore_RegisterFilterEventMapper(t *testing.T) {
eventMapper: map[EventType]eventTypeInterceptors{
"event.type": {
eventMapper: func(Event) (Event, error) {
- return nil, errors.ThrowUnimplemented(nil, "V2-1qPvn", "unimplemented")
+ return nil, zerrors.ThrowUnimplemented(nil, "V2-1qPvn", "unimplemented")
},
},
},
@@ -661,7 +661,7 @@ func TestEventstore_Push(t *testing.T) {
fields: fields{
pusher: &testPusher{
t: t,
- err: errors.ThrowInternal(nil, "V2-qaa4S", "test err"),
+ err: zerrors.ThrowInternal(nil, "V2-qaa4S", "test err"),
},
},
res: res{
@@ -684,7 +684,7 @@ func TestEventstore_Push(t *testing.T) {
fields: fields{
pusher: &testPusher{
t: t,
- err: errors.ThrowInternal(nil, "V2-qaa4S", "test err"),
+ err: zerrors.ThrowInternal(nil, "V2-qaa4S", "test err"),
},
},
res: res{
@@ -775,7 +775,7 @@ func TestEventstore_FilterEvents(t *testing.T) {
fields: fields{
repo: &testQuerier{
t: t,
- err: errors.ThrowInternal(nil, "V2-RfkBa", "test err"),
+ err: zerrors.ThrowInternal(nil, "V2-RfkBa", "test err"),
},
eventMapper: map[EventType]func(Event) (Event, error){
"test.event": func(e Event) (Event, error) {
@@ -901,7 +901,7 @@ func TestEventstore_LatestSequence(t *testing.T) {
fields: fields{
repo: &testQuerier{
t: t,
- err: errors.ThrowInternal(nil, "V2-RfkBa", "test err"),
+ err: zerrors.ThrowInternal(nil, "V2-RfkBa", "test err"),
},
},
res: res{
@@ -1038,7 +1038,7 @@ func TestEventstore_FilterToReducer(t *testing.T) {
fields: fields{
repo: &testQuerier{
t: t,
- err: errors.ThrowInternal(nil, "V2-RfkBa", "test err"),
+ err: zerrors.ThrowInternal(nil, "V2-RfkBa", "test err"),
},
eventMapper: map[EventType]func(Event) (Event, error){
"test.event": func(e Event) (Event, error) {
@@ -1100,7 +1100,7 @@ func TestEventstore_FilterToReducer(t *testing.T) {
},
readModel: &testReducer{
t: t,
- err: errors.ThrowInvalidArgument(nil, "V2-W06TG", "test err"),
+ err: zerrors.ThrowInvalidArgument(nil, "V2-W06TG", "test err"),
expectedLength: 1,
},
},
@@ -1212,7 +1212,7 @@ func TestEventstore_mapEvents(t *testing.T) {
fields: fields{
eventMapper: map[EventType]func(Event) (Event, error){
"test.event": func(Event) (Event, error) {
- return nil, errors.ThrowInternal(nil, "V2-8FbQk", "test err")
+ return nil, zerrors.ThrowInternal(nil, "V2-8FbQk", "test err")
},
},
},
diff --git a/internal/eventstore/handler/crdb/lock.go b/internal/eventstore/handler/crdb/lock.go
index e751eff2a2..ba17ba7925 100644
--- a/internal/eventstore/handler/crdb/lock.go
+++ b/internal/eventstore/handler/crdb/lock.go
@@ -11,8 +11,8 @@ import (
"github.com/zitadel/logging"
"github.com/zitadel/zitadel/internal/database"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/id"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -74,10 +74,10 @@ func (h *locker) renewLock(ctx context.Context, lockDuration time.Duration, inst
lockStmt, values := h.lockStatement(lockDuration, instanceIDs)
res, err := h.client.ExecContext(ctx, lockStmt, values...)
if err != nil {
- return errors.ThrowInternal(err, "CRDB-uaDoR", "unable to execute lock")
+ return zerrors.ThrowInternal(err, "CRDB-uaDoR", "unable to execute lock")
}
if rows, _ := res.RowsAffected(); rows == 0 {
- return errors.ThrowAlreadyExists(nil, "CRDB-mmi4J", "projection already locked")
+ return zerrors.ThrowAlreadyExists(nil, "CRDB-mmi4J", "projection already locked")
}
return nil
}
@@ -86,7 +86,7 @@ func (h *locker) Unlock(instanceIDs ...string) error {
lockStmt, values := h.lockStatement(0, instanceIDs)
_, err := h.client.Exec(lockStmt, values...)
if err != nil {
- return errors.ThrowUnknown(err, "CRDB-JjfwO", "unlock failed")
+ return zerrors.ThrowUnknown(err, "CRDB-JjfwO", "unlock failed")
}
return nil
}
diff --git a/internal/eventstore/handler/crdb/lock_test.go b/internal/eventstore/handler/crdb/lock_test.go
index 5ab824ee66..55d23b65bd 100644
--- a/internal/eventstore/handler/crdb/lock_test.go
+++ b/internal/eventstore/handler/crdb/lock_test.go
@@ -11,7 +11,7 @@ import (
"github.com/DATA-DOG/go-sqlmock"
"github.com/zitadel/zitadel/internal/database"
- z_errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -21,7 +21,7 @@ const (
)
var (
- renewNoRowsAffectedErr = z_errs.ThrowAlreadyExists(nil, "CRDB-mmi4J", "projection already locked")
+ renewNoRowsAffectedErr = zerrors.ThrowAlreadyExists(nil, "CRDB-mmi4J", "projection already locked")
errLock = errors.New("lock err")
)
diff --git a/internal/eventstore/handler/v2/failed_event.go b/internal/eventstore/handler/v2/failed_event.go
index b9630f7bc6..53457883ca 100644
--- a/internal/eventstore/handler/v2/failed_event.go
+++ b/internal/eventstore/handler/v2/failed_event.go
@@ -5,8 +5,8 @@ import (
_ "embed"
"time"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -69,10 +69,10 @@ func (h *Handler) failureCount(tx *sql.Tx, f *failure) (count uint8, err error)
f.sequence,
)
if err = row.Err(); err != nil {
- return 0, errors.ThrowInternal(err, "CRDB-Unnex", "unable to update failure count")
+ return 0, zerrors.ThrowInternal(err, "CRDB-Unnex", "unable to update failure count")
}
if err = row.Scan(&count); err != nil {
- return 0, errors.ThrowInternal(err, "CRDB-RwSMV", "unable to scan count")
+ return 0, zerrors.ThrowInternal(err, "CRDB-RwSMV", "unable to scan count")
}
return count, nil
}
@@ -89,7 +89,7 @@ func (h *Handler) setFailureCount(tx *sql.Tx, count uint8, f *failure) error {
f.err.Error(),
)
if err != nil {
- return errors.ThrowInternal(err, "CRDB-4Ht4x", "set failure count failed")
+ return zerrors.ThrowInternal(err, "CRDB-4Ht4x", "set failure count failed")
}
return nil
}
diff --git a/internal/eventstore/handler/v2/init.go b/internal/eventstore/handler/v2/init.go
index cca5cb995b..5ee650799f 100644
--- a/internal/eventstore/handler/v2/init.go
+++ b/internal/eventstore/handler/v2/init.go
@@ -9,8 +9,8 @@ import (
"github.com/jackc/pgconn"
"github.com/zitadel/logging"
- errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/handler"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Table struct {
@@ -196,7 +196,7 @@ func (h *Handler) Init(ctx context.Context) error {
}
tx, err := h.client.BeginTx(ctx, nil)
if err != nil {
- return errs.ThrowInternal(err, "CRDB-SAdf2", "begin failed")
+ return zerrors.ThrowInternal(err, "CRDB-SAdf2", "begin failed")
}
for i, execute := range check.Init().Executes {
logging.WithFields("projection", h.projection.Name(), "execute", i).Debug("executing check")
@@ -274,7 +274,7 @@ func execNextIfExists(config execConfig, q query, opts []execOption, executeNext
}
func isErrAlreadyExists(err error) bool {
- caosErr := &errs.CaosError{}
+ caosErr := &zerrors.ZitadelError{}
if !errors.As(err, &caosErr) {
return false
}
diff --git a/internal/eventstore/handler/v2/state.go b/internal/eventstore/handler/v2/state.go
index 4506135d77..cdd9a3b9b9 100644
--- a/internal/eventstore/handler/v2/state.go
+++ b/internal/eventstore/handler/v2/state.go
@@ -8,8 +8,8 @@ import (
"time"
"github.com/zitadel/zitadel/internal/api/authz"
- errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type state struct {
@@ -19,7 +19,7 @@ type state struct {
aggregateType eventstore.AggregateType
aggregateID string
sequence uint64
- offset uint16
+ offset uint32
}
var (
@@ -46,7 +46,7 @@ func (h *Handler) currentState(ctx context.Context, tx *sql.Tx, config *triggerC
sequence = new(sql.NullInt64)
timestamp = new(sql.NullTime)
position = new(sql.NullFloat64)
- offset = new(sql.NullInt16)
+ offset = new(sql.NullInt64)
)
stateQuery := currentStateStmt
@@ -76,7 +76,8 @@ func (h *Handler) currentState(ctx context.Context, tx *sql.Tx, config *triggerC
currentState.sequence = uint64(sequence.Int64)
currentState.eventTimestamp = timestamp.Time
currentState.position = position.Float64
- currentState.offset = uint16(offset.Int16)
+ // psql does not provide unsigned numbers so we work around it
+ currentState.offset = uint32(offset.Int64)
return currentState, nil
}
@@ -97,7 +98,7 @@ func (h *Handler) setState(tx *sql.Tx, updatedState *state) error {
}
if affected, err := res.RowsAffected(); affected == 0 {
h.log().OnError(err).Error("unable to check if states are updated")
- return errs.ThrowInternal(err, "V2-FGEKi", "unable to update state")
+ return zerrors.ThrowInternal(err, "V2-FGEKi", "unable to update state")
}
return nil
}
@@ -111,7 +112,7 @@ func (h *Handler) lockState(tx *sql.Tx, instanceID string) error {
return err
}
if affected, err := res.RowsAffected(); affected == 0 || err != nil {
- return errs.ThrowInternal(err, "V2-lpiK0", "projection already locked")
+ return zerrors.ThrowInternal(err, "V2-lpiK0", "projection already locked")
}
return nil
}
diff --git a/internal/eventstore/handler/v2/state_test.go b/internal/eventstore/handler/v2/state_test.go
index 15031e66b1..5e20773947 100644
--- a/internal/eventstore/handler/v2/state_test.go
+++ b/internal/eventstore/handler/v2/state_test.go
@@ -14,7 +14,7 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/database/mock"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestHandler_lockState(t *testing.T) {
@@ -80,7 +80,7 @@ func TestHandler_lockState(t *testing.T) {
instanceID: "instance",
},
isErr: func(t *testing.T, err error) {
- if !errors.Is(err, errs.ThrowInternal(nil, "V2-lpiK0", "")) {
+ if !errors.Is(err, zerrors.ThrowInternal(nil, "V2-lpiK0", "")) {
t.Errorf("unexpected error: want internal (V2lpiK0), got: %v", err)
}
},
@@ -195,7 +195,7 @@ func TestHandler_updateLastUpdated(t *testing.T) {
},
},
isErr: func(t *testing.T, err error) {
- if !errors.Is(err, errs.ThrowInternal(nil, "V2-FGEKi", "")) {
+ if !errors.Is(err, zerrors.ThrowInternal(nil, "V2-FGEKi", "")) {
t.Errorf("unexpected error, want: %v, got %v", sql.ErrTxDone, err)
}
},
diff --git a/internal/eventstore/handler/v2/statement.go b/internal/eventstore/handler/v2/statement.go
index f2c915f634..0816d5b451 100644
--- a/internal/eventstore/handler/v2/statement.go
+++ b/internal/eventstore/handler/v2/statement.go
@@ -3,7 +3,7 @@ package handler
import (
"database/sql"
"encoding/json"
- errs "errors"
+ "errors"
"strconv"
"strings"
"time"
@@ -11,8 +11,8 @@ import (
"github.com/zitadel/logging"
"github.com/zitadel/zitadel/internal/database"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (h *Handler) eventsToStatements(tx *sql.Tx, events []eventstore.Event, currentState *state) (statements []*Statement, err error) {
@@ -65,7 +65,7 @@ type Statement struct {
CreationDate time.Time
InstanceID string
- offset uint16
+ offset uint32
Execute Exec
}
@@ -79,9 +79,9 @@ func WithTableSuffix(name string) func(*execConfig) {
}
var (
- ErrNoProjection = errs.New("no projection")
- ErrNoValues = errs.New("no values")
- ErrNoCondition = errs.New("no condition")
+ ErrNoProjection = errors.New("no projection")
+ ErrNoValues = errors.New("no values")
+ ErrNoCondition = errors.New("no condition")
)
func NewStatement(event eventstore.Event, e Exec) *Statement {
@@ -558,7 +558,7 @@ func exec(config execConfig, q query, opts []execOption) Exec {
_, err = ex.Exec("SAVEPOINT stmt_exec")
if err != nil {
- return errors.ThrowInternal(err, "CRDB-YdOXD", "create savepoint failed")
+ return zerrors.ThrowInternal(err, "CRDB-YdOXD", "create savepoint failed")
}
defer func() {
if err != nil {
@@ -570,7 +570,7 @@ func exec(config execConfig, q query, opts []execOption) Exec {
}()
_, err = ex.Exec(q(config), config.args...)
if err != nil {
- return errors.ThrowInternal(err, "CRDB-pKtsr", "exec failed")
+ return zerrors.ThrowInternal(err, "CRDB-pKtsr", "exec failed")
}
return nil
diff --git a/internal/eventstore/repository/mock/repository.mock.impl.go b/internal/eventstore/repository/mock/repository.mock.impl.go
index bf49929c7b..6ae64ddf0f 100644
--- a/internal/eventstore/repository/mock/repository.mock.impl.go
+++ b/internal/eventstore/repository/mock/repository.mock.impl.go
@@ -75,11 +75,15 @@ func (m *MockRepository) ExpectInstanceIDsError(err error) *MockRepository {
return m
}
-func (m *MockRepository) ExpectPush(expectedCommands []eventstore.Command) *MockRepository {
+// ExpectPush checks if the expectedCommands are send to the Push method.
+// The call will sleep at least the amount of passed duration.
+func (m *MockRepository) ExpectPush(expectedCommands []eventstore.Command, sleep time.Duration) *MockRepository {
m.MockPusher.EXPECT().Push(gomock.Any(), gomock.Any()).DoAndReturn(
func(ctx context.Context, commands ...eventstore.Command) ([]eventstore.Event, error) {
m.MockPusher.ctrl.T.Helper()
+ time.Sleep(sleep)
+
if len(expectedCommands) != len(commands) {
return nil, fmt.Errorf("unexpected amount of commands: want %d, got %d", len(expectedCommands), len(commands))
}
diff --git a/internal/eventstore/repository/search_query.go b/internal/eventstore/repository/search_query.go
index b0c7769cb1..3d6d015772 100644
--- a/internal/eventstore/repository/search_query.go
+++ b/internal/eventstore/repository/search_query.go
@@ -4,8 +4,8 @@ import (
"database/sql"
"github.com/zitadel/zitadel/internal/database"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
// SearchQuery defines the which and how data are queried
@@ -17,7 +17,7 @@ type SearchQuery struct {
AllowTimeTravel bool
AwaitOpenTransactions bool
Limit uint64
- Offset uint16
+ Offset uint32
Desc bool
InstanceID *Filter
@@ -99,16 +99,16 @@ func NewFilter(field Field, value interface{}, operation Operation) *Filter {
// Validate checks if the fields of the filter have valid values
func (f *Filter) Validate() error {
if f == nil {
- return errors.ThrowPreconditionFailed(nil, "REPO-z6KcG", "filter is nil")
+ return zerrors.ThrowPreconditionFailed(nil, "REPO-z6KcG", "filter is nil")
}
if f.Field <= 0 || f.Field >= fieldCount {
- return errors.ThrowPreconditionFailed(nil, "REPO-zw62U", "field not definded")
+ return zerrors.ThrowPreconditionFailed(nil, "REPO-zw62U", "field not definded")
}
if f.Value == nil {
- return errors.ThrowPreconditionFailed(nil, "REPO-GJ9ct", "no value definded")
+ return zerrors.ThrowPreconditionFailed(nil, "REPO-GJ9ct", "no value definded")
}
if f.Operation <= 0 || f.Operation >= operationCount {
- return errors.ThrowPreconditionFailed(nil, "REPO-RrQTy", "operation not definded")
+ return zerrors.ThrowPreconditionFailed(nil, "REPO-RrQTy", "operation not definded")
}
return nil
}
@@ -116,7 +116,7 @@ func (f *Filter) Validate() error {
func QueryFromBuilder(builder *eventstore.SearchQueryBuilder) (*SearchQuery, error) {
if builder == nil ||
builder.GetColumns().Validate() != nil {
- return nil, errors.ThrowPreconditionFailed(nil, "MODEL-4m9gs", "builder invalid")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "MODEL-4m9gs", "builder invalid")
}
query := &SearchQuery{
diff --git a/internal/eventstore/repository/sql/crdb.go b/internal/eventstore/repository/sql/crdb.go
index 351587c1f4..5e53614be4 100644
--- a/internal/eventstore/repository/sql/crdb.go
+++ b/internal/eventstore/repository/sql/crdb.go
@@ -17,9 +17,9 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/database/dialect"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/repository"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -190,7 +190,7 @@ func (db *CRDB) Push(ctx context.Context, commands ...eventstore.Command) (event
"eventType", e.Type(),
"instanceID", e.Aggregate().InstanceID,
).WithError(err).Debug("query failed")
- return caos_errs.ThrowInternal(err, "SQL-SBP37", "unable to create event")
+ return zerrors.ThrowInternal(err, "SQL-SBP37", "unable to create event")
}
uniqueConstraints = append(uniqueConstraints, command.UniqueConstraints()...)
@@ -199,8 +199,8 @@ func (db *CRDB) Push(ctx context.Context, commands ...eventstore.Command) (event
return db.handleUniqueConstraints(ctx, tx, uniqueConstraints...)
})
- if err != nil && !errors.Is(err, &caos_errs.CaosError{}) {
- err = caos_errs.ThrowInternal(err, "SQL-DjgtG", "unable to store events")
+ if err != nil && !errors.Is(err, &zerrors.ZitadelError{}) {
+ err = zerrors.ThrowInternal(err, "SQL-DjgtG", "unable to store events")
}
return events, err
@@ -223,10 +223,10 @@ func (db *CRDB) handleUniqueConstraints(ctx context.Context, tx *sql.Tx, uniqueC
"unique_field", uniqueConstraint.UniqueField).WithError(err).Info("insert unique constraint failed")
if db.isUniqueViolationError(err) {
- return caos_errs.ThrowAlreadyExists(err, "SQL-wHcEq", uniqueConstraint.ErrorMessage)
+ return zerrors.ThrowAlreadyExists(err, "SQL-wHcEq", uniqueConstraint.ErrorMessage)
}
- return caos_errs.ThrowInternal(err, "SQL-dM9ds", "unable to create unique constraint")
+ return zerrors.ThrowInternal(err, "SQL-dM9ds", "unable to create unique constraint")
}
case eventstore.UniqueConstraintRemove:
_, err := tx.ExecContext(ctx, uniqueDelete, uniqueConstraint.UniqueType, uniqueConstraint.UniqueField, authz.GetInstance(ctx).InstanceID())
@@ -234,14 +234,14 @@ func (db *CRDB) handleUniqueConstraints(ctx context.Context, tx *sql.Tx, uniqueC
logging.WithFields(
"unique_type", uniqueConstraint.UniqueType,
"unique_field", uniqueConstraint.UniqueField).WithError(err).Info("delete unique constraint failed")
- return caos_errs.ThrowInternal(err, "SQL-6n88i", "unable to remove unique constraint")
+ return zerrors.ThrowInternal(err, "SQL-6n88i", "unable to remove unique constraint")
}
case eventstore.UniqueConstraintInstanceRemove:
_, err := tx.ExecContext(ctx, uniqueDeleteInstance, authz.GetInstance(ctx).InstanceID())
if err != nil {
logging.WithFields(
"instance_id", authz.GetInstance(ctx).InstanceID()).WithError(err).Info("delete instance unique constraints failed")
- return caos_errs.ThrowInternal(err, "SQL-6n88i", "unable to remove unique constraints of instance")
+ return zerrors.ThrowInternal(err, "SQL-6n88i", "unable to remove unique constraints of instance")
}
}
}
diff --git a/internal/eventstore/repository/sql/query.go b/internal/eventstore/repository/sql/query.go
index a2eda79d3e..6cd0672e46 100644
--- a/internal/eventstore/repository/sql/query.go
+++ b/internal/eventstore/repository/sql/query.go
@@ -14,9 +14,9 @@ import (
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/database/dialect"
- z_errors "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/repository"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type querier interface {
@@ -62,7 +62,7 @@ func query(ctx context.Context, criteria querier, searchQuery *eventstore.Search
query, rowScanner := prepareColumns(criteria, q.Columns, useV1)
where, values := prepareConditions(criteria, q, useV1)
if where == "" || query == "" {
- return z_errors.ThrowInvalidArgument(nil, "SQL-rWeBw", "invalid query factory")
+ return zerrors.ThrowInvalidArgument(nil, "SQL-rWeBw", "invalid query factory")
}
if q.Tx == nil {
if travel := prepareTimeTravel(ctx, criteria, q.AllowTimeTravel); travel != "" {
@@ -116,7 +116,7 @@ func query(ctx context.Context, criteria querier, searchQuery *eventstore.Search
}, query, values...)
if err != nil {
logging.New().WithError(err).Info("query failed")
- return z_errors.ThrowInternal(err, "SQL-KyeAx", "unable to filter events")
+ return zerrors.ThrowInternal(err, "SQL-KyeAx", "unable to filter events")
}
return nil
@@ -146,25 +146,25 @@ func prepareTimeTravel(ctx context.Context, criteria querier, allow bool) string
func maxSequenceScanner(row scan, dest interface{}) (err error) {
position, ok := dest.(*sql.NullFloat64)
if !ok {
- return z_errors.ThrowInvalidArgumentf(nil, "SQL-NBjA9", "type must be sql.NullInt64 got: %T", dest)
+ return zerrors.ThrowInvalidArgumentf(nil, "SQL-NBjA9", "type must be sql.NullInt64 got: %T", dest)
}
err = row(position)
if err == nil || errors.Is(err, sql.ErrNoRows) {
return nil
}
- return z_errors.ThrowInternal(err, "SQL-bN5xg", "something went wrong")
+ return zerrors.ThrowInternal(err, "SQL-bN5xg", "something went wrong")
}
func instanceIDsScanner(scanner scan, dest interface{}) (err error) {
ids, ok := dest.(*[]string)
if !ok {
- return z_errors.ThrowInvalidArgument(nil, "SQL-Begh2", "type must be an array of string")
+ return zerrors.ThrowInvalidArgument(nil, "SQL-Begh2", "type must be an array of string")
}
var id string
err = scanner(&id)
if err != nil {
logging.WithError(err).Warn("unable to scan row")
- return z_errors.ThrowInternal(err, "SQL-DEFGe", "unable to scan row")
+ return zerrors.ThrowInternal(err, "SQL-DEFGe", "unable to scan row")
}
*ids = append(*ids, id)
@@ -175,7 +175,7 @@ func eventsScanner(useV1 bool) func(scanner scan, dest interface{}) (err error)
return func(scanner scan, dest interface{}) (err error) {
reduce, ok := dest.(eventstore.Reducer)
if !ok {
- return z_errors.ThrowInvalidArgumentf(nil, "SQL-4GP6F", "events scanner: invalid type %T", dest)
+ return zerrors.ThrowInvalidArgumentf(nil, "SQL-4GP6F", "events scanner: invalid type %T", dest)
}
event := new(repository.Event)
position := new(sql.NullFloat64)
@@ -213,7 +213,7 @@ func eventsScanner(useV1 bool) func(scanner scan, dest interface{}) (err error)
if err != nil {
logging.New().WithError(err).Warn("unable to scan row")
- return z_errors.ThrowInternal(err, "SQL-M0dsf", "unable to scan row")
+ return zerrors.ThrowInternal(err, "SQL-M0dsf", "unable to scan row")
}
event.Pos = position.Float64
return reduce(event)
diff --git a/internal/eventstore/repository/sql/query_test.go b/internal/eventstore/repository/sql/query_test.go
index 8d6f670384..6be560ce42 100644
--- a/internal/eventstore/repository/sql/query_test.go
+++ b/internal/eventstore/repository/sql/query_test.go
@@ -14,9 +14,9 @@ import (
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/database/cockroach"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/repository"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func Test_getCondition(t *testing.T) {
@@ -142,7 +142,7 @@ func Test_prepareColumns(t *testing.T) {
},
res: res{
query: `SELECT "position" FROM eventstore.events2`,
- dbErr: errors.IsErrorInvalidArgument,
+ dbErr: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -212,7 +212,7 @@ func Test_prepareColumns(t *testing.T) {
},
res: res{
query: `SELECT creation_date, event_type, event_sequence, event_data, editor_user, resource_owner, instance_id, aggregate_type, aggregate_id, aggregate_version FROM eventstore.events`,
- dbErr: errors.IsErrorInvalidArgument,
+ dbErr: zerrors.IsErrorInvalidArgument,
},
},
{
@@ -228,7 +228,7 @@ func Test_prepareColumns(t *testing.T) {
},
res: res{
query: `SELECT creation_date, event_type, event_sequence, event_data, editor_user, resource_owner, instance_id, aggregate_type, aggregate_id, aggregate_version FROM eventstore.events`,
- dbErr: errors.IsInternal,
+ dbErr: zerrors.IsInternal,
},
},
}
@@ -277,7 +277,7 @@ func prepareTestScan(err error, res []interface{}) scan {
return err
}
if len(dests) != len(res) {
- return errors.ThrowInvalidArgumentf(nil, "SQL-NML1q", "expected len %d got %d", len(res), len(dests))
+ return zerrors.ThrowInvalidArgumentf(nil, "SQL-NML1q", "expected len %d got %d", len(res), len(dests))
}
for i, r := range res {
_, ok := dests[i].(*eventstore.Version)
diff --git a/internal/eventstore/search_query.go b/internal/eventstore/search_query.go
index 68321f9f91..65facd2c8a 100644
--- a/internal/eventstore/search_query.go
+++ b/internal/eventstore/search_query.go
@@ -6,7 +6,7 @@ import (
"time"
"github.com/zitadel/zitadel/internal/api/authz"
- "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
// SearchQueryBuilder represents the builder for your filter
@@ -14,7 +14,7 @@ import (
type SearchQueryBuilder struct {
columns Columns
limit uint64
- offset uint16
+ offset uint32
desc bool
resourceOwner string
instanceID *string
@@ -38,7 +38,7 @@ func (b *SearchQueryBuilder) GetLimit() uint64 {
return b.limit
}
-func (b *SearchQueryBuilder) GetOffset() uint16 {
+func (b *SearchQueryBuilder) GetOffset() uint32 {
return b.offset
}
@@ -141,7 +141,7 @@ const (
func (c Columns) Validate() error {
if c <= 0 || c >= columnsCount {
- return errors.ThrowPreconditionFailed(nil, "REPOS-x8R35", "column out of range")
+ return zerrors.ThrowPreconditionFailed(nil, "REPOS-x8R35", "column out of range")
}
return nil
}
@@ -160,7 +160,7 @@ func (builder *SearchQueryBuilder) Matches(commands ...Command) []Command {
if builder.limit > 0 && builder.limit <= uint64(len(matches)) {
break
}
- if builder.offset > 0 && uint16(i) < builder.offset {
+ if builder.offset > 0 && uint32(i) < builder.offset {
continue
}
@@ -213,7 +213,7 @@ func (builder *SearchQueryBuilder) Limit(limit uint64) *SearchQueryBuilder {
}
// Limit defines how many events are returned maximally.
-func (builder *SearchQueryBuilder) Offset(offset uint16) *SearchQueryBuilder {
+func (builder *SearchQueryBuilder) Offset(offset uint32) *SearchQueryBuilder {
builder.offset = offset
return builder
}
diff --git a/internal/eventstore/v1/models/event.go b/internal/eventstore/v1/models/event.go
index 82f7d3f8e8..8c50d64da0 100644
--- a/internal/eventstore/v1/models/event.go
+++ b/internal/eventstore/v1/models/event.go
@@ -5,8 +5,8 @@ import (
"reflect"
"time"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type EventType string
@@ -101,7 +101,7 @@ func eventData(i interface{}) ([]byte, error) {
case map[string]interface{}:
bytes, err := json.Marshal(v)
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "MODEL-s2fgE", "unable to marshal data")
+ return nil, zerrors.ThrowInvalidArgument(err, "MODEL-s2fgE", "unable to marshal data")
}
return bytes, nil
case nil:
@@ -112,11 +112,11 @@ func eventData(i interface{}) ([]byte, error) {
t = t.Elem()
}
if t.Kind() != reflect.Struct {
- return nil, errors.ThrowInvalidArgument(nil, "MODEL-rjWdN", "data is not valid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "MODEL-rjWdN", "data is not valid")
}
bytes, err := json.Marshal(v)
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "MODEL-Y2OpM", "unable to marshal data")
+ return nil, zerrors.ThrowInvalidArgument(err, "MODEL-Y2OpM", "unable to marshal data")
}
return bytes, nil
}
@@ -124,29 +124,29 @@ func eventData(i interface{}) ([]byte, error) {
func (e *Event) Validate() error {
if e == nil {
- return errors.ThrowPreconditionFailed(nil, "MODEL-oEAG4", "event is nil")
+ return zerrors.ThrowPreconditionFailed(nil, "MODEL-oEAG4", "event is nil")
}
if string(e.Typ) == "" {
- return errors.ThrowPreconditionFailed(nil, "MODEL-R2sB0", "type not defined")
+ return zerrors.ThrowPreconditionFailed(nil, "MODEL-R2sB0", "type not defined")
}
if e.AggregateID == "" {
- return errors.ThrowPreconditionFailed(nil, "MODEL-A6WwL", "aggregate id not set")
+ return zerrors.ThrowPreconditionFailed(nil, "MODEL-A6WwL", "aggregate id not set")
}
if e.AggregateType == "" {
- return errors.ThrowPreconditionFailed(nil, "MODEL-EzdyK", "aggregate type not set")
+ return zerrors.ThrowPreconditionFailed(nil, "MODEL-EzdyK", "aggregate type not set")
}
if err := e.AggregateVersion.Validate(); err != nil {
- return errors.ThrowPreconditionFailed(err, "MODEL-KO71q", "version invalid")
+ return zerrors.ThrowPreconditionFailed(err, "MODEL-KO71q", "version invalid")
}
if e.Service == "" {
- return errors.ThrowPreconditionFailed(nil, "MODEL-4Yqik", "editor service not set")
+ return zerrors.ThrowPreconditionFailed(nil, "MODEL-4Yqik", "editor service not set")
}
if e.User == "" {
- return errors.ThrowPreconditionFailed(nil, "MODEL-L3NHO", "editor user not set")
+ return zerrors.ThrowPreconditionFailed(nil, "MODEL-L3NHO", "editor user not set")
}
if e.ResourceOwner == "" {
- return errors.ThrowPreconditionFailed(nil, "MODEL-omFVT", "resource ow")
+ return zerrors.ThrowPreconditionFailed(nil, "MODEL-omFVT", "resource ow")
}
return nil
}
diff --git a/internal/eventstore/v3/event.go b/internal/eventstore/v3/event.go
index f99e91b050..e1c95f13ff 100644
--- a/internal/eventstore/v3/event.go
+++ b/internal/eventstore/v3/event.go
@@ -6,8 +6,8 @@ import (
"github.com/zitadel/logging"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -31,7 +31,7 @@ func commandToEvent(sequence *latestSequence, command eventstore.Command) (_ *ev
payload, err = json.Marshal(command.Payload())
if err != nil {
logging.WithError(err).Warn("marshal payload failed")
- return nil, errors.ThrowInternal(err, "V3-MInPK", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "V3-MInPK", "Errors.Internal")
}
}
return &event{
@@ -95,7 +95,7 @@ func (e *event) Unmarshal(ptr any) error {
return nil
}
if err := json.Unmarshal(e.payload, ptr); err != nil {
- return errors.ThrowInternal(err, "V3-u8qVo", "Errors.Internal")
+ return zerrors.ThrowInternal(err, "V3-u8qVo", "Errors.Internal")
}
return nil
diff --git a/internal/eventstore/v3/push.go b/internal/eventstore/v3/push.go
index b954b5ca45..a86e426132 100644
--- a/internal/eventstore/v3/push.go
+++ b/internal/eventstore/v3/push.go
@@ -4,7 +4,7 @@ import (
"context"
"database/sql"
_ "embed"
- errs "errors"
+ "errors"
"fmt"
"strconv"
"strings"
@@ -14,8 +14,8 @@ import (
"github.com/jackc/pgconn"
"github.com/zitadel/logging"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (es *Eventstore) Push(ctx context.Context, commands ...eventstore.Command) (events []eventstore.Event, err error) {
@@ -77,16 +77,16 @@ func insertEvents(ctx context.Context, tx *sql.Tx, sequences []*latestSequence,
if err := rows.Err(); err != nil {
pgErr := new(pgconn.PgError)
- if errs.As(err, &pgErr) {
+ if errors.As(err, &pgErr) {
// Check if push tries to write an event just written
// by another transaction
if pgErr.Code == "40001" {
// TODO: @livio-a should we return the parent or not?
- return nil, errors.ThrowInvalidArgument(err, "V3-p5xAn", "Errors.AlreadyExists")
+ return nil, zerrors.ThrowInvalidArgument(err, "V3-p5xAn", "Errors.AlreadyExists")
}
}
logging.WithError(rows.Err()).Warn("failed to push events")
- return nil, errors.ThrowInternal(err, "V3-VGnZY", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "V3-VGnZY", "Errors.Internal")
}
return events, nil
@@ -132,7 +132,7 @@ func mapCommands(commands []eventstore.Command, sequences []*latestSequence) (ev
revision, err := strconv.Atoi(strings.TrimPrefix(string(events[i].(*event).aggregate.Version), "v"))
if err != nil {
- return nil, nil, nil, errors.ThrowInternal(err, "V3-JoZEp", "Errors.Internal")
+ return nil, nil, nil, zerrors.ThrowInternal(err, "V3-JoZEp", "Errors.Internal")
}
args = append(args,
events[i].(*event).aggregate.InstanceID,
diff --git a/internal/eventstore/v3/sequence.go b/internal/eventstore/v3/sequence.go
index 3155ac3a92..8d84ef4755 100644
--- a/internal/eventstore/v3/sequence.go
+++ b/internal/eventstore/v3/sequence.go
@@ -10,8 +10,8 @@ import (
"github.com/zitadel/logging"
"github.com/zitadel/zitadel/internal/api/authz"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type latestSequence struct {
@@ -26,20 +26,20 @@ func latestSequences(ctx context.Context, tx *sql.Tx, commands []eventstore.Comm
sequences := commandsToSequences(ctx, commands)
conditions, args := sequencesToSql(sequences)
- rows, err := tx.QueryContext(ctx, fmt.Sprintf(latestSequencesStmt, strings.Join(conditions, " OR ")), args...)
+ rows, err := tx.QueryContext(ctx, fmt.Sprintf(latestSequencesStmt, strings.Join(conditions, " UNION ALL ")), args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "V3-5jU5z", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "V3-5jU5z", "Errors.Internal")
}
defer rows.Close()
for rows.Next() {
if err := scanToSequence(rows, sequences); err != nil {
- return nil, errors.ThrowInternal(err, "V3-Ydiwv", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "V3-Ydiwv", "Errors.Internal")
}
}
if rows.Err() != nil {
- return nil, errors.ThrowInternal(rows.Err(), "V3-XApDk", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(rows.Err(), "V3-XApDk", "Errors.Internal")
}
return sequences, nil
}
@@ -92,7 +92,7 @@ func sequencesToSql(sequences []*latestSequence) (conditions []string, args []an
conditions = make([]string, len(sequences))
for i, sequence := range sequences {
- conditions[i] = fmt.Sprintf("(instance_id = $%d AND aggregate_type = $%d AND aggregate_id = $%d)",
+ conditions[i] = fmt.Sprintf(`(SELECT instance_id, aggregate_type, aggregate_id, "sequence" FROM eventstore.events2 WHERE instance_id = $%d AND aggregate_type = $%d AND aggregate_id = $%d ORDER BY "sequence" DESC LIMIT 1)`,
i*argsPerCondition+1,
i*argsPerCondition+2,
i*argsPerCondition+3,
@@ -110,7 +110,7 @@ func scanToSequence(rows *sql.Rows, sequences []*latestSequence) error {
var resourceOwner string
if err := rows.Scan(&instanceID, &resourceOwner, &aggregateType, &aggregateID, ¤tSequence); err != nil {
- return errors.ThrowInternal(err, "V3-OIWqj", "Errors.Internal")
+ return zerrors.ThrowInternal(err, "V3-OIWqj", "Errors.Internal")
}
sequence := searchSequence(sequences, aggregateType, aggregateID, instanceID)
diff --git a/internal/eventstore/v3/sequence_test.go b/internal/eventstore/v3/sequence_test.go
index 55ee73831d..d755c0dbd2 100644
--- a/internal/eventstore/v3/sequence_test.go
+++ b/internal/eventstore/v3/sequence_test.go
@@ -247,7 +247,7 @@ func Test_sequencesToSql(t *testing.T) {
},
},
wantConditions: []string{
- "(instance_id = $1 AND aggregate_type = $2 AND aggregate_id = $3)",
+ `(SELECT instance_id, aggregate_type, aggregate_id, "sequence" FROM eventstore.events2 WHERE instance_id = $1 AND aggregate_type = $2 AND aggregate_id = $3 ORDER BY "sequence" DESC LIMIT 1)`,
},
wantArgs: []any{
"instance",
@@ -266,8 +266,8 @@ func Test_sequencesToSql(t *testing.T) {
},
},
wantConditions: []string{
- "(instance_id = $1 AND aggregate_type = $2 AND aggregate_id = $3)",
- "(instance_id = $4 AND aggregate_type = $5 AND aggregate_id = $6)",
+ `(SELECT instance_id, aggregate_type, aggregate_id, "sequence" FROM eventstore.events2 WHERE instance_id = $1 AND aggregate_type = $2 AND aggregate_id = $3 ORDER BY "sequence" DESC LIMIT 1)`,
+ `(SELECT instance_id, aggregate_type, aggregate_id, "sequence" FROM eventstore.events2 WHERE instance_id = $4 AND aggregate_type = $5 AND aggregate_id = $6 ORDER BY "sequence" DESC LIMIT 1)`,
},
wantArgs: []any{
"instance",
diff --git a/internal/eventstore/v3/sequences_query.sql b/internal/eventstore/v3/sequences_query.sql
index fb164013dc..468a275253 100644
--- a/internal/eventstore/v3/sequences_query.sql
+++ b/internal/eventstore/v3/sequences_query.sql
@@ -1,17 +1,5 @@
-with existing as (
- SELECT
- instance_id
- , aggregate_type
- , aggregate_id
- , MAX("sequence") "sequence"
- FROM
- eventstore.events2 existing
- WHERE
- %s
- GROUP BY
- instance_id
- , aggregate_type
- , aggregate_id
+WITH existing AS (
+ %s
) SELECT
e.instance_id
, e.owner
@@ -23,8 +11,8 @@ FROM
JOIN
existing
ON
- e.instance_id = existing.instance_id
- AND e.aggregate_type = existing.aggregate_type
- AND e.aggregate_id = existing.aggregate_id
- AND e.sequence = existing.sequence
+ e.instance_id = existing.instance_id
+ AND e.aggregate_type = existing.aggregate_type
+ AND e.aggregate_id = existing.aggregate_id
+ AND e.sequence = existing.sequence
FOR UPDATE;
\ No newline at end of file
diff --git a/internal/eventstore/v3/unique_constraints.go b/internal/eventstore/v3/unique_constraints.go
index 78a956afdb..34967e9b39 100644
--- a/internal/eventstore/v3/unique_constraints.go
+++ b/internal/eventstore/v3/unique_constraints.go
@@ -11,8 +11,8 @@ import (
"github.com/jackc/pgconn"
"github.com/zitadel/logging"
- errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -61,7 +61,7 @@ func handleUniqueConstraints(ctx context.Context, tx *sql.Tx, commands []eventst
if constraint := constraintFromErr(err, deleteConstraints); constraint != nil {
errMessage = constraint.ErrorMessage
}
- return errs.ThrowInternal(err, "V3-C8l3V", errMessage)
+ return zerrors.ThrowInternal(err, "V3-C8l3V", errMessage)
}
}
if len(addPlaceholders) > 0 {
@@ -72,7 +72,7 @@ func handleUniqueConstraints(ctx context.Context, tx *sql.Tx, commands []eventst
if constraint := constraintFromErr(err, addConstraints); constraint != nil {
errMessage = constraint.ErrorMessage
}
- return errs.ThrowAlreadyExists(err, "V3-DKcYh", errMessage)
+ return zerrors.ThrowAlreadyExists(err, "V3-DKcYh", errMessage)
}
}
return nil
diff --git a/internal/eventstore/version.go b/internal/eventstore/version.go
index 518b78d155..9e9bb6b35b 100644
--- a/internal/eventstore/version.go
+++ b/internal/eventstore/version.go
@@ -3,7 +3,7 @@ package eventstore
import (
"regexp"
- "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Version string
@@ -12,7 +12,7 @@ var versionRegexp = regexp.MustCompile(`^v[0-9]+(\.[0-9]+){0,2}$`)
func (v Version) Validate() error {
if !versionRegexp.MatchString(string(v)) {
- return errors.ThrowPreconditionFailed(nil, "MODEL-luDuS", "version is not semver")
+ return zerrors.ThrowPreconditionFailed(nil, "MODEL-luDuS", "version is not semver")
}
return nil
}
diff --git a/internal/form/parser.go b/internal/form/parser.go
index abffac10c5..63986dcc2a 100644
--- a/internal/form/parser.go
+++ b/internal/form/parser.go
@@ -5,7 +5,7 @@ import (
"github.com/gorilla/schema"
- "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Parser struct {
@@ -21,7 +21,7 @@ func NewParser() *Parser {
func (p *Parser) Parse(r *http.Request, data interface{}) error {
err := r.ParseForm()
if err != nil {
- return errors.ThrowInternal(err, "FORM-lCC9zI", "Errors.Internal")
+ return zerrors.ThrowInternal(err, "FORM-lCC9zI", "Errors.Internal")
}
return p.decoder.Decode(data, r.Form)
diff --git a/internal/i18n/bundle.go b/internal/i18n/bundle.go
new file mode 100644
index 0000000000..822b91fa08
--- /dev/null
+++ b/internal/i18n/bundle.go
@@ -0,0 +1,60 @@
+package i18n
+
+import (
+ "encoding/json"
+ "io"
+ "net/http"
+ "os"
+ "path/filepath"
+ "strings"
+
+ "github.com/BurntSushi/toml"
+ "github.com/nicksnyder/go-i18n/v2/i18n"
+ "golang.org/x/text/language"
+ "sigs.k8s.io/yaml"
+
+ "github.com/zitadel/zitadel/internal/domain"
+ "github.com/zitadel/zitadel/internal/zerrors"
+)
+
+const i18nPath = "/i18n"
+
+func newBundle(dir http.FileSystem, defaultLanguage language.Tag, allowedLanguages []language.Tag) (*i18n.Bundle, error) {
+ bundle := i18n.NewBundle(defaultLanguage)
+ bundle.RegisterUnmarshalFunc("yaml", func(data []byte, v interface{}) error { return yaml.Unmarshal(data, v) })
+ bundle.RegisterUnmarshalFunc("json", json.Unmarshal)
+ bundle.RegisterUnmarshalFunc("toml", toml.Unmarshal)
+ i18nDir, err := dir.Open(i18nPath)
+ if err != nil {
+ return nil, zerrors.ThrowNotFound(err, "I18N-MnXRie", "path not found")
+ }
+ defer i18nDir.Close()
+ files, err := i18nDir.Readdir(0)
+ if err != nil {
+ return nil, zerrors.ThrowNotFound(err, "I18N-Gew23", "cannot read dir")
+ }
+ for _, file := range files {
+ fileLang, _ := strings.CutSuffix(file.Name(), filepath.Ext(file.Name()))
+ if err = domain.LanguageIsAllowed(false, allowedLanguages, language.Make(fileLang)); err != nil {
+ continue
+ }
+ if err := addFileFromFileSystemToBundle(dir, bundle, file); err != nil {
+ return nil, zerrors.ThrowNotFoundf(err, "I18N-ZS2AW", "cannot append file %s to Bundle", file.Name())
+ }
+ }
+ return bundle, nil
+}
+
+func addFileFromFileSystemToBundle(dir http.FileSystem, bundle *i18n.Bundle, file os.FileInfo) error {
+ f, err := dir.Open("/i18n/" + file.Name())
+ if err != nil {
+ return err
+ }
+ defer f.Close()
+ content, err := io.ReadAll(f)
+ if err != nil {
+ return err
+ }
+ _, err = bundle.ParseMessageFileBytes(content, file.Name())
+ return err
+}
diff --git a/internal/i18n/fs.go b/internal/i18n/fs.go
new file mode 100644
index 0000000000..eac34ba8e6
--- /dev/null
+++ b/internal/i18n/fs.go
@@ -0,0 +1,48 @@
+package i18n
+
+import (
+ "net/http"
+
+ "github.com/rakyll/statik/fs"
+ "github.com/zitadel/logging"
+)
+
+var zitadelFS, loginFS, notificationFS http.FileSystem
+
+type Namespace string
+
+const (
+ ZITADEL Namespace = "zitadel"
+ LOGIN Namespace = "login"
+ NOTIFICATION Namespace = "notification"
+)
+
+func LoadFilesystem(ns Namespace) http.FileSystem {
+ var err error
+ defer func() {
+ if err != nil {
+ logging.WithFields("namespace", ns).OnError(err).Panic("unable to get namespace")
+ }
+ }()
+ switch ns {
+ case ZITADEL:
+ if zitadelFS != nil {
+ return zitadelFS
+ }
+ zitadelFS, err = fs.NewWithNamespace(string(ns))
+ return zitadelFS
+ case LOGIN:
+ if loginFS != nil {
+ return loginFS
+ }
+ loginFS, err = fs.NewWithNamespace(string(ns))
+ return loginFS
+ case NOTIFICATION:
+ if notificationFS != nil {
+ return notificationFS
+ }
+ notificationFS, err = fs.NewWithNamespace(string(ns))
+ return notificationFS
+ }
+ return nil
+}
diff --git a/internal/i18n/languages.go b/internal/i18n/languages.go
new file mode 100644
index 0000000000..f3acdb4eba
--- /dev/null
+++ b/internal/i18n/languages.go
@@ -0,0 +1,51 @@
+package i18n
+
+import (
+ "errors"
+ "strings"
+
+ "golang.org/x/text/language"
+)
+
+var supportedLanguages []language.Tag
+
+func SupportedLanguages() []language.Tag {
+ if supportedLanguages == nil {
+ panic("supported languages not loaded")
+ }
+ return supportedLanguages
+}
+
+func SupportLanguages(languages ...language.Tag) {
+ supportedLanguages = languages
+}
+
+func MustLoadSupportedLanguagesFromDir() {
+ var err error
+ defer func() {
+ if err != nil {
+ panic("failed to load supported languages: " + err.Error())
+ }
+ }()
+ if supportedLanguages != nil {
+ return
+ }
+ i18nDir, err := LoadFilesystem(LOGIN).Open(i18nPath)
+ if err != nil {
+ return
+ }
+ defer func() {
+ err = errors.Join(err, i18nDir.Close())
+ }()
+ files, err := i18nDir.Readdir(0)
+ if err != nil {
+ return
+ }
+ supportedLanguages = make([]language.Tag, 0, len(files))
+ for _, file := range files {
+ lang := language.Make(strings.TrimSuffix(file.Name(), ".yaml"))
+ if lang != language.Und {
+ supportedLanguages = append(supportedLanguages, lang)
+ }
+ }
+}
diff --git a/internal/i18n/i18n.go b/internal/i18n/translator.go
similarity index 63%
rename from internal/i18n/i18n.go
rename to internal/i18n/translator.go
index a399ae1fc7..a60932bd6c 100644
--- a/internal/i18n/i18n.go
+++ b/internal/i18n/translator.go
@@ -2,26 +2,15 @@ package i18n
import (
"context"
- "encoding/json"
- "io/ioutil"
"net/http"
- "os"
- "strings"
- "github.com/BurntSushi/toml"
"github.com/grpc-ecosystem/go-grpc-middleware/util/metautils"
"github.com/nicksnyder/go-i18n/v2/i18n"
"github.com/zitadel/logging"
"golang.org/x/text/language"
- "sigs.k8s.io/yaml"
"github.com/zitadel/zitadel/internal/api/authz"
http_util "github.com/zitadel/zitadel/internal/api/http"
- "github.com/zitadel/zitadel/internal/errors"
-)
-
-const (
- i18nPath = "/i18n"
)
type Translator struct {
@@ -29,6 +18,7 @@ type Translator struct {
cookieName string
cookieHandler *http_util.CookieHandler
preferredLanguages []string
+ allowedLanguages []language.Tag
}
type TranslatorConfig struct {
@@ -41,10 +31,27 @@ type Message struct {
Text string
}
-func NewTranslator(dir http.FileSystem, defaultLanguage language.Tag, cookieName string) (*Translator, error) {
+// NewZitadelTranslator translates to all supported languages, as the ZITADEL texts are not customizable.
+func NewZitadelTranslator(defaultLanguage language.Tag) (*Translator, error) {
+ return newTranslator(ZITADEL, defaultLanguage, SupportedLanguages(), "")
+}
+
+func NewNotificationTranslator(defaultLanguage language.Tag, allowedLanguages []language.Tag) (*Translator, error) {
+ return newTranslator(NOTIFICATION, defaultLanguage, allowedLanguages, "")
+}
+
+func NewLoginTranslator(defaultLanguage language.Tag, allowedLanguages []language.Tag, cookieName string) (*Translator, error) {
+ return newTranslator(LOGIN, defaultLanguage, allowedLanguages, cookieName)
+}
+
+func newTranslator(ns Namespace, defaultLanguage language.Tag, allowedLanguages []language.Tag, cookieName string) (*Translator, error) {
t := new(Translator)
var err error
- t.bundle, err = newBundle(dir, defaultLanguage)
+ t.allowedLanguages = allowedLanguages
+ if len(t.allowedLanguages) == 0 {
+ t.allowedLanguages = SupportedLanguages()
+ }
+ t.bundle, err = newBundle(LoadFilesystem(ns), defaultLanguage, t.allowedLanguages)
if err != nil {
return nil, err
}
@@ -53,64 +60,8 @@ func NewTranslator(dir http.FileSystem, defaultLanguage language.Tag, cookieName
return t, nil
}
-func newBundle(dir http.FileSystem, defaultLanguage language.Tag) (*i18n.Bundle, error) {
- bundle := i18n.NewBundle(defaultLanguage)
- bundle.RegisterUnmarshalFunc("yaml", func(data []byte, v interface{}) error { return yaml.Unmarshal(data, v) })
- bundle.RegisterUnmarshalFunc("json", json.Unmarshal)
- bundle.RegisterUnmarshalFunc("toml", toml.Unmarshal)
- i18nDir, err := dir.Open(i18nPath)
- if err != nil {
- return nil, errors.ThrowNotFound(err, "I18N-MnXRie", "path not found")
- }
- defer i18nDir.Close()
- files, err := i18nDir.Readdir(0)
- if err != nil {
- return nil, errors.ThrowNotFound(err, "I18N-Gew23", "cannot read dir")
- }
- for _, file := range files {
- if err := addFileFromFileSystemToBundle(dir, bundle, file); err != nil {
- return nil, errors.ThrowNotFoundf(err, "I18N-ZS2AW", "cannot append file %s to Bundle", file.Name())
- }
- }
- return bundle, nil
-}
-
-func addFileFromFileSystemToBundle(dir http.FileSystem, bundle *i18n.Bundle, file os.FileInfo) error {
- f, err := dir.Open("/i18n/" + file.Name())
- if err != nil {
- return err
- }
- defer f.Close()
- content, err := ioutil.ReadAll(f)
- if err != nil {
- return err
- }
- _, err = bundle.ParseMessageFileBytes(content, file.Name())
- return err
-}
-
-func SupportedLanguages(dir http.FileSystem) ([]language.Tag, error) {
- i18nDir, err := dir.Open("/i18n")
- if err != nil {
- return nil, errors.ThrowNotFound(err, "I18N-Dbt42", "cannot open dir")
- }
- defer i18nDir.Close()
- files, err := i18nDir.Readdir(0)
- if err != nil {
- return nil, errors.ThrowNotFound(err, "I18N-Gh4zk", "cannot read dir")
- }
- languages := make([]language.Tag, 0, len(files))
- for _, file := range files {
- lang := language.Make(strings.TrimSuffix(file.Name(), ".yaml"))
- if lang != language.Und {
- languages = append(languages, lang)
- }
- }
- return languages, nil
-}
-
func (t *Translator) SupportedLanguages() []language.Tag {
- return t.bundle.LanguageTags()
+ return t.allowedLanguages
}
func (t *Translator) AddMessages(tag language.Tag, messages ...Message) error {
@@ -144,7 +95,7 @@ func (t *Translator) LocalizeWithoutArgs(id string, langs ...string) string {
}
func (t *Translator) Lang(r *http.Request) language.Tag {
- matcher := language.NewMatcher(t.bundle.LanguageTags())
+ matcher := language.NewMatcher(t.allowedLanguages)
tag, _ := language.MatchStrings(matcher, t.langsFromRequest(r)...)
return tag
}
diff --git a/internal/iam/model/iam.go b/internal/iam/model/iam.go
deleted file mode 100644
index a87276eede..0000000000
--- a/internal/iam/model/iam.go
+++ /dev/null
@@ -1,32 +0,0 @@
-package model
-
-import (
- "github.com/zitadel/zitadel/internal/domain"
- es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
-)
-
-type Step int
-
-const (
- Step1 Step = iota + 1
- Step2
- Step3
- Step4
- Step5
- Step6
- Step7
- Step8
- Step9
- Step10
- //StepCount marks the the length of possible steps (StepCount-1 == last possible step)
- StepCount
-)
-
-type IAM struct {
- es_models.ObjectRoot
- DefaultOrgID string
- IAMProjectID string
- SetUpDone domain.Step
- SetUpStarted domain.Step
- Members []*IAMMember
-}
diff --git a/internal/iam/model/iam_member.go b/internal/iam/model/iam_member.go
deleted file mode 100644
index c808b0a3d0..0000000000
--- a/internal/iam/model/iam_member.go
+++ /dev/null
@@ -1,18 +0,0 @@
-package model
-
-import es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
-
-type IAMMember struct {
- es_models.ObjectRoot
-
- UserID string
- Roles []string
-}
-
-func NewIAMMember(iamID, userID string) *IAMMember {
- return &IAMMember{ObjectRoot: es_models.ObjectRoot{AggregateID: iamID}, UserID: userID}
-}
-
-func (i *IAMMember) IsValid() bool {
- return i.AggregateID != "" && i.UserID != "" && len(i.Roles) != 0
-}
diff --git a/internal/iam/model/idp_config.go b/internal/iam/model/idp_config.go
deleted file mode 100644
index d80a039e90..0000000000
--- a/internal/iam/model/idp_config.go
+++ /dev/null
@@ -1,110 +0,0 @@
-package model
-
-import (
- "github.com/zitadel/zitadel/internal/crypto"
- es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
-)
-
-type IDPConfig struct {
- es_models.ObjectRoot
- IDPConfigID string
- Type IdpConfigType
- Name string
- StylingType IDPStylingType
- State IDPConfigState
- OIDCConfig *OIDCIDPConfig
- JWTIDPConfig *JWTIDPConfig
-}
-
-type OIDCIDPConfig struct {
- es_models.ObjectRoot
- IDPConfigID string
- ClientID string
- ClientSecret *crypto.CryptoValue
- ClientSecretString string
- Issuer string
- Scopes []string
- IDPDisplayNameMapping OIDCMappingField
- UsernameMapping OIDCMappingField
-}
-
-type JWTIDPConfig struct {
- es_models.ObjectRoot
- IDPConfigID string
- JWTEndpoint string
- Issuer string
- KeysEndpoint string
-}
-
-type IdpConfigType int32
-
-const (
- IDPConfigTypeOIDC IdpConfigType = iota
- IDPConfigTypeSAML
- IDPConfigTypeJWT
-)
-
-type IDPConfigState int32
-
-const (
- IDPConfigStateActive IDPConfigState = iota
- IDPConfigStateInactive
- IDPConfigStateRemoved
-)
-
-type IDPStylingType int32
-
-const (
- IDPStylingTypeUnspecified IDPStylingType = iota
- IDPStylingTypeGoogle
-)
-
-type OIDCMappingField int32
-
-const (
- OIDCMappingFieldUnspecified OIDCMappingField = iota
- OIDCMappingFieldPreferredLoginName
- OIDCMappingFieldEmail
-)
-
-func NewIDPConfig(iamID, idpID string) *IDPConfig {
- return &IDPConfig{ObjectRoot: es_models.ObjectRoot{AggregateID: iamID}, IDPConfigID: idpID}
-}
-
-func (idp *IDPConfig) IsValid(includeConfig bool) bool {
- if idp.Name == "" || idp.AggregateID == "" {
- return false
- }
- if !includeConfig {
- return true
- }
- if idp.Type == IDPConfigTypeOIDC && !idp.OIDCConfig.IsValid(true) {
- return false
- }
- return true
-}
-
-func (oi *OIDCIDPConfig) IsValid(withSecret bool) bool {
- if withSecret {
- return oi.ClientID != "" && oi.Issuer != "" && oi.ClientSecretString != ""
- }
- return oi.ClientID != "" && oi.Issuer != ""
-}
-
-func (oi *OIDCIDPConfig) CryptSecret(crypt crypto.Crypto) error {
- cryptedSecret, err := crypto.Crypt([]byte(oi.ClientSecretString), crypt)
- if err != nil {
- return err
- }
- oi.ClientSecret = cryptedSecret
- return nil
-}
-
-func (st IDPStylingType) GetCSSClass() string {
- switch st {
- case IDPStylingTypeGoogle:
- return "google"
- default:
- return ""
- }
-}
diff --git a/internal/iam/model/idp_config_view.go b/internal/iam/model/idp_config_view.go
deleted file mode 100644
index 3d3bddc461..0000000000
--- a/internal/iam/model/idp_config_view.go
+++ /dev/null
@@ -1,85 +0,0 @@
-package model
-
-import (
- "github.com/zitadel/zitadel/internal/crypto"
- "github.com/zitadel/zitadel/internal/domain"
- caos_errors "github.com/zitadel/zitadel/internal/errors"
-
- "time"
-)
-
-type IDPConfigView struct {
- AggregateID string
- IDPConfigID string
- Name string
- StylingType IDPStylingType
- AutoRegister bool
- State IDPConfigState
- CreationDate time.Time
- ChangeDate time.Time
- Sequence uint64
- IDPProviderType IDPProviderType
-
- IsOIDC bool
- OIDCClientID string
- OIDCClientSecret *crypto.CryptoValue
- OIDCIssuer string
- OIDCScopes []string
- OIDCIDPDisplayNameMapping OIDCMappingField
- OIDCUsernameMapping OIDCMappingField
- OAuthAuthorizationEndpoint string
- OAuthTokenEndpoint string
- JWTEndpoint string
- JWTIssuer string
- JWTKeysEndpoint string
- JWTHeaderName string
-}
-
-type IDPConfigSearchRequest struct {
- Offset uint64
- Limit uint64
- SortingColumn IDPConfigSearchKey
- Asc bool
- Queries []*IDPConfigSearchQuery
-}
-
-type IDPConfigSearchKey int32
-
-const (
- IDPConfigSearchKeyUnspecified IDPConfigSearchKey = iota
- IDPConfigSearchKeyName
- IDPConfigSearchKeyAggregateID
- IDPConfigSearchKeyIdpConfigID
- IDPConfigSearchKeyIdpProviderType
- IDPConfigSearchKeyInstanceID
- IDPConfigSearchKeyOwnerRemoved
-)
-
-type IDPConfigSearchQuery struct {
- Key IDPConfigSearchKey
- Method domain.SearchMethod
- Value interface{}
-}
-
-type IDPConfigSearchResponse struct {
- Offset uint64
- Limit uint64
- TotalResult uint64
- Result []*IDPConfigView
- Sequence uint64
- Timestamp time.Time
-}
-
-func (r *IDPConfigSearchRequest) EnsureLimit(limit uint64) error {
- if r.Limit > limit {
- return caos_errors.ThrowInvalidArgument(nil, "SEARCH-Mv9sd", "Errors.Limit.ExceedsDefault")
- }
- if r.Limit == 0 {
- r.Limit = limit
- }
- return nil
-}
-
-func (r *IDPConfigSearchRequest) AppendMyOrgQuery(orgID, iamID string) {
- r.Queries = append(r.Queries, &IDPConfigSearchQuery{Key: IDPConfigSearchKeyAggregateID, Method: domain.SearchMethodIsOneOf, Value: []string{orgID, iamID}})
-}
diff --git a/internal/iam/model/idp_provider_view.go b/internal/iam/model/idp_provider_view.go
deleted file mode 100644
index 562e371724..0000000000
--- a/internal/iam/model/idp_provider_view.go
+++ /dev/null
@@ -1,70 +0,0 @@
-package model
-
-import (
- "github.com/zitadel/zitadel/internal/domain"
- caos_errors "github.com/zitadel/zitadel/internal/errors"
-
- "time"
-)
-
-type IDPProviderView struct {
- AggregateID string
- IDPConfigID string
- IDPProviderType IDPProviderType
- Name string
- StylingType IDPStylingType
- IDPConfigType IdpConfigType
- IDPState IDPConfigState
-
- CreationDate time.Time
- ChangeDate time.Time
- Sequence uint64
-}
-
-type IDPProviderSearchRequest struct {
- Offset uint64
- Limit uint64
- SortingColumn IDPProviderSearchKey
- Asc bool
- Queries []*IDPProviderSearchQuery
-}
-
-type IDPProviderSearchKey int32
-
-const (
- IDPProviderSearchKeyUnspecified IDPProviderSearchKey = iota
- IDPProviderSearchKeyAggregateID
- IDPProviderSearchKeyIdpConfigID
- IDPProviderSearchKeyState
- IDPProviderSearchKeyInstanceID
- IDPProviderSearchKeyOwnerRemoved
-)
-
-type IDPProviderSearchQuery struct {
- Key IDPProviderSearchKey
- Method domain.SearchMethod
- Value interface{}
-}
-
-type IDPProviderSearchResponse struct {
- Offset uint64
- Limit uint64
- TotalResult uint64
- Result []*IDPProviderView
- Sequence uint64
- Timestamp time.Time
-}
-
-func (r *IDPProviderSearchRequest) EnsureLimit(limit uint64) error {
- if r.Limit > limit {
- return caos_errors.ThrowInvalidArgument(nil, "SEARCH-3n8fs", "Errors.Limit.ExceedsDefault")
- }
- if r.Limit == 0 {
- r.Limit = limit
- }
- return nil
-}
-
-func (r *IDPProviderSearchRequest) AppendAggregateIDQuery(aggregateID string) {
- r.Queries = append(r.Queries, &IDPProviderSearchQuery{Key: IDPProviderSearchKeyAggregateID, Method: domain.SearchMethodEquals, Value: aggregateID})
-}
diff --git a/internal/iam/model/label_policy.go b/internal/iam/model/label_policy.go
deleted file mode 100644
index bbed48334c..0000000000
--- a/internal/iam/model/label_policy.go
+++ /dev/null
@@ -1,25 +0,0 @@
-package model
-
-import (
- "github.com/zitadel/zitadel/internal/eventstore/v1/models"
-)
-
-type LabelPolicy struct {
- models.ObjectRoot
-
- State PolicyState
- Default bool
- PrimaryColor string
- BackgroundColor string
- FontColor string
- WarnColor string
- PrimaryColorDark string
- BackgroundColorDark string
- FontColorDark string
- WarnColorDark string
- HideLoginNameSuffix bool
-}
-
-func (p *LabelPolicy) IsValid() bool {
- return p.ObjectRoot.AggregateID != ""
-}
diff --git a/internal/iam/model/label_policy_view.go b/internal/iam/model/label_policy_view.go
index cdab0b44b9..c1995658f7 100644
--- a/internal/iam/model/label_policy_view.go
+++ b/internal/iam/model/label_policy_view.go
@@ -1,47 +1,9 @@
package model
import (
- "time"
-
"github.com/zitadel/zitadel/internal/domain"
)
-type LabelPolicyView struct {
- AggregateID string
- PrimaryColor string
- BackgroundColor string
- WarnColor string
- FontColor string
- LogoURL string
- IconURL string
-
- PrimaryColorDark string
- BackgroundColorDark string
- WarnColorDark string
- FontColorDark string
- LogoDarkURL string
- IconDarkURL string
- FontURL string
-
- HideLoginNameSuffix bool
- ErrorMsgPopup bool
- DisableWatermark bool
-
- Default bool
-
- CreationDate time.Time
- ChangeDate time.Time
- Sequence uint64
-}
-
-type LabelPolicySearchRequest struct {
- Offset uint64
- Limit uint64
- SortingColumn LabelPolicySearchKey
- Asc bool
- Queries []*LabelPolicySearchQuery
-}
-
type LabelPolicySearchKey int32
const (
@@ -57,12 +19,3 @@ type LabelPolicySearchQuery struct {
Method domain.SearchMethod
Value interface{}
}
-
-type LabelPolicySearchResponse struct {
- Offset uint64
- Limit uint64
- TotalResult uint64
- Result []*LabelPolicyView
- Sequence uint64
- Timestamp time.Time
-}
diff --git a/internal/iam/model/login_policy.go b/internal/iam/model/login_policy.go
index 09f6ec1bc3..65f9d43cc1 100644
--- a/internal/iam/model/login_policy.go
+++ b/internal/iam/model/login_policy.go
@@ -1,90 +1,8 @@
package model
-import (
- "github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/eventstore/v1/models"
-)
-
-type LoginPolicy struct {
- models.ObjectRoot
-
- State PolicyState
- Default bool
- AllowUsernamePassword bool
- AllowRegister bool
- AllowExternalIdp bool
- IDPProviders []*IDPProvider
- ForceMFA bool
- SecondFactors []domain.SecondFactorType
- MultiFactors []domain.MultiFactorType
- PasswordlessType PasswordlessType
-}
-
-type IDPProvider struct {
- models.ObjectRoot
- Type IDPProviderType
- IDPConfigID string
-}
-
type PolicyState int32
const (
PolicyStateActive PolicyState = iota
PolicyStateRemoved
)
-
-type IDPProviderType int32
-
-const (
- IDPProviderTypeSystem IDPProviderType = iota
- IDPProviderTypeOrg
-)
-
-type MultiFactorType int32
-
-const (
- MultiFactorTypeUnspecified MultiFactorType = iota
- MultiFactorTypeU2FWithPIN
-)
-
-type PasswordlessType int32
-
-const (
- PasswordlessTypeNotAllowed PasswordlessType = iota
- PasswordlessTypeAllowed
-)
-
-func (p *LoginPolicy) IsValid() bool {
- return p.ObjectRoot.AggregateID != ""
-}
-
-func (p *IDPProvider) IsValid() bool {
- return p.ObjectRoot.AggregateID != "" && p.IDPConfigID != ""
-}
-
-func (p *LoginPolicy) GetIdpProvider(id string) (int, *IDPProvider) {
- for i, m := range p.IDPProviders {
- if m.IDPConfigID == id {
- return i, m
- }
- }
- return -1, nil
-}
-
-func (p *LoginPolicy) GetSecondFactor(mfaType domain.SecondFactorType) (int, domain.SecondFactorType) {
- for i, m := range p.SecondFactors {
- if m == mfaType {
- return i, m
- }
- }
- return -1, 0
-}
-
-func (p *LoginPolicy) GetMultiFactor(mfaType domain.MultiFactorType) (int, domain.MultiFactorType) {
- for i, m := range p.MultiFactors {
- if m == mfaType {
- return i, m
- }
- }
- return -1, 0
-}
diff --git a/internal/iam/model/login_policy_view.go b/internal/iam/model/login_policy_view.go
deleted file mode 100644
index c4aaafa828..0000000000
--- a/internal/iam/model/login_policy_view.go
+++ /dev/null
@@ -1,129 +0,0 @@
-package model
-
-import (
- "time"
-
- "github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/eventstore/v1/models"
-)
-
-type LoginPolicyView struct {
- AggregateID string
- AllowUsernamePassword bool
- AllowRegister bool
- AllowExternalIDP bool
- ForceMFA bool
- HidePasswordReset bool
- PasswordlessType PasswordlessType
- SecondFactors []domain.SecondFactorType
- MultiFactors []domain.MultiFactorType
- Default bool
-
- CreationDate time.Time
- ChangeDate time.Time
- Sequence uint64
-}
-
-type LoginPolicySearchRequest struct {
- Offset uint64
- Limit uint64
- SortingColumn LoginPolicySearchKey
- Asc bool
- Queries []*LoginPolicySearchQuery
-}
-
-type LoginPolicySearchKey int32
-
-const (
- LoginPolicySearchKeyUnspecified LoginPolicySearchKey = iota
- LoginPolicySearchKeyAggregateID
- LoginPolicySearchKeyDefault
-)
-
-type LoginPolicySearchQuery struct {
- Key LoginPolicySearchKey
- Method domain.SearchMethod
- Value interface{}
-}
-
-type LoginPolicySearchResponse struct {
- Offset uint64
- Limit uint64
- TotalResult uint64
- Result []*LoginPolicyView
- Sequence uint64
- Timestamp time.Time
-}
-
-func (p *LoginPolicyView) HasSecondFactors() bool {
- if p.SecondFactors == nil || len(p.SecondFactors) == 0 {
- return false
- }
- return true
-}
-
-func (p *LoginPolicyView) HasMultiFactors() bool {
- if p.MultiFactors == nil || len(p.MultiFactors) == 0 {
- return false
- }
- return true
-}
-
-func (p *LoginPolicyView) ToLoginPolicyDomain() *domain.LoginPolicy {
- return &domain.LoginPolicy{
- ObjectRoot: models.ObjectRoot{
- AggregateID: p.AggregateID,
- CreationDate: p.CreationDate,
- ChangeDate: p.ChangeDate,
- Sequence: p.Sequence,
- },
- Default: p.Default,
- AllowUsernamePassword: p.AllowUsernamePassword,
- AllowRegister: p.AllowRegister,
- AllowExternalIDP: p.AllowExternalIDP,
- ForceMFA: p.ForceMFA,
- HidePasswordReset: p.HidePasswordReset,
- PasswordlessType: passwordLessTypeToDomain(p.PasswordlessType),
- SecondFactors: secondFactorsToDomain(p.SecondFactors),
- MultiFactors: multiFactorsToDomain(p.MultiFactors),
- }
-}
-
-func passwordLessTypeToDomain(passwordless PasswordlessType) domain.PasswordlessType {
- switch passwordless {
- case PasswordlessTypeNotAllowed:
- return domain.PasswordlessTypeNotAllowed
- case PasswordlessTypeAllowed:
- return domain.PasswordlessTypeAllowed
- default:
- return domain.PasswordlessTypeNotAllowed
- }
-}
-
-func secondFactorsToDomain(types []domain.SecondFactorType) []domain.SecondFactorType {
- secondfactors := make([]domain.SecondFactorType, len(types))
- for i, secondfactorType := range types {
- switch secondfactorType {
- case domain.SecondFactorTypeU2F:
- secondfactors[i] = domain.SecondFactorTypeU2F
- case domain.SecondFactorTypeTOTP:
- secondfactors[i] = domain.SecondFactorTypeTOTP
- case domain.SecondFactorTypeOTPEmail:
- secondfactors[i] = domain.SecondFactorTypeOTPEmail
- case domain.SecondFactorTypeOTPSMS:
- secondfactors[i] = domain.SecondFactorTypeOTPSMS
- }
- }
- return secondfactors
-}
-
-func multiFactorsToDomain(types []domain.MultiFactorType) []domain.MultiFactorType {
- multifactors := make([]domain.MultiFactorType, len(types))
- for i, multifactorType := range types {
- switch multifactorType {
- case domain.MultiFactorTypeU2FWithPIN:
- multifactors[i] = domain.MultiFactorTypeU2FWithPIN
- }
- }
- return multifactors
-}
diff --git a/internal/iam/model/mail_template.go b/internal/iam/model/mail_template.go
deleted file mode 100644
index c1b8dc9a04..0000000000
--- a/internal/iam/model/mail_template.go
+++ /dev/null
@@ -1,17 +0,0 @@
-package model
-
-import (
- "github.com/zitadel/zitadel/internal/eventstore/v1/models"
-)
-
-type MailTemplate struct {
- models.ObjectRoot
-
- State PolicyState
- Default bool
- Template []byte
-}
-
-func (p *MailTemplate) IsValid() bool {
- return p.ObjectRoot.AggregateID != ""
-}
diff --git a/internal/iam/model/mail_text.go b/internal/iam/model/mail_text.go
deleted file mode 100644
index 1ca22c37bb..0000000000
--- a/internal/iam/model/mail_text.go
+++ /dev/null
@@ -1,29 +0,0 @@
-package model
-
-import (
- "github.com/zitadel/zitadel/internal/eventstore/v1/models"
-)
-
-type MailTexts struct {
- Texts []*MailText
- Default bool
-}
-type MailText struct {
- models.ObjectRoot
-
- State PolicyState
- Default bool
- MailTextType string
- Language string
- Title string
- PreHeader string
- Subject string
- Greeting string
- Text string
- ButtonText string
- FooterText string
-}
-
-func (p *MailText) IsValid() bool {
- return p.ObjectRoot.AggregateID != ""
-}
diff --git a/internal/iam/model/message_text_view.go b/internal/iam/model/message_text_view.go
deleted file mode 100644
index 496bcee21c..0000000000
--- a/internal/iam/model/message_text_view.go
+++ /dev/null
@@ -1,59 +0,0 @@
-package model
-
-import (
- "time"
-
- "golang.org/x/text/language"
-
- "github.com/zitadel/zitadel/internal/domain"
-)
-
-type MessageTextView struct {
- AggregateID string
- MessageTextType string
- Language language.Tag
- Title string
- PreHeader string
- Subject string
- Greeting string
- Text string
- ButtonText string
- FooterText string
- Default bool
-
- CreationDate time.Time
- ChangeDate time.Time
- Sequence uint64
-}
-
-type MessageTextSearchRequest struct {
- Offset uint64
- Limit uint64
- SortingColumn MessageTextSearchKey
- Asc bool
- Queries []*MessageTextSearchQuery
-}
-
-type MessageTextSearchKey int32
-
-const (
- MessageTextSearchKeyUnspecified MessageTextSearchKey = iota
- MessageTextSearchKeyAggregateID
- MessageTextSearchKeyMessageTextType
- MessageTextSearchKeyLanguage
-)
-
-type MessageTextSearchQuery struct {
- Key MessageTextSearchKey
- Method domain.SearchMethod
- Value interface{}
-}
-
-type MessageTextSearchResponse struct {
- Offset uint64
- Limit uint64
- TotalResult uint64
- Result []*MessageTextView
- Sequence uint64
- Timestamp time.Time
-}
diff --git a/internal/iam/model/mfa_view.go b/internal/iam/model/mfa_view.go
deleted file mode 100644
index 59f3dbc3cb..0000000000
--- a/internal/iam/model/mfa_view.go
+++ /dev/null
@@ -1,47 +0,0 @@
-package model
-
-import (
- "github.com/zitadel/zitadel/internal/domain"
-)
-
-type SecondFactorsSearchRequest struct {
- Queries []*MFASearchQuery
-}
-
-type MultiFactorsSearchRequest struct {
- Offset uint64
- Limit uint64
- Asc bool
- Queries []*MFASearchQuery
-}
-
-type MFASearchQuery struct {
- Key MFASearchKey
- Method domain.SearchMethod
- Value interface{}
-}
-
-type MFASearchKey int32
-
-const (
- MFASearchKeyUnspecified MFASearchKey = iota
- MFASearchKeyAggregateID
-)
-
-type SecondFactorsSearchResponse struct {
- TotalResult uint64
- Result []domain.SecondFactorType
-}
-
-type MultiFactorsSearchResponse struct {
- TotalResult uint64
- Result []domain.MultiFactorType
-}
-
-func (r *SecondFactorsSearchRequest) AppendAggregateIDQuery(aggregateID string) {
- r.Queries = append(r.Queries, &MFASearchQuery{Key: MFASearchKeyAggregateID, Method: domain.SearchMethodEquals, Value: aggregateID})
-}
-
-func (r *MultiFactorsSearchRequest) AppendAggregateIDQuery(aggregateID string) {
- r.Queries = append(r.Queries, &MFASearchQuery{Key: MFASearchKeyAggregateID, Method: domain.SearchMethodEquals, Value: aggregateID})
-}
diff --git a/internal/iam/model/password_age_policy.go b/internal/iam/model/password_age_policy.go
deleted file mode 100644
index 70bc96e0f8..0000000000
--- a/internal/iam/model/password_age_policy.go
+++ /dev/null
@@ -1,13 +0,0 @@
-package model
-
-import (
- "github.com/zitadel/zitadel/internal/eventstore/v1/models"
-)
-
-type PasswordAgePolicy struct {
- models.ObjectRoot
-
- State PolicyState
- MaxAgeDays uint64
- ExpireWarnDays uint64
-}
diff --git a/internal/iam/model/password_age_policy_view.go b/internal/iam/model/password_age_policy_view.go
deleted file mode 100644
index 9d9b36dc86..0000000000
--- a/internal/iam/model/password_age_policy_view.go
+++ /dev/null
@@ -1,48 +0,0 @@
-package model
-
-import (
- "time"
-
- "github.com/zitadel/zitadel/internal/domain"
-)
-
-type PasswordAgePolicyView struct {
- AggregateID string
- MaxAgeDays uint64
- ExpireWarnDays uint64
- Default bool
-
- CreationDate time.Time
- ChangeDate time.Time
- Sequence uint64
-}
-
-type PasswordAgePolicySearchRequest struct {
- Offset uint64
- Limit uint64
- SortingColumn PasswordAgePolicySearchKey
- Asc bool
- Queries []*PasswordAgePolicySearchQuery
-}
-
-type PasswordAgePolicySearchKey int32
-
-const (
- PasswordAgePolicySearchKeyUnspecified PasswordAgePolicySearchKey = iota
- PasswordAgePolicySearchKeyAggregateID
-)
-
-type PasswordAgePolicySearchQuery struct {
- Key PasswordAgePolicySearchKey
- Method domain.SearchMethod
- Value interface{}
-}
-
-type PasswordAgePolicySearchResponse struct {
- Offset uint64
- Limit uint64
- TotalResult uint64
- Result []*PasswordAgePolicyView
- Sequence uint64
- Timestamp time.Time
-}
diff --git a/internal/iam/model/password_complexity_policy.go b/internal/iam/model/password_complexity_policy.go
deleted file mode 100644
index 9f270e8129..0000000000
--- a/internal/iam/model/password_complexity_policy.go
+++ /dev/null
@@ -1,58 +0,0 @@
-package model
-
-import (
- "regexp"
-
- caos_errs "github.com/zitadel/zitadel/internal/errors"
- "github.com/zitadel/zitadel/internal/eventstore/v1/models"
-)
-
-var (
- hasStringLowerCase = regexp.MustCompile(`[a-z]`).MatchString
- hasStringUpperCase = regexp.MustCompile(`[A-Z]`).MatchString
- hasNumber = regexp.MustCompile(`[0-9]`).MatchString
- hasSymbol = regexp.MustCompile(`[^A-Za-z0-9]`).MatchString
-)
-
-type PasswordComplexityPolicy struct {
- models.ObjectRoot
-
- State PolicyState
- MinLength uint64
- HasLowercase bool
- HasUppercase bool
- HasNumber bool
- HasSymbol bool
-
- Default bool
-}
-
-func (p *PasswordComplexityPolicy) IsValid() error {
- if p.MinLength == 0 || p.MinLength > 72 {
- return caos_errs.ThrowInvalidArgument(nil, "MODEL-Lsp0e", "Errors.User.PasswordComplexityPolicy.MinLengthNotAllowed")
- }
- return nil
-}
-
-func (p *PasswordComplexityPolicy) Check(password string) error {
- if p.MinLength != 0 && uint64(len(password)) < p.MinLength {
- return caos_errs.ThrowInvalidArgument(nil, "MODEL-HuJf6", "Errors.User.PasswordComplexityPolicy.MinLength")
- }
-
- if p.HasLowercase && !hasStringLowerCase(password) {
- return caos_errs.ThrowInvalidArgument(nil, "MODEL-co3Xw", "Errors.User.PasswordComplexityPolicy.HasLower")
- }
-
- if p.HasUppercase && !hasStringUpperCase(password) {
- return caos_errs.ThrowInvalidArgument(nil, "MODEL-VoaRj", "Errors.User.PasswordComplexityPolicy.HasUpper")
- }
-
- if p.HasNumber && !hasNumber(password) {
- return caos_errs.ThrowInvalidArgument(nil, "MODEL-ZBv4H", "Errors.User.PasswordComplexityPolicy.HasNumber")
- }
-
- if p.HasSymbol && !hasSymbol(password) {
- return caos_errs.ThrowInvalidArgument(nil, "MODEL-ZDLwA", "Errors.User.PasswordComplexityPolicy.HasSymbol")
- }
- return nil
-}
diff --git a/internal/iam/model/password_complexity_policy_view.go b/internal/iam/model/password_complexity_policy_view.go
index 6f73bc41f8..7cc1d35017 100644
--- a/internal/iam/model/password_complexity_policy_view.go
+++ b/internal/iam/model/password_complexity_policy_view.go
@@ -2,8 +2,6 @@ package model
import (
"time"
-
- "github.com/zitadel/zitadel/internal/domain"
)
type PasswordComplexityPolicyView struct {
@@ -19,33 +17,3 @@ type PasswordComplexityPolicyView struct {
ChangeDate time.Time
Sequence uint64
}
-
-type PasswordComplexityPolicySearchRequest struct {
- Offset uint64
- Limit uint64
- SortingColumn PasswordComplexityPolicySearchKey
- Asc bool
- Queries []*PasswordComplexityPolicySearchQuery
-}
-
-type PasswordComplexityPolicySearchKey int32
-
-const (
- PasswordComplexityPolicySearchKeyUnspecified PasswordComplexityPolicySearchKey = iota
- PasswordComplexityPolicySearchKeyAggregateID
-)
-
-type PasswordComplexityPolicySearchQuery struct {
- Key PasswordComplexityPolicySearchKey
- Method domain.SearchMethod
- Value interface{}
-}
-
-type PasswordComplexityPolicySearchResponse struct {
- Offset uint64
- Limit uint64
- TotalResult uint64
- Result []*PasswordComplexityPolicyView
- Sequence uint64
- Timestamp time.Time
-}
diff --git a/internal/iam/model/password_lockout_policy.go b/internal/iam/model/password_lockout_policy.go
deleted file mode 100644
index 6cf8f6b27e..0000000000
--- a/internal/iam/model/password_lockout_policy.go
+++ /dev/null
@@ -1,13 +0,0 @@
-package model
-
-import (
- "github.com/zitadel/zitadel/internal/eventstore/v1/models"
-)
-
-type LockoutPolicy struct {
- models.ObjectRoot
-
- State PolicyState
- MaxPasswordAttempts uint64
- ShowLockOutFailures bool
-}
diff --git a/internal/iam/model/password_lockout_policy_view.go b/internal/iam/model/password_lockout_policy_view.go
deleted file mode 100644
index fd3f94ab96..0000000000
--- a/internal/iam/model/password_lockout_policy_view.go
+++ /dev/null
@@ -1,48 +0,0 @@
-package model
-
-import (
- "time"
-
- "github.com/zitadel/zitadel/internal/domain"
-)
-
-type LockoutPolicyView struct {
- AggregateID string
- MaxPasswordAttempts uint64
- ShowLockOutFailures bool
- Default bool
-
- CreationDate time.Time
- ChangeDate time.Time
- Sequence uint64
-}
-
-type LockoutPolicySearchRequest struct {
- Offset uint64
- Limit uint64
- SortingColumn LockoutPolicySearchKey
- Asc bool
- Queries []*LockoutPolicySearchQuery
-}
-
-type LockoutPolicySearchKey int32
-
-const (
- LockoutPolicySearchKeyUnspecified LockoutPolicySearchKey = iota
- LockoutPolicySearchKeyAggregateID
-)
-
-type LockoutPolicySearchQuery struct {
- Key LockoutPolicySearchKey
- Method domain.SearchMethod
- Value interface{}
-}
-
-type LockoutPolicySearchResponse struct {
- Offset uint64
- Limit uint64
- TotalResult uint64
- Result []*LockoutPolicyView
- Sequence uint64
- Timestamp time.Time
-}
diff --git a/internal/iam/model/privacy_policy_view.go b/internal/iam/model/privacy_policy_view.go
deleted file mode 100644
index 6d40dd3937..0000000000
--- a/internal/iam/model/privacy_policy_view.go
+++ /dev/null
@@ -1,49 +0,0 @@
-package model
-
-import (
- "time"
-
- "github.com/zitadel/zitadel/internal/domain"
-)
-
-type PrivacyPolicyView struct {
- AggregateID string
- TOSLink string
- PrivacyLink string
- SupportEmail string
- Default bool
-
- CreationDate time.Time
- ChangeDate time.Time
- Sequence uint64
-}
-
-type PrivacyPolicySearchRequest struct {
- Offset uint64
- Limit uint64
- SortingColumn PrivacyPolicySearchKey
- Asc bool
- Queries []*PrivacyPolicySearchQuery
-}
-
-type PrivacyPolicySearchKey int32
-
-const (
- PrivacyPolicySearchKeyUnspecified PrivacyPolicySearchKey = iota
- PrivacyPolicySearchKeyAggregateID
-)
-
-type PrivacyPolicySearchQuery struct {
- Key PrivacyPolicySearchKey
- Method domain.SearchMethod
- Value interface{}
-}
-
-type PrivacyPolicySearchResponse struct {
- Offset uint64
- Limit uint64
- TotalResult uint64
- Result []*PrivacyPolicyView
- Sequence uint64
- Timestamp time.Time
-}
diff --git a/internal/iam/repository/eventsourcing/model/iam_member.go b/internal/iam/repository/eventsourcing/model/iam_member.go
deleted file mode 100644
index 2f9c664595..0000000000
--- a/internal/iam/repository/eventsourcing/model/iam_member.go
+++ /dev/null
@@ -1,23 +0,0 @@
-package model
-
-import (
- "encoding/json"
-
- "github.com/zitadel/logging"
- es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
-)
-
-type IAMMember struct {
- es_models.ObjectRoot
- UserID string `json:"userId,omitempty"`
- Roles []string `json:"roles,omitempty"`
-}
-
-func (m *IAMMember) SetData(event *es_models.Event) error {
- m.ObjectRoot.AppendEvent(event)
- if err := json.Unmarshal(event.Data, m); err != nil {
- logging.Log("EVEN-e4dkp").WithError(err).Error("could not unmarshal event data")
- return err
- }
- return nil
-}
diff --git a/internal/iam/repository/eventsourcing/model/org_iam_policy.go b/internal/iam/repository/eventsourcing/model/org_iam_policy.go
index 0ad1624659..e7cd9ed463 100644
--- a/internal/iam/repository/eventsourcing/model/org_iam_policy.go
+++ b/internal/iam/repository/eventsourcing/model/org_iam_policy.go
@@ -1,10 +1,10 @@
package model
import (
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
iam_model "github.com/zitadel/zitadel/internal/iam/model"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type DomainPolicy struct {
@@ -22,19 +22,10 @@ func DomainPolicyToModel(policy *DomainPolicy) *iam_model.DomainPolicy {
}
}
-func (p *DomainPolicy) Changes(changed *DomainPolicy) map[string]interface{} {
- changes := make(map[string]interface{}, 1)
-
- if p.UserLoginMustBeDomain != changed.UserLoginMustBeDomain {
- changes["userLoginMustBeDomain"] = changed.UserLoginMustBeDomain
- }
- return changes
-}
-
func (p *DomainPolicy) SetData(event eventstore.Event) error {
err := event.Unmarshal(p)
if err != nil {
- return errors.ThrowInternal(err, "EVENT-7JS9d", "unable to unmarshal data")
+ return zerrors.ThrowInternal(err, "EVENT-7JS9d", "unable to unmarshal data")
}
return nil
}
diff --git a/internal/iam/repository/eventsourcing/model/org_iam_policy_test.go b/internal/iam/repository/eventsourcing/model/org_iam_policy_test.go
deleted file mode 100644
index 42148b1e6f..0000000000
--- a/internal/iam/repository/eventsourcing/model/org_iam_policy_test.go
+++ /dev/null
@@ -1,49 +0,0 @@
-package model
-
-import (
- "testing"
-)
-
-func TestOrgIAMPolicyChanges(t *testing.T) {
- type args struct {
- existing *DomainPolicy
- new *DomainPolicy
- }
- type res struct {
- changesLen int
- }
- tests := []struct {
- name string
- args args
- res res
- }{
- {
- name: "org iam policy all attributes change",
- args: args{
- existing: &DomainPolicy{UserLoginMustBeDomain: true},
- new: &DomainPolicy{UserLoginMustBeDomain: false},
- },
- res: res{
- changesLen: 1,
- },
- },
- {
- name: "no changes",
- args: args{
- existing: &DomainPolicy{UserLoginMustBeDomain: true},
- new: &DomainPolicy{UserLoginMustBeDomain: true},
- },
- res: res{
- changesLen: 0,
- },
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- changes := tt.args.existing.Changes(tt.args.new)
- if len(changes) != tt.res.changesLen {
- t.Errorf("got wrong changes len: expected: %v, actual: %v ", tt.res.changesLen, len(changes))
- }
- })
- }
-}
diff --git a/internal/iam/repository/view/idp_provider_view.go b/internal/iam/repository/view/idp_provider_view.go
deleted file mode 100644
index 06662cb219..0000000000
--- a/internal/iam/repository/view/idp_provider_view.go
+++ /dev/null
@@ -1,143 +0,0 @@
-package view
-
-import (
- "github.com/jinzhu/gorm"
-
- "github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
- iam_model "github.com/zitadel/zitadel/internal/iam/model"
- "github.com/zitadel/zitadel/internal/iam/repository/view/model"
- "github.com/zitadel/zitadel/internal/view/repository"
-)
-
-func GetIDPProviderByAggregateIDAndConfigID(db *gorm.DB, table, aggregateID, idpConfigID, instanceID string) (*model.IDPProviderView, error) {
- policy := new(model.IDPProviderView)
- aggIDQuery := &model.IDPProviderSearchQuery{Key: iam_model.IDPProviderSearchKeyAggregateID, Value: aggregateID, Method: domain.SearchMethodEquals}
- idpConfigIDQuery := &model.IDPProviderSearchQuery{Key: iam_model.IDPProviderSearchKeyIdpConfigID, Value: idpConfigID, Method: domain.SearchMethodEquals}
- instanceIDQuery := &model.IDPProviderSearchQuery{Key: iam_model.IDPProviderSearchKeyInstanceID, Value: instanceID, Method: domain.SearchMethodEquals}
- ownerRemovedQuery := &model.IDPProviderSearchQuery{Key: iam_model.IDPProviderSearchKeyOwnerRemoved, Value: false, Method: domain.SearchMethodEquals}
- query := repository.PrepareGetByQuery(table, aggIDQuery, idpConfigIDQuery, instanceIDQuery, ownerRemovedQuery)
- err := query(db, policy)
- if caos_errs.IsNotFound(err) {
- return nil, caos_errs.ThrowNotFound(nil, "VIEW-Skvi8", "Errors.IAM.LoginPolicy.IDP.NotExisting")
- }
- return policy, err
-}
-
-func IDPProvidersByIdpConfigID(db *gorm.DB, table, idpConfigID, instanceID string) ([]*model.IDPProviderView, error) {
- providers := make([]*model.IDPProviderView, 0)
- queries := []*iam_model.IDPProviderSearchQuery{
- {
- Key: iam_model.IDPProviderSearchKeyIdpConfigID,
- Value: idpConfigID,
- Method: domain.SearchMethodEquals,
- },
- {
- Key: iam_model.IDPProviderSearchKeyInstanceID,
- Value: instanceID,
- Method: domain.SearchMethodEquals,
- },
- {
- Key: iam_model.IDPProviderSearchKeyOwnerRemoved,
- Value: false,
- Method: domain.SearchMethodEquals,
- },
- }
- query := repository.PrepareSearchQuery(table, model.IDPProviderSearchRequest{Queries: queries})
- _, err := query(db, &providers)
- if err != nil {
- return nil, err
- }
- return providers, nil
-}
-
-func IDPProvidersByAggregateIDAndState(db *gorm.DB, table string, aggregateID, instanceID string, idpConfigState iam_model.IDPConfigState) ([]*model.IDPProviderView, error) {
- providers := make([]*model.IDPProviderView, 0)
- queries := []*iam_model.IDPProviderSearchQuery{
- {
- Key: iam_model.IDPProviderSearchKeyAggregateID,
- Value: aggregateID,
- Method: domain.SearchMethodEquals,
- },
- {
- Key: iam_model.IDPProviderSearchKeyState,
- Value: int(idpConfigState),
- Method: domain.SearchMethodEquals,
- },
- {
- Key: iam_model.IDPProviderSearchKeyInstanceID,
- Value: instanceID,
- Method: domain.SearchMethodEquals,
- },
- {
- Key: iam_model.IDPProviderSearchKeyOwnerRemoved,
- Value: false,
- Method: domain.SearchMethodEquals,
- },
- }
- query := repository.PrepareSearchQuery(table, model.IDPProviderSearchRequest{Queries: queries})
- _, err := query(db, &providers)
- if err != nil {
- return nil, err
- }
- return providers, nil
-}
-
-func SearchIDPProviders(db *gorm.DB, table string, req *iam_model.IDPProviderSearchRequest) ([]*model.IDPProviderView, uint64, error) {
- providers := make([]*model.IDPProviderView, 0)
- query := repository.PrepareSearchQuery(table, model.IDPProviderSearchRequest{Limit: req.Limit, Offset: req.Offset, Queries: req.Queries})
- count, err := query(db, &providers)
- if err != nil {
- return nil, 0, err
- }
- return providers, count, nil
-}
-
-func PutIDPProvider(db *gorm.DB, table string, provider *model.IDPProviderView) error {
- save := repository.PrepareSave(table)
- return save(db, provider)
-}
-
-func PutIDPProviders(db *gorm.DB, table string, providers ...*model.IDPProviderView) error {
- save := repository.PrepareBulkSave(table)
- p := make([]interface{}, len(providers))
- for i, provider := range providers {
- p[i] = provider
- }
- return save(db, p...)
-}
-
-func DeleteIDPProvider(db *gorm.DB, table, aggregateID, idpConfigID, instanceID string) error {
- delete := repository.PrepareDeleteByKeys(table,
- repository.Key{Key: model.IDPProviderSearchKey(iam_model.IDPProviderSearchKeyAggregateID), Value: aggregateID},
- repository.Key{Key: model.IDPProviderSearchKey(iam_model.IDPProviderSearchKeyIdpConfigID), Value: idpConfigID},
- repository.Key{Key: model.IDPProviderSearchKey(iam_model.IDPProviderSearchKeyInstanceID), Value: instanceID},
- )
- return delete(db)
-}
-
-func DeleteIDPProvidersByAggregateID(db *gorm.DB, table, aggregateID, instanceID string) error {
- delete := repository.PrepareDeleteByKeys(table,
- repository.Key{Key: model.IDPProviderSearchKey(iam_model.IDPProviderSearchKeyAggregateID), Value: aggregateID},
- repository.Key{Key: model.IDPProviderSearchKey(iam_model.IDPProviderSearchKeyInstanceID), Value: instanceID},
- )
- return delete(db)
-}
-
-func DeleteInstanceIDPProviders(db *gorm.DB, table, instanceID string) error {
- delete := repository.PrepareDeleteByKey(table,
- model.IDPProviderSearchKey(iam_model.IDPProviderSearchKeyInstanceID),
- instanceID,
- )
- return delete(db)
-}
-
-func UpdateOrgOwnerRemovedIDPProviders(db *gorm.DB, table, instanceID, aggID string) error {
- update := repository.PrepareUpdateByKeys(table,
- model.IDPProviderSearchKey(iam_model.IDPProviderSearchKeyOwnerRemoved),
- true,
- repository.Key{Key: model.IDPProviderSearchKey(iam_model.IDPProviderSearchKeyInstanceID), Value: instanceID},
- repository.Key{Key: model.IDPProviderSearchKey(iam_model.IDPProviderSearchKeyAggregateID), Value: aggID},
- )
- return update(db)
-}
diff --git a/internal/iam/repository/view/idp_view.go b/internal/iam/repository/view/idp_view.go
deleted file mode 100644
index da77a97cad..0000000000
--- a/internal/iam/repository/view/idp_view.go
+++ /dev/null
@@ -1,88 +0,0 @@
-package view
-
-import (
- "github.com/jinzhu/gorm"
-
- "github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
- iam_model "github.com/zitadel/zitadel/internal/iam/model"
- "github.com/zitadel/zitadel/internal/iam/repository/view/model"
- "github.com/zitadel/zitadel/internal/view/repository"
-)
-
-func IDPByID(db *gorm.DB, table, idpID, instanceID string) (*model.IDPConfigView, error) {
- idp := new(model.IDPConfigView)
- idpIDQuery := &model.IDPConfigSearchQuery{Key: iam_model.IDPConfigSearchKeyIdpConfigID, Value: idpID, Method: domain.SearchMethodEquals}
- instanceIDQuery := &model.IDPConfigSearchQuery{Key: iam_model.IDPConfigSearchKeyInstanceID, Value: instanceID, Method: domain.SearchMethodEquals}
- ownerRemovedQuery := &model.IDPConfigSearchQuery{Key: iam_model.IDPConfigSearchKeyOwnerRemoved, Value: false, Method: domain.SearchMethodEquals}
- query := repository.PrepareGetByQuery(table, idpIDQuery, instanceIDQuery, ownerRemovedQuery)
- err := query(db, idp)
- if caos_errs.IsNotFound(err) {
- return nil, caos_errs.ThrowNotFound(nil, "VIEW-Ahq2s", "Errors.IDP.NotExisting")
- }
- return idp, err
-}
-
-func GetIDPConfigsByAggregateID(db *gorm.DB, table string, aggregateID, instanceID string) ([]*model.IDPConfigView, error) {
- idps := make([]*model.IDPConfigView, 0)
- queries := []*iam_model.IDPConfigSearchQuery{
- {
- Key: iam_model.IDPConfigSearchKeyAggregateID,
- Value: aggregateID,
- Method: domain.SearchMethodEquals,
- }, {
- Key: iam_model.IDPConfigSearchKeyInstanceID,
- Value: instanceID,
- Method: domain.SearchMethodEquals,
- },
- {
- Key: iam_model.IDPConfigSearchKeyOwnerRemoved,
- Value: false,
- Method: domain.SearchMethodEquals,
- },
- }
- query := repository.PrepareSearchQuery(table, model.IDPConfigSearchRequest{Queries: queries})
- _, err := query(db, &idps)
- if err != nil {
- return nil, err
- }
- return idps, nil
-}
-
-func SearchIDPs(db *gorm.DB, table string, req *iam_model.IDPConfigSearchRequest) ([]*model.IDPConfigView, uint64, error) {
- idps := make([]*model.IDPConfigView, 0)
- query := repository.PrepareSearchQuery(table, model.IDPConfigSearchRequest{Limit: req.Limit, Offset: req.Offset, Queries: req.Queries})
- count, err := query(db, &idps)
- if err != nil {
- return nil, 0, err
- }
- return idps, count, nil
-}
-
-func PutIDP(db *gorm.DB, table string, idp *model.IDPConfigView) error {
- save := repository.PrepareSave(table)
- return save(db, idp)
-}
-
-func DeleteIDP(db *gorm.DB, table, idpID, instanceID string) error {
- delete := repository.PrepareDeleteByKeys(table,
- repository.Key{model.IDPConfigSearchKey(iam_model.IDPConfigSearchKeyIdpConfigID), idpID},
- repository.Key{model.IDPConfigSearchKey(iam_model.IDPConfigSearchKeyInstanceID), instanceID},
- )
- return delete(db)
-}
-
-func UpdateOrgOwnerRemovedIDPs(db *gorm.DB, table, instanceID, aggID string) error {
- update := repository.PrepareUpdateByKeys(table,
- model.IDPConfigSearchKey(iam_model.IDPConfigSearchKeyOwnerRemoved),
- true,
- repository.Key{Key: model.IDPConfigSearchKey(iam_model.IDPConfigSearchKeyInstanceID), Value: instanceID},
- repository.Key{Key: model.IDPConfigSearchKey(iam_model.IDPConfigSearchKeyAggregateID), Value: aggID},
- )
- return update(db)
-}
-
-func DeleteInstanceIDPs(db *gorm.DB, table, instanceID string) error {
- delete := repository.PrepareDeleteByKey(table, model.IDPConfigSearchKey(iam_model.IDPConfigSearchKeyInstanceID), instanceID)
- return delete(db)
-}
diff --git a/internal/iam/repository/view/model/idp_config.go b/internal/iam/repository/view/model/idp_config.go
deleted file mode 100644
index b2c41d93cd..0000000000
--- a/internal/iam/repository/view/model/idp_config.go
+++ /dev/null
@@ -1,123 +0,0 @@
-package model
-
-import (
- "time"
-
- "github.com/zitadel/logging"
-
- "github.com/zitadel/zitadel/internal/crypto"
- "github.com/zitadel/zitadel/internal/database"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
- "github.com/zitadel/zitadel/internal/eventstore"
- "github.com/zitadel/zitadel/internal/iam/model"
- "github.com/zitadel/zitadel/internal/repository/instance"
- "github.com/zitadel/zitadel/internal/repository/org"
-)
-
-const (
- IDPConfigKeyIdpConfigID = "idp_config_id"
- IDPConfigKeyAggregateID = "aggregate_id"
- IDPConfigKeyName = "name"
- IDPConfigKeyProviderType = "idp_provider_type"
- IDPConfigKeyInstanceID = "instance_id"
- IDPConfigKeyOwnerRemoved = "owner_removed"
-)
-
-type IDPConfigView struct {
- IDPConfigID string `json:"idpConfigId" gorm:"column:idp_config_id;primary_key"`
- AggregateID string `json:"-" gorm:"column:aggregate_id"`
- Name string `json:"name" gorm:"column:name"`
- StylingType int32 `json:"stylingType" gorm:"column:styling_type"`
- CreationDate time.Time `json:"-" gorm:"column:creation_date"`
- ChangeDate time.Time `json:"-" gorm:"column:change_date"`
- IDPState int32 `json:"-" gorm:"column:idp_state"`
- IDPProviderType int32 `json:"-" gorm:"column:idp_provider_type"`
- AutoRegister bool `json:"autoRegister" gorm:"column:auto_register"`
-
- IsOIDC bool `json:"-" gorm:"column:is_oidc"`
- OIDCClientID string `json:"clientId" gorm:"column:oidc_client_id"`
- OIDCClientSecret *crypto.CryptoValue `json:"clientSecret" gorm:"column:oidc_client_secret"`
- OIDCIssuer string `json:"issuer" gorm:"column:oidc_issuer"`
- OIDCScopes database.TextArray[string] `json:"scopes" gorm:"column:oidc_scopes"`
- OIDCIDPDisplayNameMapping int32 `json:"idpDisplayNameMapping" gorm:"column:oidc_idp_display_name_mapping"`
- OIDCUsernameMapping int32 `json:"usernameMapping" gorm:"column:oidc_idp_username_mapping"`
- OAuthAuthorizationEndpoint string `json:"authorizationEndpoint" gorm:"column:oauth_authorization_endpoint"`
- OAuthTokenEndpoint string `json:"tokenEndpoint" gorm:"column:oauth_token_endpoint"`
- JWTEndpoint string `json:"jwtEndpoint" gorm:"jwt_endpoint"`
- JWTKeysEndpoint string `json:"keysEndpoint" gorm:"jwt_keys_endpoint"`
- JWTHeaderName string `json:"headerName" gorm:"jwt_header_name"`
-
- Sequence uint64 `json:"-" gorm:"column:sequence"`
- InstanceID string `json:"instanceID" gorm:"column:instance_id;primary_key"`
-}
-
-func IDPConfigViewToModel(idp *IDPConfigView) *model.IDPConfigView {
- view := &model.IDPConfigView{
- IDPConfigID: idp.IDPConfigID,
- AggregateID: idp.AggregateID,
- State: model.IDPConfigState(idp.IDPState),
- Name: idp.Name,
- StylingType: model.IDPStylingType(idp.StylingType),
- AutoRegister: idp.AutoRegister,
- Sequence: idp.Sequence,
- CreationDate: idp.CreationDate,
- ChangeDate: idp.ChangeDate,
- IDPProviderType: model.IDPProviderType(idp.IDPProviderType),
- IsOIDC: idp.IsOIDC,
- OIDCClientID: idp.OIDCClientID,
- OIDCClientSecret: idp.OIDCClientSecret,
- OIDCScopes: idp.OIDCScopes,
- OIDCIDPDisplayNameMapping: model.OIDCMappingField(idp.OIDCIDPDisplayNameMapping),
- OIDCUsernameMapping: model.OIDCMappingField(idp.OIDCUsernameMapping),
- OAuthAuthorizationEndpoint: idp.OAuthAuthorizationEndpoint,
- OAuthTokenEndpoint: idp.OAuthTokenEndpoint,
- }
- if idp.IsOIDC {
- view.OIDCIssuer = idp.OIDCIssuer
- return view
- }
- view.JWTEndpoint = idp.JWTEndpoint
- view.JWTIssuer = idp.OIDCIssuer
- view.JWTKeysEndpoint = idp.JWTKeysEndpoint
- view.JWTHeaderName = idp.JWTHeaderName
- return view
-}
-
-func (i *IDPConfigView) AppendEvent(providerType model.IDPProviderType, event eventstore.Event) (err error) {
- i.Sequence = event.Sequence()
- i.ChangeDate = event.CreatedAt()
- switch event.Type() {
- case instance.IDPConfigAddedEventType, org.IDPConfigAddedEventType:
- i.setRootData(event)
- i.CreationDate = event.CreatedAt()
- i.IDPProviderType = int32(providerType)
- err = i.SetData(event)
- case instance.IDPOIDCConfigAddedEventType, org.IDPOIDCConfigAddedEventType:
- i.IsOIDC = true
- err = i.SetData(event)
- case instance.IDPOIDCConfigChangedEventType, org.IDPOIDCConfigChangedEventType,
- instance.IDPConfigChangedEventType, org.IDPConfigChangedEventType,
- org.IDPJWTConfigAddedEventType, instance.IDPJWTConfigAddedEventType,
- org.IDPJWTConfigChangedEventType, instance.IDPJWTConfigChangedEventType:
- err = i.SetData(event)
- case instance.IDPConfigDeactivatedEventType, org.IDPConfigDeactivatedEventType:
- i.IDPState = int32(model.IDPConfigStateInactive)
- case instance.IDPConfigReactivatedEventType, org.IDPConfigReactivatedEventType:
- i.IDPState = int32(model.IDPConfigStateActive)
- }
- return err
-}
-
-func (r *IDPConfigView) setRootData(event eventstore.Event) {
- r.AggregateID = event.Aggregate().ID
- r.InstanceID = event.Aggregate().InstanceID
-}
-
-func (r *IDPConfigView) SetData(event eventstore.Event) error {
- err := event.Unmarshal(r)
- if err != nil {
- logging.New().WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-lub6s", "Could not unmarshal data")
- }
- return nil
-}
diff --git a/internal/iam/repository/view/model/idp_config_query.go b/internal/iam/repository/view/model/idp_config_query.go
deleted file mode 100644
index 5f07ecfcee..0000000000
--- a/internal/iam/repository/view/model/idp_config_query.go
+++ /dev/null
@@ -1,69 +0,0 @@
-package model
-
-import (
- "github.com/zitadel/zitadel/internal/domain"
- iam_model "github.com/zitadel/zitadel/internal/iam/model"
- "github.com/zitadel/zitadel/internal/view/repository"
-)
-
-type IDPConfigSearchRequest iam_model.IDPConfigSearchRequest
-type IDPConfigSearchQuery iam_model.IDPConfigSearchQuery
-type IDPConfigSearchKey iam_model.IDPConfigSearchKey
-
-func (req IDPConfigSearchRequest) GetLimit() uint64 {
- return req.Limit
-}
-
-func (req IDPConfigSearchRequest) GetOffset() uint64 {
- return req.Offset
-}
-
-func (req IDPConfigSearchRequest) GetSortingColumn() repository.ColumnKey {
- if req.SortingColumn == iam_model.IDPConfigSearchKeyUnspecified {
- return nil
- }
- return IDPConfigSearchKey(req.SortingColumn)
-}
-
-func (req IDPConfigSearchRequest) GetAsc() bool {
- return req.Asc
-}
-
-func (req IDPConfigSearchRequest) GetQueries() []repository.SearchQuery {
- result := make([]repository.SearchQuery, len(req.Queries))
- for i, q := range req.Queries {
- result[i] = IDPConfigSearchQuery{Key: q.Key, Value: q.Value, Method: q.Method}
- }
- return result
-}
-
-func (req IDPConfigSearchQuery) GetKey() repository.ColumnKey {
- return IDPConfigSearchKey(req.Key)
-}
-
-func (req IDPConfigSearchQuery) GetMethod() domain.SearchMethod {
- return req.Method
-}
-
-func (req IDPConfigSearchQuery) GetValue() interface{} {
- return req.Value
-}
-
-func (key IDPConfigSearchKey) ToColumnName() string {
- switch iam_model.IDPConfigSearchKey(key) {
- case iam_model.IDPConfigSearchKeyAggregateID:
- return IDPConfigKeyAggregateID
- case iam_model.IDPConfigSearchKeyIdpConfigID:
- return IDPConfigKeyIdpConfigID
- case iam_model.IDPConfigSearchKeyName:
- return IDPConfigKeyName
- case iam_model.IDPConfigSearchKeyIdpProviderType:
- return IDPConfigKeyProviderType
- case iam_model.IDPConfigSearchKeyInstanceID:
- return IDPConfigKeyInstanceID
- case iam_model.IDPConfigSearchKeyOwnerRemoved:
- return IDPConfigKeyOwnerRemoved
- default:
- return ""
- }
-}
diff --git a/internal/iam/repository/view/model/idp_provider.go b/internal/iam/repository/view/model/idp_provider.go
deleted file mode 100644
index 775c8ba25e..0000000000
--- a/internal/iam/repository/view/model/idp_provider.go
+++ /dev/null
@@ -1,87 +0,0 @@
-package model
-
-import (
- "time"
-
- "github.com/zitadel/logging"
-
- caos_errs "github.com/zitadel/zitadel/internal/errors"
- "github.com/zitadel/zitadel/internal/eventstore"
- "github.com/zitadel/zitadel/internal/iam/model"
- "github.com/zitadel/zitadel/internal/repository/instance"
- "github.com/zitadel/zitadel/internal/repository/org"
-)
-
-const (
- IDPProviderKeyAggregateID = "aggregate_id"
- IDPProviderKeyIdpConfigID = "idp_config_id"
- IDPProviderKeyState = "idp_state"
- IDPProviderKeyInstanceID = "instance_id"
- IDPProviderKeyOwnerRemoved = "owner_removed"
-)
-
-type IDPProviderView struct {
- AggregateID string `json:"-" gorm:"column:aggregate_id;primary_key"`
- IDPConfigID string `json:"idpConfigID" gorm:"column:idp_config_id;primary_key"`
-
- CreationDate time.Time `json:"-" gorm:"column:creation_date"`
- ChangeDate time.Time `json:"-" gorm:"column:change_date"`
-
- Name string `json:"-" gorm:"column:name"`
- StylingType int32 `json:"-" gorm:"column:styling_type"`
- IDPConfigType int32 `json:"-" gorm:"column:idp_config_type"`
- IDPProviderType int32 `json:"idpProviderType" gorm:"column:idp_provider_type"`
- IDPState int32 `json:"-" gorm:"column:idp_state"`
-
- Sequence uint64 `json:"-" gorm:"column:sequence"`
- InstanceID string `json:"instanceID" gorm:"column:instance_id;primary_key"`
-}
-
-func IDPProviderViewToModel(provider *IDPProviderView) *model.IDPProviderView {
- return &model.IDPProviderView{
- AggregateID: provider.AggregateID,
- Sequence: provider.Sequence,
- CreationDate: provider.CreationDate,
- ChangeDate: provider.ChangeDate,
- Name: provider.Name,
- StylingType: model.IDPStylingType(provider.StylingType),
- IDPConfigID: provider.IDPConfigID,
- IDPConfigType: model.IdpConfigType(provider.IDPConfigType),
- IDPProviderType: model.IDPProviderType(provider.IDPProviderType),
- IDPState: model.IDPConfigState(provider.IDPState),
- }
-}
-
-func IDPProviderViewsToModel(providers []*IDPProviderView) []*model.IDPProviderView {
- result := make([]*model.IDPProviderView, len(providers))
- for i, r := range providers {
- result[i] = IDPProviderViewToModel(r)
- }
- return result
-}
-
-func (i *IDPProviderView) AppendEvent(event eventstore.Event) (err error) {
- i.Sequence = event.Sequence()
- i.ChangeDate = event.CreatedAt()
- switch event.Type() {
- case instance.LoginPolicyIDPProviderAddedEventType,
- org.LoginPolicyIDPProviderAddedEventType:
- i.setRootData(event)
- i.CreationDate = event.CreatedAt()
- err = i.SetData(event)
- }
- return err
-}
-
-func (r *IDPProviderView) setRootData(event eventstore.Event) {
- r.AggregateID = event.Aggregate().ID
- r.InstanceID = event.Aggregate().InstanceID
-}
-
-func (r *IDPProviderView) SetData(event eventstore.Event) error {
- if err := event.Unmarshal(r); err != nil {
- logging.New().WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-Hs8uf", "Could not unmarshal data")
- }
- return nil
-}
diff --git a/internal/iam/repository/view/model/idp_provider_query.go b/internal/iam/repository/view/model/idp_provider_query.go
deleted file mode 100644
index 9685507c1b..0000000000
--- a/internal/iam/repository/view/model/idp_provider_query.go
+++ /dev/null
@@ -1,67 +0,0 @@
-package model
-
-import (
- "github.com/zitadel/zitadel/internal/domain"
- iam_model "github.com/zitadel/zitadel/internal/iam/model"
- "github.com/zitadel/zitadel/internal/view/repository"
-)
-
-type IDPProviderSearchRequest iam_model.IDPProviderSearchRequest
-type IDPProviderSearchQuery iam_model.IDPProviderSearchQuery
-type IDPProviderSearchKey iam_model.IDPProviderSearchKey
-
-func (req IDPProviderSearchRequest) GetLimit() uint64 {
- return req.Limit
-}
-
-func (req IDPProviderSearchRequest) GetOffset() uint64 {
- return req.Offset
-}
-
-func (req IDPProviderSearchRequest) GetSortingColumn() repository.ColumnKey {
- if req.SortingColumn == iam_model.IDPProviderSearchKeyUnspecified {
- return nil
- }
- return IDPProviderSearchKey(req.SortingColumn)
-}
-
-func (req IDPProviderSearchRequest) GetAsc() bool {
- return req.Asc
-}
-
-func (req IDPProviderSearchRequest) GetQueries() []repository.SearchQuery {
- result := make([]repository.SearchQuery, len(req.Queries))
- for i, q := range req.Queries {
- result[i] = IDPProviderSearchQuery{Key: q.Key, Value: q.Value, Method: q.Method}
- }
- return result
-}
-
-func (req IDPProviderSearchQuery) GetKey() repository.ColumnKey {
- return IDPProviderSearchKey(req.Key)
-}
-
-func (req IDPProviderSearchQuery) GetMethod() domain.SearchMethod {
- return req.Method
-}
-
-func (req IDPProviderSearchQuery) GetValue() interface{} {
- return req.Value
-}
-
-func (key IDPProviderSearchKey) ToColumnName() string {
- switch iam_model.IDPProviderSearchKey(key) {
- case iam_model.IDPProviderSearchKeyAggregateID:
- return IDPProviderKeyAggregateID
- case iam_model.IDPProviderSearchKeyIdpConfigID:
- return IDPProviderKeyIdpConfigID
- case iam_model.IDPProviderSearchKeyState:
- return IDPProviderKeyState
- case iam_model.IDPProviderSearchKeyInstanceID:
- return IDPProviderKeyInstanceID
- case iam_model.IDPProviderSearchKeyOwnerRemoved:
- return IDPProviderKeyOwnerRemoved
- default:
- return ""
- }
-}
diff --git a/internal/iam/repository/view/model/label_policy.go b/internal/iam/repository/view/model/label_policy.go
index f4fad063b0..2e3966661f 100644
--- a/internal/iam/repository/view/model/label_policy.go
+++ b/internal/iam/repository/view/model/label_policy.go
@@ -6,11 +6,11 @@ import (
"github.com/zitadel/logging"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -179,7 +179,7 @@ func (r *LabelPolicyView) setRootData(event eventstore.Event) {
func (r *LabelPolicyView) SetData(event eventstore.Event) error {
if err := event.Unmarshal(r); err != nil {
logging.Log("MODEL-Flp9C").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-Hs8uf", "Could not unmarshal data")
+ return zerrors.ThrowInternal(err, "MODEL-Hs8uf", "Could not unmarshal data")
}
return nil
}
@@ -187,7 +187,7 @@ func (r *LabelPolicyView) SetData(event eventstore.Event) error {
func (r *AssetView) SetData(event eventstore.Event) error {
if err := event.Unmarshal(r); err != nil {
logging.Log("MODEL-Ms8f2").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-Hs8uf", "Could not unmarshal data")
+ return zerrors.ThrowInternal(err, "MODEL-Hs8uf", "Could not unmarshal data")
}
return nil
}
diff --git a/internal/iam/repository/view/model/label_policy_query.go b/internal/iam/repository/view/model/label_policy_query.go
index 1c21d39be1..4f8f2d069a 100644
--- a/internal/iam/repository/view/model/label_policy_query.go
+++ b/internal/iam/repository/view/model/label_policy_query.go
@@ -6,37 +6,9 @@ import (
"github.com/zitadel/zitadel/internal/view/repository"
)
-type LabelPolicySearchRequest iam_model.LabelPolicySearchRequest
type LabelPolicySearchQuery iam_model.LabelPolicySearchQuery
type LabelPolicySearchKey iam_model.LabelPolicySearchKey
-func (req LabelPolicySearchRequest) GetLimit() uint64 {
- return req.Limit
-}
-
-func (req LabelPolicySearchRequest) GetOffset() uint64 {
- return req.Offset
-}
-
-func (req LabelPolicySearchRequest) GetSortingColumn() repository.ColumnKey {
- if req.SortingColumn == iam_model.LabelPolicySearchKeyUnspecified {
- return nil
- }
- return LabelPolicySearchKey(req.SortingColumn)
-}
-
-func (req LabelPolicySearchRequest) GetAsc() bool {
- return req.Asc
-}
-
-func (req LabelPolicySearchRequest) GetQueries() []repository.SearchQuery {
- result := make([]repository.SearchQuery, len(req.Queries))
- for i, q := range req.Queries {
- result[i] = LabelPolicySearchQuery{Key: q.Key, Value: q.Value, Method: q.Method}
- }
- return result
-}
-
func (req LabelPolicySearchQuery) GetKey() repository.ColumnKey {
return LabelPolicySearchKey(req.Key)
}
diff --git a/internal/iam/repository/view/model/password_complexity_policy.go b/internal/iam/repository/view/model/password_complexity_policy.go
index 30f72acb83..3255b13079 100644
--- a/internal/iam/repository/view/model/password_complexity_policy.go
+++ b/internal/iam/repository/view/model/password_complexity_policy.go
@@ -1,38 +1,10 @@
package model
import (
- "time"
-
- "github.com/zitadel/logging"
-
- caos_errs "github.com/zitadel/zitadel/internal/errors"
- "github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/iam/model"
"github.com/zitadel/zitadel/internal/query"
- "github.com/zitadel/zitadel/internal/repository/instance"
- "github.com/zitadel/zitadel/internal/repository/org"
)
-const (
- PasswordComplexityKeyAggregateID = "aggregate_id"
-)
-
-type PasswordComplexityPolicyView struct {
- AggregateID string `json:"-" gorm:"column:aggregate_id;primary_key"`
- CreationDate time.Time `json:"-" gorm:"column:creation_date"`
- ChangeDate time.Time `json:"-" gorm:"column:change_date"`
- State int32 `json:"-" gorm:"column:complexity_policy_state"`
-
- MinLength uint64 `json:"minLength" gorm:"column:min_length"`
- HasLowercase bool `json:"hasLowercase" gorm:"column:has_lowercase"`
- HasUppercase bool `json:"hasUppercase" gorm:"column:has_uppercase"`
- HasSymbol bool `json:"hasSymbol" gorm:"column:has_symbol"`
- HasNumber bool `json:"hasNumber" gorm:"column:has_number"`
- Default bool `json:"-" gorm:"-"`
-
- Sequence uint64 `json:"-" gorm:"column:sequence"`
-}
-
func PasswordComplexityViewToModel(policy *query.PasswordComplexityPolicy) *model.PasswordComplexityPolicyView {
return &model.PasswordComplexityPolicyView{
AggregateID: policy.ID,
@@ -47,31 +19,3 @@ func PasswordComplexityViewToModel(policy *query.PasswordComplexityPolicy) *mode
Default: policy.IsDefault,
}
}
-
-func (i *PasswordComplexityPolicyView) AppendEvent(event eventstore.Event) (err error) {
- i.Sequence = event.Sequence()
- i.ChangeDate = event.CreatedAt()
- switch event.Type() {
- case instance.PasswordComplexityPolicyAddedEventType,
- org.PasswordComplexityPolicyAddedEventType:
- i.setRootData(event)
- i.CreationDate = event.CreatedAt()
- err = i.SetData(event)
- case instance.PasswordComplexityPolicyChangedEventType,
- org.PasswordComplexityPolicyChangedEventType:
- err = i.SetData(event)
- }
- return err
-}
-
-func (r *PasswordComplexityPolicyView) setRootData(event eventstore.Event) {
- r.AggregateID = event.Aggregate().ID
-}
-
-func (r *PasswordComplexityPolicyView) SetData(event eventstore.Event) error {
- if err := event.Unmarshal(r); err != nil {
- logging.Log("EVEN-Dmi9g").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-Hs8uf", "Could not unmarshal data")
- }
- return nil
-}
diff --git a/internal/iam/repository/view/styling.go b/internal/iam/repository/view/styling.go
index fe1426893a..3611483bc6 100644
--- a/internal/iam/repository/view/styling.go
+++ b/internal/iam/repository/view/styling.go
@@ -1,13 +1,13 @@
package view
import (
+ "github.com/jinzhu/gorm"
+
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
iam_model "github.com/zitadel/zitadel/internal/iam/model"
"github.com/zitadel/zitadel/internal/iam/repository/view/model"
"github.com/zitadel/zitadel/internal/view/repository"
-
- "github.com/jinzhu/gorm"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func GetStylingByAggregateIDAndState(db *gorm.DB, table, aggregateID, instanceID string, state int32) (*model.LabelPolicyView, error) {
@@ -18,8 +18,8 @@ func GetStylingByAggregateIDAndState(db *gorm.DB, table, aggregateID, instanceID
ownerRemovedQuery := &model.LabelPolicySearchQuery{Key: iam_model.LabelPolicySearchKeyOwnerRemoved, Value: false, Method: domain.SearchMethodEquals}
query := repository.PrepareGetByQuery(table, aggregateIDQuery, stateQuery, instanceIDQuery, ownerRemovedQuery)
err := query(db, policy)
- if caos_errs.IsNotFound(err) {
- return nil, caos_errs.ThrowNotFound(nil, "VIEW-68G11", "Errors.IAM.LabelPolicy.NotExisting")
+ if zerrors.IsNotFound(err) {
+ return nil, zerrors.ThrowNotFound(nil, "VIEW-68G11", "Errors.IAM.LabelPolicy.NotExisting")
}
return policy, err
}
diff --git a/internal/idp/providers/saml/saml.go b/internal/idp/providers/saml/saml.go
index 215230f724..aa816dfead 100644
--- a/internal/idp/providers/saml/saml.go
+++ b/internal/idp/providers/saml/saml.go
@@ -11,8 +11,8 @@ import (
"github.com/crewjam/saml"
"github.com/crewjam/saml/samlsp"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/idp"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var _ idp.Provider = (*Provider)(nil)
@@ -154,7 +154,7 @@ func (p *Provider) IsAutoUpdate() bool {
func (p *Provider) GetSP() (*samlsp.Middleware, error) {
sp, err := samlsp.New(*p.spOptions)
if err != nil {
- return nil, errors.ThrowInternal(err, "SAML-qee09ffuq5", "Errors.Intent.IDPInvalid")
+ return nil, zerrors.ThrowInternal(err, "SAML-qee09ffuq5", "Errors.Intent.IDPInvalid")
}
if p.requestTracker != nil {
sp.RequestTracker = p.requestTracker
diff --git a/internal/idp/providers/saml/session.go b/internal/idp/providers/saml/session.go
index c795493adc..af5ec0caf7 100644
--- a/internal/idp/providers/saml/session.go
+++ b/internal/idp/providers/saml/session.go
@@ -9,8 +9,8 @@ import (
"github.com/crewjam/saml"
"github.com/crewjam/saml/samlsp"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/idp"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var _ idp.Session = (*Session)(nil)
@@ -48,12 +48,12 @@ func (s *Session) GetAuth(ctx context.Context) (string, bool) {
// FetchUser implements the [idp.Session] interface.
func (s *Session) FetchUser(ctx context.Context) (user idp.User, err error) {
if s.RequestID == "" || s.Request == nil {
- return nil, errors.ThrowInvalidArgument(nil, "SAML-d09hy0wkex", "Errors.Intent.ResponseInvalid")
+ return nil, zerrors.ThrowInvalidArgument(nil, "SAML-d09hy0wkex", "Errors.Intent.ResponseInvalid")
}
s.Assertion, err = s.ServiceProvider.ServiceProvider.ParseResponse(s.Request, []string{s.RequestID})
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "SAML-nuo0vphhh9", "Errors.Intent.ResponseInvalid")
+ return nil, zerrors.ThrowInvalidArgument(err, "SAML-nuo0vphhh9", "Errors.Intent.ResponseInvalid")
}
userMapper := NewUser()
diff --git a/internal/idp/providers/saml/session_test.go b/internal/idp/providers/saml/session_test.go
index 34126ff7ff..3ab33a8558 100644
--- a/internal/idp/providers/saml/session_test.go
+++ b/internal/idp/providers/saml/session_test.go
@@ -13,8 +13,8 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/idp/providers/saml/requesttracker"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestSession_FetchUser(t *testing.T) {
@@ -69,7 +69,7 @@ func TestSession_FetchUser(t *testing.T) {
requestID: "",
},
want: want{
- err: caos_errs.ThrowInvalidArgument(nil, "SAML-d09hy0wkex", "Errors.Intent.ResponseInvalid"),
+ err: zerrors.ThrowInvalidArgument(nil, "SAML-d09hy0wkex", "Errors.Intent.ResponseInvalid"),
},
},
{
@@ -95,7 +95,7 @@ func TestSession_FetchUser(t *testing.T) {
requestID: "id-b22c90db88bf01d82ffb0a7b6fe25ac9fcb2c679",
},
want: want{
- err: caos_errs.ThrowInvalidArgument(nil, "SAML-d09hy0wkex", "Errors.Intent.ResponseInvalid"),
+ err: zerrors.ThrowInvalidArgument(nil, "SAML-d09hy0wkex", "Errors.Intent.ResponseInvalid"),
},
},
{
@@ -125,7 +125,7 @@ func TestSession_FetchUser(t *testing.T) {
requestID: "id-b22c90db88bf01d82ffb0a7b6fe25ac9fcb2c679",
},
want: want{
- err: caos_errs.ThrowInvalidArgument(nil, "SAML-nuo0vphhh9", "Errors.Intent.ResponseInvalid"),
+ err: zerrors.ThrowInvalidArgument(nil, "SAML-nuo0vphhh9", "Errors.Intent.ResponseInvalid"),
},
},
{
diff --git a/internal/integration/client.go b/internal/integration/client.go
index cc4ccc75bd..6c4498344e 100644
--- a/internal/integration/client.go
+++ b/internal/integration/client.go
@@ -8,6 +8,7 @@ import (
crewjam_saml "github.com/crewjam/saml"
"github.com/muhlemmer/gu"
+ "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/zitadel/logging"
"github.com/zitadel/oidc/v3/pkg/oidc"
@@ -18,6 +19,7 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/command"
+ "github.com/zitadel/zitadel/internal/domain"
"github.com/zitadel/zitadel/internal/idp/providers/ldap"
openid "github.com/zitadel/zitadel/internal/idp/providers/oidc"
"github.com/zitadel/zitadel/internal/idp/providers/saml"
@@ -30,6 +32,7 @@ import (
organisation "github.com/zitadel/zitadel/pkg/grpc/org/v2beta"
session "github.com/zitadel/zitadel/pkg/grpc/session/v2beta"
"github.com/zitadel/zitadel/pkg/grpc/system"
+ user_pb "github.com/zitadel/zitadel/pkg/grpc/user"
user "github.com/zitadel/zitadel/pkg/grpc/user/v2beta"
)
@@ -59,8 +62,8 @@ func newClient(cc *grpc.ClientConn) Client {
}
}
-func (t *Tester) UseIsolatedInstance(iamOwnerCtx, systemCtx context.Context) (primaryDomain, instanceId string, authenticatedIamOwnerCtx context.Context) {
- primaryDomain = randString(5) + ".integration.localhost"
+func (t *Tester) UseIsolatedInstance(tt *testing.T, iamOwnerCtx, systemCtx context.Context) (primaryDomain, instanceId string, authenticatedIamOwnerCtx context.Context) {
+ primaryDomain = RandString(5) + ".integration.localhost"
instance, err := t.Client.System.CreateInstance(systemCtx, &system.CreateInstanceRequest{
InstanceName: "testinstance",
CustomDomain: primaryDomain,
@@ -80,13 +83,33 @@ func (t *Tester) UseIsolatedInstance(iamOwnerCtx, systemCtx context.Context) (pr
t.Users.Set(instanceId, IAMOwner, &User{
Token: instance.GetPat(),
})
- return primaryDomain, instanceId, t.WithInstanceAuthorization(iamOwnerCtx, IAMOwner, instanceId)
+ newCtx := t.WithInstanceAuthorization(iamOwnerCtx, IAMOwner, instanceId)
+ // the following serves two purposes:
+ // 1. it ensures that the instance is ready to be used
+ // 2. it enables a normal login with the default admin user credentials
+ require.EventuallyWithT(tt, func(collectT *assert.CollectT) {
+ _, importErr := t.Client.Mgmt.ImportHumanUser(newCtx, &mgmt.ImportHumanUserRequest{
+ UserName: "zitadel-admin@zitadel.localhost",
+ Email: &mgmt.ImportHumanUserRequest_Email{
+ Email: "zitadel-admin@zitadel.localhost",
+ IsEmailVerified: true,
+ },
+ Password: "Password1!",
+ Profile: &mgmt.ImportHumanUserRequest_Profile{
+ FirstName: "hodor",
+ LastName: "hodor",
+ NickName: "hodor",
+ },
+ })
+ assert.NoError(collectT, importErr)
+ }, 2*time.Minute, 100*time.Millisecond, "instance not ready")
+ return primaryDomain, instanceId, newCtx
}
func (s *Tester) CreateHumanUser(ctx context.Context) *user.AddHumanUserResponse {
resp, err := s.Client.UserV2.AddHumanUser(ctx, &user.AddHumanUserRequest{
- Organisation: &object.Organisation{
- Org: &object.Organisation_OrgId{
+ Organization: &object.Organization{
+ Org: &object.Organization_OrgId{
OrgId: s.Organisation.ID,
},
},
@@ -113,6 +136,17 @@ func (s *Tester) CreateHumanUser(ctx context.Context) *user.AddHumanUserResponse
return resp
}
+func (s *Tester) CreateMachineUser(ctx context.Context) *mgmt.AddMachineUserResponse {
+ resp, err := s.Client.Mgmt.AddMachineUser(ctx, &mgmt.AddMachineUserRequest{
+ UserName: fmt.Sprintf("%d@mouse.com", time.Now().UnixNano()),
+ Name: "Mickey",
+ Description: "Mickey Mouse",
+ AccessTokenType: user_pb.AccessTokenType_ACCESS_TOKEN_TYPE_BEARER,
+ })
+ logging.OnError(err).Fatal("create human user")
+ return resp
+}
+
func (s *Tester) CreateUserIDPlink(ctx context.Context, userID, externalID, idpID, username string) *user.AddIDPLinkResponse {
resp, err := s.Client.UserV2.AddIDPLink(
ctx,
@@ -385,3 +419,29 @@ func (s *Tester) CreatePasswordSession(t *testing.T, ctx context.Context, userID
return createResp.GetSessionId(), createResp.GetSessionToken(),
createResp.GetDetails().GetChangeDate().AsTime(), createResp.GetDetails().GetChangeDate().AsTime()
}
+
+func (s *Tester) CreateProjectUserGrant(t *testing.T, ctx context.Context, projectID, userID string) string {
+ resp, err := s.Client.Mgmt.AddUserGrant(ctx, &mgmt.AddUserGrantRequest{
+ UserId: userID,
+ ProjectId: projectID,
+ })
+ require.NoError(t, err)
+ return resp.GetUserGrantId()
+}
+
+func (s *Tester) CreateOrgMembership(t *testing.T, ctx context.Context, userID string) {
+ _, err := s.Client.Mgmt.AddOrgMember(ctx, &mgmt.AddOrgMemberRequest{
+ UserId: userID,
+ Roles: []string{domain.RoleOrgOwner},
+ })
+ require.NoError(t, err)
+}
+
+func (s *Tester) CreateProjectMembership(t *testing.T, ctx context.Context, projectID, userID string) {
+ _, err := s.Client.Mgmt.AddProjectMember(ctx, &mgmt.AddProjectMemberRequest{
+ ProjectId: projectID,
+ UserId: userID,
+ Roles: []string{domain.RoleProjectOwner},
+ })
+ require.NoError(t, err)
+}
diff --git a/internal/integration/config/zitadel.yaml b/internal/integration/config/zitadel.yaml
index 5bf6937af9..8768e8e513 100644
--- a/internal/integration/config/zitadel.yaml
+++ b/internal/integration/config/zitadel.yaml
@@ -51,3 +51,9 @@ DefaultInstance:
SystemAPIUsers:
- tester:
KeyData: "LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUF6aStGRlNKTDdmNXl3NEtUd3pnTQpQMzRlUEd5Y20vTStrVDBNN1Y0Q2d4NVYzRWFESXZUUUtUTGZCYUVCNDV6YjlMdGpJWHpEdzByWFJvUzJoTzZ0CmgrQ1lRQ3ozS0N2aDA5QzBJenhaaUIySVMzSC9hVCs1Qng5RUZZK3ZuQWtaamNjYnlHNVlOUnZtdE9sbnZJZUkKSDdxWjB0RXdrUGZGNUdFWk5QSlB0bXkzVUdWN2lvZmRWUVMxeFJqNzMrYU13NXJ2SDREOElkeWlBQzNWZWtJYgpwdDBWajBTVVgzRHdLdG9nMzM3QnpUaVBrM2FYUkYwc2JGaFFvcWRKUkk4TnFnWmpDd2pxOXlmSTV0eXhZc3duCitKR3pIR2RIdlczaWRPRGxtd0V0NUsycGFzaVJJV0syT0dmcSt3MEVjbHRRSGFidXFFUGdabG1oQ2tSZE5maXgKQndJREFRQUIKLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg=="
+ Memberships:
+ - MemberType: System
+ Roles:
+ - "SYSTEM_OWNER"
+ - "IAM_OWNER"
+ - "ORG_OWNER"
diff --git a/internal/integration/integration.go b/internal/integration/integration.go
index 3d794a10d4..8e38ca0e3f 100644
--- a/internal/integration/integration.go
+++ b/internal/integration/integration.go
@@ -32,11 +32,11 @@ import (
z_oidc "github.com/zitadel/zitadel/internal/api/oidc"
"github.com/zitadel/zitadel/internal/command"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/net"
"github.com/zitadel/zitadel/internal/query"
"github.com/zitadel/zitadel/internal/webauthn"
+ "github.com/zitadel/zitadel/internal/zerrors"
"github.com/zitadel/zitadel/pkg/grpc/admin"
)
@@ -181,7 +181,7 @@ func (s *Tester) createMachineUserOrgOwner(ctx context.Context) {
ctx, user := s.createMachineUser(ctx, MachineUserOrgOwner, OrgOwner)
_, err = s.Commands.AddOrgMember(ctx, user.ResourceOwner, user.ID, "ORG_OWNER")
- target := new(caos_errs.AlreadyExistsError)
+ target := new(zerrors.AlreadyExistsError)
if !errors.As(err, &target) {
logging.OnError(err).Fatal("add org member")
}
@@ -192,7 +192,7 @@ func (s *Tester) createMachineUserInstanceOwner(ctx context.Context) {
ctx, user := s.createMachineUser(ctx, MachineUserInstanceOwner, IAMOwner)
_, err = s.Commands.AddInstanceMember(ctx, user.ID, "IAM_OWNER")
- target := new(caos_errs.AlreadyExistsError)
+ target := new(zerrors.AlreadyExistsError)
if !errors.As(err, &target) {
logging.OnError(err).Fatal("add instance member")
}
diff --git a/internal/integration/oidc.go b/internal/integration/oidc.go
index b6edcd3aea..16c4c90ae5 100644
--- a/internal/integration/oidc.go
+++ b/internal/integration/oidc.go
@@ -8,29 +8,33 @@ import (
"strings"
"time"
+ "github.com/brianvoe/gofakeit/v6"
"github.com/zitadel/oidc/v3/pkg/client"
"github.com/zitadel/oidc/v3/pkg/client/rp"
"github.com/zitadel/oidc/v3/pkg/client/rs"
"github.com/zitadel/oidc/v3/pkg/oidc"
+ "google.golang.org/protobuf/types/known/timestamppb"
http_util "github.com/zitadel/zitadel/internal/api/http"
oidc_internal "github.com/zitadel/zitadel/internal/api/oidc"
"github.com/zitadel/zitadel/pkg/grpc/app"
+ "github.com/zitadel/zitadel/pkg/grpc/authn"
"github.com/zitadel/zitadel/pkg/grpc/management"
+ "github.com/zitadel/zitadel/pkg/grpc/user"
)
-func (s *Tester) CreateOIDCNativeClient(ctx context.Context, redirectURI, logoutRedirectURI, projectID string) (*management.AddOIDCAppResponse, error) {
+func (s *Tester) CreateOIDCClient(ctx context.Context, redirectURI, logoutRedirectURI, projectID string, appType app.OIDCAppType, authMethod app.OIDCAuthMethodType, devMode bool) (*management.AddOIDCAppResponse, error) {
return s.Client.Mgmt.AddOIDCApp(ctx, &management.AddOIDCAppRequest{
ProjectId: projectID,
Name: fmt.Sprintf("app-%d", time.Now().UnixNano()),
RedirectUris: []string{redirectURI},
ResponseTypes: []app.OIDCResponseType{app.OIDCResponseType_OIDC_RESPONSE_TYPE_CODE},
GrantTypes: []app.OIDCGrantType{app.OIDCGrantType_OIDC_GRANT_TYPE_AUTHORIZATION_CODE, app.OIDCGrantType_OIDC_GRANT_TYPE_REFRESH_TOKEN},
- AppType: app.OIDCAppType_OIDC_APP_TYPE_NATIVE,
- AuthMethodType: app.OIDCAuthMethodType_OIDC_AUTH_METHOD_TYPE_NONE,
+ AppType: appType,
+ AuthMethodType: authMethod,
PostLogoutRedirectUris: []string{logoutRedirectURI},
Version: app.OIDCVersion_OIDC_VERSION_1_0,
- DevMode: false,
+ DevMode: devMode,
AccessTokenType: app.OIDCTokenType_OIDC_TOKEN_TYPE_JWT,
AccessTokenRoleAssertion: false,
IdTokenRoleAssertion: false,
@@ -41,6 +45,46 @@ func (s *Tester) CreateOIDCNativeClient(ctx context.Context, redirectURI, logout
})
}
+func (s *Tester) CreateOIDCNativeClient(ctx context.Context, redirectURI, logoutRedirectURI, projectID string, devMode bool) (*management.AddOIDCAppResponse, error) {
+ return s.CreateOIDCClient(ctx, redirectURI, logoutRedirectURI, projectID, app.OIDCAppType_OIDC_APP_TYPE_NATIVE, app.OIDCAuthMethodType_OIDC_AUTH_METHOD_TYPE_NONE, devMode)
+}
+
+func (s *Tester) CreateOIDCWebClientBasic(ctx context.Context, redirectURI, logoutRedirectURI, projectID string) (*management.AddOIDCAppResponse, error) {
+ return s.CreateOIDCClient(ctx, redirectURI, logoutRedirectURI, projectID, app.OIDCAppType_OIDC_APP_TYPE_WEB, app.OIDCAuthMethodType_OIDC_AUTH_METHOD_TYPE_BASIC, false)
+}
+
+func (s *Tester) CreateOIDCWebClientJWT(ctx context.Context, redirectURI, logoutRedirectURI, projectID string) (client *management.AddOIDCAppResponse, keyData []byte, err error) {
+ client, err = s.CreateOIDCClient(ctx, redirectURI, logoutRedirectURI, projectID, app.OIDCAppType_OIDC_APP_TYPE_WEB, app.OIDCAuthMethodType_OIDC_AUTH_METHOD_TYPE_PRIVATE_KEY_JWT, false)
+ if err != nil {
+ return nil, nil, err
+ }
+ key, err := s.Client.Mgmt.AddAppKey(ctx, &management.AddAppKeyRequest{
+ ProjectId: projectID,
+ AppId: client.GetAppId(),
+ Type: authn.KeyType_KEY_TYPE_JSON,
+ ExpirationDate: timestamppb.New(time.Now().Add(time.Hour)),
+ })
+ if err != nil {
+ return nil, nil, err
+ }
+ return client, key.GetKeyDetails(), nil
+}
+
+func (s *Tester) CreateOIDCInactivateClient(ctx context.Context, redirectURI, logoutRedirectURI, projectID string) (*management.AddOIDCAppResponse, error) {
+ client, err := s.CreateOIDCNativeClient(ctx, redirectURI, logoutRedirectURI, projectID, false)
+ if err != nil {
+ return nil, err
+ }
+ _, err = s.Client.Mgmt.DeactivateApp(ctx, &management.DeactivateAppRequest{
+ ProjectId: projectID,
+ AppId: client.GetAppId(),
+ })
+ if err != nil {
+ return nil, err
+ }
+ return client, err
+}
+
func (s *Tester) CreateOIDCImplicitFlowClient(ctx context.Context, redirectURI string) (*management.AddOIDCAppResponse, error) {
project, err := s.Client.Mgmt.AddProject(ctx, &management.AddProjectRequest{
Name: fmt.Sprintf("project-%d", time.Now().UnixNano()),
@@ -75,7 +119,7 @@ func (s *Tester) CreateProject(ctx context.Context) (*management.AddProjectRespo
})
}
-func (s *Tester) CreateAPIClient(ctx context.Context, projectID string) (*management.AddAPIAppResponse, error) {
+func (s *Tester) CreateAPIClientJWT(ctx context.Context, projectID string) (*management.AddAPIAppResponse, error) {
return s.Client.Mgmt.AddAPIApp(ctx, &management.AddAPIAppRequest{
ProjectId: projectID,
Name: fmt.Sprintf("api-%d", time.Now().UnixNano()),
@@ -83,14 +127,22 @@ func (s *Tester) CreateAPIClient(ctx context.Context, projectID string) (*manage
})
}
+func (s *Tester) CreateAPIClientBasic(ctx context.Context, projectID string) (*management.AddAPIAppResponse, error) {
+ return s.Client.Mgmt.AddAPIApp(ctx, &management.AddAPIAppRequest{
+ ProjectId: projectID,
+ Name: fmt.Sprintf("api-%d", time.Now().UnixNano()),
+ AuthMethodType: app.APIAuthMethodType_API_AUTH_METHOD_TYPE_BASIC,
+ })
+}
+
+const CodeVerifier = "codeVerifier"
+
func (s *Tester) CreateOIDCAuthRequest(ctx context.Context, clientID, loginClient, redirectURI string, scope ...string) (authRequestID string, err error) {
provider, err := s.CreateRelyingParty(ctx, clientID, redirectURI, scope...)
if err != nil {
return "", err
}
-
- codeVerifier := "codeVerifier"
- codeChallenge := oidc.NewSHACodeChallenge(codeVerifier)
+ codeChallenge := oidc.NewSHACodeChallenge(CodeVerifier)
authURL := rp.AuthURL("state", provider, rp.WithCodeChallenge(codeChallenge))
req, err := GetRequest(authURL, map[string]string{oidc_internal.LoginClientHeader: loginClient})
@@ -163,7 +215,7 @@ func (c *loginRoundTripper) RoundTrip(req *http.Request) (*http.Response, error)
return c.RoundTripper.RoundTrip(req)
}
-func (s *Tester) CreateResourceServer(ctx context.Context, keyFileData []byte) (rs.ResourceServer, error) {
+func (s *Tester) CreateResourceServerJWTProfile(ctx context.Context, keyFileData []byte) (rs.ResourceServer, error) {
keyFile, err := client.ConfigFromKeyFileData(keyFileData)
if err != nil {
return nil, err
@@ -171,6 +223,10 @@ func (s *Tester) CreateResourceServer(ctx context.Context, keyFileData []byte) (
return rs.NewResourceServerJWTProfile(ctx, s.OIDCIssuer(), keyFile.ClientID, keyFile.KeyID, []byte(keyFile.Key))
}
+func (s *Tester) CreateResourceServerClientCredentials(ctx context.Context, clientID, clientSecret string) (rs.ResourceServer, error) {
+ return rs.NewResourceServerClientCredentials(ctx, s.OIDCIssuer(), clientID, clientSecret)
+}
+
func GetRequest(url string, headers map[string]string) (*http.Request, error) {
req, err := http.NewRequest(http.MethodGet, url, nil)
if err != nil {
@@ -196,3 +252,22 @@ func CheckRedirect(req *http.Request) (*url.URL, error) {
return resp.Location()
}
+
+func (s *Tester) CreateOIDCCredentialsClient(ctx context.Context) (string, string, error) {
+ name := gofakeit.Username()
+ user, err := s.Client.Mgmt.AddMachineUser(ctx, &management.AddMachineUserRequest{
+ Name: name,
+ UserName: name,
+ AccessTokenType: user.AccessTokenType_ACCESS_TOKEN_TYPE_JWT,
+ })
+ if err != nil {
+ return "", "", err
+ }
+ secret, err := s.Client.Mgmt.GenerateMachineSecret(ctx, &management.GenerateMachineSecretRequest{
+ UserId: user.GetUserId(),
+ })
+ if err != nil {
+ return "", "", err
+ }
+ return secret.GetClientId(), secret.GetClientSecret(), nil
+}
diff --git a/internal/integration/rand.go b/internal/integration/rand.go
index 4425c97c8c..d4f01b51c8 100644
--- a/internal/integration/rand.go
+++ b/internal/integration/rand.go
@@ -11,7 +11,7 @@ func init() {
var letterRunes = []rune("abcdefghijklmnopqrstuvwxyz")
-func randString(n int) string {
+func RandString(n int) string {
b := make([]rune, n)
for i := range b {
b[i] = letterRunes[rand.Intn(len(letterRunes))]
diff --git a/internal/migration/command.go b/internal/migration/command.go
index 8a296edabd..5c18856697 100644
--- a/internal/migration/command.go
+++ b/internal/migration/command.go
@@ -6,8 +6,8 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/service"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
// SetupStep is the command pushed on the eventstore
@@ -22,7 +22,7 @@ type SetupStep struct {
func (s *SetupStep) UnmarshalJSON(data []byte) error {
fields := struct {
Name string `json:"name,"`
- Error *errors.CaosError `json:"error"`
+ Error *zerrors.ZitadelError `json:"error"`
LastRun map[string]interface{} `json:"lastRun,omitempty"`
}{}
if err := json.Unmarshal(data, &fields); err != nil {
@@ -108,7 +108,7 @@ func SetupMapper(event eventstore.Event) (eventstore.Event, error) {
}
err := event.Unmarshal(step)
if err != nil {
- return nil, errors.ThrowInternal(err, "IAM-hYp7M", "unable to unmarshal step")
+ return nil, zerrors.ThrowInternal(err, "IAM-hYp7M", "unable to unmarshal step")
}
return step, nil
diff --git a/internal/migration/migration.go b/internal/migration/migration.go
index d6e3355164..3e94ea5bbd 100644
--- a/internal/migration/migration.go
+++ b/internal/migration/migration.go
@@ -2,13 +2,13 @@ package migration
import (
"context"
- errs "errors"
+ "errors"
"time"
"github.com/zitadel/logging"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -21,7 +21,7 @@ const (
)
var (
- errMigrationAlreadyStarted = errs.New("already started")
+ errMigrationAlreadyStarted = errors.New("already started")
)
type Migration interface {
@@ -90,7 +90,7 @@ func LatestStep(ctx context.Context, es *eventstore.Eventstore) (*SetupStep, err
}
step, ok := events[0].(*SetupStep)
if !ok {
- return nil, errors.ThrowInternal(nil, "MIGRA-hppLM", "setup step is malformed")
+ return nil, zerrors.ThrowInternal(nil, "MIGRA-hppLM", "setup step is malformed")
}
return step, nil
}
@@ -111,7 +111,7 @@ func (m *cancelMigration) String() string {
return m.name
}
-var errCancelStep = errors.ThrowError(nil, "MIGRA-zo86K", "migration canceled manually")
+var errCancelStep = zerrors.ThrowError(nil, "MIGRA-zo86K", "migration canceled manually")
func CancelStep(ctx context.Context, es *eventstore.Eventstore, step *SetupStep) error {
_, err := es.Push(ctx, setupDoneCmd(ctx, &cancelMigration{name: step.Name}, errCancelStep))
@@ -125,11 +125,11 @@ func checkExec(ctx context.Context, es *eventstore.Eventstore, migration Migrati
for {
select {
case <-ctx.Done():
- return false, errors.ThrowInternal(nil, "MIGR-as3f7", "Errors.Internal")
+ return false, zerrors.ThrowInternal(nil, "MIGR-as3f7", "Errors.Internal")
case <-timer.C:
should, err := shouldExec(ctx, es, migration)
if err != nil {
- if !errs.Is(err, errMigrationAlreadyStarted) {
+ if !errors.Is(err, errMigrationAlreadyStarted) {
return false, err
}
logging.WithFields("migration step", migration.String()).
@@ -159,7 +159,7 @@ func shouldExec(ctx context.Context, es *eventstore.Eventstore, migration Migrat
for _, event := range events {
e, ok := event.(*SetupStep)
if !ok {
- return false, errors.ThrowInternal(nil, "MIGRA-IJY3D", "Errors.Internal")
+ return false, zerrors.ThrowInternal(nil, "MIGRA-IJY3D", "Errors.Internal")
}
if e.Name != migration.String() {
diff --git a/internal/notification/channels/fs/channel.go b/internal/notification/channels/fs/channel.go
index 723946c246..814629a128 100644
--- a/internal/notification/channels/fs/channel.go
+++ b/internal/notification/channels/fs/channel.go
@@ -11,9 +11,9 @@ import (
"github.com/k3a/html2text"
"github.com/zitadel/logging"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/notification/channels"
"github.com/zitadel/zitadel/internal/notification/messages"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func InitFSChannel(config Config) (channels.NotificationChannel, error) {
@@ -44,7 +44,7 @@ func InitFSChannel(config Config) (channels.NotificationChannel, error) {
case *messages.JSON:
fileName = "message.json"
default:
- return errors.ThrowUnimplementedf(nil, "NOTIF-6f9a1", "filesystem provider doesn't support message type %T", message)
+ return zerrors.ThrowUnimplementedf(nil, "NOTIF-6f9a1", "filesystem provider doesn't support message type %T", message)
}
return os.WriteFile(filepath.Join(config.Path, fileName), []byte(content), 0666)
diff --git a/internal/notification/channels/smtp/channel.go b/internal/notification/channels/smtp/channel.go
index ceea5c9dfb..2d6dc9dadd 100644
--- a/internal/notification/channels/smtp/channel.go
+++ b/internal/notification/channels/smtp/channel.go
@@ -2,15 +2,15 @@ package smtp
import (
"crypto/tls"
+ "errors"
"net"
"net/smtp"
- "github.com/pkg/errors"
"github.com/zitadel/logging"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/notification/channels"
"github.com/zitadel/zitadel/internal/notification/messages"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var _ channels.NotificationChannel = (*Email)(nil)
@@ -41,22 +41,22 @@ func (email *Email) HandleMessage(message channels.Message) error {
defer email.smtpClient.Close()
emailMsg, ok := message.(*messages.Email)
if !ok {
- return caos_errs.ThrowInternal(nil, "EMAIL-s8JLs", "message is not EmailMessage")
+ return zerrors.ThrowInternal(nil, "EMAIL-s8JLs", "message is not EmailMessage")
}
if emailMsg.Content == "" || emailMsg.Subject == "" || len(emailMsg.Recipients) == 0 {
- return caos_errs.ThrowInternalf(nil, "EMAIL-zGemZ", "subject, recipients and content must be set but got subject %s, recipients length %d and content length %d", emailMsg.Subject, len(emailMsg.Recipients), len(emailMsg.Content))
+ return zerrors.ThrowInternalf(nil, "EMAIL-zGemZ", "subject, recipients and content must be set but got subject %s, recipients length %d and content length %d", emailMsg.Subject, len(emailMsg.Recipients), len(emailMsg.Content))
}
emailMsg.SenderEmail = email.senderAddress
emailMsg.SenderName = email.senderName
emailMsg.ReplyToAddress = email.replyToAddress
// To && From
if err := email.smtpClient.Mail(emailMsg.SenderEmail); err != nil {
- return caos_errs.ThrowInternalf(err, "EMAIL-s3is3", "could not set sender: %v", emailMsg.SenderEmail)
+ return zerrors.ThrowInternalf(err, "EMAIL-s3is3", "could not set sender: %v", emailMsg.SenderEmail)
}
for _, recp := range append(append(emailMsg.Recipients, emailMsg.CC...), emailMsg.BCC...) {
if err := email.smtpClient.Rcpt(recp); err != nil {
- return caos_errs.ThrowInternalf(err, "EMAIL-s4is4", "could not set recipient: %v", recp)
+ return zerrors.ThrowInternalf(err, "EMAIL-s4is4", "could not set recipient: %v", recp)
}
}
@@ -87,7 +87,7 @@ func (email *Email) HandleMessage(message channels.Message) error {
func (smtpConfig SMTP) connectToSMTP(tlsRequired bool) (client *smtp.Client, err error) {
host, _, err := net.SplitHostPort(smtpConfig.Host)
if err != nil {
- return nil, caos_errs.ThrowInternal(err, "EMAIL-spR56", "could not split host and port for connect to smtp")
+ return nil, zerrors.ThrowInternal(err, "EMAIL-spR56", "could not split host and port for connect to smtp")
}
if !tlsRequired {
@@ -109,7 +109,7 @@ func (smtpConfig SMTP) connectToSMTP(tlsRequired bool) (client *smtp.Client, err
func (smtpConfig SMTP) getSMPTClient() (*smtp.Client, error) {
client, err := smtp.Dial(smtpConfig.Host)
if err != nil {
- return nil, caos_errs.ThrowInternal(err, "EMAIL-skwos", "could not make smtp dial")
+ return nil, zerrors.ThrowInternal(err, "EMAIL-skwos", "could not make smtp dial")
}
return client, nil
}
@@ -123,12 +123,12 @@ func (smtpConfig SMTP) getSMPTClientWithTls(host string) (*smtp.Client, error) {
}
if err != nil {
- return nil, caos_errs.ThrowInternal(err, "EMAIL-sl39s", "could not make tls dial")
+ return nil, zerrors.ThrowInternal(err, "EMAIL-sl39s", "could not make tls dial")
}
client, err := smtp.NewClient(conn, host)
if err != nil {
- return nil, caos_errs.ThrowInternal(err, "EMAIL-skwi4", "could not create smtp client")
+ return nil, zerrors.ThrowInternal(err, "EMAIL-skwi4", "could not create smtp client")
}
return client, err
}
@@ -142,7 +142,7 @@ func (smtpConfig SMTP) getSMPTClientWithStartTls(host string) (*smtp.Client, err
if err := client.StartTLS(&tls.Config{
ServerName: host,
}); err != nil {
- return nil, caos_errs.ThrowInternal(err, "EMAIL-guvsQ", "could not start tls")
+ return nil, zerrors.ThrowInternal(err, "EMAIL-guvsQ", "could not start tls")
}
return client, nil
}
@@ -157,7 +157,7 @@ func (smtpConfig SMTP) smtpAuth(client *smtp.Client, host string) error {
}
err := client.Auth(auth)
if err != nil {
- return caos_errs.ThrowInternalf(err, "EMAIL-s9kfs", "could not add smtp auth for user %s", smtpConfig.User)
+ return zerrors.ThrowInternalf(err, "EMAIL-s9kfs", "could not add smtp auth for user %s", smtpConfig.User)
}
return nil
}
diff --git a/internal/notification/channels/twilio/channel.go b/internal/notification/channels/twilio/channel.go
index c25ceb842a..da04b20f5e 100644
--- a/internal/notification/channels/twilio/channel.go
+++ b/internal/notification/channels/twilio/channel.go
@@ -4,9 +4,9 @@ import (
"github.com/kevinburke/twilio-go"
"github.com/zitadel/logging"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/notification/channels"
"github.com/zitadel/zitadel/internal/notification/messages"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func InitChannel(config Config) channels.NotificationChannel {
@@ -17,7 +17,7 @@ func InitChannel(config Config) channels.NotificationChannel {
return channels.HandleMessageFunc(func(message channels.Message) error {
twilioMsg, ok := message.(*messages.SMS)
if !ok {
- return caos_errs.ThrowInternal(nil, "TWILI-s0pLc", "message is not SMS")
+ return zerrors.ThrowInternal(nil, "TWILI-s0pLc", "message is not SMS")
}
content, err := twilioMsg.GetContent()
if err != nil {
@@ -25,7 +25,7 @@ func InitChannel(config Config) channels.NotificationChannel {
}
m, err := client.Messages.SendMessage(twilioMsg.SenderPhoneNumber, twilioMsg.RecipientPhoneNumber, content, nil)
if err != nil {
- return caos_errs.ThrowInternal(err, "TWILI-osk3S", "could not send message")
+ return zerrors.ThrowInternal(err, "TWILI-osk3S", "could not send message")
}
logging.WithFields("message_sid", m.Sid, "status", m.Status).Debug("sms sent")
return nil
diff --git a/internal/notification/channels/webhook/channel.go b/internal/notification/channels/webhook/channel.go
index c587f593b0..4065767d14 100644
--- a/internal/notification/channels/webhook/channel.go
+++ b/internal/notification/channels/webhook/channel.go
@@ -9,9 +9,9 @@ import (
"github.com/zitadel/logging"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/notification/channels"
"github.com/zitadel/zitadel/internal/notification/messages"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func InitChannel(ctx context.Context, cfg Config) (channels.NotificationChannel, error) {
@@ -25,7 +25,7 @@ func InitChannel(ctx context.Context, cfg Config) (channels.NotificationChannel,
defer cancel()
msg, ok := message.(*messages.JSON)
if !ok {
- return errors.ThrowInternal(nil, "WEBH-K686U", "message is not JSON")
+ return zerrors.ThrowInternal(nil, "WEBH-K686U", "message is not JSON")
}
payload, err := msg.GetContent()
if err != nil {
@@ -47,7 +47,7 @@ func InitChannel(ctx context.Context, cfg Config) (channels.NotificationChannel,
return err
}
if resp.StatusCode < 200 || resp.StatusCode >= 300 {
- return errors.ThrowUnknown(fmt.Errorf("calling url %s returned %s", cfg.CallURL, resp.Status), "WEBH-LBxU0", "webhook didn't return a success status")
+ return zerrors.ThrowUnknown(fmt.Errorf("calling url %s returned %s", cfg.CallURL, resp.Status), "WEBH-LBxU0", "webhook didn't return a success status")
}
logging.WithFields("calling_url", cfg.CallURL, "method", cfg.Method).Debug("webhook called")
return nil
diff --git a/internal/notification/handlers/config_twilio.go b/internal/notification/handlers/config_twilio.go
index 29a79415de..5391553690 100644
--- a/internal/notification/handlers/config_twilio.go
+++ b/internal/notification/handlers/config_twilio.go
@@ -5,9 +5,9 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/notification/channels/twilio"
"github.com/zitadel/zitadel/internal/query"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
// GetTwilioConfig reads the iam Twilio provider config
@@ -21,7 +21,7 @@ func (n *NotificationQueries) GetTwilioConfig(ctx context.Context) (*twilio.Conf
return nil, err
}
if config.TwilioConfig == nil {
- return nil, errors.ThrowNotFound(nil, "HANDLER-8nfow", "Errors.SMS.Twilio.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "HANDLER-8nfow", "Errors.SMS.Twilio.NotFound")
}
token, err := crypto.DecryptString(config.TwilioConfig.Token, n.SMSTokenCrypto)
if err != nil {
diff --git a/internal/notification/handlers/mock/queries.mock.go b/internal/notification/handlers/mock/queries.mock.go
index 7c9186760b..620e8ccd59 100644
--- a/internal/notification/handlers/mock/queries.mock.go
+++ b/internal/notification/handlers/mock/queries.mock.go
@@ -85,6 +85,21 @@ func (mr *MockQueriesMockRecorder) GetDefaultLanguage(arg0 any) *gomock.Call {
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetDefaultLanguage", reflect.TypeOf((*MockQueries)(nil).GetDefaultLanguage), arg0)
}
+// GetInstanceRestrictions mocks base method.
+func (m *MockQueries) GetInstanceRestrictions(arg0 context.Context) (query.Restrictions, error) {
+ m.ctrl.T.Helper()
+ ret := m.ctrl.Call(m, "GetInstanceRestrictions", arg0)
+ ret0, _ := ret[0].(query.Restrictions)
+ ret1, _ := ret[1].(error)
+ return ret0, ret1
+}
+
+// GetInstanceRestrictions indicates an expected call of GetInstanceRestrictions.
+func (mr *MockQueriesMockRecorder) GetInstanceRestrictions(arg0 any) *gomock.Call {
+ mr.mock.ctrl.T.Helper()
+ return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetInstanceRestrictions", reflect.TypeOf((*MockQueries)(nil).GetInstanceRestrictions), arg0)
+}
+
// GetNotifyUserByID mocks base method.
func (m *MockQueries) GetNotifyUserByID(arg0 context.Context, arg1 bool, arg2 string) (*query.NotifyUser, error) {
m.ctrl.T.Helper()
diff --git a/internal/notification/handlers/origin.go b/internal/notification/handlers/origin.go
index 915e1fed1e..0d12ac3035 100644
--- a/internal/notification/handlers/origin.go
+++ b/internal/notification/handlers/origin.go
@@ -8,9 +8,9 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
http_utils "github.com/zitadel/zitadel/internal/api/http"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/query"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type OriginEvent interface {
@@ -44,7 +44,7 @@ func (n *NotificationQueries) Origin(ctx context.Context, e eventstore.Event) (c
return ctx, err
}
if len(domains.Domains) < 1 {
- return ctx, errors.ThrowInternal(nil, "NOTIF-Ef3r1", "Errors.Notification.NoDomain")
+ return ctx, zerrors.ThrowInternal(nil, "NOTIF-Ef3r1", "Errors.Notification.NoDomain")
}
return enrichCtx(
ctx,
diff --git a/internal/notification/handlers/queries.go b/internal/notification/handlers/queries.go
index 8a852eb7b1..afaeb3419a 100644
--- a/internal/notification/handlers/queries.go
+++ b/internal/notification/handlers/queries.go
@@ -2,8 +2,6 @@ package handlers
import (
"context"
- "net/http"
-
"golang.org/x/text/language"
"github.com/zitadel/zitadel/internal/crypto"
@@ -25,6 +23,7 @@ type Queries interface {
SMSProviderConfig(ctx context.Context, queries ...query.SearchQuery) (*query.SMSConfig, error)
SMTPConfigByAggregateID(ctx context.Context, aggregateID string) (*query.SMTPConfig, error)
GetDefaultLanguage(ctx context.Context) language.Tag
+ GetInstanceRestrictions(ctx context.Context) (restrictions query.Restrictions, err error)
}
type NotificationQueries struct {
@@ -37,7 +36,6 @@ type NotificationQueries struct {
UserDataCrypto crypto.EncryptionAlgorithm
SMTPPasswordCrypto crypto.EncryptionAlgorithm
SMSTokenCrypto crypto.EncryptionAlgorithm
- statikDir http.FileSystem
}
func NewNotificationQueries(
@@ -50,7 +48,6 @@ func NewNotificationQueries(
userDataCrypto crypto.EncryptionAlgorithm,
smtpPasswordCrypto crypto.EncryptionAlgorithm,
smsTokenCrypto crypto.EncryptionAlgorithm,
- statikDir http.FileSystem,
) *NotificationQueries {
return &NotificationQueries{
Queries: baseQueries,
@@ -62,6 +59,5 @@ func NewNotificationQueries(
UserDataCrypto: userDataCrypto,
SMTPPasswordCrypto: smtpPasswordCrypto,
SMSTokenCrypto: smsTokenCrypto,
- statikDir: statikDir,
}
}
diff --git a/internal/notification/handlers/quota_notifier.go b/internal/notification/handlers/quota_notifier.go
index b149643eab..d0ed12baa2 100644
--- a/internal/notification/handlers/quota_notifier.go
+++ b/internal/notification/handlers/quota_notifier.go
@@ -5,13 +5,13 @@ import (
"net/http"
"github.com/zitadel/zitadel/internal/command"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/notification/channels/webhook"
_ "github.com/zitadel/zitadel/internal/notification/statik"
"github.com/zitadel/zitadel/internal/notification/types"
"github.com/zitadel/zitadel/internal/repository/quota"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -60,7 +60,7 @@ func (u *quotaNotifier) Reducers() []handler.AggregateReducer {
func (u *quotaNotifier) reduceNotificationDue(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*quota.NotificationDueEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-DLxdE", "reduce.wrong.event.type %s", quota.NotificationDueEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-DLxdE", "reduce.wrong.event.type %s", quota.NotificationDueEventType)
}
return handler.NewStatement(event, func(ex handler.Executer, projectionName string) error {
diff --git a/internal/notification/handlers/quota_notifier_test.go b/internal/notification/handlers/quota_notifier_test.go
index 059d4cf041..72991019da 100644
--- a/internal/notification/handlers/quota_notifier_test.go
+++ b/internal/notification/handlers/quota_notifier_test.go
@@ -21,7 +21,7 @@ import (
)
func TestServer_QuotaNotification_Limit(t *testing.T) {
- _, instanceID, iamOwnerCtx := Tester.UseIsolatedInstance(CTX, SystemCTX)
+ _, instanceID, iamOwnerCtx := Tester.UseIsolatedInstance(t, CTX, SystemCTX)
amount := 10
percent := 50
percentAmount := amount * percent / 100
@@ -67,7 +67,7 @@ func TestServer_QuotaNotification_Limit(t *testing.T) {
}
func TestServer_QuotaNotification_NoLimit(t *testing.T) {
- _, instanceID, iamOwnerCtx := Tester.UseIsolatedInstance(CTX, SystemCTX)
+ _, instanceID, iamOwnerCtx := Tester.UseIsolatedInstance(t, CTX, SystemCTX)
amount := 10
percent := 50
percentAmount := amount * percent / 100
diff --git a/internal/notification/handlers/telemetry_pusher.go b/internal/notification/handlers/telemetry_pusher.go
index b326bbc961..39a1f59454 100644
--- a/internal/notification/handlers/telemetry_pusher.go
+++ b/internal/notification/handlers/telemetry_pusher.go
@@ -11,7 +11,6 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/command"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/notification/channels/webhook"
@@ -20,6 +19,7 @@ import (
"github.com/zitadel/zitadel/internal/query"
"github.com/zitadel/zitadel/internal/repository/milestone"
"github.com/zitadel/zitadel/internal/repository/pseudo"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -80,7 +80,7 @@ func (t *telemetryPusher) pushMilestones(event eventstore.Event) (*handler.State
ctx := call.WithTimestamp(context.Background())
scheduledEvent, ok := event.(*pseudo.ScheduledEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-lDTs5", "reduce.wrong.event.type %s", event.Type())
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-lDTs5", "reduce.wrong.event.type %s", event.Type())
}
return handler.NewStatement(event, func(ex handler.Executer, projectionName string) error {
diff --git a/internal/notification/handlers/telemetry_pusher_integration_test.go b/internal/notification/handlers/telemetry_pusher_integration_test.go
index f0d46b3613..9520253ade 100644
--- a/internal/notification/handlers/telemetry_pusher_integration_test.go
+++ b/internal/notification/handlers/telemetry_pusher_integration_test.go
@@ -13,7 +13,7 @@ import (
)
func TestServer_TelemetryPushMilestones(t *testing.T) {
- primaryDomain, instanceID, iamOwnerCtx := Tester.UseIsolatedInstance(CTX, SystemCTX)
+ primaryDomain, instanceID, iamOwnerCtx := Tester.UseIsolatedInstance(t, CTX, SystemCTX)
t.Log("testing against instance with primary domain", primaryDomain)
awaitMilestone(t, Tester.MilestoneChan, primaryDomain, "InstanceCreated")
project, err := Tester.Client.Mgmt.AddProject(iamOwnerCtx, &management.AddProjectRequest{Name: "integration"})
diff --git a/internal/notification/handlers/translator.go b/internal/notification/handlers/translator.go
index 627bb42a27..d805985795 100644
--- a/internal/notification/handlers/translator.go
+++ b/internal/notification/handlers/translator.go
@@ -10,7 +10,11 @@ import (
)
func (n *NotificationQueries) GetTranslatorWithOrgTexts(ctx context.Context, orgID, textType string) (*i18n.Translator, error) {
- translator, err := i18n.NewTranslator(n.statikDir, n.GetDefaultLanguage(ctx), "")
+ restrictions, err := n.Queries.GetInstanceRestrictions(ctx)
+ if err != nil {
+ return nil, err
+ }
+ translator, err := i18n.NewNotificationTranslator(n.GetDefaultLanguage(ctx), restrictions.AllowedLanguages)
if err != nil {
return nil, err
}
diff --git a/internal/notification/handlers/user_notifier.go b/internal/notification/handlers/user_notifier.go
index 6f15b994f9..9208fbc4b5 100644
--- a/internal/notification/handlers/user_notifier.go
+++ b/internal/notification/handlers/user_notifier.go
@@ -9,13 +9,13 @@ import (
"github.com/zitadel/zitadel/internal/api/ui/login"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/notification/types"
"github.com/zitadel/zitadel/internal/query"
"github.com/zitadel/zitadel/internal/repository/session"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -127,7 +127,7 @@ func (u *userNotifier) Reducers() []handler.AggregateReducer {
func (u *userNotifier) reduceInitCodeAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.HumanInitialCodeAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-EFe2f", "reduce.wrong.event.type %s", user.HumanInitialCodeAddedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-EFe2f", "reduce.wrong.event.type %s", user.HumanInitialCodeAddedType)
}
return handler.NewStatement(event, func(ex handler.Executer, projectionName string) error {
@@ -180,7 +180,7 @@ func (u *userNotifier) reduceInitCodeAdded(event eventstore.Event) (*handler.Sta
func (u *userNotifier) reduceEmailCodeAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.HumanEmailCodeAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-SWf3g", "reduce.wrong.event.type %s", user.HumanEmailCodeAddedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-SWf3g", "reduce.wrong.event.type %s", user.HumanEmailCodeAddedType)
}
if e.CodeReturned {
@@ -237,7 +237,7 @@ func (u *userNotifier) reduceEmailCodeAdded(event eventstore.Event) (*handler.St
func (u *userNotifier) reducePasswordCodeAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.HumanPasswordCodeAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Eeg3s", "reduce.wrong.event.type %s", user.HumanPasswordCodeAddedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Eeg3s", "reduce.wrong.event.type %s", user.HumanPasswordCodeAddedType)
}
if e.CodeReturned {
return handler.NewNoOpStatement(e), nil
@@ -296,7 +296,7 @@ func (u *userNotifier) reducePasswordCodeAdded(event eventstore.Event) (*handler
func (u *userNotifier) reduceOTPSMSCodeAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.HumanOTPSMSCodeAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-ASF3g", "reduce.wrong.event.type %s", user.HumanOTPSMSCodeAddedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-ASF3g", "reduce.wrong.event.type %s", user.HumanOTPSMSCodeAddedType)
}
return u.reduceOTPSMS(
e,
@@ -313,7 +313,7 @@ func (u *userNotifier) reduceOTPSMSCodeAdded(event eventstore.Event) (*handler.S
func (u *userNotifier) reduceSessionOTPSMSChallenged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*session.OTPSMSChallengedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Sk32L", "reduce.wrong.event.type %s", session.OTPSMSChallengedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Sk32L", "reduce.wrong.event.type %s", session.OTPSMSChallengedType)
}
if e.CodeReturned {
return handler.NewNoOpStatement(e), nil
@@ -388,7 +388,7 @@ func (u *userNotifier) reduceOTPSMS(
func (u *userNotifier) reduceOTPEmailCodeAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.HumanOTPEmailCodeAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-JL3hw", "reduce.wrong.event.type %s", user.HumanOTPEmailCodeAddedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-JL3hw", "reduce.wrong.event.type %s", user.HumanOTPEmailCodeAddedType)
}
var authRequestID string
if e.AuthRequestInfo != nil {
@@ -413,7 +413,7 @@ func (u *userNotifier) reduceOTPEmailCodeAdded(event eventstore.Event) (*handler
func (u *userNotifier) reduceSessionOTPEmailChallenged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*session.OTPEmailChallengedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-zbsgt", "reduce.wrong.event.type %s", session.OTPEmailChallengedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-zbsgt", "reduce.wrong.event.type %s", session.OTPEmailChallengedType)
}
if e.ReturnCode {
return handler.NewNoOpStatement(e), nil
@@ -510,7 +510,7 @@ func (u *userNotifier) reduceOTPEmail(
func (u *userNotifier) reduceDomainClaimed(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.DomainClaimedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Drh5w", "reduce.wrong.event.type %s", user.UserDomainClaimedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Drh5w", "reduce.wrong.event.type %s", user.UserDomainClaimedType)
}
return handler.NewStatement(event, func(ex handler.Executer, projectionName string) error {
ctx := HandlerContext(event.Aggregate())
@@ -557,7 +557,7 @@ func (u *userNotifier) reduceDomainClaimed(event eventstore.Event) (*handler.Sta
func (u *userNotifier) reducePasswordlessCodeRequested(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.HumanPasswordlessInitCodeRequestedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-EDtjd", "reduce.wrong.event.type %s", user.HumanPasswordlessInitCodeAddedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-EDtjd", "reduce.wrong.event.type %s", user.HumanPasswordlessInitCodeAddedType)
}
if e.CodeReturned {
return handler.NewNoOpStatement(e), nil
@@ -611,7 +611,7 @@ func (u *userNotifier) reducePasswordlessCodeRequested(event eventstore.Event) (
func (u *userNotifier) reducePasswordChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.HumanPasswordChangedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Yko2z8", "reduce.wrong.event.type %s", user.HumanPasswordChangedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Yko2z8", "reduce.wrong.event.type %s", user.HumanPasswordChangedType)
}
return handler.NewStatement(event, func(ex handler.Executer, projectionName string) error {
@@ -625,7 +625,7 @@ func (u *userNotifier) reducePasswordChanged(event eventstore.Event) (*handler.S
}
notificationPolicy, err := u.queries.NotificationPolicyByOrg(ctx, true, e.Aggregate().ResourceOwner, false)
- if errors.IsNotFound(err) {
+ if zerrors.IsNotFound(err) {
return nil
}
if err != nil {
@@ -670,7 +670,7 @@ func (u *userNotifier) reducePasswordChanged(event eventstore.Event) (*handler.S
func (u *userNotifier) reducePhoneCodeAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.HumanPhoneCodeAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-He83g", "reduce.wrong.event.type %s", user.HumanPhoneCodeAddedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-He83g", "reduce.wrong.event.type %s", user.HumanPhoneCodeAddedType)
}
if e.CodeReturned {
return handler.NewNoOpStatement(e), nil
diff --git a/internal/notification/handlers/user_notifier_test.go b/internal/notification/handlers/user_notifier_test.go
index 1ca10a3d15..86b843fc52 100644
--- a/internal/notification/handlers/user_notifier_test.go
+++ b/internal/notification/handlers/user_notifier_test.go
@@ -4,7 +4,6 @@ import (
"context"
"database/sql"
"fmt"
- "net/http"
"testing"
"time"
@@ -12,7 +11,6 @@ import (
"github.com/zitadel/zitadel/internal/notification/messages"
- statik_fs "github.com/rakyll/statik/fs"
"github.com/stretchr/testify/assert"
"go.uber.org/mock/gomock"
"golang.org/x/text/language"
@@ -202,15 +200,13 @@ func Test_userNotifier_reduceInitCodeAdded(t *testing.T) {
},
}}
// TODO: Why don't we have an url template on user.HumanInitialCodeAddedEvent?
- fs, err := statik_fs.NewWithNamespace("notification")
- assert.NoError(t, err)
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
ctrl := gomock.NewController(t)
queries := mock.NewMockQueries(ctrl)
commands := mock.NewMockCommands(ctrl)
f, a, w := tt.test(ctrl, queries, commands)
- stmt, err := newUserNotifier(t, ctrl, queries, fs, f, a, w).reduceInitCodeAdded(a.event)
+ stmt, err := newUserNotifier(t, ctrl, queries, f, a, w).reduceInitCodeAdded(a.event)
if w.err != nil {
w.err(t, err)
} else {
@@ -423,15 +419,13 @@ func Test_userNotifier_reduceEmailCodeAdded(t *testing.T) {
}, w
},
}}
- fs, err := statik_fs.NewWithNamespace("notification")
- assert.NoError(t, err)
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
ctrl := gomock.NewController(t)
queries := mock.NewMockQueries(ctrl)
commands := mock.NewMockCommands(ctrl)
f, a, w := tt.test(ctrl, queries, commands)
- stmt, err := newUserNotifier(t, ctrl, queries, fs, f, a, w).reduceEmailCodeAdded(a.event)
+ stmt, err := newUserNotifier(t, ctrl, queries, f, a, w).reduceEmailCodeAdded(a.event)
if w.err != nil {
w.err(t, err)
} else {
@@ -644,15 +638,13 @@ func Test_userNotifier_reducePasswordCodeAdded(t *testing.T) {
}, w
},
}}
- fs, err := statik_fs.NewWithNamespace("notification")
- assert.NoError(t, err)
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
ctrl := gomock.NewController(t)
queries := mock.NewMockQueries(ctrl)
commands := mock.NewMockCommands(ctrl)
f, a, w := tt.test(ctrl, queries, commands)
- stmt, err := newUserNotifier(t, ctrl, queries, fs, f, a, w).reducePasswordCodeAdded(a.event)
+ stmt, err := newUserNotifier(t, ctrl, queries, f, a, w).reducePasswordCodeAdded(a.event)
if w.err != nil {
w.err(t, err)
} else {
@@ -737,15 +729,13 @@ func Test_userNotifier_reduceDomainClaimed(t *testing.T) {
}, w
},
}}
- fs, err := statik_fs.NewWithNamespace("notification")
- assert.NoError(t, err)
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
ctrl := gomock.NewController(t)
queries := mock.NewMockQueries(ctrl)
commands := mock.NewMockCommands(ctrl)
f, a, w := tt.test(ctrl, queries, commands)
- stmt, err := newUserNotifier(t, ctrl, queries, fs, f, a, w).reduceDomainClaimed(a.event)
+ stmt, err := newUserNotifier(t, ctrl, queries, f, a, w).reduceDomainClaimed(a.event)
if w.err != nil {
w.err(t, err)
} else {
@@ -963,15 +953,13 @@ func Test_userNotifier_reducePasswordlessCodeRequested(t *testing.T) {
}, w
},
}}
- fs, err := statik_fs.NewWithNamespace("notification")
- assert.NoError(t, err)
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
ctrl := gomock.NewController(t)
queries := mock.NewMockQueries(ctrl)
commands := mock.NewMockCommands(ctrl)
f, a, w := tt.test(ctrl, queries, commands)
- stmt, err := newUserNotifier(t, ctrl, queries, fs, f, a, w).reducePasswordlessCodeRequested(a.event)
+ stmt, err := newUserNotifier(t, ctrl, queries, f, a, w).reducePasswordlessCodeRequested(a.event)
if w.err != nil {
w.err(t, err)
} else {
@@ -1062,15 +1050,13 @@ func Test_userNotifier_reducePasswordChanged(t *testing.T) {
}, w
},
}}
- fs, err := statik_fs.NewWithNamespace("notification")
- assert.NoError(t, err)
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
ctrl := gomock.NewController(t)
queries := mock.NewMockQueries(ctrl)
commands := mock.NewMockCommands(ctrl)
f, a, w := tt.test(ctrl, queries, commands)
- stmt, err := newUserNotifier(t, ctrl, queries, fs, f, a, w).reducePasswordChanged(a.event)
+ stmt, err := newUserNotifier(t, ctrl, queries, f, a, w).reducePasswordChanged(a.event)
if w.err != nil {
w.err(t, err)
} else {
@@ -1287,15 +1273,13 @@ func Test_userNotifier_reduceOTPEmailChallenged(t *testing.T) {
}, w
},
}}
- fs, err := statik_fs.NewWithNamespace("notification")
- assert.NoError(t, err)
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
ctrl := gomock.NewController(t)
queries := mock.NewMockQueries(ctrl)
commands := mock.NewMockCommands(ctrl)
f, a, w := tt.test(ctrl, queries, commands)
- _, err = newUserNotifier(t, ctrl, queries, fs, f, a, w).reduceSessionOTPEmailChallenged(a.event)
+ _, err := newUserNotifier(t, ctrl, queries, f, a, w).reduceSessionOTPEmailChallenged(a.event)
if w.err != nil {
w.err(t, err)
} else {
@@ -1320,7 +1304,7 @@ type want struct {
err assert.ErrorAssertionFunc
}
-func newUserNotifier(t *testing.T, ctrl *gomock.Controller, queries *mock.MockQueries, fs http.FileSystem, f fields, a args, w want) *userNotifier {
+func newUserNotifier(t *testing.T, ctrl *gomock.Controller, queries *mock.MockQueries, f fields, a args, w want) *userNotifier {
queries.EXPECT().NotificationProviderByIDAndType(gomock.Any(), gomock.Any(), gomock.Any()).AnyTimes().Return(&query.DebugNotificationProvider{}, nil)
smtpAlg, _ := cryptoValue(t, ctrl, "smtppw")
channel := channel_mock.NewMockNotificationChannel(ctrl)
@@ -1340,7 +1324,6 @@ func newUserNotifier(t *testing.T, ctrl *gomock.Controller, queries *mock.MockQu
f.userDataCrypto,
smtpAlg,
f.SMSTokenCrypto,
- fs,
),
otpEmailTmpl: defaultOTPEmailTemplate,
channels: &channels{Chain: *senders.ChainChannels(channel)},
@@ -1366,6 +1349,9 @@ func (c *channels) Webhook(context.Context, webhook.Config) (*senders.Chain, err
}
func expectTemplateQueries(queries *mock.MockQueries, template string) {
+ queries.EXPECT().GetInstanceRestrictions(gomock.Any()).Return(query.Restrictions{
+ AllowedLanguages: []language.Tag{language.English},
+ }, nil)
queries.EXPECT().ActiveLabelPolicyByOrg(gomock.Any(), gomock.Any(), gomock.Any()).Return(&query.LabelPolicy{
ID: policyID,
Light: query.Theme{
diff --git a/internal/notification/projections.go b/internal/notification/projections.go
index b2630d2330..341e351461 100644
--- a/internal/notification/projections.go
+++ b/internal/notification/projections.go
@@ -3,9 +3,6 @@ package notification
import (
"context"
- statik_fs "github.com/rakyll/statik/fs"
- "github.com/zitadel/logging"
-
"github.com/zitadel/zitadel/internal/command"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/eventstore"
@@ -29,9 +26,7 @@ func Start(
fileSystemPath string,
userEncryption, smtpEncryption, smsEncryption crypto.EncryptionAlgorithm,
) {
- statikFS, err := statik_fs.NewWithNamespace("notification")
- logging.OnError(err).Panic("unable to start listener")
- q := handlers.NewNotificationQueries(queries, es, externalDomain, externalPort, externalSecure, fileSystemPath, userEncryption, smtpEncryption, smsEncryption, statikFS)
+ q := handlers.NewNotificationQueries(queries, es, externalDomain, externalPort, externalSecure, fileSystemPath, userEncryption, smtpEncryption, smsEncryption)
c := newChannels(q)
handlers.NewUserNotifier(ctx, projection.ApplyCustomConfig(userHandlerCustomConfig), commands, q, c, otpEmailTmpl).Start(ctx)
handlers.NewQuotaNotifier(ctx, projection.ApplyCustomConfig(quotaHandlerCustomConfig), commands, q, c).Start(ctx)
diff --git a/internal/notification/types/email_verification_code_test.go b/internal/notification/types/email_verification_code_test.go
index ab1b4e1810..38aeb987ac 100644
--- a/internal/notification/types/email_verification_code_test.go
+++ b/internal/notification/types/email_verification_code_test.go
@@ -9,8 +9,8 @@ import (
http_utils "github.com/zitadel/zitadel/internal/api/http"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestNotify_SendEmailVerificationCode(t *testing.T) {
@@ -56,7 +56,7 @@ func TestNotify_SendEmailVerificationCode(t *testing.T) {
urlTmpl: "{{",
},
want: ¬ifyResult{},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "DOMAIN-oGh5e", "Errors.User.InvalidURLTemplate"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "DOMAIN-oGh5e", "Errors.User.InvalidURLTemplate"),
},
{
name: "template success",
diff --git a/internal/notification/types/passwordless_registration_link_test.go b/internal/notification/types/passwordless_registration_link_test.go
index 489a505675..95fb75603f 100644
--- a/internal/notification/types/passwordless_registration_link_test.go
+++ b/internal/notification/types/passwordless_registration_link_test.go
@@ -9,8 +9,8 @@ import (
http_utils "github.com/zitadel/zitadel/internal/api/http"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestNotify_SendPasswordlessRegistrationLink(t *testing.T) {
@@ -58,7 +58,7 @@ func TestNotify_SendPasswordlessRegistrationLink(t *testing.T) {
urlTmpl: "{{",
},
want: ¬ifyResult{},
- wantErr: caos_errs.ThrowInvalidArgument(nil, "DOMAIN-oGh5e", "Errors.User.InvalidURLTemplate"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "DOMAIN-oGh5e", "Errors.User.InvalidURLTemplate"),
},
{
name: "template success",
diff --git a/internal/notification/types/user_email.go b/internal/notification/types/user_email.go
index 152b630769..d3c3bfdd4a 100644
--- a/internal/notification/types/user_email.go
+++ b/internal/notification/types/user_email.go
@@ -4,10 +4,10 @@ import (
"context"
"html"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/notification/messages"
"github.com/zitadel/zitadel/internal/query"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func generateEmail(
@@ -34,7 +34,7 @@ func generateEmail(
return err
}
if emailChannels == nil || emailChannels.Len() == 0 {
- return errors.ThrowPreconditionFailed(nil, "MAIL-83nof", "Errors.Notification.Channels.NotPresent")
+ return zerrors.ThrowPreconditionFailed(nil, "MAIL-83nof", "Errors.Notification.Channels.NotPresent")
}
return emailChannels.HandleMessage(message)
}
diff --git a/internal/notification/types/user_phone.go b/internal/notification/types/user_phone.go
index 6eb3314cda..c9adfeac83 100644
--- a/internal/notification/types/user_phone.go
+++ b/internal/notification/types/user_phone.go
@@ -5,10 +5,10 @@ import (
"github.com/zitadel/logging"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/notification/messages"
"github.com/zitadel/zitadel/internal/query"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func generateSms(
@@ -23,7 +23,7 @@ func generateSms(
smsChannels, twilioConfig, err := channels.SMS(ctx)
logging.OnError(err).Error("could not create sms channel")
if smsChannels == nil || smsChannels.Len() == 0 {
- return errors.ThrowPreconditionFailed(nil, "PHONE-w8nfow", "Errors.Notification.Channels.NotPresent")
+ return zerrors.ThrowPreconditionFailed(nil, "PHONE-w8nfow", "Errors.Notification.Channels.NotPresent")
}
if err == nil {
number = twilioConfig.SenderNumber
diff --git a/internal/org/model/domain.go b/internal/org/model/domain.go
index c1d951b841..88c3a8b028 100644
--- a/internal/org/model/domain.go
+++ b/internal/org/model/domain.go
@@ -1,7 +1,6 @@
package model
import (
- http_util "github.com/zitadel/zitadel/internal/api/http"
"github.com/zitadel/zitadel/internal/crypto"
es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
)
@@ -22,35 +21,3 @@ const (
OrgDomainValidationTypeHTTP
OrgDomainValidationTypeDNS
)
-
-func (t OrgDomainValidationType) CheckType() (http_util.CheckType, bool) {
- switch t {
- case OrgDomainValidationTypeHTTP:
- return http_util.CheckTypeHTTP, true
- case OrgDomainValidationTypeDNS:
- return http_util.CheckTypeDNS, true
- default:
- return -1, false
- }
-}
-
-func (t OrgDomainValidationType) IsDNS() bool {
- return t == OrgDomainValidationTypeDNS
-}
-
-func NewOrgDomain(orgID, domain string) *OrgDomain {
- return &OrgDomain{ObjectRoot: es_models.ObjectRoot{AggregateID: orgID}, Domain: domain}
-}
-
-func (domain *OrgDomain) IsValid() bool {
- return domain.AggregateID != "" && domain.Domain != ""
-}
-
-func (domain *OrgDomain) GenerateVerificationCode(codeGenerator crypto.Generator) (string, error) {
- validationCodeCrypto, validationCode, err := crypto.NewCode(codeGenerator)
- if err != nil {
- return "", err
- }
- domain.ValidationCode = validationCodeCrypto
- return validationCode, nil
-}
diff --git a/internal/org/model/org.go b/internal/org/model/org.go
index 104931c66b..f2e8454b5c 100644
--- a/internal/org/model/org.go
+++ b/internal/org/model/org.go
@@ -2,9 +2,9 @@ package model
import (
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
iam_model "github.com/zitadel/zitadel/internal/iam/model"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Org struct {
@@ -43,7 +43,7 @@ func (o *Org) GetPrimaryDomain() (string, error) {
return d.Domain, nil
}
}
- return "", errors.ThrowInternalf(nil, "ORG-Dertg", "no primary domain found for org: %s (instanceID: %s)", o.AggregateID, o.InstanceID)
+ return "", zerrors.ThrowInternalf(nil, "ORG-Dertg", "no primary domain found for org: %s (instanceID: %s)", o.AggregateID, o.InstanceID)
}
func (o *Org) AddIAMDomain(iamDomain string) {
diff --git a/internal/org/repository/eventsourcing/model/domain.go b/internal/org/repository/eventsourcing/model/domain.go
index 902805772b..212d8b499a 100644
--- a/internal/org/repository/eventsourcing/model/domain.go
+++ b/internal/org/repository/eventsourcing/model/domain.go
@@ -2,10 +2,10 @@ package model
import (
"github.com/zitadel/zitadel/internal/crypto"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/org/model"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type OrgDomain struct {
@@ -98,7 +98,7 @@ func (o *Org) appendVerificationDomainEvent(event eventstore.Event) error {
func (m *OrgDomain) SetData(event eventstore.Event) error {
err := event.Unmarshal(m)
if err != nil {
- return errors.ThrowInternal(err, "EVENT-Hz7Mb", "unable to unmarshal data")
+ return zerrors.ThrowInternal(err, "EVENT-Hz7Mb", "unable to unmarshal data")
}
return nil
}
diff --git a/internal/org/repository/eventsourcing/model/member.go b/internal/org/repository/eventsourcing/model/member.go
deleted file mode 100644
index 1dad429a5e..0000000000
--- a/internal/org/repository/eventsourcing/model/member.go
+++ /dev/null
@@ -1,51 +0,0 @@
-package model
-
-import (
- "encoding/json"
- "reflect"
-
- "github.com/zitadel/zitadel/internal/errors"
- es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
-)
-
-type OrgMember struct {
- es_models.ObjectRoot `json:"-"`
-
- UserID string `json:"userId,omitempty"`
- Roles []string `json:"roles,omitempty"`
-}
-
-func (m *OrgMember) AppendEvents(events ...*es_models.Event) error {
- for _, event := range events {
- err := m.AppendEvent(event)
- if err != nil {
- return err
- }
- }
- return nil
-}
-
-func (m *OrgMember) AppendEvent(event *es_models.Event) error {
- m.ObjectRoot.AppendEvent(event)
-
- return m.SetData(event)
-}
-
-func (m *OrgMember) SetData(event *es_models.Event) error {
- err := json.Unmarshal(event.Data, m)
- if err != nil {
- return errors.ThrowInternal(err, "EVENT-Hz7Mb", "unable to unmarshal data")
- }
- return nil
-}
-
-func (m *OrgMember) Changes(updatedMember *OrgMember) map[string]interface{} {
- changes := make(map[string]interface{}, 2)
-
- if !reflect.DeepEqual(m.Roles, updatedMember.Roles) {
- changes["roles"] = updatedMember.Roles
- changes["userId"] = m.UserID
- }
-
- return changes
-}
diff --git a/internal/org/repository/eventsourcing/model/org.go b/internal/org/repository/eventsourcing/model/org.go
index 5de94e4998..98f47c2dbf 100644
--- a/internal/org/repository/eventsourcing/model/org.go
+++ b/internal/org/repository/eventsourcing/model/org.go
@@ -1,12 +1,12 @@
package model
import (
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
iam_es_model "github.com/zitadel/zitadel/internal/iam/repository/eventsourcing/model"
org_model "github.com/zitadel/zitadel/internal/org/model"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Org struct {
@@ -93,17 +93,7 @@ func (o *Org) AppendEvent(event eventstore.Event) (err error) {
func (o *Org) SetData(event eventstore.Event) error {
err := event.Unmarshal(o)
if err != nil {
- return errors.ThrowInternal(err, "EVENT-BpbQZ", "unable to unmarshal event")
+ return zerrors.ThrowInternal(err, "EVENT-BpbQZ", "unable to unmarshal event")
}
return nil
}
-
-func (o *Org) Changes(changed *Org) map[string]interface{} {
- changes := make(map[string]interface{}, 2)
-
- if changed.Name != "" && changed.Name != o.Name {
- changes["name"] = changed.Name
- }
-
- return changes
-}
diff --git a/internal/org/repository/eventsourcing/model/org_test.go b/internal/org/repository/eventsourcing/model/org_test.go
index af6cd96331..95085eb244 100644
--- a/internal/org/repository/eventsourcing/model/org_test.go
+++ b/internal/org/repository/eventsourcing/model/org_test.go
@@ -116,47 +116,3 @@ func TestAppendEvent(t *testing.T) {
})
}
}
-
-func TestChanges(t *testing.T) {
- type args struct {
- existingOrg *Org
- newOrg *Org
- }
- type res struct {
- changesLen int
- }
- tests := []struct {
- name string
- args args
- res res
- }{
- {
- name: "org name changes",
- args: args{
- existingOrg: &Org{Name: "Name"},
- newOrg: &Org{Name: "NameChanged"},
- },
- res: res{
- changesLen: 1,
- },
- },
- {
- name: "no changes",
- args: args{
- existingOrg: &Org{Name: "Name"},
- newOrg: &Org{Name: "Name"},
- },
- res: res{
- changesLen: 0,
- },
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- changes := tt.args.existingOrg.Changes(tt.args.newOrg)
- if len(changes) != tt.res.changesLen {
- t.Errorf("got wrong changes len: expected: %v, actual: %v ", tt.res.changesLen, len(changes))
- }
- })
- }
-}
diff --git a/internal/org/repository/view/query.go b/internal/org/repository/view/query.go
index 21b39a2232..d2e56eaaf6 100644
--- a/internal/org/repository/view/query.go
+++ b/internal/org/repository/view/query.go
@@ -1,14 +1,14 @@
package view
import (
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func OrgByIDQuery(id, instanceID string, latestSequence uint64) (*eventstore.SearchQueryBuilder, error) {
if id == "" {
- return nil, errors.ThrowPreconditionFailed(nil, "EVENT-dke74", "id should be filled")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "EVENT-dke74", "id should be filled")
}
return eventstore.NewSearchQueryBuilder(eventstore.ColumnsEvent).
InstanceID(instanceID).
diff --git a/internal/project/model/api_config.go b/internal/project/model/api_config.go
index 2751d601de..e2ae43f338 100644
--- a/internal/project/model/api_config.go
+++ b/internal/project/model/api_config.go
@@ -1,15 +1,8 @@
package model
import (
- "fmt"
- "strings"
-
- "github.com/zitadel/logging"
-
"github.com/zitadel/zitadel/internal/crypto"
- "github.com/zitadel/zitadel/internal/errors"
es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
- "github.com/zitadel/zitadel/internal/id"
)
type APIConfig struct {
@@ -27,35 +20,3 @@ const (
APIAuthMethodTypeBasic APIAuthMethodType = iota
APIAuthMethodTypePrivateKeyJWT
)
-
-func (c *APIConfig) IsValid() bool {
- return true
-}
-
-//ClientID random_number@projectname (eg. 495894098234@zitadel)
-func (c *APIConfig) GenerateNewClientID(idGenerator id.Generator, project *Project) error {
- rndID, err := idGenerator.Next()
- if err != nil {
- return err
- }
-
- c.ClientID = fmt.Sprintf("%v@%v", rndID, strings.ReplaceAll(strings.ToLower(project.Name), " ", "_"))
- return nil
-}
-
-func (c *APIConfig) GenerateClientSecretIfNeeded(generator crypto.Generator) (string, error) {
- if c.AuthMethodType == APIAuthMethodTypeBasic {
- return c.GenerateNewClientSecret(generator)
- }
- return "", nil
-}
-
-func (c *APIConfig) GenerateNewClientSecret(generator crypto.Generator) (string, error) {
- cryptoValue, stringSecret, err := crypto.NewCode(generator)
- if err != nil {
- logging.Log("MODEL-ADvd2").OnError(err).Error("unable to create client secret")
- return "", errors.ThrowInternal(err, "MODEL-dsvr43", "Errors.Project.CouldNotGenerateClientSecret")
- }
- c.ClientSecret = cryptoValue
- return stringSecret, nil
-}
diff --git a/internal/project/model/application.go b/internal/project/model/application.go
index f38263eb72..0816511eb4 100644
--- a/internal/project/model/application.go
+++ b/internal/project/model/application.go
@@ -32,22 +32,3 @@ const (
AppTypeSAML
AppTypeAPI
)
-
-func (a *Application) IsValid(includeConfig bool) bool {
- if a.Name == "" || a.AggregateID == "" {
- return false
- }
- if !includeConfig {
- return true
- }
- if a.Type == AppTypeOIDC && !a.OIDCConfig.IsValid() {
- return false
- }
- if a.Type == AppTypeAPI && !a.APIConfig.IsValid() {
- return false
- }
- if a.Type == AppTypeSAML && !a.SAMLConfig.IsValid() {
- return false
- }
- return true
-}
diff --git a/internal/project/model/application_test.go b/internal/project/model/application_test.go
deleted file mode 100644
index 0feabf0174..0000000000
--- a/internal/project/model/application_test.go
+++ /dev/null
@@ -1,171 +0,0 @@
-package model
-
-import (
- "testing"
-
- "github.com/zitadel/zitadel/internal/eventstore/v1/models"
-)
-
-func TestApplicationValid(t *testing.T) {
- type args struct {
- app *Application
- }
- tests := []struct {
- name string
- args args
- result bool
- }{
- {
- name: "valid oidc application: responsetype code",
- args: args{
- app: &Application{
- ObjectRoot: models.ObjectRoot{AggregateID: "AggregateID"},
- AppID: "AppID",
- Name: "Name",
- Type: AppTypeOIDC,
- OIDCConfig: &OIDCConfig{
- ResponseTypes: []OIDCResponseType{OIDCResponseTypeCode},
- GrantTypes: []OIDCGrantType{OIDCGrantTypeAuthorizationCode},
- },
- },
- },
- result: true,
- },
- {
- name: "invalid oidc application: responsetype code",
- args: args{
- app: &Application{
- ObjectRoot: models.ObjectRoot{AggregateID: "AggregateID"},
- AppID: "AppID",
- Name: "Name",
- Type: AppTypeOIDC,
- OIDCConfig: &OIDCConfig{
- ResponseTypes: []OIDCResponseType{OIDCResponseTypeCode},
- GrantTypes: []OIDCGrantType{OIDCGrantTypeImplicit},
- },
- },
- },
- result: false,
- },
- {
- name: "valid oidc application: responsetype id_token",
- args: args{
- app: &Application{
- ObjectRoot: models.ObjectRoot{AggregateID: "AggregateID"},
- AppID: "AppID",
- Name: "Name",
- Type: AppTypeOIDC,
- OIDCConfig: &OIDCConfig{
- ResponseTypes: []OIDCResponseType{OIDCResponseTypeIDToken},
- GrantTypes: []OIDCGrantType{OIDCGrantTypeImplicit},
- },
- },
- },
- result: true,
- },
- {
- name: "invalid oidc application: responsetype id_token",
- args: args{
- app: &Application{
- ObjectRoot: models.ObjectRoot{AggregateID: "AggregateID"},
- AppID: "AppID",
- Name: "Name",
- Type: AppTypeOIDC,
- OIDCConfig: &OIDCConfig{
- ResponseTypes: []OIDCResponseType{OIDCResponseTypeIDToken},
- GrantTypes: []OIDCGrantType{OIDCGrantTypeAuthorizationCode},
- },
- },
- },
- result: false,
- },
- {
- name: "valid oidc application: responsetype token_id_token",
- args: args{
- app: &Application{
- ObjectRoot: models.ObjectRoot{AggregateID: "AggregateID"},
- AppID: "AppID",
- Name: "Name",
- Type: AppTypeOIDC,
- OIDCConfig: &OIDCConfig{
- ResponseTypes: []OIDCResponseType{OIDCResponseTypeIDTokenToken},
- GrantTypes: []OIDCGrantType{OIDCGrantTypeImplicit},
- },
- },
- },
- result: true,
- },
- {
- name: "invalid oidc application: responsetype token_id_token",
- args: args{
- app: &Application{
- ObjectRoot: models.ObjectRoot{AggregateID: "AggregateID"},
- AppID: "AppID",
- Name: "Name",
- Type: AppTypeOIDC,
- OIDCConfig: &OIDCConfig{
- ResponseTypes: []OIDCResponseType{OIDCResponseTypeIDTokenToken},
- GrantTypes: []OIDCGrantType{OIDCGrantTypeAuthorizationCode},
- },
- },
- },
- result: false,
- },
- {
- name: "valid oidc application: responsetype code & id_token",
- args: args{
- app: &Application{
- ObjectRoot: models.ObjectRoot{AggregateID: "AggregateID"},
- AppID: "AppID",
- Name: "Name",
- Type: AppTypeOIDC,
- OIDCConfig: &OIDCConfig{
- ResponseTypes: []OIDCResponseType{OIDCResponseTypeCode, OIDCResponseTypeIDToken},
- GrantTypes: []OIDCGrantType{OIDCGrantTypeAuthorizationCode, OIDCGrantTypeImplicit},
- },
- },
- },
- result: true,
- },
- {
- name: "valid oidc application: responsetype code & token_id_token",
- args: args{
- app: &Application{
- ObjectRoot: models.ObjectRoot{AggregateID: "AggregateID"},
- AppID: "AppID",
- Name: "Name",
- Type: AppTypeOIDC,
- OIDCConfig: &OIDCConfig{
- ResponseTypes: []OIDCResponseType{OIDCResponseTypeCode, OIDCResponseTypeIDTokenToken},
- GrantTypes: []OIDCGrantType{OIDCGrantTypeAuthorizationCode, OIDCGrantTypeImplicit},
- },
- },
- },
- result: true,
- },
- {
- name: "valid oidc application: responsetype code & id_token & token_id_token",
- args: args{
- app: &Application{
- ObjectRoot: models.ObjectRoot{AggregateID: "AggregateID"},
- AppID: "AppID",
- Name: "Name",
- Type: AppTypeOIDC,
- OIDCConfig: &OIDCConfig{
- ResponseTypes: []OIDCResponseType{OIDCResponseTypeCode, OIDCResponseTypeIDToken, OIDCResponseTypeIDTokenToken},
- GrantTypes: []OIDCGrantType{OIDCGrantTypeAuthorizationCode, OIDCGrantTypeImplicit},
- },
- },
- },
- result: true,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- result := tt.args.app.IsValid(true)
- if result != tt.result {
- t.Errorf("got wrong result: expected: %v, actual: %v ", tt.result, result)
- }
- })
- }
-}
diff --git a/internal/project/model/oidc_config.go b/internal/project/model/oidc_config.go
index c3b0739f58..50be6c318a 100644
--- a/internal/project/model/oidc_config.go
+++ b/internal/project/model/oidc_config.go
@@ -1,17 +1,11 @@
package model
import (
- "fmt"
- "strings"
"time"
- "github.com/zitadel/logging"
-
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
- "github.com/zitadel/zitadel/internal/id"
)
type OIDCConfig struct {
@@ -97,49 +91,6 @@ type Token struct {
Scopes []string
}
-func (c *OIDCConfig) IsValid() bool {
- grantTypes := c.getRequiredGrantTypes()
- for _, grantType := range grantTypes {
- ok := containsOIDCGrantType(c.GrantTypes, grantType)
- if !ok {
- return false
- }
- }
- return true
-}
-
-//ClientID random_number@projectname (eg. 495894098234@zitadel)
-func (c *OIDCConfig) GenerateNewClientID(idGenerator id.Generator, project *Project) error {
- rndID, err := idGenerator.Next()
- if err != nil {
- return err
- }
-
- c.ClientID = fmt.Sprintf("%v@%v", rndID, strings.ReplaceAll(strings.ToLower(project.Name), " ", "_"))
- return nil
-}
-
-func (c *OIDCConfig) GenerateClientSecretIfNeeded(generator crypto.Generator) (string, error) {
- if c.AuthMethodType == OIDCAuthMethodTypeBasic || c.AuthMethodType == OIDCAuthMethodTypePost {
- return c.GenerateNewClientSecret(generator)
- }
- return "", nil
-}
-
-func (c *OIDCConfig) GenerateNewClientSecret(generator crypto.Generator) (string, error) {
- cryptoValue, stringSecret, err := crypto.NewCode(generator)
- if err != nil {
- logging.Log("MODEL-UpnTI").OnError(err).Error("unable to create client secret")
- return "", errors.ThrowInternal(err, "MODEL-gH2Wl", "Errors.Project.CouldNotGenerateClientSecret")
- }
- c.ClientSecret = cryptoValue
- return stringSecret, nil
-}
-
-func (c *OIDCConfig) FillCompliance() {
- c.Compliance = GetOIDCCompliance(c.OIDCVersion, c.ApplicationType, c.GrantTypes, c.ResponseTypes, c.AuthMethodType, c.RedirectUris)
-}
-
func GetOIDCCompliance(version OIDCVersion, appType OIDCApplicationType, grantTypes []OIDCGrantType, responseTypes []OIDCResponseType, authMethod OIDCAuthMethodType, redirectUris []string) *Compliance {
switch version {
case OIDCVersionV1:
@@ -155,29 +106,3 @@ func GetOIDCCompliance(version OIDCVersion, appType OIDCApplicationType, grantTy
}
return nil
}
-
-func (c *OIDCConfig) getRequiredGrantTypes() []OIDCGrantType {
- grantTypes := make([]OIDCGrantType, 0)
- implicit := false
- for _, r := range c.ResponseTypes {
- switch r {
- case OIDCResponseTypeCode:
- grantTypes = append(grantTypes, OIDCGrantTypeAuthorizationCode)
- case OIDCResponseTypeIDToken, OIDCResponseTypeIDTokenToken:
- if !implicit {
- implicit = true
- grantTypes = append(grantTypes, OIDCGrantTypeImplicit)
- }
- }
- }
- return grantTypes
-}
-
-func containsOIDCGrantType(grantTypes []OIDCGrantType, grantType OIDCGrantType) bool {
- for _, gt := range grantTypes {
- if gt == grantType {
- return true
- }
- }
- return false
-}
diff --git a/internal/project/model/org_project_mapping_view.go b/internal/project/model/org_project_mapping_view.go
deleted file mode 100644
index e744285533..0000000000
--- a/internal/project/model/org_project_mapping_view.go
+++ /dev/null
@@ -1,55 +0,0 @@
-package model
-
-import (
- "github.com/zitadel/zitadel/internal/domain"
-
- "time"
-)
-
-type OrgProjectMapping struct {
- OrgID string
- ProjectID string
-}
-
-type OrgProjectMappingViewSearchRequest struct {
- Offset uint64
- Limit uint64
- SortingColumn OrgProjectMappingViewSearchKey
- Asc bool
- Queries []*OrgProjectMappingViewSearchQuery
-}
-
-type OrgProjectMappingViewSearchKey int32
-
-const (
- OrgProjectMappingSearchKeyUnspecified OrgProjectMappingViewSearchKey = iota
- OrgProjectMappingSearchKeyProjectID
- OrgProjectMappingSearchKeyOrgID
- OrgProjectMappingSearchKeyProjectGrantID
- OrgProjectMappingSearchKeyInstanceID
- OrgProjectMappingSearchKeyOwnerRemoved
-)
-
-type OrgProjectMappingViewSearchQuery struct {
- Key OrgProjectMappingViewSearchKey
- Method domain.SearchMethod
- Value interface{}
-}
-
-type OrgProjectMappingViewSearchResponse struct {
- Offset uint64
- Limit uint64
- TotalResult uint64
- Result []*OrgProjectMapping
- Sequence uint64
- Timestamp time.Time
-}
-
-func (r *OrgProjectMappingViewSearchRequest) GetSearchQuery(key OrgProjectMappingViewSearchKey) (int, *OrgProjectMappingViewSearchQuery) {
- for i, q := range r.Queries {
- if q.Key == key {
- return i, q
- }
- }
- return -1, nil
-}
diff --git a/internal/project/model/project.go b/internal/project/model/project.go
index acbef86a5c..ebedf3cff2 100644
--- a/internal/project/model/project.go
+++ b/internal/project/model/project.go
@@ -27,68 +27,3 @@ const (
ProjectStateInactive
ProjectStateRemoved
)
-
-func (p *Project) IsActive() bool {
- return p.State == ProjectStateActive
-}
-
-func (p *Project) IsValid() bool {
- return p.Name != ""
-}
-
-func (p *Project) ContainsRole(role *ProjectRole) bool {
- for _, r := range p.Roles {
- if r.Key == role.Key {
- return true
- }
- }
- return false
-}
-
-func (p *Project) GetApp(appID string) (int, *Application) {
- for i, a := range p.Applications {
- if a.AppID == appID {
- return i, a
- }
- }
- return -1, nil
-}
-
-func (p *Project) GetGrant(grantID string) (int, *ProjectGrant) {
- for i, g := range p.Grants {
- if g.GrantID == grantID {
- return i, g
- }
- }
- return -1, nil
-}
-
-func (p *Project) ContainsGrantForOrg(orgID string) bool {
- for _, g := range p.Grants {
- if g.GrantedOrgID == orgID {
- return true
- }
- }
- return false
-}
-
-func (p *Project) ContainsRoles(roleKeys []string) bool {
- for _, r := range roleKeys {
- if !p.ContainsRole(&ProjectRole{Key: r}) {
- return false
- }
- }
- return true
-}
-
-func (p *Project) ContainsGrantMember(member *ProjectGrantMember) bool {
- for _, g := range p.Grants {
- if g.GrantID != member.GrantID {
- continue
- }
- if _, m := g.GetMember(member.UserID); m != nil {
- return true
- }
- }
- return false
-}
diff --git a/internal/project/model/project_grant.go b/internal/project/model/project_grant.go
index b90ae4059a..5ffdae989a 100644
--- a/internal/project/model/project_grant.go
+++ b/internal/project/model/project_grant.go
@@ -14,54 +14,9 @@ type ProjectGrant struct {
Members []*ProjectGrantMember
}
-type ProjectGrantIDs struct {
- ProjectID string
- GrantID string
-}
-
type ProjectGrantState int32
const (
ProjectGrantStateActive ProjectGrantState = iota
ProjectGrantStateInactive
)
-
-func NewProjectGrant(projectID, grantID string) *ProjectGrant {
- return &ProjectGrant{ObjectRoot: es_models.ObjectRoot{AggregateID: projectID}, GrantID: grantID, State: ProjectGrantStateActive}
-}
-
-func (p *ProjectGrant) IsActive() bool {
- return p.State == ProjectGrantStateActive
-}
-
-func (p *ProjectGrant) IsValid() bool {
- return p.GrantedOrgID != ""
-}
-
-func (p *ProjectGrant) GetMember(userID string) (int, *ProjectGrantMember) {
- for i, m := range p.Members {
- if m.UserID == userID {
- return i, m
- }
- }
- return -1, nil
-}
-
-func (p *ProjectGrant) GetRemovedRoles(roleKeys []string) []string {
- removed := make([]string, 0)
- for _, role := range p.RoleKeys {
- if !containsKey(roleKeys, role) {
- removed = append(removed, role)
- }
- }
- return removed
-}
-
-func containsKey(roles []string, key string) bool {
- for _, role := range roles {
- if role == key {
- return true
- }
- }
- return false
-}
diff --git a/internal/project/model/project_grant_member.go b/internal/project/model/project_grant_member.go
index ec56441c54..c0aee1af64 100644
--- a/internal/project/model/project_grant_member.go
+++ b/internal/project/model/project_grant_member.go
@@ -8,11 +8,3 @@ type ProjectGrantMember struct {
UserID string
Roles []string
}
-
-func NewProjectGrantMember(projectID, grantID, userID string) *ProjectGrantMember {
- return &ProjectGrantMember{ObjectRoot: es_models.ObjectRoot{AggregateID: projectID}, GrantID: grantID, UserID: userID}
-}
-
-func (p *ProjectGrantMember) IsValid() bool {
- return p.AggregateID != "" && p.UserID != "" && len(p.Roles) != 0
-}
diff --git a/internal/project/model/project_grant_member_view.go b/internal/project/model/project_grant_member_view.go
deleted file mode 100644
index 635648fe51..0000000000
--- a/internal/project/model/project_grant_member_view.go
+++ /dev/null
@@ -1,72 +0,0 @@
-package model
-
-import (
- "github.com/zitadel/zitadel/internal/domain"
- caos_errors "github.com/zitadel/zitadel/internal/errors"
-
- "time"
-)
-
-type ProjectGrantMemberView struct {
- UserID string
- GrantID string
- ProjectID string
- UserName string
- Email string
- FirstName string
- LastName string
- DisplayName string
- PreferredLoginName string
- AvatarURL string
- UserResourceOwner string
- Roles []string
- CreationDate time.Time
- ChangeDate time.Time
- Sequence uint64
-}
-
-type ProjectGrantMemberSearchRequest struct {
- Offset uint64
- Limit uint64
- SortingColumn ProjectGrantMemberSearchKey
- Asc bool
- Queries []*ProjectGrantMemberSearchQuery
-}
-
-type ProjectGrantMemberSearchKey int32
-
-const (
- ProjectGrantMemberSearchKeyUnspecified ProjectGrantMemberSearchKey = iota
- ProjectGrantMemberSearchKeyUserName
- ProjectGrantMemberSearchKeyEmail
- ProjectGrantMemberSearchKeyFirstName
- ProjectGrantMemberSearchKeyLastName
- ProjectGrantMemberSearchKeyGrantID
- ProjectGrantMemberSearchKeyUserID
- ProjectGrantMemberSearchKeyProjectID
-)
-
-type ProjectGrantMemberSearchQuery struct {
- Key ProjectGrantMemberSearchKey
- Method domain.SearchMethod
- Value interface{}
-}
-
-type ProjectGrantMemberSearchResponse struct {
- Offset uint64
- Limit uint64
- TotalResult uint64
- Result []*ProjectGrantMemberView
- Sequence uint64
- Timestamp time.Time
-}
-
-func (r *ProjectGrantMemberSearchRequest) EnsureLimit(limit uint64) error {
- if r.Limit > limit {
- return caos_errors.ThrowInvalidArgument(nil, "SEARCH-ZT8df", "Errors.Limit.ExceedsDefault")
- }
- if r.Limit == 0 {
- r.Limit = limit
- }
- return nil
-}
diff --git a/internal/project/model/project_grant_view.go b/internal/project/model/project_grant_view.go
deleted file mode 100644
index fb6dd26f3d..0000000000
--- a/internal/project/model/project_grant_view.go
+++ /dev/null
@@ -1,90 +0,0 @@
-package model
-
-import (
- "github.com/zitadel/zitadel/internal/domain"
- caos_errors "github.com/zitadel/zitadel/internal/errors"
-
- "time"
-)
-
-type ProjectGrantView struct {
- ProjectID string
- Name string
- CreationDate time.Time
- ChangeDate time.Time
- State ProjectState
- ResourceOwner string
- ResourceOwnerName string
- OrgID string
- OrgName string
- OrgDomain string
- Sequence uint64
- GrantID string
- GrantedRoleKeys []string
-}
-
-type ProjectGrantViewSearchRequest struct {
- Offset uint64
- Limit uint64
- SortingColumn ProjectGrantViewSearchKey
- Asc bool
- Queries []*ProjectGrantViewSearchQuery
-}
-
-type ProjectGrantViewSearchKey int32
-
-const (
- GrantedProjectSearchKeyUnspecified ProjectGrantViewSearchKey = iota
- GrantedProjectSearchKeyName
- GrantedProjectSearchKeyProjectID
- GrantedProjectSearchKeyGrantID
- GrantedProjectSearchKeyOrgID
- GrantedProjectSearchKeyResourceOwner
- GrantedProjectSearchKeyRoleKeys
-)
-
-type ProjectGrantViewSearchQuery struct {
- Key ProjectGrantViewSearchKey
- Method domain.SearchMethod
- Value interface{}
-}
-
-type ProjectGrantViewSearchResponse struct {
- Offset uint64
- Limit uint64
- TotalResult uint64
- Result []*ProjectGrantView
- Sequence uint64
- Timestamp time.Time
-}
-
-func (r *ProjectGrantViewSearchRequest) GetSearchQuery(key ProjectGrantViewSearchKey) (int, *ProjectGrantViewSearchQuery) {
- for i, q := range r.Queries {
- if q.Key == key {
- return i, q
- }
- }
- return -1, nil
-}
-
-func (r *ProjectGrantViewSearchRequest) AppendMyOrgQuery(orgID string) {
- r.Queries = append(r.Queries, &ProjectGrantViewSearchQuery{Key: GrantedProjectSearchKeyOrgID, Method: domain.SearchMethodEquals, Value: orgID})
-}
-
-func (r *ProjectGrantViewSearchRequest) AppendNotMyOrgQuery(orgID string) {
- r.Queries = append(r.Queries, &ProjectGrantViewSearchQuery{Key: GrantedProjectSearchKeyOrgID, Method: domain.SearchMethodNotEquals, Value: orgID})
-}
-
-func (r *ProjectGrantViewSearchRequest) AppendMyResourceOwnerQuery(orgID string) {
- r.Queries = append(r.Queries, &ProjectGrantViewSearchQuery{Key: GrantedProjectSearchKeyResourceOwner, Method: domain.SearchMethodEquals, Value: orgID})
-}
-
-func (r *ProjectGrantViewSearchRequest) EnsureLimit(limit uint64) error {
- if r.Limit > limit {
- return caos_errors.ThrowInvalidArgument(nil, "SEARCH-0fj3s", "Errors.Limit.ExceedsDefault")
- }
- if r.Limit == 0 {
- r.Limit = limit
- }
- return nil
-}
diff --git a/internal/project/model/project_member.go b/internal/project/model/project_member.go
index a07d939c50..a5bce2386e 100644
--- a/internal/project/model/project_member.go
+++ b/internal/project/model/project_member.go
@@ -8,11 +8,3 @@ type ProjectMember struct {
UserID string
Roles []string
}
-
-func NewProjectMember(projectID, userID string) *ProjectMember {
- return &ProjectMember{ObjectRoot: es_models.ObjectRoot{AggregateID: projectID}, UserID: userID}
-}
-
-func (p *ProjectMember) IsValid() bool {
- return p.AggregateID != "" && p.UserID != "" && len(p.Roles) != 0
-}
diff --git a/internal/project/model/project_member_view.go b/internal/project/model/project_member_view.go
deleted file mode 100644
index c208df383a..0000000000
--- a/internal/project/model/project_member_view.go
+++ /dev/null
@@ -1,73 +0,0 @@
-package model
-
-import (
- "github.com/zitadel/zitadel/internal/domain"
- caos_errors "github.com/zitadel/zitadel/internal/errors"
-
- "time"
-)
-
-type ProjectMemberView struct {
- UserID string
- ProjectID string
- UserName string
- Email string
- FirstName string
- LastName string
- DisplayName string
- PreferredLoginName string
- AvatarURL string
- UserResourceOwner string
- Roles []string
- CreationDate time.Time
- ChangeDate time.Time
- Sequence uint64
-}
-
-type ProjectMemberSearchRequest struct {
- Offset uint64
- Limit uint64
- SortingColumn ProjectMemberSearchKey
- Asc bool
- Queries []*ProjectMemberSearchQuery
-}
-
-type ProjectMemberSearchKey int32
-
-const (
- ProjectMemberSearchKeyUnspecified ProjectMemberSearchKey = iota
- ProjectMemberSearchKeyUserName
- ProjectMemberSearchKeyEmail
- ProjectMemberSearchKeyFirstName
- ProjectMemberSearchKeyLastName
- ProjectMemberSearchKeyProjectID
- ProjectMemberSearchKeyUserID
-)
-
-type ProjectMemberSearchQuery struct {
- Key ProjectMemberSearchKey
- Method domain.SearchMethod
- Value interface{}
-}
-
-type ProjectMemberSearchResponse struct {
- Offset uint64
- Limit uint64
- TotalResult uint64
- Result []*ProjectMemberView
- Sequence uint64
- Timestamp time.Time
-}
-
-func (r *ProjectMemberSearchRequest) EnsureLimit(limit uint64) error {
- if r.Limit > limit {
- return caos_errors.ThrowInvalidArgument(nil, "SEARCH-389Nd", "Errors.Limit.ExceedsDefault")
- }
- if r.Limit == 0 {
- r.Limit = limit
- }
- return nil
-}
-func (r *ProjectMemberSearchRequest) AppendProjectQuery(projectID string) {
- r.Queries = append(r.Queries, &ProjectMemberSearchQuery{Key: ProjectMemberSearchKeyProjectID, Method: domain.SearchMethodEquals, Value: projectID})
-}
diff --git a/internal/project/model/project_role.go b/internal/project/model/project_role.go
index 43d9f68ffb..9725570523 100644
--- a/internal/project/model/project_role.go
+++ b/internal/project/model/project_role.go
@@ -9,7 +9,3 @@ type ProjectRole struct {
DisplayName string
Group string
}
-
-func (p *ProjectRole) IsValid() bool {
- return p.AggregateID != "" && p.Key != ""
-}
diff --git a/internal/project/model/project_role_view.go b/internal/project/model/project_role_view.go
deleted file mode 100644
index 10efc0bf4f..0000000000
--- a/internal/project/model/project_role_view.go
+++ /dev/null
@@ -1,75 +0,0 @@
-package model
-
-import (
- "github.com/zitadel/zitadel/internal/domain"
- caos_errors "github.com/zitadel/zitadel/internal/errors"
-
- "time"
-)
-
-type ProjectRoleView struct {
- ResourceOwner string
- OrgID string
- ProjectID string
- Key string
- DisplayName string
- Group string
- CreationDate time.Time
- ChangeDate time.Time
- Sequence uint64
-}
-
-type ProjectRoleSearchRequest struct {
- Offset uint64
- Limit uint64
- SortingColumn ProjectRoleSearchKey
- Asc bool
- Queries []*ProjectRoleSearchQuery
-}
-
-type ProjectRoleSearchKey int32
-
-const (
- ProjectRoleSearchKeyUnspecified ProjectRoleSearchKey = iota
- ProjectRoleSearchKeyKey
- ProjectRoleSearchKeyProjectID
- ProjectRoleSearchKeyOrgID
- ProjectRoleSearchKeyResourceOwner
- ProjectRoleSearchKeyDisplayName
-)
-
-type ProjectRoleSearchQuery struct {
- Key ProjectRoleSearchKey
- Method domain.SearchMethod
- Value interface{}
-}
-
-type ProjectRoleSearchResponse struct {
- Offset uint64
- Limit uint64
- TotalResult uint64
- Result []*ProjectRoleView
- Sequence uint64
- Timestamp time.Time
-}
-
-func (r *ProjectRoleSearchRequest) AppendMyOrgQuery(orgID string) {
- r.Queries = append(r.Queries, &ProjectRoleSearchQuery{Key: ProjectRoleSearchKeyOrgID, Method: domain.SearchMethodEquals, Value: orgID})
-}
-func (r *ProjectRoleSearchRequest) AppendProjectQuery(projectID string) {
- r.Queries = append(r.Queries, &ProjectRoleSearchQuery{Key: ProjectRoleSearchKeyProjectID, Method: domain.SearchMethodEquals, Value: projectID})
-}
-
-func (r *ProjectRoleSearchRequest) AppendRoleKeysQuery(keys []string) {
- r.Queries = append(r.Queries, &ProjectRoleSearchQuery{Key: ProjectRoleSearchKeyKey, Method: domain.SearchMethodIsOneOf, Value: keys})
-}
-
-func (r *ProjectRoleSearchRequest) EnsureLimit(limit uint64) error {
- if r.Limit > limit {
- return caos_errors.ThrowInvalidArgument(nil, "SEARCH-92hNf", "Errors.Limit.ExceedsDefault")
- }
- if r.Limit == 0 {
- r.Limit = limit
- }
- return nil
-}
diff --git a/internal/project/model/project_view.go b/internal/project/model/project_view.go
deleted file mode 100644
index 31fa33625c..0000000000
--- a/internal/project/model/project_view.go
+++ /dev/null
@@ -1,77 +0,0 @@
-package model
-
-import (
- "github.com/zitadel/zitadel/internal/domain"
- caos_errors "github.com/zitadel/zitadel/internal/errors"
-
- "time"
-)
-
-type ProjectView struct {
- ProjectID string
- Name string
- CreationDate time.Time
- ChangeDate time.Time
- State ProjectState
- ResourceOwner string
- ProjectRoleAssertion bool
- ProjectRoleCheck bool
- HasProjectCheck bool
- PrivateLabelingSetting domain.PrivateLabelingSetting
- Sequence uint64
-}
-
-type ProjectViewSearchRequest struct {
- Offset uint64
- Limit uint64
- SortingColumn ProjectViewSearchKey
- Asc bool
- Queries []*ProjectViewSearchQuery
-}
-
-type ProjectViewSearchKey int32
-
-const (
- ProjectViewSearchKeyUnspecified ProjectViewSearchKey = iota
- ProjectViewSearchKeyName
- ProjectViewSearchKeyProjectID
- ProjectViewSearchKeyResourceOwner
-)
-
-type ProjectViewSearchQuery struct {
- Key ProjectViewSearchKey
- Method domain.SearchMethod
- Value interface{}
-}
-
-type ProjectViewSearchResponse struct {
- Offset uint64
- Limit uint64
- TotalResult uint64
- Result []*ProjectView
- Sequence uint64
- Timestamp time.Time
-}
-
-func (r *ProjectViewSearchRequest) GetSearchQuery(key ProjectViewSearchKey) (int, *ProjectViewSearchQuery) {
- for i, q := range r.Queries {
- if q.Key == key {
- return i, q
- }
- }
- return -1, nil
-}
-
-func (r *ProjectViewSearchRequest) AppendMyResourceOwnerQuery(orgID string) {
- r.Queries = append(r.Queries, &ProjectViewSearchQuery{Key: ProjectViewSearchKeyResourceOwner, Method: domain.SearchMethodEquals, Value: orgID})
-}
-
-func (r *ProjectViewSearchRequest) EnsureLimit(limit uint64) error {
- if r.Limit > limit {
- return caos_errors.ThrowInvalidArgument(nil, "SEARCH-2M0ds", "Errors.Limit.ExceedsDefault")
- }
- if r.Limit == 0 {
- r.Limit = limit
- }
- return nil
-}
diff --git a/internal/project/model/saml_config.go b/internal/project/model/saml_config.go
index 2d0ca84697..0b5a9e4bf5 100644
--- a/internal/project/model/saml_config.go
+++ b/internal/project/model/saml_config.go
@@ -10,7 +10,3 @@ type SAMLConfig struct {
Metadata []byte
MetadataURL string
}
-
-func (c *SAMLConfig) IsValid() bool {
- return !(c.Metadata == nil && c.MetadataURL == "")
-}
diff --git a/internal/project/repository/eventsourcing/model/oidc_config.go b/internal/project/repository/eventsourcing/model/oidc_config.go
index fb75374aa3..df35e27243 100644
--- a/internal/project/repository/eventsourcing/model/oidc_config.go
+++ b/internal/project/repository/eventsourcing/model/oidc_config.go
@@ -7,9 +7,9 @@ import (
"github.com/zitadel/logging"
"github.com/zitadel/zitadel/internal/crypto"
- "github.com/zitadel/zitadel/internal/errors"
es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/project"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type OIDCConfig struct {
@@ -78,7 +78,7 @@ func (key *ClientKey) AppendEvent(event *es_models.Event) (err error) {
case project.ApplicationKeyAddedEventType:
err = json.Unmarshal(event.Data, key)
if err != nil {
- return errors.ThrowInternal(err, "MODEL-Fetg3", "Errors.Internal")
+ return zerrors.ThrowInternal(err, "MODEL-Fetg3", "Errors.Internal")
}
case project.ApplicationKeyRemovedEventType:
key.ExpirationDate = event.CreationDate
diff --git a/internal/project/repository/view/model/application.go b/internal/project/repository/view/model/application.go
deleted file mode 100644
index 8a7dc6db63..0000000000
--- a/internal/project/repository/view/model/application.go
+++ /dev/null
@@ -1,231 +0,0 @@
-package model
-
-import (
- "encoding/json"
- "time"
-
- "github.com/zitadel/logging"
-
- http_util "github.com/zitadel/zitadel/internal/api/http"
- "github.com/zitadel/zitadel/internal/database"
- "github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
- "github.com/zitadel/zitadel/internal/eventstore/v1/models"
- "github.com/zitadel/zitadel/internal/project/model"
- "github.com/zitadel/zitadel/internal/repository/project"
-)
-
-const (
- ApplicationKeyID = "id"
- ApplicationKeyProjectID = "project_id"
- ApplicationKeyResourceOwner = "resource_owner"
- ApplicationKeyOIDCClientID = "oidc_client_id"
- ApplicationKeyName = "app_name"
-)
-
-type ApplicationView struct {
- ID string `json:"appId" gorm:"column:id;primary_key"`
- ProjectID string `json:"-" gorm:"column:project_id"`
- Name string `json:"name" gorm:"column:app_name"`
- CreationDate time.Time `json:"-" gorm:"column:creation_date"`
- ChangeDate time.Time `json:"-" gorm:"column:change_date"`
- State int32 `json:"-" gorm:"column:app_state"`
- ResourceOwner string `json:"-" gorm:"column:resource_owner"`
- ProjectRoleAssertion bool `json:"projectRoleAssertion" gorm:"column:project_role_assertion"`
- ProjectRoleCheck bool `json:"projectRoleCheck" gorm:"column:project_role_check"`
- HasProjectCheck bool `json:"hasProjectCheck" gorm:"column:has_project_check"`
- PrivateLabelingSetting domain.PrivateLabelingSetting `json:"privateLabelingSetting" gorm:"column:private_labeling_setting"`
-
- IsOIDC bool `json:"-" gorm:"column:is_oidc"`
- OIDCVersion int32 `json:"oidcVersion" gorm:"column:oidc_version"`
- OIDCClientID string `json:"clientId" gorm:"column:oidc_client_id"`
- OIDCRedirectUris database.TextArray[string] `json:"redirectUris" gorm:"column:oidc_redirect_uris"`
- OIDCResponseTypes database.Array[domain.OIDCResponseType] `json:"responseTypes" gorm:"column:oidc_response_types"`
- OIDCGrantTypes database.Array[domain.OIDCGrantType] `json:"grantTypes" gorm:"column:oidc_grant_types"`
- OIDCApplicationType int32 `json:"applicationType" gorm:"column:oidc_application_type"`
- OIDCAuthMethodType int32 `json:"authMethodType" gorm:"column:oidc_auth_method_type"`
- OIDCPostLogoutRedirectUris database.TextArray[string] `json:"postLogoutRedirectUris" gorm:"column:oidc_post_logout_redirect_uris"`
- NoneCompliant bool `json:"-" gorm:"column:none_compliant"`
- ComplianceProblems database.TextArray[string] `json:"-" gorm:"column:compliance_problems"`
- DevMode bool `json:"devMode" gorm:"column:dev_mode"`
- OriginAllowList database.TextArray[string] `json:"-" gorm:"column:origin_allow_list"`
- AdditionalOrigins database.TextArray[string] `json:"additionalOrigins" gorm:"column:additional_origins"`
- AccessTokenType int32 `json:"accessTokenType" gorm:"column:access_token_type"`
- AccessTokenRoleAssertion bool `json:"accessTokenRoleAssertion" gorm:"column:access_token_role_assertion"`
- IDTokenRoleAssertion bool `json:"idTokenRoleAssertion" gorm:"column:id_token_role_assertion"`
- IDTokenUserinfoAssertion bool `json:"idTokenUserinfoAssertion" gorm:"column:id_token_userinfo_assertion"`
- ClockSkew time.Duration `json:"clockSkew" gorm:"column:clock_skew"`
-
- IsSAML bool `json:"-" gorm:"column:is_saml"`
- Metadata []byte `json:"metadata" gorm:"column:metadata"`
- MetadataURL string `json:"metadata_url" gorm:"column:metadata_url"`
-
- Sequence uint64 `json:"-" gorm:"sequence"`
-}
-
-func OIDCResponseTypesToModel(oidctypes []domain.OIDCResponseType) []model.OIDCResponseType {
- result := make([]model.OIDCResponseType, len(oidctypes))
- for i, t := range oidctypes {
- result[i] = model.OIDCResponseType(t)
- }
- return result
-}
-
-func OIDCGrantTypesToModel(granttypes []domain.OIDCGrantType) []model.OIDCGrantType {
- result := make([]model.OIDCGrantType, len(granttypes))
- for i, t := range granttypes {
- result[i] = model.OIDCGrantType(t)
- }
- return result
-}
-
-func (a *ApplicationView) AppendEventIfMyApp(event *models.Event) (err error) {
- view := new(ApplicationView)
- switch event.Type() {
- case project.ApplicationAddedType:
- err = view.SetData(event)
- if err != nil {
- return err
- }
- case project.ApplicationChangedType,
- project.OIDCConfigAddedType,
- project.OIDCConfigChangedType,
- project.APIConfigAddedType,
- project.APIConfigChangedType,
- project.ApplicationDeactivatedType,
- project.ApplicationReactivatedType,
- project.SAMLConfigAddedType,
- project.SAMLConfigChangedType:
- err = view.SetData(event)
- if err != nil {
- return err
- }
- case project.ApplicationRemovedType:
- err = view.SetData(event)
- if err != nil {
- return err
- }
- case project.ProjectChangedType:
- return a.AppendEvent(event)
- case project.ProjectRemovedType:
- return a.AppendEvent(event)
- default:
- return nil
- }
- if view.ID == a.ID {
- return a.AppendEvent(event)
- }
- return nil
-}
-
-func (a *ApplicationView) AppendEvent(event *models.Event) (err error) {
- a.Sequence = event.Seq
- a.ChangeDate = event.CreationDate
- switch event.Type() {
- case project.ApplicationAddedType:
- a.setRootData(event)
- a.CreationDate = event.CreationDate
- a.ResourceOwner = event.ResourceOwner
- err = a.SetData(event)
- case project.OIDCConfigAddedType:
- a.IsOIDC = true
- err = a.SetData(event)
- if err != nil {
- return err
- }
- a.setCompliance()
- return a.setOriginAllowList()
- case project.SAMLConfigAddedType:
- a.IsSAML = true
- return a.SetData(event)
- case project.APIConfigAddedType:
- a.IsOIDC = false
- return a.SetData(event)
- case project.ApplicationChangedType:
- return a.SetData(event)
- case project.OIDCConfigChangedType:
- err = a.SetData(event)
- if err != nil {
- return err
- }
- a.setCompliance()
- return a.setOriginAllowList()
- case project.SAMLConfigChangedType:
- return a.SetData(event)
- case project.APIConfigChangedType:
- return a.SetData(event)
- case project.ProjectChangedType:
- return a.setProjectChanges(event)
- case project.ApplicationDeactivatedType:
- a.State = int32(model.AppStateInactive)
- case project.ApplicationReactivatedType:
- a.State = int32(model.AppStateActive)
- case project.ApplicationRemovedType, project.ProjectRemovedType:
- a.State = int32(model.AppStateRemoved)
- }
- return err
-}
-
-func (a *ApplicationView) setRootData(event *models.Event) {
- a.ProjectID = event.AggregateID
-}
-
-func (a *ApplicationView) SetData(event *models.Event) error {
- if err := json.Unmarshal(event.Data, a); err != nil {
- logging.Log("EVEN-lo9ds").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-8suie", "Could not unmarshal data")
- }
- return nil
-}
-
-func (a *ApplicationView) setOriginAllowList() error {
- allowList := make(database.TextArray[string], 0)
- for _, redirect := range a.OIDCRedirectUris {
- origin, err := http_util.GetOriginFromURLString(redirect)
- if err != nil {
- return err
- }
- if !http_util.IsOriginAllowed(allowList, origin) {
- allowList = append(allowList, origin)
- }
- }
- for _, origin := range a.AdditionalOrigins {
- if !http_util.IsOriginAllowed(allowList, origin) {
- allowList = append(allowList, origin)
- }
- }
- a.OriginAllowList = allowList
- return nil
-}
-
-func (a *ApplicationView) setCompliance() {
- compliance := model.GetOIDCCompliance(model.OIDCVersion(a.OIDCVersion), model.OIDCApplicationType(a.OIDCApplicationType), OIDCGrantTypesToModel(a.OIDCGrantTypes), OIDCResponseTypesToModel(a.OIDCResponseTypes), model.OIDCAuthMethodType(a.OIDCAuthMethodType), a.OIDCRedirectUris)
- a.NoneCompliant = compliance.NoneCompliant
- a.ComplianceProblems = compliance.Problems
-}
-
-func (a *ApplicationView) setProjectChanges(event *models.Event) error {
- changes := struct {
- ProjectRoleAssertion *bool `json:"projectRoleAssertion,omitempty"`
- ProjectRoleCheck *bool `json:"projectRoleCheck,omitempty"`
- HasProjectCheck *bool `json:"hasProjectCheck,omitempty"`
- PrivateLabelingSetting *domain.PrivateLabelingSetting `json:"privateLabelingSetting,omitempty"`
- }{}
- if err := json.Unmarshal(event.Data, &changes); err != nil {
- logging.Log("EVEN-DFbfg").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-Bw221", "Could not unmarshal data")
- }
- if changes.ProjectRoleAssertion != nil {
- a.ProjectRoleAssertion = *changes.ProjectRoleAssertion
- }
- if changes.ProjectRoleCheck != nil {
- a.ProjectRoleCheck = *changes.ProjectRoleCheck
- }
- if changes.HasProjectCheck != nil {
- a.HasProjectCheck = *changes.HasProjectCheck
- }
- if changes.PrivateLabelingSetting != nil {
- a.PrivateLabelingSetting = *changes.PrivateLabelingSetting
- }
- return nil
-}
diff --git a/internal/project/repository/view/model/application_test.go b/internal/project/repository/view/model/application_test.go
deleted file mode 100644
index f37e6386b2..0000000000
--- a/internal/project/repository/view/model/application_test.go
+++ /dev/null
@@ -1,102 +0,0 @@
-package model
-
-import (
- "encoding/json"
- "testing"
-
- es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
- "github.com/zitadel/zitadel/internal/project/model"
- es_model "github.com/zitadel/zitadel/internal/project/repository/eventsourcing/model"
- "github.com/zitadel/zitadel/internal/repository/project"
-)
-
-func mockAppData(app *es_model.Application) []byte {
- data, _ := json.Marshal(app)
- return data
-}
-
-func mockOIDCConfigData(config *es_model.OIDCConfig) []byte {
- data, _ := json.Marshal(config)
- return data
-}
-
-func TestApplicationAppendEvent(t *testing.T) {
- type args struct {
- event *es_models.Event
- app *ApplicationView
- }
- tests := []struct {
- name string
- args args
- result *ApplicationView
- }{
- {
- name: "append added app event",
- args: args{
- event: &es_models.Event{AggregateID: "AggregateID", Seq: 1, Typ: project.ApplicationAddedType, Data: mockAppData(&es_model.Application{Name: "AppName"})},
- app: &ApplicationView{},
- },
- result: &ApplicationView{ProjectID: "AggregateID", Name: "AppName", State: int32(model.AppStateActive)},
- },
- {
- name: "append changed app event",
- args: args{
- event: &es_models.Event{AggregateID: "AggregateID", Seq: 1, Typ: project.ApplicationChangedType, Data: mockAppData(&es_model.Application{Name: "AppNameChanged"})},
- app: &ApplicationView{ProjectID: "AggregateID", Name: "AppName", State: int32(model.AppStateActive)},
- },
- result: &ApplicationView{ProjectID: "AggregateID", Name: "AppNameChanged", State: int32(model.AppStateActive)},
- },
- {
- name: "append deactivate app event",
- args: args{
- event: &es_models.Event{AggregateID: "AggregateID", Seq: 1, Typ: project.ApplicationDeactivatedType},
- app: &ApplicationView{ProjectID: "AggregateID", Name: "AppName", State: int32(model.AppStateActive)},
- },
- result: &ApplicationView{ProjectID: "AggregateID", Name: "AppName", State: int32(model.AppStateInactive)},
- },
- {
- name: "append reactivate app event",
- args: args{
- event: &es_models.Event{AggregateID: "AggregateID", Seq: 1, Typ: project.ApplicationReactivatedType},
- app: &ApplicationView{ProjectID: "AggregateID", Name: "AppName", State: int32(model.AppStateInactive)},
- },
- result: &ApplicationView{ProjectID: "AggregateID", Name: "AppName", State: int32(model.AppStateActive)},
- },
- {
- name: "append added oidc config event",
- args: args{
- event: &es_models.Event{AggregateID: "AggregateID", Seq: 1, Typ: project.OIDCConfigAddedType, Data: mockOIDCConfigData(&es_model.OIDCConfig{ClientID: "clientID"})},
- app: &ApplicationView{ProjectID: "AggregateID", Name: "AppName", State: int32(model.AppStateActive)},
- },
- result: &ApplicationView{ProjectID: "AggregateID", Name: "AppName", IsOIDC: true, OIDCClientID: "clientID", State: int32(model.AppStateActive)},
- },
- {
- name: "append changed oidc config event",
- args: args{
- event: &es_models.Event{AggregateID: "AggregateID", Seq: 1, Typ: project.OIDCConfigAddedType, Data: mockOIDCConfigData(&es_model.OIDCConfig{ClientID: "clientIDChanged"})},
- app: &ApplicationView{ProjectID: "AggregateID", Name: "AppName", OIDCClientID: "clientID", State: int32(model.AppStateActive)},
- },
- result: &ApplicationView{ProjectID: "AggregateID", Name: "AppName", IsOIDC: true, OIDCClientID: "clientIDChanged", State: int32(model.AppStateActive)},
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- tt.args.app.AppendEvent(tt.args.event)
- if tt.args.app.ProjectID != tt.result.ProjectID {
- t.Errorf("got wrong result projectID: expected: %v, actual: %v ", tt.result.ProjectID, tt.args.app.ProjectID)
- }
- if tt.args.app.Name != tt.result.Name {
- t.Errorf("got wrong result name: expected: %v, actual: %v ", tt.result.Name, tt.args.app.Name)
- }
- if tt.args.app.State != tt.result.State {
- t.Errorf("got wrong result state: expected: %v, actual: %v ", tt.result.State, tt.args.app.State)
- }
- if tt.args.app.IsOIDC != tt.result.IsOIDC {
- t.Errorf("got wrong result IsOIDC: expected: %v, actual: %v ", tt.result.IsOIDC, tt.args.app.IsOIDC)
- }
- if tt.args.app.OIDCClientID != tt.result.OIDCClientID {
- t.Errorf("got wrong result OIDCClientID: expected: %v, actual: %v ", tt.result.OIDCClientID, tt.args.app.OIDCClientID)
- }
- })
- }
-}
diff --git a/internal/project/repository/view/model/org_project_mapping.go b/internal/project/repository/view/model/org_project_mapping.go
deleted file mode 100644
index 929725cce5..0000000000
--- a/internal/project/repository/view/model/org_project_mapping.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package model
-
-const (
- OrgProjectMappingKeyProjectID = "project_id"
- OrgProjectMappingKeyOrgID = "org_id"
- OrgProjectMappingKeyProjectGrantID = "project_grant_id"
- OrgProjectMappingKeyInstanceID = "instance_id"
- OrgProjectMappingOwnerRemoved = "owner_removed"
-)
-
-type OrgProjectMapping struct {
- ProjectID string `json:"-" gorm:"column:project_id;primary_key"`
- OrgID string `json:"-" gorm:"column:org_id;primary_key"`
- ProjectGrantID string `json:"-" gorm:"column:project_grant_id"`
- InstanceID string `json:"instanceID" gorm:"column:instance_id"`
-}
diff --git a/internal/project/repository/view/model/org_project_mapping_query.go b/internal/project/repository/view/model/org_project_mapping_query.go
deleted file mode 100644
index 9587579336..0000000000
--- a/internal/project/repository/view/model/org_project_mapping_query.go
+++ /dev/null
@@ -1,67 +0,0 @@
-package model
-
-import (
- "github.com/zitadel/zitadel/internal/domain"
- proj_model "github.com/zitadel/zitadel/internal/project/model"
- "github.com/zitadel/zitadel/internal/view/repository"
-)
-
-type OrgProjectMappingSearchRequest proj_model.OrgProjectMappingViewSearchRequest
-type OrgProjectMappingSearchQuery proj_model.OrgProjectMappingViewSearchQuery
-type OrgProjectMappingSearchKey proj_model.OrgProjectMappingViewSearchKey
-
-func (req OrgProjectMappingSearchRequest) GetLimit() uint64 {
- return req.Limit
-}
-
-func (req OrgProjectMappingSearchRequest) GetOffset() uint64 {
- return req.Offset
-}
-
-func (req OrgProjectMappingSearchRequest) GetSortingColumn() repository.ColumnKey {
- if req.SortingColumn == proj_model.OrgProjectMappingSearchKeyUnspecified {
- return nil
- }
- return OrgProjectMappingSearchKey(req.SortingColumn)
-}
-
-func (req OrgProjectMappingSearchRequest) GetAsc() bool {
- return req.Asc
-}
-
-func (req OrgProjectMappingSearchRequest) GetQueries() []repository.SearchQuery {
- result := make([]repository.SearchQuery, len(req.Queries))
- for i, q := range req.Queries {
- result[i] = OrgProjectMappingSearchQuery{Key: q.Key, Value: q.Value, Method: q.Method}
- }
- return result
-}
-
-func (req OrgProjectMappingSearchQuery) GetKey() repository.ColumnKey {
- return OrgProjectMappingSearchKey(req.Key)
-}
-
-func (req OrgProjectMappingSearchQuery) GetMethod() domain.SearchMethod {
- return req.Method
-}
-
-func (req OrgProjectMappingSearchQuery) GetValue() interface{} {
- return req.Value
-}
-
-func (key OrgProjectMappingSearchKey) ToColumnName() string {
- switch proj_model.OrgProjectMappingViewSearchKey(key) {
- case proj_model.OrgProjectMappingSearchKeyOrgID:
- return OrgProjectMappingKeyOrgID
- case proj_model.OrgProjectMappingSearchKeyProjectID:
- return OrgProjectMappingKeyProjectID
- case proj_model.OrgProjectMappingSearchKeyProjectGrantID:
- return OrgProjectMappingKeyProjectGrantID
- case proj_model.OrgProjectMappingSearchKeyInstanceID:
- return OrgProjectMappingKeyInstanceID
- case proj_model.OrgProjectMappingSearchKeyOwnerRemoved:
- return OrgProjectMappingOwnerRemoved
- default:
- return ""
- }
-}
diff --git a/internal/project/repository/view/model/project.go b/internal/project/repository/view/model/project.go
deleted file mode 100644
index 81ccb49298..0000000000
--- a/internal/project/repository/view/model/project.go
+++ /dev/null
@@ -1,81 +0,0 @@
-package model
-
-import (
- "encoding/json"
- "time"
-
- "github.com/zitadel/logging"
-
- "github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
- "github.com/zitadel/zitadel/internal/eventstore/v1/models"
- "github.com/zitadel/zitadel/internal/project/model"
- "github.com/zitadel/zitadel/internal/repository/project"
-)
-
-const (
- ProjectKeyProjectID = "project_id"
- ProjectKeyResourceOwner = "resource_owner"
- ProjectKeyName = "project_name"
-)
-
-type ProjectView struct {
- ProjectID string `json:"-" gorm:"column:project_id;primary_key"`
- Name string `json:"name" gorm:"column:project_name"`
- CreationDate time.Time `json:"-" gorm:"column:creation_date"`
- ChangeDate time.Time `json:"-" gorm:"column:change_date"`
- State int32 `json:"-" gorm:"column:project_state"`
- ResourceOwner string `json:"-" gorm:"column:resource_owner"`
- ProjectRoleAssertion bool `json:"projectRoleAssertion" gorm:"column:project_role_assertion"`
- ProjectRoleCheck bool `json:"projectRoleCheck" gorm:"column:project_role_check"`
- HasProjectCheck bool `json:"hasProjectCheck" gorm:"column:has_project_check"`
- PrivateLabelingSetting domain.PrivateLabelingSetting `json:"privateLabelingSetting" gorm:"column:private_labeling_setting"`
- Sequence uint64 `json:"-" gorm:"column:sequence"`
-}
-
-func (p *ProjectView) AppendEvent(event *models.Event) (err error) {
- p.ChangeDate = event.CreationDate
- p.Sequence = event.Seq
- switch event.Type() {
- case project.ProjectAddedType:
- p.State = int32(model.ProjectStateActive)
- p.CreationDate = event.CreationDate
- p.setRootData(event)
- err = p.setData(event)
- case project.ProjectChangedType:
- err = p.setData(event)
- case project.ProjectDeactivatedType:
- p.State = int32(model.ProjectStateInactive)
- case project.ProjectReactivatedType:
- p.State = int32(model.ProjectStateActive)
- case project.ProjectRemovedType:
- p.State = int32(model.ProjectStateRemoved)
- }
- return err
-}
-
-func (p *ProjectView) setRootData(event *models.Event) {
- p.ProjectID = event.AggregateID
- p.ResourceOwner = event.ResourceOwner
-}
-
-func (p *ProjectView) setData(event *models.Event) error {
- if err := json.Unmarshal(event.Data, p); err != nil {
- logging.Log("EVEN-dlo92").WithError(err).Error("could not unmarshal event data")
- return err
- }
- return nil
-}
-
-func (p *ProjectView) setProjectData(event *models.Event) error {
- project := new(ProjectView)
- return project.SetData(event)
-}
-
-func (p *ProjectView) SetData(event *models.Event) error {
- if err := json.Unmarshal(event.Data, p); err != nil {
- logging.Log("EVEN-sk9Sj").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-s9ols", "Could not unmarshal data")
- }
- return nil
-}
diff --git a/internal/project/repository/view/model/project_grant.go b/internal/project/repository/view/model/project_grant.go
deleted file mode 100644
index a8a14113fe..0000000000
--- a/internal/project/repository/view/model/project_grant.go
+++ /dev/null
@@ -1,99 +0,0 @@
-package model
-
-import (
- "encoding/json"
- "time"
-
- "github.com/zitadel/logging"
-
- "github.com/zitadel/zitadel/internal/database"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
- "github.com/zitadel/zitadel/internal/eventstore/v1/models"
- "github.com/zitadel/zitadel/internal/project/model"
- "github.com/zitadel/zitadel/internal/repository/project"
-)
-
-const (
- ProjectGrantKeyProjectID = "project_id"
- ProjectGrantKeyGrantID = "grant_id"
- ProjectGrantKeyOrgID = "org_id"
- ProjectGrantKeyResourceOwner = "resource_owner"
- ProjectGrantKeyName = "project_name"
- ProjectGrantKeyRoleKeys = "granted_role_keys"
-)
-
-type ProjectGrantView struct {
- GrantID string `json:"-" gorm:"column:grant_id;primary_key"`
- ProjectID string `json:"-" gorm:"column:project_id"`
- OrgID string `json:"-" gorm:"column:org_id"`
- Name string `json:"name" gorm:"column:project_name"`
- CreationDate time.Time `json:"-" gorm:"column:creation_date"`
- ChangeDate time.Time `json:"-" gorm:"column:change_date"`
- State int32 `json:"-" gorm:"column:project_state"`
- ResourceOwner string `json:"-" gorm:"column:resource_owner"`
- ResourceOwnerName string `json:"-" gorm:"column:resource_owner_name"`
- OrgName string `json:"-" gorm:"column:org_name"`
- Sequence uint64 `json:"-" gorm:"column:sequence"`
- GrantedRoleKeys database.TextArray[string] `json:"-" gorm:"column:granted_role_keys"`
-}
-
-type ProjectGrant struct {
- GrantID string `json:"grantId"`
- GrantedOrgID string `json:"grantedOrgId"`
- RoleKeys []string `json:"roleKeys"`
- InstanceID string `json:"instanceID"`
-}
-
-func (p *ProjectGrantView) AppendEvent(event *models.Event) (err error) {
- p.ChangeDate = event.CreationDate
- p.Sequence = event.Seq
- switch event.Type() {
- case project.GrantAddedType:
- p.State = int32(model.ProjectStateActive)
- p.CreationDate = event.CreationDate
- p.setRootData(event)
- err = p.setProjectGrantData(event)
- case project.GrantChangedType, project.GrantCascadeChangedType:
- err = p.setProjectGrantData(event)
- case project.GrantDeactivatedType:
- p.State = int32(model.ProjectStateInactive)
- case project.GrantReactivatedType:
- p.State = int32(model.ProjectStateActive)
- }
- return err
-}
-
-func (p *ProjectGrantView) setRootData(event *models.Event) {
- p.ProjectID = event.AggregateID
- p.ResourceOwner = event.ResourceOwner
-}
-
-func (p *ProjectGrantView) setData(event *models.Event) error {
- if err := json.Unmarshal(event.Data, p); err != nil {
- logging.Log("EVEN-dlo92").WithError(err).Error("could not unmarshal event data")
- return err
- }
- return nil
-}
-
-func (p *ProjectGrantView) setProjectGrantData(event *models.Event) error {
- grant := new(ProjectGrant)
- err := grant.SetData(event)
- if err != nil {
- return err
- }
- if grant.GrantedOrgID != "" {
- p.OrgID = grant.GrantedOrgID
- }
- p.GrantID = grant.GrantID
- p.GrantedRoleKeys = grant.RoleKeys
- return nil
-}
-
-func (p *ProjectGrant) SetData(event *models.Event) error {
- if err := json.Unmarshal(event.Data, p); err != nil {
- logging.Log("EVEN-dlo92").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-s9ols", "Could not unmarshal data")
- }
- return nil
-}
diff --git a/internal/project/repository/view/model/project_grant_member.go b/internal/project/repository/view/model/project_grant_member.go
deleted file mode 100644
index 7e52a8804a..0000000000
--- a/internal/project/repository/view/model/project_grant_member.go
+++ /dev/null
@@ -1,68 +0,0 @@
-package model
-
-import (
- "encoding/json"
- "time"
-
- "github.com/zitadel/logging"
-
- "github.com/zitadel/zitadel/internal/database"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
- "github.com/zitadel/zitadel/internal/eventstore/v1/models"
- "github.com/zitadel/zitadel/internal/repository/project"
-)
-
-const (
- ProjectGrantMemberKeyUserID = "user_id"
- ProjectGrantMemberKeyGrantID = "grant_id"
- ProjectGrantMemberKeyProjectID = "project_id"
- ProjectGrantMemberKeyUserName = "user_name"
- ProjectGrantMemberKeyEmail = "email"
- ProjectGrantMemberKeyFirstName = "first_name"
- ProjectGrantMemberKeyLastName = "last_name"
-)
-
-type ProjectGrantMemberView struct {
- UserID string `json:"userId" gorm:"column:user_id;primary_key"`
- GrantID string `json:"grantId" gorm:"column:grant_id;primary_key"`
- ProjectID string `json:"-" gorm:"column:project_id"`
- UserName string `json:"-" gorm:"column:user_name"`
- Email string `json:"-" gorm:"column:email_address"`
- FirstName string `json:"-" gorm:"column:first_name"`
- LastName string `json:"-" gorm:"column:last_name"`
- DisplayName string `json:"-" gorm:"column:display_name"`
- Roles database.TextArray[string] `json:"roles" gorm:"column:roles"`
- Sequence uint64 `json:"-" gorm:"column:sequence"`
- PreferredLoginName string `json:"-" gorm:"column:preferred_login_name"`
- AvatarKey string `json:"-" gorm:"column:avatar_key"`
- UserResourceOwner string `json:"-" gorm:"column:user_resource_owner"`
-
- CreationDate time.Time `json:"-" gorm:"column:creation_date"`
- ChangeDate time.Time `json:"-" gorm:"column:change_date"`
-}
-
-func (r *ProjectGrantMemberView) AppendEvent(event *models.Event) (err error) {
- r.Sequence = event.Seq
- r.ChangeDate = event.CreationDate
- switch event.Type() {
- case project.GrantMemberAddedType:
- r.setRootData(event)
- r.CreationDate = event.CreationDate
- err = r.SetData(event)
- case project.GrantMemberChangedType:
- err = r.SetData(event)
- }
- return err
-}
-
-func (r *ProjectGrantMemberView) setRootData(event *models.Event) {
- r.ProjectID = event.AggregateID
-}
-
-func (r *ProjectGrantMemberView) SetData(event *models.Event) error {
- if err := json.Unmarshal(event.Data, r); err != nil {
- logging.Log("EVEN-slo9s").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-0plew", "Could not unmarshal data")
- }
- return nil
-}
diff --git a/internal/project/repository/view/model/project_grant_member_test.go b/internal/project/repository/view/model/project_grant_member_test.go
deleted file mode 100644
index 57028979ab..0000000000
--- a/internal/project/repository/view/model/project_grant_member_test.go
+++ /dev/null
@@ -1,62 +0,0 @@
-package model
-
-import (
- "encoding/json"
- "reflect"
- "testing"
-
- es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
- es_model "github.com/zitadel/zitadel/internal/project/repository/eventsourcing/model"
- "github.com/zitadel/zitadel/internal/repository/project"
-)
-
-func mockProjectGrantMemberData(member *es_model.ProjectGrantMember) []byte {
- data, _ := json.Marshal(member)
- return data
-}
-
-func TestGrantedProjectMemberAppendEvent(t *testing.T) {
- type args struct {
- event *es_models.Event
- member *ProjectGrantMemberView
- }
- tests := []struct {
- name string
- args args
- result *ProjectGrantMemberView
- }{
- {
- name: "append added member event",
- args: args{
- event: &es_models.Event{AggregateID: "AggregateID", Seq: 1, Typ: project.GrantMemberAddedType, ResourceOwner: "OrgID", Data: mockProjectGrantMemberData(&es_model.ProjectGrantMember{GrantID: "ProjectGrantID", UserID: "UserID", Roles: []string{"Role"}})},
- member: &ProjectGrantMemberView{},
- },
- result: &ProjectGrantMemberView{ProjectID: "AggregateID", UserID: "UserID", GrantID: "ProjectGrantID", Roles: []string{"Role"}},
- },
- {
- name: "append changed member event",
- args: args{
- event: &es_models.Event{AggregateID: "AggregateID", Seq: 1, Typ: project.GrantMemberAddedType, ResourceOwner: "OrgID", Data: mockProjectGrantMemberData(&es_model.ProjectGrantMember{GrantID: "ProjectGrantID", Roles: []string{"RoleChanged"}})},
- member: &ProjectGrantMemberView{ProjectID: "AggregateID", UserID: "UserID", GrantID: "ProjectGrantID", Roles: []string{"Role"}},
- },
- result: &ProjectGrantMemberView{ProjectID: "AggregateID", UserID: "UserID", GrantID: "ProjectGrantID", Roles: []string{"RoleChanged"}},
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- tt.args.member.AppendEvent(tt.args.event)
- if tt.args.member.ProjectID != tt.result.ProjectID {
- t.Errorf("got wrong result projectID: expected: %v, actual: %v ", tt.result.ProjectID, tt.args.member.ProjectID)
- }
- if tt.args.member.UserID != tt.result.UserID {
- t.Errorf("got wrong result userID: expected: %v, actual: %v ", tt.result.UserID, tt.args.member.UserID)
- }
- if tt.args.member.GrantID != tt.result.GrantID {
- t.Errorf("got wrong result ProjectGrantID: expected: %v, actual: %v ", tt.result.GrantID, tt.args.member.GrantID)
- }
- if !reflect.DeepEqual(tt.args.member.Roles, tt.result.Roles) {
- t.Errorf("got wrong result Roles: expected: %v, actual: %v ", tt.result.Roles, tt.args.member.Roles)
- }
- })
- }
-}
diff --git a/internal/project/repository/view/model/project_grant_test.go b/internal/project/repository/view/model/project_grant_test.go
deleted file mode 100644
index 3f777182b0..0000000000
--- a/internal/project/repository/view/model/project_grant_test.go
+++ /dev/null
@@ -1,90 +0,0 @@
-package model
-
-import (
- "encoding/json"
- "reflect"
- "testing"
-
- es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
- "github.com/zitadel/zitadel/internal/project/model"
- es_model "github.com/zitadel/zitadel/internal/project/repository/eventsourcing/model"
- "github.com/zitadel/zitadel/internal/repository/project"
-)
-
-func mockProjectData(project *es_model.Project) []byte {
- data, _ := json.Marshal(project)
- return data
-}
-
-func mockProjectGrantData(grant *es_model.ProjectGrant) []byte {
- data, _ := json.Marshal(grant)
- return data
-}
-
-func TestProjectGrantAppendEvent(t *testing.T) {
- type args struct {
- event *es_models.Event
- project *ProjectGrantView
- }
- tests := []struct {
- name string
- args args
- result *ProjectGrantView
- }{
- {
- name: "append added project grant event",
- args: args{
- event: &es_models.Event{AggregateID: "AggregateID", Seq: 1, Typ: project.GrantAddedType, ResourceOwner: "GrantedOrgID", Data: mockProjectGrantData(&es_model.ProjectGrant{GrantID: "ProjectGrantID", GrantedOrgID: "GrantedOrgID", RoleKeys: []string{"Role"}})},
- project: &ProjectGrantView{},
- },
- result: &ProjectGrantView{ProjectID: "AggregateID", ResourceOwner: "GrantedOrgID", OrgID: "GrantedOrgID", State: int32(model.ProjectStateActive), GrantedRoleKeys: []string{"Role"}},
- },
- {
- name: "append change project grant event",
- args: args{
- event: &es_models.Event{AggregateID: "AggregateID", Seq: 1, Typ: project.GrantChangedType, ResourceOwner: "GrantedOrgID", Data: mockProjectGrantData(&es_model.ProjectGrant{GrantID: "ProjectGrantID", RoleKeys: []string{"RoleChanged"}})},
- project: &ProjectGrantView{ProjectID: "AggregateID", ResourceOwner: "GrantedOrgID", OrgID: "GrantedOrgID", State: int32(model.ProjectStateActive), GrantedRoleKeys: []string{"Role"}},
- },
- result: &ProjectGrantView{ProjectID: "AggregateID", ResourceOwner: "GrantedOrgID", OrgID: "GrantedOrgID", State: int32(model.ProjectStateActive), GrantedRoleKeys: []string{"RoleChanged"}},
- },
- {
- name: "append deactivate project grant event",
- args: args{
- event: &es_models.Event{AggregateID: "AggregateID", Seq: 1, Typ: project.GrantDeactivatedType, ResourceOwner: "GrantedOrgID", Data: mockProjectGrantData(&es_model.ProjectGrant{GrantID: "ProjectGrantID"})},
- project: &ProjectGrantView{ProjectID: "AggregateID", ResourceOwner: "GrantedOrgID", OrgID: "GrantedOrgID", State: int32(model.ProjectStateActive), GrantedRoleKeys: []string{"Role"}},
- },
- result: &ProjectGrantView{ProjectID: "AggregateID", ResourceOwner: "GrantedOrgID", OrgID: "GrantedOrgID", State: int32(model.ProjectStateInactive), GrantedRoleKeys: []string{"Role"}},
- },
- {
- name: "append reactivate project grant event",
- args: args{
- event: &es_models.Event{AggregateID: "AggregateID", Seq: 1, Typ: project.GrantReactivatedType, ResourceOwner: "GrantedOrgID", Data: mockProjectGrantData(&es_model.ProjectGrant{GrantID: "ProjectGrantID"})},
- project: &ProjectGrantView{ProjectID: "AggregateID", ResourceOwner: "GrantedOrgID", OrgID: "GrantedOrgID", State: int32(model.ProjectStateInactive), GrantedRoleKeys: []string{"Role"}},
- },
- result: &ProjectGrantView{ProjectID: "AggregateID", ResourceOwner: "GrantedOrgID", OrgID: "GrantedOrgID", State: int32(model.ProjectStateActive), GrantedRoleKeys: []string{"Role"}},
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- tt.args.project.AppendEvent(tt.args.event)
- if tt.args.project.ProjectID != tt.result.ProjectID {
- t.Errorf("got wrong result projectID: expected: %v, actual: %v ", tt.result.ProjectID, tt.args.project.ProjectID)
- }
- if tt.args.project.OrgID != tt.result.OrgID {
- t.Errorf("got wrong result orgID: expected: %v, actual: %v ", tt.result.OrgID, tt.args.project.OrgID)
- }
- if tt.args.project.ResourceOwner != tt.result.ResourceOwner {
- t.Errorf("got wrong result ResourceOwner: expected: %v, actual: %v ", tt.result.ResourceOwner, tt.args.project.ResourceOwner)
- }
- if tt.args.project.Name != tt.result.Name {
- t.Errorf("got wrong result name: expected: %v, actual: %v ", tt.result.Name, tt.args.project.Name)
- }
- if tt.args.project.State != tt.result.State {
- t.Errorf("got wrong result state: expected: %v, actual: %v ", tt.result.State, tt.args.project.State)
- }
- if !reflect.DeepEqual(tt.args.project.GrantedRoleKeys, tt.result.GrantedRoleKeys) {
- t.Errorf("got wrong result state: expected: %v, actual: %v ", tt.result.GrantedRoleKeys, tt.args.project.GrantedRoleKeys)
- }
- })
- }
-}
diff --git a/internal/project/repository/view/model/project_member.go b/internal/project/repository/view/model/project_member.go
deleted file mode 100644
index 4a20e3da10..0000000000
--- a/internal/project/repository/view/model/project_member.go
+++ /dev/null
@@ -1,66 +0,0 @@
-package model
-
-import (
- "encoding/json"
- "time"
-
- "github.com/zitadel/logging"
-
- "github.com/zitadel/zitadel/internal/database"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
- "github.com/zitadel/zitadel/internal/eventstore/v1/models"
- "github.com/zitadel/zitadel/internal/repository/project"
-)
-
-const (
- ProjectMemberKeyUserID = "user_id"
- ProjectMemberKeyProjectID = "project_id"
- ProjectMemberKeyUserName = "user_name"
- ProjectMemberKeyEmail = "email"
- ProjectMemberKeyFirstName = "first_name"
- ProjectMemberKeyLastName = "last_name"
-)
-
-type ProjectMemberView struct {
- UserID string `json:"userId" gorm:"column:user_id;primary_key"`
- ProjectID string `json:"-" gorm:"column:project_id;primary_key"`
- UserName string `json:"-" gorm:"column:user_name"`
- Email string `json:"-" gorm:"column:email_address"`
- FirstName string `json:"-" gorm:"column:first_name"`
- LastName string `json:"-" gorm:"column:last_name"`
- DisplayName string `json:"-" gorm:"column:display_name"`
- Roles database.TextArray[string] `json:"roles" gorm:"column:roles"`
- Sequence uint64 `json:"-" gorm:"column:sequence"`
- PreferredLoginName string `json:"-" gorm:"column:preferred_login_name"`
- AvatarKey string `json:"-" gorm:"column:avatar_key"`
- UserResourceOwner string `json:"-" gorm:"column:user_resource_owner"`
-
- CreationDate time.Time `json:"-" gorm:"column:creation_date"`
- ChangeDate time.Time `json:"-" gorm:"column:change_date"`
-}
-
-func (r *ProjectMemberView) AppendEvent(event *models.Event) (err error) {
- r.Sequence = event.Seq
- r.ChangeDate = event.CreationDate
- switch event.Type() {
- case project.MemberAddedType:
- r.setRootData(event)
- r.CreationDate = event.CreationDate
- err = r.SetData(event)
- case project.MemberChangedType:
- err = r.SetData(event)
- }
- return err
-}
-
-func (r *ProjectMemberView) setRootData(event *models.Event) {
- r.ProjectID = event.AggregateID
-}
-
-func (r *ProjectMemberView) SetData(event *models.Event) error {
- if err := json.Unmarshal(event.Data, r); err != nil {
- logging.Log("EVEN-slo9s").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-lub6s", "Could not unmarshal data")
- }
- return nil
-}
diff --git a/internal/project/repository/view/model/project_member_test.go b/internal/project/repository/view/model/project_member_test.go
deleted file mode 100644
index dff8425665..0000000000
--- a/internal/project/repository/view/model/project_member_test.go
+++ /dev/null
@@ -1,59 +0,0 @@
-package model
-
-import (
- "encoding/json"
- "reflect"
- "testing"
-
- es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
- es_model "github.com/zitadel/zitadel/internal/project/repository/eventsourcing/model"
- "github.com/zitadel/zitadel/internal/repository/project"
-)
-
-func mockProjectMemberData(member *es_model.ProjectMember) []byte {
- data, _ := json.Marshal(member)
- return data
-}
-
-func TestProjectMemberAppendEvent(t *testing.T) {
- type args struct {
- event *es_models.Event
- member *ProjectMemberView
- }
- tests := []struct {
- name string
- args args
- result *ProjectMemberView
- }{
- {
- name: "append added member event",
- args: args{
- event: &es_models.Event{AggregateID: "AggregateID", Seq: 1, Typ: project.MemberAddedType, ResourceOwner: "OrgID", Data: mockProjectMemberData(&es_model.ProjectMember{UserID: "UserID", Roles: []string{"Role"}})},
- member: &ProjectMemberView{},
- },
- result: &ProjectMemberView{ProjectID: "AggregateID", UserID: "UserID", Roles: []string{"Role"}},
- },
- {
- name: "append changed member event",
- args: args{
- event: &es_models.Event{AggregateID: "AggregateID", Seq: 1, Typ: project.MemberAddedType, ResourceOwner: "OrgID", Data: mockProjectMemberData(&es_model.ProjectMember{UserID: "UserID", Roles: []string{"RoleChanged"}})},
- member: &ProjectMemberView{ProjectID: "AggregateID", UserID: "UserID", Roles: []string{"Role"}},
- },
- result: &ProjectMemberView{ProjectID: "AggregateID", UserID: "UserID", Roles: []string{"RoleChanged"}},
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- tt.args.member.AppendEvent(tt.args.event)
- if tt.args.member.ProjectID != tt.result.ProjectID {
- t.Errorf("got wrong result projectID: expected: %v, actual: %v ", tt.result.ProjectID, tt.args.member.ProjectID)
- }
- if tt.args.member.UserID != tt.result.UserID {
- t.Errorf("got wrong result userID: expected: %v, actual: %v ", tt.result.UserID, tt.args.member.UserID)
- }
- if !reflect.DeepEqual(tt.args.member.Roles, tt.result.Roles) {
- t.Errorf("got wrong result Roles: expected: %v, actual: %v ", tt.result.Roles, tt.args.member.Roles)
- }
- })
- }
-}
diff --git a/internal/project/repository/view/model/project_test.go b/internal/project/repository/view/model/project_test.go
deleted file mode 100644
index 4731d98f23..0000000000
--- a/internal/project/repository/view/model/project_test.go
+++ /dev/null
@@ -1,72 +0,0 @@
-package model
-
-import (
- "testing"
-
- es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
- "github.com/zitadel/zitadel/internal/project/model"
- es_model "github.com/zitadel/zitadel/internal/project/repository/eventsourcing/model"
- "github.com/zitadel/zitadel/internal/repository/project"
-)
-
-func TestProjectAppendEvent(t *testing.T) {
- type args struct {
- event *es_models.Event
- project *ProjectView
- }
- tests := []struct {
- name string
- args args
- result *ProjectView
- }{
- {
- name: "append added project event",
- args: args{
- event: &es_models.Event{AggregateID: "AggregateID", Seq: 1, Typ: project.ProjectAddedType, ResourceOwner: "GrantedOrgID", Data: mockProjectData(&es_model.Project{Name: "ProjectName"})},
- project: &ProjectView{},
- },
- result: &ProjectView{ProjectID: "AggregateID", ResourceOwner: "GrantedOrgID", Name: "ProjectName", State: int32(model.ProjectStateActive)},
- },
- {
- name: "append change project event",
- args: args{
- event: &es_models.Event{AggregateID: "AggregateID", Seq: 1, Typ: project.ProjectChangedType, ResourceOwner: "GrantedOrgID", Data: mockProjectData(&es_model.Project{Name: "ProjectNameChanged"})},
- project: &ProjectView{ProjectID: "AggregateID", ResourceOwner: "GrantedOrgID", Name: "ProjectName", State: int32(model.ProjectStateActive)},
- },
- result: &ProjectView{ProjectID: "AggregateID", ResourceOwner: "GrantedOrgID", Name: "ProjectNameChanged", State: int32(model.ProjectStateActive)},
- },
- {
- name: "append project deactivate event",
- args: args{
- event: &es_models.Event{AggregateID: "AggregateID", Seq: 1, Typ: project.ProjectDeactivatedType, ResourceOwner: "GrantedOrgID"},
- project: &ProjectView{ProjectID: "AggregateID", ResourceOwner: "GrantedOrgID", Name: "ProjectName", State: int32(model.ProjectStateActive)},
- },
- result: &ProjectView{ProjectID: "AggregateID", ResourceOwner: "GrantedOrgID", Name: "ProjectName", State: int32(model.ProjectStateInactive)},
- },
- {
- name: "append project reactivate event",
- args: args{
- event: &es_models.Event{AggregateID: "AggregateID", Seq: 1, Typ: project.ProjectReactivatedType, ResourceOwner: "GrantedOrgID"},
- project: &ProjectView{ProjectID: "AggregateID", ResourceOwner: "GrantedOrgID", Name: "ProjectName", State: int32(model.ProjectStateInactive)},
- },
- result: &ProjectView{ProjectID: "AggregateID", ResourceOwner: "GrantedOrgID", Name: "ProjectName", State: int32(model.ProjectStateActive)},
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- tt.args.project.AppendEvent(tt.args.event)
- if tt.args.project.ProjectID != tt.result.ProjectID {
- t.Errorf("got wrong result projectID: expected: %v, actual: %v ", tt.result.ProjectID, tt.args.project.ProjectID)
- }
- if tt.args.project.ResourceOwner != tt.result.ResourceOwner {
- t.Errorf("got wrong result ResourceOwner: expected: %v, actual: %v ", tt.result.ResourceOwner, tt.args.project.ResourceOwner)
- }
- if tt.args.project.Name != tt.result.Name {
- t.Errorf("got wrong result name: expected: %v, actual: %v ", tt.result.Name, tt.args.project.Name)
- }
- if tt.args.project.State != tt.result.State {
- t.Errorf("got wrong result state: expected: %v, actual: %v ", tt.result.State, tt.args.project.State)
- }
- })
- }
-}
diff --git a/internal/project/repository/view/org_project_mapping_view.go b/internal/project/repository/view/org_project_mapping_view.go
deleted file mode 100644
index b75a7f13dd..0000000000
--- a/internal/project/repository/view/org_project_mapping_view.go
+++ /dev/null
@@ -1,70 +0,0 @@
-package view
-
-import (
- "github.com/jinzhu/gorm"
-
- "github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
- proj_model "github.com/zitadel/zitadel/internal/project/model"
- "github.com/zitadel/zitadel/internal/project/repository/view/model"
- "github.com/zitadel/zitadel/internal/view/repository"
-)
-
-func OrgProjectMappingByIDs(db *gorm.DB, table, orgID, projectID, instanceID string) (*model.OrgProjectMapping, error) {
- orgProjectMapping := new(model.OrgProjectMapping)
-
- projectIDQuery := model.OrgProjectMappingSearchQuery{Key: proj_model.OrgProjectMappingSearchKeyProjectID, Value: projectID, Method: domain.SearchMethodEquals}
- orgIDQuery := model.OrgProjectMappingSearchQuery{Key: proj_model.OrgProjectMappingSearchKeyOrgID, Value: orgID, Method: domain.SearchMethodEquals}
- instanceIDQuery := model.OrgProjectMappingSearchQuery{Key: proj_model.OrgProjectMappingSearchKeyInstanceID, Value: instanceID, Method: domain.SearchMethodEquals}
- ownerRemovedQuery := model.OrgProjectMappingSearchQuery{Key: proj_model.OrgProjectMappingSearchKeyOwnerRemoved, Value: false, Method: domain.SearchMethodEquals}
- query := repository.PrepareGetByQuery(table, projectIDQuery, orgIDQuery, instanceIDQuery, ownerRemovedQuery)
- err := query(db, orgProjectMapping)
- if caos_errs.IsNotFound(err) {
- return nil, caos_errs.ThrowNotFound(nil, "VIEW-fn9fs", "Errors.OrgProjectMapping.NotExisting")
- }
- return orgProjectMapping, err
-}
-
-func PutOrgProjectMapping(db *gorm.DB, table string, grant *model.OrgProjectMapping) error {
- save := repository.PrepareSave(table)
- return save(db, grant)
-}
-
-func DeleteOrgProjectMapping(db *gorm.DB, table, orgID, projectID, instanceID string) error {
- projectIDSearch := repository.Key{Key: model.OrgProjectMappingSearchKey(proj_model.OrgProjectMappingSearchKeyProjectID), Value: projectID}
- orgIDSearch := repository.Key{Key: model.OrgProjectMappingSearchKey(proj_model.OrgProjectMappingSearchKeyOrgID), Value: orgID}
- instanceIDSearch := repository.Key{Key: model.OrgProjectMappingSearchKey(proj_model.OrgProjectMappingSearchKeyInstanceID), Value: instanceID}
- delete := repository.PrepareDeleteByKeys(table, projectIDSearch, orgIDSearch, instanceIDSearch)
- return delete(db)
-}
-
-func DeleteInstanceOrgProjectMappings(db *gorm.DB, table, instanceID string) error {
- delete := repository.PrepareDeleteByKey(table, model.OrgProjectMappingSearchKey(proj_model.OrgProjectMappingSearchKeyInstanceID), instanceID)
- return delete(db)
-}
-
-func UpdateOwnerRemovedOrgProjectMappings(db *gorm.DB, table, instanceID, orgID string) error {
- update := repository.PrepareUpdateByKeys(table,
- model.OrgProjectMappingSearchKey(proj_model.OrgProjectMappingSearchKeyOwnerRemoved),
- true,
- repository.Key{Key: model.OrgProjectMappingSearchKey(proj_model.OrgProjectMappingSearchKeyInstanceID), Value: instanceID},
- repository.Key{Key: model.OrgProjectMappingSearchKey(proj_model.OrgProjectMappingSearchKeyOrgID), Value: orgID},
- )
- return update(db)
-}
-
-func DeleteOrgProjectMappingsByProjectID(db *gorm.DB, table, projectID, instanceID string) error {
- delete := repository.PrepareDeleteByKeys(table,
- repository.Key{model.OrgProjectMappingSearchKey(proj_model.OrgProjectMappingSearchKeyProjectID), projectID},
- repository.Key{model.OrgProjectMappingSearchKey(proj_model.OrgProjectMappingSearchKeyInstanceID), instanceID},
- )
- return delete(db)
-}
-
-func DeleteOrgProjectMappingsByProjectGrantID(db *gorm.DB, table, projectGrantID, instanceID string) error {
- delete := repository.PrepareDeleteByKeys(table,
- repository.Key{model.OrgProjectMappingSearchKey(proj_model.OrgProjectMappingSearchKeyProjectGrantID), projectGrantID},
- repository.Key{model.OrgProjectMappingSearchKey(proj_model.OrgProjectMappingSearchKeyInstanceID), instanceID},
- )
- return delete(db)
-}
diff --git a/internal/project/repository/view/query.go b/internal/project/repository/view/query.go
index 70d7f29e43..af1670a4d9 100644
--- a/internal/project/repository/view/query.go
+++ b/internal/project/repository/view/query.go
@@ -1,14 +1,14 @@
package view
import (
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/project"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func ProjectByIDQuery(id, instanceID string, latestSequence uint64) (*eventstore.SearchQueryBuilder, error) {
if id == "" {
- return nil, errors.ThrowPreconditionFailed(nil, "EVENT-dke74", "Errors.Project.ProjectIDMissing")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "EVENT-dke74", "Errors.Project.ProjectIDMissing")
}
return eventstore.NewSearchQueryBuilder(eventstore.ColumnsEvent).
InstanceID(instanceID).
diff --git a/internal/query/access_token.go b/internal/query/access_token.go
index 664796d2d2..379b561bf5 100644
--- a/internal/query/access_token.go
+++ b/internal/query/access_token.go
@@ -6,11 +6,11 @@ import (
"time"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/oidcsession"
"github.com/zitadel/zitadel/internal/repository/session"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type OIDCSessionAccessTokenReadModel struct {
@@ -98,14 +98,14 @@ func (q *Queries) ActiveAccessTokenByToken(ctx context.Context, token string) (m
split := strings.Split(token, "-")
if len(split) != 2 {
- return nil, caos_errs.ThrowPermissionDenied(nil, "QUERY-LJK2W", "Errors.OIDCSession.Token.Invalid")
+ return nil, zerrors.ThrowPermissionDenied(nil, "QUERY-LJK2W", "Errors.OIDCSession.Token.Invalid")
}
model, err = q.accessTokenByOIDCSessionAndTokenID(ctx, split[0], split[1])
if err != nil {
return nil, err
}
if !model.AccessTokenExpiration.After(time.Now()) {
- return nil, caos_errs.ThrowPermissionDenied(nil, "QUERY-SAF3rf", "Errors.OIDCSession.Token.Expired")
+ return nil, zerrors.ThrowPermissionDenied(nil, "QUERY-SAF3rf", "Errors.OIDCSession.Token.Expired")
}
if err = q.checkSessionNotTerminatedAfter(ctx, model.SessionID, model.AccessTokenCreation); err != nil {
return nil, err
@@ -119,10 +119,10 @@ func (q *Queries) accessTokenByOIDCSessionAndTokenID(ctx context.Context, oidcSe
model = newOIDCSessionAccessTokenReadModel(oidcSessionID)
if err = q.eventstore.FilterToQueryReducer(ctx, model); err != nil {
- return nil, caos_errs.ThrowPermissionDenied(err, "QUERY-ASfe2", "Errors.OIDCSession.Token.Invalid")
+ return nil, zerrors.ThrowPermissionDenied(err, "QUERY-ASfe2", "Errors.OIDCSession.Token.Invalid")
}
if model.AccessTokenID != tokenID {
- return nil, caos_errs.ThrowPermissionDenied(nil, "QUERY-M2u9w", "Errors.OIDCSession.Token.Invalid")
+ return nil, zerrors.ThrowPermissionDenied(nil, "QUERY-M2u9w", "Errors.OIDCSession.Token.Invalid")
}
return model, nil
}
@@ -145,10 +145,10 @@ func (q *Queries) checkSessionNotTerminatedAfter(ctx context.Context, sessionID
).
Builder())
if err != nil {
- return caos_errs.ThrowPermissionDenied(err, "QUERY-SJ642", "Errors.Internal")
+ return zerrors.ThrowPermissionDenied(err, "QUERY-SJ642", "Errors.Internal")
}
if len(events) > 0 {
- return caos_errs.ThrowPermissionDenied(nil, "QUERY-IJL3H", "Errors.OIDCSession.Token.Invalid")
+ return zerrors.ThrowPermissionDenied(nil, "QUERY-IJL3H", "Errors.OIDCSession.Token.Invalid")
}
return nil
}
diff --git a/internal/query/action.go b/internal/query/action.go
index e2c75e6906..30ded403d1 100644
--- a/internal/query/action.go
+++ b/internal/query/action.go
@@ -3,7 +3,7 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"time"
sq "github.com/Masterminds/squirrel"
@@ -11,9 +11,9 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -127,7 +127,7 @@ func (q *Queries) SearchActions(ctx context.Context, queries *ActionSearchQuerie
}
stmt, args, err := queries.toQuery(query).Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-SDgwg", "Errors.Query.InvalidRequest")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-SDgwg", "Errors.Query.InvalidRequest")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -135,7 +135,7 @@ func (q *Queries) SearchActions(ctx context.Context, queries *ActionSearchQuerie
return err
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-SDfr52", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-SDfr52", "Errors.Internal")
}
actions.State, err = q.latestState(ctx, actionTable)
@@ -157,7 +157,7 @@ func (q *Queries) GetActionByID(ctx context.Context, id string, orgID string, wi
}
query, args, err := stmt.Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Dgff3", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Dgff3", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -223,7 +223,7 @@ func prepareActionsQuery(ctx context.Context, db prepareDatabase) (sq.SelectBuil
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-EGdff", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-EGdff", "Errors.Query.CloseRows")
}
return &Actions{
@@ -264,10 +264,10 @@ func prepareActionQuery(ctx context.Context, db prepareDatabase) (sq.SelectBuild
&action.AllowedToFail,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-GEfnb", "Errors.Action.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-GEfnb", "Errors.Action.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-Dbnt4", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Dbnt4", "Errors.Internal")
}
return action, nil
}
diff --git a/internal/query/action_flow.go b/internal/query/action_flow.go
index a06d88b626..d6d4243d94 100644
--- a/internal/query/action_flow.go
+++ b/internal/query/action_flow.go
@@ -10,9 +10,9 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -75,7 +75,7 @@ func (q *Queries) GetFlow(ctx context.Context, flowType domain.FlowType, orgID s
}
stmt, args, err := query.Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-HBRh3", "Errors.Query.InvalidRequest")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-HBRh3", "Errors.Query.InvalidRequest")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -99,7 +99,7 @@ func (q *Queries) GetActiveActionsByFlowAndTriggerType(ctx context.Context, flow
}
query, args, err := stmt.Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Dgff3", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Dgff3", "Errors.Query.SQLStatement")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -120,7 +120,7 @@ func (q *Queries) GetFlowTypesOfActionID(ctx context.Context, actionID string) (
}
query, args, err := stmt.Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-Dh311", "Errors.Query.InvalidRequest")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-Dh311", "Errors.Query.InvalidRequest")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -192,7 +192,7 @@ func prepareTriggerActionsQuery(ctx context.Context, db prepareDatabase) (sq.Sel
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Df42d", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Df42d", "Errors.Query.CloseRows")
}
return actions, nil
@@ -281,7 +281,7 @@ func prepareFlowQuery(ctx context.Context, db prepareDatabase, flowType domain.F
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Dfbe2", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Dfbe2", "Errors.Query.CloseRows")
}
return flow, nil
diff --git a/internal/query/action_test.go b/internal/query/action_test.go
index 4c0f00d075..f6ba5be4b9 100644
--- a/internal/query/action_test.go
+++ b/internal/query/action_test.go
@@ -10,7 +10,7 @@ import (
"time"
"github.com/zitadel/zitadel/internal/domain"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -227,7 +227,7 @@ func Test_ActionPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
diff --git a/internal/query/app.go b/internal/query/app.go
index 0877d68c0f..92a44742f9 100644
--- a/internal/query/app.go
+++ b/internal/query/app.go
@@ -3,7 +3,7 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"time"
sq "github.com/Masterminds/squirrel"
@@ -13,10 +13,10 @@ import (
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Apps struct {
@@ -264,7 +264,7 @@ func (q *Queries) AppByProjectAndAppID(ctx context.Context, shouldTriggerBulk bo
}
query, args, err := stmt.Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-AFDgg", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-AFDgg", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -285,7 +285,7 @@ func (q *Queries) AppByID(ctx context.Context, appID string) (app *App, err erro
}
query, args, err := stmt.Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-immt9", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-immt9", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -306,7 +306,7 @@ func (q *Queries) AppBySAMLEntityID(ctx context.Context, entityID string) (app *
}
query, args, err := stmt.Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-JgUop", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-JgUop", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -331,7 +331,7 @@ func (q *Queries) ProjectByClientID(ctx context.Context, appID string) (project
},
}).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-XhJi3", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-XhJi3", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -352,7 +352,7 @@ func (q *Queries) ProjectIDFromOIDCClientID(ctx context.Context, appID string) (
}
query, args, err := stmt.Where(eq).ToSql()
if err != nil {
- return "", errors.ThrowInternal(err, "QUERY-7d92U", "Errors.Query.SQLStatement")
+ return "", zerrors.ThrowInternal(err, "QUERY-7d92U", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -378,7 +378,7 @@ func (q *Queries) ProjectIDFromClientID(ctx context.Context, appID string) (id s
}
query, args, err := stmt.Where(where).ToSql()
if err != nil {
- return "", errors.ThrowInternal(err, "QUERY-SDfg3", "Errors.Query.SQLStatement")
+ return "", zerrors.ThrowInternal(err, "QUERY-SDfg3", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -399,7 +399,7 @@ func (q *Queries) ProjectByOIDCClientID(ctx context.Context, id string) (project
}
query, args, err := stmt.Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-XhJi4", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-XhJi4", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -420,7 +420,7 @@ func (q *Queries) AppByOIDCClientID(ctx context.Context, clientID string) (app *
}
query, args, err := stmt.Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-JgVop", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-JgVop", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -444,7 +444,7 @@ func (q *Queries) AppByClientID(ctx context.Context, clientID string) (app *App,
},
}).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Dfge2", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Dfge2", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -462,7 +462,7 @@ func (q *Queries) SearchApps(ctx context.Context, queries *AppSearchQueries, wit
eq := sq.Eq{AppColumnInstanceID.identifier(): authz.GetInstance(ctx).InstanceID()}
stmt, args, err := queries.toQuery(query).Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-fajp8", "Errors.Query.InvalidRequest")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-fajp8", "Errors.Query.InvalidRequest")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -470,7 +470,7 @@ func (q *Queries) SearchApps(ctx context.Context, queries *AppSearchQueries, wit
return err
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-aJnZL", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-aJnZL", "Errors.Internal")
}
apps.State, err = q.latestState(ctx, appsTable)
return apps, err
@@ -484,7 +484,7 @@ func (q *Queries) SearchClientIDs(ctx context.Context, queries *AppSearchQueries
eq := sq.Eq{AppColumnInstanceID.identifier(): authz.GetInstance(ctx).InstanceID()}
stmt, args, err := queries.toQuery(query).Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-fajp8", "Errors.Query.InvalidRequest")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-fajp8", "Errors.Query.InvalidRequest")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -492,7 +492,7 @@ func (q *Queries) SearchClientIDs(ctx context.Context, queries *AppSearchQueries
return err
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-aJnZL", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-aJnZL", "Errors.Internal")
}
return ids, nil
}
@@ -594,10 +594,10 @@ func prepareAppQuery(ctx context.Context, db prepareDatabase) (sq.SelectBuilder,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-pCP8P", "Errors.App.NotExisting")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-pCP8P", "Errors.App.NotExisting")
}
- return nil, errors.ThrowInternal(err, "QUERY-4SJlx", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-4SJlx", "Errors.Internal")
}
apiConfig.set(app)
@@ -621,10 +621,10 @@ func prepareProjectIDByAppQuery(ctx context.Context, db prepareDatabase) (sq.Sel
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return "", errors.ThrowNotFound(err, "QUERY-aKcc2", "Errors.Project.NotExisting")
+ if errors.Is(err, sql.ErrNoRows) {
+ return "", zerrors.ThrowNotFound(err, "QUERY-aKcc2", "Errors.Project.NotExisting")
}
- return "", errors.ThrowInternal(err, "QUERY-3A5TG", "Errors.Internal")
+ return "", zerrors.ThrowInternal(err, "QUERY-3A5TG", "Errors.Internal")
}
return projectID, nil
@@ -666,10 +666,10 @@ func prepareProjectByAppQuery(ctx context.Context, db prepareDatabase) (sq.Selec
&p.PrivateLabelingSetting,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-yxTMh", "Errors.Project.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-yxTMh", "Errors.Project.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-dj2FF", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-dj2FF", "Errors.Internal")
}
return p, nil
}
@@ -769,7 +769,7 @@ func prepareAppsQuery(ctx context.Context, db prepareDatabase) (sq.SelectBuilder
)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-XGWAX", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-XGWAX", "Errors.Internal")
}
apiConfig.set(app)
@@ -800,7 +800,7 @@ func prepareClientIDsQuery(ctx context.Context, db prepareDatabase) (sq.SelectBu
&apiID,
&oidcID,
); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-0R2Nw", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-0R2Nw", "Errors.Internal")
}
if apiID.Valid {
ids = append(ids, apiID.String)
diff --git a/internal/query/app_test.go b/internal/query/app_test.go
index 599a9724aa..a7658dd0a2 100644
--- a/internal/query/app_test.go
+++ b/internal/query/app_test.go
@@ -11,7 +11,7 @@ import (
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -1146,7 +1146,7 @@ func Test_AppPrepare(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
@@ -1864,7 +1864,7 @@ func Test_ProjectIDByAppPrepare(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
@@ -1930,7 +1930,7 @@ func Test_ProjectByAppPrepare(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
diff --git a/internal/query/auth_request.go b/internal/query/auth_request.go
index 71766b8990..50df4bf6fd 100644
--- a/internal/query/auth_request.go
+++ b/internal/query/auth_request.go
@@ -4,7 +4,7 @@ import (
"context"
"database/sql"
_ "embed"
- errs "errors"
+ "errors"
"fmt"
"time"
@@ -14,10 +14,10 @@ import (
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type AuthRequest struct {
@@ -36,7 +36,7 @@ type AuthRequest struct {
func (a *AuthRequest) checkLoginClient(ctx context.Context) error {
if uid := authz.GetCtxData(ctx).UserID; uid != a.LoginClient {
- return errors.ThrowPermissionDenied(nil, "OIDCv2-aL0ag", "Errors.AuthRequest.WrongLoginClient")
+ return zerrors.ThrowPermissionDenied(nil, "OIDCv2-aL0ag", "Errors.AuthRequest.WrongLoginClient")
}
return nil
}
@@ -77,11 +77,11 @@ func (q *Queries) AuthRequestByID(ctx context.Context, shouldTriggerBulk bool, i
q.authRequestByIDQuery(ctx),
id, authz.GetInstance(ctx).InstanceID(),
)
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-Thee9", "Errors.AuthRequest.NotExisting")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-Thee9", "Errors.AuthRequest.NotExisting")
}
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Ou8ue", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Ou8ue", "Errors.Internal")
}
dst.Scope = scope
diff --git a/internal/query/auth_request_test.go b/internal/query/auth_request_test.go
index 4cc52fa8c6..aacc2e0259 100644
--- a/internal/query/auth_request_test.go
+++ b/internal/query/auth_request_test.go
@@ -16,8 +16,8 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestQueries_AuthRequestByID(t *testing.T) {
@@ -126,7 +126,7 @@ func TestQueries_AuthRequestByID(t *testing.T) {
id: "123",
},
expect: mockQueryScanErr(expQuery, cols, nil, "123", "instanceID"),
- wantErr: errors.ThrowNotFound(sql.ErrNoRows, "QUERY-Thee9", "Errors.AuthRequest.NotExisting"),
+ wantErr: zerrors.ThrowNotFound(sql.ErrNoRows, "QUERY-Thee9", "Errors.AuthRequest.NotExisting"),
},
{
name: "query error",
@@ -135,7 +135,7 @@ func TestQueries_AuthRequestByID(t *testing.T) {
id: "123",
},
expect: mockQueryErr(expQuery, sql.ErrConnDone, "123", "instanceID"),
- wantErr: errors.ThrowInternal(sql.ErrConnDone, "QUERY-Ou8ue", "Errors.Internal"),
+ wantErr: zerrors.ThrowInternal(sql.ErrConnDone, "QUERY-Ou8ue", "Errors.Internal"),
},
{
name: "wrong login client",
@@ -157,7 +157,7 @@ func TestQueries_AuthRequestByID(t *testing.T) {
sql.NullInt64{},
sql.NullString{},
}, "123", "instanceID"),
- wantErr: errors.ThrowPermissionDeniedf(nil, "OIDCv2-aL0ag", "Errors.AuthRequest.WrongLoginClient"),
+ wantErr: zerrors.ThrowPermissionDeniedf(nil, "OIDCv2-aL0ag", "Errors.AuthRequest.WrongLoginClient"),
},
}
for _, tt := range tests {
diff --git a/internal/query/authn_key.go b/internal/query/authn_key.go
index 21ff3aee1d..584270e2bc 100644
--- a/internal/query/authn_key.go
+++ b/internal/query/authn_key.go
@@ -3,7 +3,7 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"time"
sq "github.com/Masterminds/squirrel"
@@ -13,10 +13,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -137,7 +137,7 @@ func (q *Queries) SearchAuthNKeys(ctx context.Context, queries *AuthNKeySearchQu
}
stmt, args, err := query.Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-SAf3f", "Errors.Query.InvalidRequest")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-SAf3f", "Errors.Query.InvalidRequest")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -145,7 +145,7 @@ func (q *Queries) SearchAuthNKeys(ctx context.Context, queries *AuthNKeySearchQu
return err
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Dbg53", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Dbg53", "Errors.Internal")
}
authNKeys.State, err = q.latestState(ctx, authNKeyTable)
@@ -164,7 +164,7 @@ func (q *Queries) SearchAuthNKeysData(ctx context.Context, queries *AuthNKeySear
}
stmt, args, err := query.Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-SAg3f", "Errors.Query.InvalidRequest")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-SAg3f", "Errors.Query.InvalidRequest")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -172,7 +172,7 @@ func (q *Queries) SearchAuthNKeysData(ctx context.Context, queries *AuthNKeySear
return err
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Dbi53", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Dbi53", "Errors.Internal")
}
authNKeys.State, err = q.latestState(ctx, authNKeyTable)
return authNKeys, err
@@ -200,7 +200,7 @@ func (q *Queries) GetAuthNKeyByID(ctx context.Context, shouldTriggerBulk bool, i
}
stmt, args, err := query.Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-AGhg4", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-AGhg4", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -228,7 +228,7 @@ func (q *Queries) GetAuthNKeyPublicKeyByIDAndIdentifier(ctx context.Context, id
}
query, args, err := stmt.Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-DAb32", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-DAb32", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -284,7 +284,7 @@ func prepareAuthNKeysQuery(ctx context.Context, db prepareDatabase) (sq.SelectBu
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Dgfn3", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Dgfn3", "Errors.Query.CloseRows")
}
return &AuthNKeys{
@@ -319,10 +319,10 @@ func prepareAuthNKeyQuery(ctx context.Context, db prepareDatabase) (sq.SelectBui
&authNKey.Type,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-Dgr3g", "Errors.AuthNKey.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-Dgr3g", "Errors.AuthNKey.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-BGnbr", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-BGnbr", "Errors.Internal")
}
return authNKey, nil
}
@@ -339,10 +339,10 @@ func prepareAuthNKeyPublicKeyQuery(ctx context.Context, db prepareDatabase) (sq.
&publicKey,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-SDf32", "Errors.AuthNKey.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-SDf32", "Errors.AuthNKey.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-Bfs2a", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Bfs2a", "Errors.Internal")
}
return publicKey, nil
}
@@ -386,7 +386,7 @@ func prepareAuthNKeysDataQuery(ctx context.Context, db prepareDatabase) (sq.Sele
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Dgfn3", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Dgfn3", "Errors.Query.CloseRows")
}
return &AuthNKeysData{
diff --git a/internal/query/authn_key_test.go b/internal/query/authn_key_test.go
index 620e6a5079..5f5084de35 100644
--- a/internal/query/authn_key_test.go
+++ b/internal/query/authn_key_test.go
@@ -9,7 +9,7 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/domain"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -361,7 +361,7 @@ func Test_AuthNKeyPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
@@ -424,7 +424,7 @@ func Test_AuthNKeyPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
diff --git a/internal/query/certificate.go b/internal/query/certificate.go
index d43787ff23..f4254e0231 100644
--- a/internal/query/certificate.go
+++ b/internal/query/certificate.go
@@ -11,9 +11,9 @@ import (
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Certificate interface {
@@ -85,7 +85,7 @@ func (q *Queries) ActiveCertificates(ctx context.Context, t time.Time, usage dom
},
).OrderBy(KeyPrivateColExpiry.identifier()).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-SDfkg", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-SDfkg", "Errors.Query.SQLStatement")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -93,11 +93,11 @@ func (q *Queries) ActiveCertificates(ctx context.Context, t time.Time, usage dom
return err
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Sgan4", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Sgan4", "Errors.Internal")
}
certs.State, err = q.latestState(ctx, keyTable)
- if !errors.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return certs, err
}
return certs, nil
@@ -146,7 +146,7 @@ func prepareCertificateQuery(ctx context.Context, db prepareDatabase) (sq.Select
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-rKd6k", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-rKd6k", "Errors.Query.CloseRows")
}
return &Certificates{
diff --git a/internal/query/certificate_test.go b/internal/query/certificate_test.go
index 6e8b52abfa..a6c862c8ad 100644
--- a/internal/query/certificate_test.go
+++ b/internal/query/certificate_test.go
@@ -10,7 +10,7 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -65,7 +65,7 @@ func Test_CertificatePrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
diff --git a/internal/query/current_state.go b/internal/query/current_state.go
index 2c42e97bde..73c8eaeb9a 100644
--- a/internal/query/current_state.go
+++ b/internal/query/current_state.go
@@ -4,7 +4,7 @@ import (
"context"
"database/sql"
_ "embed"
- errs "errors"
+ "errors"
"fmt"
"strings"
"time"
@@ -14,10 +14,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type State struct {
@@ -68,7 +68,7 @@ func (q *Queries) SearchCurrentStates(ctx context.Context, queries *CurrentState
query, scan := prepareCurrentStateQuery(ctx, q.client)
stmt, args, err := queries.toQuery(query).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-MmFef", "Errors.Query.InvalidRequest")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-MmFef", "Errors.Query.InvalidRequest")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -76,7 +76,7 @@ func (q *Queries) SearchCurrentStates(ctx context.Context, queries *CurrentState
return err
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-22H8f", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-22H8f", "Errors.Internal")
}
return currentStates, nil
@@ -97,7 +97,7 @@ func (q *Queries) latestState(ctx context.Context, projections ...table) (state
OrderBy(CurrentStateColEventDate.identifier() + " DESC").
ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-5CfX9", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-5CfX9", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -111,7 +111,7 @@ func (q *Queries) latestState(ctx context.Context, projections ...table) (state
func (q *Queries) ClearCurrentSequence(ctx context.Context, projectionName string) (err error) {
tx, err := q.client.Begin()
if err != nil {
- return errors.ThrowInternal(err, "QUERY-9iOpr", "Errors.RemoveFailed")
+ return zerrors.ThrowInternal(err, "QUERY-9iOpr", "Errors.RemoveFailed")
}
defer func() {
if err != nil {
@@ -120,7 +120,7 @@ func (q *Queries) ClearCurrentSequence(ctx context.Context, projectionName strin
return
}
if commitErr := tx.Commit(); commitErr != nil {
- err = errors.ThrowInternal(commitErr, "QUERY-JGD0l", "Errors.Internal")
+ err = zerrors.ThrowInternal(commitErr, "QUERY-JGD0l", "Errors.Internal")
}
}()
@@ -139,7 +139,7 @@ func (q *Queries) ClearCurrentSequence(ctx context.Context, projectionName strin
}
err = tx.Commit()
if err != nil {
- return errors.ThrowInternal(err, "QUERY-Sfvsc", "Errors.Internal")
+ return zerrors.ThrowInternal(err, "QUERY-Sfvsc", "Errors.Internal")
}
return nil
}
@@ -153,11 +153,11 @@ func (q *Queries) checkAndLock(tx *sql.Tx, projectionName string) (name string,
PlaceholderFormat(sq.Dollar).
ToSql()
if err != nil {
- return "", errors.ThrowInternal(err, "QUERY-UJTUy", "Errors.Internal")
+ return "", zerrors.ThrowInternal(err, "QUERY-UJTUy", "Errors.Internal")
}
row := tx.QueryRow(stmt, args...)
if err := row.Scan(&name); err != nil || name == "" {
- return "", errors.ThrowInternal(err, "QUERY-ej8fn", "Errors.ProjectionName.Invalid")
+ return "", zerrors.ThrowInternal(err, "QUERY-ej8fn", "Errors.ProjectionName.Invalid")
}
return name, nil
}
@@ -165,7 +165,7 @@ func (q *Queries) checkAndLock(tx *sql.Tx, projectionName string) (name string,
func tablesForReset(ctx context.Context, tx *sql.Tx, projectionName string) (tables []string, err error) {
names := strings.Split(projectionName, ".")
if len(names) != 2 {
- return nil, errors.ThrowInvalidArgument(nil, "QUERY-wk1jr", "Errors.InvalidArgument")
+ return nil, zerrors.ThrowInvalidArgument(nil, "QUERY-wk1jr", "Errors.InvalidArgument")
}
schema := names[0]
tablePrefix := names[1]
@@ -181,19 +181,19 @@ func tablesForReset(ctx context.Context, tx *sql.Tx, projectionName string) (tab
PlaceholderFormat(sq.Dollar).
ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-ASff2", "Errors.ProjectionName.Invalid")
+ return nil, zerrors.ThrowInternal(err, "QUERY-ASff2", "Errors.ProjectionName.Invalid")
}
rows, err := tx.QueryContext(ctx, tablesQuery, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Dgfw", "Errors.ProjectionName.Invalid")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Dgfw", "Errors.ProjectionName.Invalid")
}
defer rows.Close()
for rows.Next() {
var tableName string
if err := rows.Scan(&tableName); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-ej8fn", "Errors.ProjectionName.Invalid")
+ return nil, zerrors.ThrowInternal(err, "QUERY-ej8fn", "Errors.ProjectionName.Invalid")
}
tables = append(tables, schema+"."+tableName)
}
@@ -209,7 +209,7 @@ func reset(ctx context.Context, tx *sql.Tx, tables []string, projectionName stri
for _, tableName := range tables {
_, err := tx.Exec(fmt.Sprintf("TRUNCATE %s cascade", tableName))
if err != nil {
- return errors.ThrowInternal(err, "QUERY-3n92f", "Errors.RemoveFailed")
+ return zerrors.ThrowInternal(err, "QUERY-3n92f", "Errors.RemoveFailed")
}
}
update, args, err := sq.Update(currentStateTable.identifier()).
@@ -220,11 +220,11 @@ func reset(ctx context.Context, tx *sql.Tx, tables []string, projectionName stri
PlaceholderFormat(sq.Dollar).
ToSql()
if err != nil {
- return errors.ThrowInternal(err, "QUERY-Ff3tw", "Errors.RemoveFailed")
+ return zerrors.ThrowInternal(err, "QUERY-Ff3tw", "Errors.RemoveFailed")
}
_, err = tx.Exec(update, args...)
if err != nil {
- return errors.ThrowInternal(err, "QUERY-NFiws", "Errors.RemoveFailed")
+ return zerrors.ThrowInternal(err, "QUERY-NFiws", "Errors.RemoveFailed")
}
return nil
}
@@ -247,8 +247,8 @@ func prepareLatestState(ctx context.Context, db prepareDatabase) (sq.SelectBuild
&position,
&lastUpdated,
)
- if err != nil && !errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowInternal(err, "QUERY-aAZ1D", "Errors.Internal")
+ if err != nil && !errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowInternal(err, "QUERY-aAZ1D", "Errors.Internal")
}
return &State{
EventCreatedAt: creationDate.Time,
@@ -307,7 +307,7 @@ func prepareCurrentStateQuery(ctx context.Context, db prepareDatabase) (sq.Selec
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-jbJ77", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-jbJ77", "Errors.Query.CloseRows")
}
return &CurrentStates{
diff --git a/internal/query/custom_text.go b/internal/query/custom_text.go
index 794271f3ec..3bd3bf0793 100644
--- a/internal/query/custom_text.go
+++ b/internal/query/custom_text.go
@@ -15,10 +15,11 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
+ "github.com/zitadel/zitadel/internal/i18n"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type CustomTexts struct {
@@ -101,7 +102,7 @@ func (q *Queries) CustomTextList(ctx context.Context, aggregateID, template, lan
}
query, args, err := stmt.Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-M9gse", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-M9gse", "Errors.Query.SQLStatement")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -109,7 +110,7 @@ func (q *Queries) CustomTextList(ctx context.Context, aggregateID, template, lan
return err
}, query, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-2j00f", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-2j00f", "Errors.Internal")
}
texts.State, err = q.latestState(ctx, projectsTable)
@@ -131,7 +132,7 @@ func (q *Queries) CustomTextListByTemplate(ctx context.Context, aggregateID, tem
}
query, args, err := stmt.Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-M49fs", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-M49fs", "Errors.Query.SQLStatement")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -139,7 +140,7 @@ func (q *Queries) CustomTextListByTemplate(ctx context.Context, aggregateID, tem
return err
}, query, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-3n9ge", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-3n9ge", "Errors.Internal")
}
texts.State, err = q.latestState(ctx, projectsTable)
@@ -156,7 +157,7 @@ func (q *Queries) GetDefaultLoginTexts(ctx context.Context, lang string) (_ *dom
}
loginText := new(domain.CustomLoginText)
if err := yaml.Unmarshal(contents, loginText); err != nil {
- return nil, errors.ThrowInternal(err, "TEXT-M0p4s", "Errors.TranslationFile.ReadError")
+ return nil, zerrors.ThrowInternal(err, "TEXT-M0p4s", "Errors.TranslationFile.ReadError")
}
loginText.IsDefault = true
loginText.AggregateID = authz.GetInstance(ctx).InstanceID()
@@ -184,7 +185,7 @@ func (q *Queries) IAMLoginTexts(ctx context.Context, lang string) (_ *domain.Cus
}
loginTextMap := make(map[string]interface{})
if err := yaml.Unmarshal(contents, &loginTextMap); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-m0Jf3", "Errors.TranslationFile.ReadError")
+ return nil, zerrors.ThrowInternal(err, "QUERY-m0Jf3", "Errors.TranslationFile.ReadError")
}
texts, err := q.CustomTextList(ctx, authz.GetInstance(ctx).InstanceID(), domain.LoginCustomText, lang, false)
if err != nil {
@@ -200,11 +201,11 @@ func (q *Queries) IAMLoginTexts(ctx context.Context, lang string) (_ *domain.Cus
}
jsonbody, err := json.Marshal(loginTextMap)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-0nJ3f", "Errors.TranslationFile.MergeError")
+ return nil, zerrors.ThrowInternal(err, "QUERY-0nJ3f", "Errors.TranslationFile.MergeError")
}
loginText := new(domain.CustomLoginText)
if err := json.Unmarshal(jsonbody, &loginText); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-m93Jf", "Errors.TranslationFile.MergeError")
+ return nil, zerrors.ThrowInternal(err, "QUERY-m93Jf", "Errors.TranslationFile.MergeError")
}
loginText.AggregateID = authz.GetInstance(ctx).InstanceID()
loginText.IsDefault = true
@@ -217,9 +218,9 @@ func (q *Queries) readLoginTranslationFile(ctx context.Context, lang string) ([]
contents, ok := q.LoginTranslationFileContents[lang]
var err error
if !ok {
- contents, err = q.readTranslationFile(q.LoginDir, fmt.Sprintf("/i18n/%s.yaml", lang))
- if errors.IsNotFound(err) {
- contents, err = q.readTranslationFile(q.LoginDir, fmt.Sprintf("/i18n/%s.yaml", authz.GetInstance(ctx).DefaultLanguage().String()))
+ contents, err = q.readTranslationFile(i18n.LOGIN, fmt.Sprintf("/i18n/%s.yaml", lang))
+ if zerrors.IsNotFound(err) {
+ contents, err = q.readTranslationFile(i18n.LOGIN, fmt.Sprintf("/i18n/%s.yaml", authz.GetInstance(ctx).DefaultLanguage().String()))
}
if err != nil {
return nil, err
@@ -267,7 +268,7 @@ func prepareCustomTextsQuery(ctx context.Context, db prepareDatabase) (sq.Select
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-3n9fs", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-3n9fs", "Errors.Query.CloseRows")
}
return &CustomTexts{
diff --git a/internal/query/custom_text_test.go b/internal/query/custom_text_test.go
index 3df40638cc..0453f71a2a 100644
--- a/internal/query/custom_text_test.go
+++ b/internal/query/custom_text_test.go
@@ -10,7 +10,7 @@ import (
"golang.org/x/text/language"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -59,7 +59,7 @@ func Test_CustomTextPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
diff --git a/internal/query/device_auth.go b/internal/query/device_auth.go
index c16fcdf58c..17e1b8e943 100644
--- a/internal/query/device_auth.go
+++ b/internal/query/device_auth.go
@@ -3,146 +3,134 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
+ "time"
sq "github.com/Masterminds/squirrel"
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
- deviceAuthTable = table{
- name: projection.DeviceAuthProjectionTable,
- instanceIDCol: projection.DeviceAuthColumnInstanceID,
+ deviceAuthRequestTable = table{
+ name: projection.DeviceAuthRequestProjectionTable,
+ instanceIDCol: projection.DeviceAuthRequestColumnInstanceID,
}
- DeviceAuthColumnID = Column{
- name: projection.DeviceAuthColumnID,
- table: deviceAuthTable,
+ DeviceAuthRequestColumnClientID = Column{
+ name: projection.DeviceAuthRequestColumnClientID,
+ table: deviceAuthRequestTable,
}
- DeviceAuthColumnClientID = Column{
- name: projection.DeviceAuthColumnClientID,
- table: deviceAuthTable,
+ DeviceAuthRequestColumnDeviceCode = Column{
+ name: projection.DeviceAuthRequestColumnDeviceCode,
+ table: deviceAuthRequestTable,
}
- DeviceAuthColumnDeviceCode = Column{
- name: projection.DeviceAuthColumnDeviceCode,
- table: deviceAuthTable,
+ DeviceAuthRequestColumnUserCode = Column{
+ name: projection.DeviceAuthRequestColumnUserCode,
+ table: deviceAuthRequestTable,
}
- DeviceAuthColumnUserCode = Column{
- name: projection.DeviceAuthColumnUserCode,
- table: deviceAuthTable,
+ DeviceAuthRequestColumnScopes = Column{
+ name: projection.DeviceAuthRequestColumnScopes,
+ table: deviceAuthRequestTable,
}
- DeviceAuthColumnExpires = Column{
- name: projection.DeviceAuthColumnExpires,
- table: deviceAuthTable,
+ DeviceAuthRequestColumnCreationDate = Column{
+ name: projection.DeviceAuthRequestColumnCreationDate,
+ table: deviceAuthRequestTable,
}
- DeviceAuthColumnScopes = Column{
- name: projection.DeviceAuthColumnScopes,
- table: deviceAuthTable,
+ DeviceAuthRequestColumnChangeDate = Column{
+ name: projection.DeviceAuthRequestColumnChangeDate,
+ table: deviceAuthRequestTable,
}
- DeviceAuthColumnState = Column{
- name: projection.DeviceAuthColumnState,
- table: deviceAuthTable,
+ DeviceAuthRequestColumnSequence = Column{
+ name: projection.DeviceAuthRequestColumnSequence,
+ table: deviceAuthRequestTable,
}
- DeviceAuthColumnSubject = Column{
- name: projection.DeviceAuthColumnSubject,
- table: deviceAuthTable,
- }
- DeviceAuthColumnCreationDate = Column{
- name: projection.DeviceAuthColumnCreationDate,
- table: deviceAuthTable,
- }
- DeviceAuthColumnChangeDate = Column{
- name: projection.DeviceAuthColumnChangeDate,
- table: deviceAuthTable,
- }
- DeviceAuthColumnSequence = Column{
- name: projection.DeviceAuthColumnSequence,
- table: deviceAuthTable,
- }
- DeviceAuthColumnInstanceID = Column{
- name: projection.DeviceAuthColumnInstanceID,
- table: deviceAuthTable,
+ DeviceAuthRequestColumnInstanceID = Column{
+ name: projection.DeviceAuthRequestColumnInstanceID,
+ table: deviceAuthRequestTable,
}
)
-func (q *Queries) DeviceAuthByDeviceCode(ctx context.Context, clientID, deviceCode string) (deviceAuth *domain.DeviceAuth, err error) {
- ctx, span := tracing.NewSpan(ctx)
- defer func() { span.EndWithError(err) }()
-
- stmt, scan := prepareDeviceAuthQuery(ctx, q.client)
- eq := sq.Eq{
- DeviceAuthColumnInstanceID.identifier(): authz.GetInstance(ctx).InstanceID(),
- DeviceAuthColumnClientID.identifier(): clientID,
- DeviceAuthColumnDeviceCode.identifier(): deviceCode,
- }
- query, args, err := stmt.Where(eq).ToSql()
- if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-uk1Oh", "Errors.Query.SQLStatement")
- }
-
- err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
- deviceAuth, err = scan(row)
- return err
- }, query, args...)
- return deviceAuth, err
+type DeviceAuth struct {
+ ClientID string
+ DeviceCode string
+ UserCode string
+ Expires time.Time
+ Scopes []string
+ State domain.DeviceAuthState
+ Subject string
+ UserAuthMethods []domain.UserAuthMethodType
+ AuthTime time.Time
}
-func (q *Queries) DeviceAuthByUserCode(ctx context.Context, userCode string) (deviceAuth *domain.DeviceAuth, err error) {
+// DeviceAuthByDeviceCode gets the current state of a Device Authorization directly from the eventstore.
+func (q *Queries) DeviceAuthByDeviceCode(ctx context.Context, deviceCode string) (deviceAuth *DeviceAuth, err error) {
+ ctx, span := tracing.NewSpan(ctx)
+ defer func() { span.EndWithError(err) }()
+
+ model := NewDeviceAuthReadModel(deviceCode, authz.GetInstance(ctx).InstanceID())
+ if err := q.eventstore.FilterToQueryReducer(ctx, model); err != nil {
+ return nil, err
+ }
+ if !model.State.Exists() {
+ return nil, zerrors.ThrowNotFound(nil, "QUERY-eeR0e", "Errors.DeviceAuth.NotExisting")
+ }
+ return &model.DeviceAuth, nil
+}
+
+// DeviceAuthRequestByUserCode finds a Device Authorization request by User-Code from the `device_auth_requests` projection.
+func (q *Queries) DeviceAuthRequestByUserCode(ctx context.Context, userCode string) (authReq *domain.AuthRequestDevice, err error) {
ctx, span := tracing.NewSpan(ctx)
defer func() { span.EndWithError(err) }()
stmt, scan := prepareDeviceAuthQuery(ctx, q.client)
eq := sq.Eq{
- DeviceAuthColumnInstanceID.identifier(): authz.GetInstance(ctx).InstanceID(),
- DeviceAuthColumnUserCode.identifier(): userCode,
+ DeviceAuthRequestColumnInstanceID.identifier(): authz.GetInstance(ctx).InstanceID(),
+ DeviceAuthRequestColumnUserCode.identifier(): userCode,
}
query, args, err := stmt.Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Axu7l", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Axu7l", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
- deviceAuth, err = scan(row)
+ authReq, err = scan(row)
return err
}, query, args...)
- return deviceAuth, err
+ return authReq, err
}
var deviceAuthSelectColumns = []string{
- DeviceAuthColumnID.identifier(),
- DeviceAuthColumnClientID.identifier(),
- DeviceAuthColumnScopes.identifier(),
- DeviceAuthColumnExpires.identifier(),
- DeviceAuthColumnState.identifier(),
- DeviceAuthColumnSubject.identifier(),
+ DeviceAuthRequestColumnClientID.identifier(),
+ DeviceAuthRequestColumnDeviceCode.identifier(),
+ DeviceAuthRequestColumnUserCode.identifier(),
+ DeviceAuthRequestColumnScopes.identifier(),
}
-func prepareDeviceAuthQuery(ctx context.Context, db prepareDatabase) (sq.SelectBuilder, func(*sql.Row) (*domain.DeviceAuth, error)) {
- return sq.Select(deviceAuthSelectColumns...).From(deviceAuthTable.identifier()).PlaceholderFormat(sq.Dollar),
- func(row *sql.Row) (*domain.DeviceAuth, error) {
- dst := new(domain.DeviceAuth)
- var scopes database.TextArray[string]
+func prepareDeviceAuthQuery(ctx context.Context, db prepareDatabase) (sq.SelectBuilder, func(*sql.Row) (*domain.AuthRequestDevice, error)) {
+ return sq.Select(deviceAuthSelectColumns...).From(deviceAuthRequestTable.identifier()).PlaceholderFormat(sq.Dollar),
+ func(row *sql.Row) (*domain.AuthRequestDevice, error) {
+ dst := new(domain.AuthRequestDevice)
+ var (
+ scopes database.TextArray[string]
+ )
err := row.Scan(
- &dst.AggregateID,
&dst.ClientID,
+ &dst.DeviceCode,
+ &dst.UserCode,
&scopes,
- &dst.Expires,
- &dst.State,
- &dst.Subject,
)
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-Sah9a", "Errors.DeviceAuth.NotExisting")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-Sah9a", "Errors.DeviceAuth.NotExisting")
}
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Voo3o", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Voo3o", "Errors.Internal")
}
-
dst.Scopes = scopes
return dst, nil
}
diff --git a/internal/query/device_auth_model.go b/internal/query/device_auth_model.go
new file mode 100644
index 0000000000..23fc0775e1
--- /dev/null
+++ b/internal/query/device_auth_model.go
@@ -0,0 +1,58 @@
+package query
+
+import (
+ "github.com/zitadel/zitadel/internal/domain"
+ "github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/repository/deviceauth"
+)
+
+type DeviceAuthReadModel struct {
+ eventstore.ReadModel
+ DeviceAuth
+}
+
+func NewDeviceAuthReadModel(deviceCode, resourceOwner string) *DeviceAuthReadModel {
+ return &DeviceAuthReadModel{
+ ReadModel: eventstore.ReadModel{
+ AggregateID: deviceCode,
+ ResourceOwner: resourceOwner,
+ },
+ }
+}
+
+func (m *DeviceAuthReadModel) Reduce() error {
+ for _, event := range m.Events {
+ switch e := event.(type) {
+ case *deviceauth.AddedEvent:
+ m.ClientID = e.ClientID
+ m.DeviceCode = e.DeviceCode
+ m.UserCode = e.UserCode
+ m.Expires = e.Expires
+ m.Scopes = e.Scopes
+ m.State = e.State
+ case *deviceauth.ApprovedEvent:
+ m.State = domain.DeviceAuthStateApproved
+ m.Subject = e.Subject
+ m.UserAuthMethods = e.UserAuthMethods
+ m.AuthTime = e.AuthTime
+ case *deviceauth.CanceledEvent:
+ m.State = e.Reason.State()
+ }
+ }
+
+ return m.ReadModel.Reduce()
+}
+
+func (m *DeviceAuthReadModel) Query() *eventstore.SearchQueryBuilder {
+ return eventstore.NewSearchQueryBuilder(eventstore.ColumnsEvent).
+ ResourceOwner(m.ResourceOwner).
+ AddQuery().
+ AggregateTypes(deviceauth.AggregateType).
+ AggregateIDs(m.AggregateID).
+ EventTypes(
+ deviceauth.AddedEventType,
+ deviceauth.ApprovedEventType,
+ deviceauth.CanceledEventType,
+ ).
+ Builder()
+}
diff --git a/internal/query/device_auth_test.go b/internal/query/device_auth_test.go
index a9f5efcf2d..c909694aef 100644
--- a/internal/query/device_auth_test.go
+++ b/internal/query/device_auth_test.go
@@ -6,82 +6,188 @@ import (
"database/sql/driver"
"errors"
"fmt"
+ "io"
"regexp"
"testing"
+ "time"
"github.com/DATA-DOG/go-sqlmock"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
+ "github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/eventstore/v1/models"
-)
-
-const (
- expectedDeviceAuthQueryC = `SELECT` +
- ` projections.device_authorizations.id,` +
- ` projections.device_authorizations.client_id,` +
- ` projections.device_authorizations.scopes,` +
- ` projections.device_authorizations.expires,` +
- ` projections.device_authorizations.state,` +
- ` projections.device_authorizations.subject` +
- ` FROM projections.device_authorizations`
- expectedDeviceAuthWhereDeviceCodeQueryC = expectedDeviceAuthQueryC +
- ` WHERE projections.device_authorizations.client_id = $1` +
- ` AND projections.device_authorizations.device_code = $2` +
- ` AND projections.device_authorizations.instance_id = $3`
- expectedDeviceAuthWhereUserCodeQueryC = expectedDeviceAuthQueryC +
- ` WHERE projections.device_authorizations.instance_id = $1` +
- ` AND projections.device_authorizations.user_code = $2`
-)
-
-var (
- expectedDeviceAuthQuery = regexp.QuoteMeta(expectedDeviceAuthQueryC)
- expectedDeviceAuthWhereDeviceCodeQuery = regexp.QuoteMeta(expectedDeviceAuthWhereDeviceCodeQueryC)
- expectedDeviceAuthWhereUserCodeQuery = regexp.QuoteMeta(expectedDeviceAuthWhereUserCodeQueryC)
- expectedDeviceAuthValues = []driver.Value{
- "primary-id",
- "client-id",
- database.TextArray[string]{"a", "b", "c"},
- testNow,
- domain.DeviceAuthStateApproved,
- "subject",
- }
- expectedDeviceAuth = &domain.DeviceAuth{
- ObjectRoot: models.ObjectRoot{
- AggregateID: "primary-id",
- },
- ClientID: "client-id",
- Scopes: []string{"a", "b", "c"},
- Expires: testNow,
- State: domain.DeviceAuthStateApproved,
- Subject: "subject",
- }
+ "github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/repository/deviceauth"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestQueries_DeviceAuthByDeviceCode(t *testing.T) {
- client, mock, err := sqlmock.New()
- if err != nil {
- t.Fatalf("failed to build mock client: %v", err)
+ ctx := authz.NewMockContext("inst1", "org1", "user1")
+ timestamp := time.Date(2015, 12, 15, 22, 13, 45, 0, time.UTC)
+ tests := []struct {
+ name string
+ eventstore func(t *testing.T) *eventstore.Eventstore
+ want *DeviceAuth
+ wantErr error
+ }{
+ {
+ name: "filter error",
+ eventstore: expectEventstore(
+ expectFilterError(io.ErrClosedPipe),
+ ),
+ wantErr: io.ErrClosedPipe,
+ },
+ {
+ name: "not found",
+ eventstore: expectEventstore(
+ expectFilter(),
+ ),
+ wantErr: zerrors.ThrowNotFound(nil, "QUERY-eeR0e", "Errors.DeviceAuth.NotExisting"),
+ },
+ {
+ name: "ok, initiated",
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(deviceauth.NewAddedEvent(
+ ctx,
+ deviceauth.NewAggregate("device1", "instance1"),
+ "client1", "device1", "user-code", timestamp, []string{"foo", "bar"},
+ )),
+ ),
+ ),
+ want: &DeviceAuth{
+ ClientID: "client1",
+ DeviceCode: "device1",
+ UserCode: "user-code",
+ Expires: timestamp,
+ Scopes: []string{"foo", "bar"},
+ State: domain.DeviceAuthStateInitiated,
+ },
+ },
+ {
+ name: "ok, approved",
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(deviceauth.NewAddedEvent(
+ ctx,
+ deviceauth.NewAggregate("device1", "instance1"),
+ "client1", "device1", "user-code", timestamp, []string{"foo", "bar"},
+ )),
+ eventFromEventPusher(deviceauth.NewApprovedEvent(
+ ctx,
+ deviceauth.NewAggregate("device1", "instance1"),
+ "user1", []domain.UserAuthMethodType{domain.UserAuthMethodTypePasswordless},
+ timestamp,
+ )),
+ ),
+ ),
+ want: &DeviceAuth{
+ ClientID: "client1",
+ DeviceCode: "device1",
+ UserCode: "user-code",
+ Expires: timestamp,
+ Scopes: []string{"foo", "bar"},
+ State: domain.DeviceAuthStateApproved,
+ Subject: "user1",
+ UserAuthMethods: []domain.UserAuthMethodType{domain.UserAuthMethodTypePasswordless},
+ AuthTime: timestamp,
+ },
+ },
+ {
+ name: "ok, denied",
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(deviceauth.NewAddedEvent(
+ ctx,
+ deviceauth.NewAggregate("device1", "instance1"),
+ "client1", "device1", "user-code", timestamp, []string{"foo", "bar"},
+ )),
+ eventFromEventPusher(deviceauth.NewCanceledEvent(
+ ctx,
+ deviceauth.NewAggregate("device1", "instance1"),
+ domain.DeviceAuthCanceledDenied,
+ )),
+ ),
+ ),
+ want: &DeviceAuth{
+ ClientID: "client1",
+ DeviceCode: "device1",
+ UserCode: "user-code",
+ Expires: timestamp,
+ Scopes: []string{"foo", "bar"},
+ State: domain.DeviceAuthStateDenied,
+ },
+ },
+ {
+ name: "ok, expired",
+ eventstore: expectEventstore(
+ expectFilter(
+ eventFromEventPusher(deviceauth.NewAddedEvent(
+ ctx,
+ deviceauth.NewAggregate("device1", "instance1"),
+ "client1", "device1", "user-code", timestamp, []string{"foo", "bar"},
+ )),
+ eventFromEventPusher(deviceauth.NewCanceledEvent(
+ ctx,
+ deviceauth.NewAggregate("device1", "instance1"),
+ domain.DeviceAuthCanceledExpired,
+ )),
+ ),
+ ),
+ want: &DeviceAuth{
+ ClientID: "client1",
+ DeviceCode: "device1",
+ UserCode: "user-code",
+ Expires: timestamp,
+ Scopes: []string{"foo", "bar"},
+ State: domain.DeviceAuthStateExpired,
+ },
+ },
}
- defer client.Close()
-
- mock.ExpectBegin()
- mock.ExpectQuery(expectedDeviceAuthWhereDeviceCodeQuery).WillReturnRows(
- sqlmock.NewRows(deviceAuthSelectColumns).AddRow(expectedDeviceAuthValues...),
- )
- mock.ExpectCommit()
- q := Queries{
- client: &database.DB{DB: client},
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ q := &Queries{
+ eventstore: tt.eventstore(t),
+ }
+ got, err := q.DeviceAuthByDeviceCode(ctx, "device1")
+ require.ErrorIs(t, err, tt.wantErr)
+ assert.Equal(t, tt.want, got)
+ })
}
- got, err := q.DeviceAuthByDeviceCode(context.TODO(), "123", "456")
- require.NoError(t, err)
- assert.Equal(t, expectedDeviceAuth, got)
- require.NoError(t, mock.ExpectationsWereMet())
}
-func TestQueries_DeviceAuthByUserCode(t *testing.T) {
+const (
+ expectedDeviceAuthQueryC = `SELECT` +
+ ` projections.device_auth_requests.client_id,` +
+ ` projections.device_auth_requests.device_code,` +
+ ` projections.device_auth_requests.user_code,` +
+ ` projections.device_auth_requests.scopes` +
+ ` FROM projections.device_auth_requests`
+ expectedDeviceAuthWhereUserCodeQueryC = expectedDeviceAuthQueryC +
+ ` WHERE projections.device_auth_requests.instance_id = $1` +
+ ` AND projections.device_auth_requests.user_code = $2`
+)
+
+var (
+ expectedDeviceAuthQuery = regexp.QuoteMeta(expectedDeviceAuthQueryC)
+ expectedDeviceAuthWhereUserCodeQuery = regexp.QuoteMeta(expectedDeviceAuthWhereUserCodeQueryC)
+ expectedDeviceAuthValues = []driver.Value{
+ "client-id",
+ "device1",
+ "user-code",
+ database.TextArray[string]{"a", "b", "c"},
+ }
+ expectedDeviceAuth = &domain.AuthRequestDevice{
+ ClientID: "client-id",
+ DeviceCode: "device1",
+ UserCode: "user-code",
+ Scopes: []string{"a", "b", "c"},
+ }
+)
+
+func TestQueries_DeviceAuthRequestByUserCode(t *testing.T) {
client, mock, err := sqlmock.New()
if err != nil {
t.Fatalf("failed to build mock client: %v", err)
@@ -96,7 +202,7 @@ func TestQueries_DeviceAuthByUserCode(t *testing.T) {
q := Queries{
client: &database.DB{DB: client},
}
- got, err := q.DeviceAuthByUserCode(context.TODO(), "789")
+ got, err := q.DeviceAuthRequestByUserCode(context.TODO(), "789")
require.NoError(t, err)
assert.Equal(t, expectedDeviceAuth, got)
require.NoError(t, mock.ExpectationsWereMet())
@@ -110,7 +216,7 @@ func Test_prepareDeviceAuthQuery(t *testing.T) {
tests := []struct {
name string
want want
- object any
+ object *domain.AuthRequestDevice
}{
{
name: "success",
@@ -137,7 +243,7 @@ func Test_prepareDeviceAuthQuery(t *testing.T) {
return nil, true
},
},
- object: (*domain.DeviceAuth)(nil),
+ object: nil,
},
{
name: "other error",
@@ -153,7 +259,7 @@ func Test_prepareDeviceAuthQuery(t *testing.T) {
return nil, true
},
},
- object: (*domain.DeviceAuth)(nil),
+ object: nil,
},
}
for _, tt := range tests {
diff --git a/internal/query/domain_policy.go b/internal/query/domain_policy.go
index bbe79a9daf..922efb3869 100644
--- a/internal/query/domain_policy.go
+++ b/internal/query/domain_policy.go
@@ -3,7 +3,7 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"time"
sq "github.com/Masterminds/squirrel"
@@ -13,10 +13,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type DomainPolicy struct {
@@ -123,7 +123,7 @@ func (q *Queries) DomainPolicyByOrg(ctx context.Context, shouldTriggerBulk bool,
query, args, err := stmt.Where(eq).OrderBy(DomainPolicyColIsDefault.identifier()).
Limit(1).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-D3CqT", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-D3CqT", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -145,7 +145,7 @@ func (q *Queries) DefaultDomainPolicy(ctx context.Context) (policy *DomainPolicy
OrderBy(DomainPolicyColIsDefault.identifier()).
Limit(1).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-pM7lP", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-pM7lP", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -185,10 +185,10 @@ func prepareDomainPolicyQuery(ctx context.Context, db prepareDatabase) (sq.Selec
&policy.State,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-K0Jr5", "Errors.DomainPolicy.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-K0Jr5", "Errors.DomainPolicy.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-rIy6j", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-rIy6j", "Errors.Internal")
}
return policy, nil
}
diff --git a/internal/query/domain_policy_test.go b/internal/query/domain_policy_test.go
index ef861c737b..70d3ddc391 100644
--- a/internal/query/domain_policy_test.go
+++ b/internal/query/domain_policy_test.go
@@ -9,7 +9,7 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/domain"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -60,7 +60,7 @@ func Test_DomainPolicyPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
diff --git a/internal/query/embed/oidc_client_by_id.sql b/internal/query/embed/oidc_client_by_id.sql
new file mode 100644
index 0000000000..c2fa73c3e2
--- /dev/null
+++ b/internal/query/embed/oidc_client_by_id.sql
@@ -0,0 +1,46 @@
+--deallocate q;
+--prepare q(text, text, boolean) as
+
+with client as (
+ select c.instance_id,
+ c.app_id, c.client_id, c.client_secret, c.redirect_uris, c.response_types, c.grant_types,
+ c.application_type, c.auth_method_type, c.post_logout_redirect_uris, c.is_dev_mode,
+ c.access_token_type, c.access_token_role_assertion, c.id_token_role_assertion,
+ c.id_token_userinfo_assertion, c.clock_skew, c.additional_origins, a.project_id, a.state
+ from projections.apps6_oidc_configs c
+ join projections.apps6 a on a.id = c.app_id and a.instance_id = c.instance_id
+ where c.instance_id = $1
+ and c.client_id = $2
+),
+roles as (
+ select p.project_id, json_agg(p.role_key) as project_role_keys
+ from projections.project_roles4 p
+ join client c on c.project_id = p.project_id
+ and p.instance_id = c.instance_id
+ group by p.project_id
+),
+keys as (
+ select identifier as client_id, json_object_agg(id, encode(public_key, 'base64')) as public_keys
+ from projections.authn_keys2
+ where $3 = true -- when argument is false, don't waste time on trying to query for keys.
+ and instance_id = $1
+ and identifier = $2
+ and expiration > current_timestamp
+ group by identifier
+),
+settings as (
+ select instance_id, json_build_object('access_token_lifetime', access_token_lifetime, 'id_token_lifetime', id_token_lifetime) as settings
+ from projections.oidc_settings2
+ where aggregate_id = $1
+ and instance_id = $1
+)
+
+select row_to_json(r) as client from (
+ select c.*, r.project_role_keys, k.public_keys, s.settings
+ from client c
+ left join roles r on r.project_id = c.project_id
+ left join keys k on k.client_id = c.client_id
+ left join settings s on s.instance_id = s.instance_id
+) r;
+
+--execute q('230690539048009730', '236647088211951618@tests', true);
\ No newline at end of file
diff --git a/internal/query/embed/userinfo_by_id.sql b/internal/query/embed/userinfo_by_id.sql
index 1f289f60c9..ad959e43f0 100644
--- a/internal/query/embed/userinfo_by_id.sql
+++ b/internal/query/embed/userinfo_by_id.sql
@@ -1,6 +1,6 @@
with usr as (
select u.id, u.creation_date, u.change_date, u.sequence, u.state, u.resource_owner, u.username, n.login_name as preferred_login_name
- from projections.users9 u
+ from projections.users10 u
left join projections.login_names3 n on u.id = n.user_id and u.instance_id = n.instance_id
where u.id = $1
and u.instance_id = $2
@@ -9,7 +9,7 @@ with usr as (
human as (
select $1 as user_id, row_to_json(r) as human from (
select first_name, last_name, nick_name, display_name, avatar_key, preferred_language, gender, email, is_email_verified, phone, is_phone_verified
- from projections.users9_humans
+ from projections.users10_humans
where user_id = $1
and instance_id = $2
) r
@@ -17,7 +17,7 @@ human as (
machine as (
select $1 as user_id, row_to_json(r) as machine from (
select name, description
- from projections.users9_machines
+ from projections.users10_machines
where user_id = $1
and instance_id = $2
) r
diff --git a/internal/query/event.go b/internal/query/event.go
index 074b5c83cf..a956979422 100644
--- a/internal/query/event.go
+++ b/internal/query/event.go
@@ -6,9 +6,9 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Event struct {
@@ -45,7 +45,7 @@ func (q *Queries) SearchEvents(ctx context.Context, query *eventstore.SearchQuer
defer func() { span.EndWithError(err) }()
auditLogRetention := q.defaultAuditLogRetention
instanceLimits, err := q.Limits(ctx, authz.GetInstance(ctx).InstanceID())
- if err != nil && !errors.IsNotFound(err) {
+ if err != nil && !zerrors.IsNotFound(err) {
return nil, err
}
if instanceLimits != nil && instanceLimits.AuditLogRetention != nil {
diff --git a/internal/query/failed_events.go b/internal/query/failed_events.go
index a1c2b31e41..7d2e875cee 100644
--- a/internal/query/failed_events.go
+++ b/internal/query/failed_events.go
@@ -8,8 +8,8 @@ import (
sq "github.com/Masterminds/squirrel"
"github.com/zitadel/zitadel/internal/api/call"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -86,7 +86,7 @@ func (q *Queries) SearchFailedEvents(ctx context.Context, queries *FailedEventSe
query, scan := prepareFailedEventsQuery(ctx, q.client)
stmt, args, err := queries.toQuery(query).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-n8rjJ", "Errors.Query.InvalidRequest")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-n8rjJ", "Errors.Query.InvalidRequest")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -94,7 +94,7 @@ func (q *Queries) SearchFailedEvents(ctx context.Context, queries *FailedEventSe
return err
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-3j99J", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-3j99J", "Errors.Internal")
}
return failedEvents, nil
}
@@ -109,11 +109,11 @@ func (q *Queries) RemoveFailedEvent(ctx context.Context, projectionName, instanc
PlaceholderFormat(sq.Dollar).
ToSql()
if err != nil {
- return errors.ThrowInternal(err, "QUERY-DGgh3", "Errors.RemoveFailed")
+ return zerrors.ThrowInternal(err, "QUERY-DGgh3", "Errors.RemoveFailed")
}
_, err = q.client.ExecContext(ctx, stmt, args...)
if err != nil {
- return errors.ThrowInternal(err, "QUERY-0kbFF", "Errors.RemoveFailed")
+ return zerrors.ThrowInternal(err, "QUERY-0kbFF", "Errors.RemoveFailed")
}
return nil
}
@@ -175,7 +175,7 @@ func prepareFailedEventsQuery(ctx context.Context, db prepareDatabase) (sq.Selec
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-En99f", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-En99f", "Errors.Query.CloseRows")
}
return &FailedEvents{
diff --git a/internal/query/iam_member.go b/internal/query/iam_member.go
index ca30fc05f6..9f1c5521c9 100644
--- a/internal/query/iam_member.go
+++ b/internal/query/iam_member.go
@@ -9,9 +9,9 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -71,7 +71,7 @@ func (q *Queries) IAMMembers(ctx context.Context, queries *IAMMembersQuery) (mem
eq := sq.Eq{InstanceMemberInstanceID.identifier(): authz.GetInstance(ctx).InstanceID()}
stmt, args, err := queries.toQuery(query).Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-USNwM", "Errors.Query.InvalidRequest")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-USNwM", "Errors.Query.InvalidRequest")
}
currentSequence, err := q.latestState(ctx, instanceMemberTable)
@@ -84,7 +84,7 @@ func (q *Queries) IAMMembers(ctx context.Context, queries *IAMMembersQuery) (mem
return err
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Pdg1I", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Pdg1I", "Errors.Internal")
}
members.State = currentSequence
return members, err
@@ -172,7 +172,7 @@ func prepareInstanceMembersQuery(ctx context.Context, db prepareDatabase) (sq.Se
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-EqJFc", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-EqJFc", "Errors.Query.CloseRows")
}
return &Members{
diff --git a/internal/query/iam_member_test.go b/internal/query/iam_member_test.go
index 476e4e2358..8f1857eae9 100644
--- a/internal/query/iam_member_test.go
+++ b/internal/query/iam_member_test.go
@@ -21,21 +21,21 @@ var (
", members.user_id" +
", members.roles" +
", projections.login_names3.login_name" +
- ", projections.users9_humans.email" +
- ", projections.users9_humans.first_name" +
- ", projections.users9_humans.last_name" +
- ", projections.users9_humans.display_name" +
- ", projections.users9_machines.name" +
- ", projections.users9_humans.avatar_key" +
- ", projections.users9.type" +
+ ", projections.users10_humans.email" +
+ ", projections.users10_humans.first_name" +
+ ", projections.users10_humans.last_name" +
+ ", projections.users10_humans.display_name" +
+ ", projections.users10_machines.name" +
+ ", projections.users10_humans.avatar_key" +
+ ", projections.users10.type" +
", COUNT(*) OVER () " +
"FROM projections.instance_members4 AS members " +
- "LEFT JOIN projections.users9_humans " +
- "ON members.user_id = projections.users9_humans.user_id AND members.instance_id = projections.users9_humans.instance_id " +
- "LEFT JOIN projections.users9_machines " +
- "ON members.user_id = projections.users9_machines.user_id AND members.instance_id = projections.users9_machines.instance_id " +
- "LEFT JOIN projections.users9 " +
- "ON members.user_id = projections.users9.id AND members.instance_id = projections.users9.instance_id " +
+ "LEFT JOIN projections.users10_humans " +
+ "ON members.user_id = projections.users10_humans.user_id AND members.instance_id = projections.users10_humans.instance_id " +
+ "LEFT JOIN projections.users10_machines " +
+ "ON members.user_id = projections.users10_machines.user_id AND members.instance_id = projections.users10_machines.instance_id " +
+ "LEFT JOIN projections.users10 " +
+ "ON members.user_id = projections.users10.id AND members.instance_id = projections.users10.instance_id " +
"LEFT JOIN projections.login_names3 " +
"ON members.user_id = projections.login_names3.user_id AND members.instance_id = projections.login_names3.instance_id " +
"AS OF SYSTEM TIME '-1 ms' " +
diff --git a/internal/query/idp.go b/internal/query/idp.go
index 6dc4d4783b..06d96a76a5 100644
--- a/internal/query/idp.go
+++ b/internal/query/idp.go
@@ -3,7 +3,7 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"time"
sq "github.com/Masterminds/squirrel"
@@ -15,10 +15,10 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type IDP struct {
@@ -219,7 +219,7 @@ func (q *Queries) IDPByIDAndResourceOwner(ctx context.Context, shouldTriggerBulk
stmt, scan := prepareIDPByIDQuery(ctx, q.client)
query, args, err := stmt.Where(where).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-0gocI", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-0gocI", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -243,7 +243,7 @@ func (q *Queries) IDPs(ctx context.Context, queries *IDPSearchQueries, withOwner
}
stmt, args, err := queries.toQuery(query).Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-X6X7y", "Errors.Query.InvalidRequest")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-X6X7y", "Errors.Query.InvalidRequest")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -251,7 +251,7 @@ func (q *Queries) IDPs(ctx context.Context, queries *IDPSearchQueries, withOwner
return err
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-xPlVH", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-xPlVH", "Errors.Internal")
}
idps.State, err = q.latestState(ctx, idpTable)
return idps, err
@@ -370,10 +370,10 @@ func prepareIDPByIDQuery(ctx context.Context, db prepareDatabase) (sq.SelectBuil
&jwtEndpoint,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-rhR2o", "Errors.IDPConfig.NotExisting")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-rhR2o", "Errors.IDPConfig.NotExisting")
}
- return nil, errors.ThrowInternal(err, "QUERY-zE3Ro", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-zE3Ro", "Errors.Internal")
}
if oidcIDPID.Valid {
@@ -515,7 +515,7 @@ func prepareIDPsQuery(ctx context.Context, db prepareDatabase) (sq.SelectBuilder
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-iiBgK", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-iiBgK", "Errors.Query.CloseRows")
}
return &IDPs{
@@ -539,5 +539,5 @@ func (q *Queries) GetOIDCIDPClientSecret(ctx context.Context, shouldRealTime boo
if idp.ClientSecret != nil && idp.ClientSecret.Crypted != nil {
return crypto.DecryptString(idp.ClientSecret, q.idpConfigEncryption)
}
- return "", errors.ThrowNotFound(nil, "QUERY-bsm2o", "Errors.Query.NotFound")
+ return "", zerrors.ThrowNotFound(nil, "QUERY-bsm2o", "Errors.Query.NotFound")
}
diff --git a/internal/query/idp_login_policy_link.go b/internal/query/idp_login_policy_link.go
index 7bc60bf177..f257e88ad4 100644
--- a/internal/query/idp_login_policy_link.go
+++ b/internal/query/idp_login_policy_link.go
@@ -9,9 +9,9 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type IDPLoginPolicyLink struct {
@@ -103,7 +103,7 @@ func (q *Queries) IDPLoginPolicyLinks(ctx context.Context, resourceOwner string,
stmt, args, err := queries.toQuery(query).Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-FDbKW", "Errors.Query.InvalidRequest")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-FDbKW", "Errors.Query.InvalidRequest")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -111,7 +111,7 @@ func (q *Queries) IDPLoginPolicyLinks(ctx context.Context, resourceOwner string,
return err
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-ZkKUc", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-ZkKUc", "Errors.Internal")
}
idps.State, err = q.latestState(ctx, idpLoginPolicyLinkTable)
return idps, err
@@ -168,7 +168,7 @@ func prepareIDPLoginPolicyLinksQuery(ctx context.Context, db prepareDatabase, re
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-vOLFG", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-vOLFG", "Errors.Query.CloseRows")
}
return &IDPLoginPolicyLinks{
diff --git a/internal/query/idp_template.go b/internal/query/idp_template.go
index 39e68b8870..1cfdc14d5b 100644
--- a/internal/query/idp_template.go
+++ b/internal/query/idp_template.go
@@ -3,7 +3,7 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"time"
sq "github.com/Masterminds/squirrel"
@@ -15,11 +15,11 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/repository/idp"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type IDPTemplate struct {
@@ -723,7 +723,7 @@ func (q *Queries) IDPTemplateByID(ctx context.Context, shouldTriggerBulk bool, i
}
stmt, args, err := query.Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-SFefg", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-SFefg", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -747,7 +747,7 @@ func (q *Queries) IDPTemplates(ctx context.Context, queries *IDPTemplateSearchQu
}
stmt, args, err := queries.toQuery(query).Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-SAF34", "Errors.Query.InvalidRequest")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-SAF34", "Errors.Query.InvalidRequest")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -755,7 +755,7 @@ func (q *Queries) IDPTemplates(ctx context.Context, queries *IDPTemplateSearchQu
return err
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-BDFrq", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-BDFrq", "Errors.Internal")
}
idps.State, err = q.latestState(ctx, idpTemplateTable)
return idps, err
@@ -1136,10 +1136,10 @@ func prepareIDPTemplateByIDQuery(ctx context.Context, db prepareDatabase) (sq.Se
&appleScopes,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-SAFrt", "Errors.IDPConfig.NotExisting")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-SAFrt", "Errors.IDPConfig.NotExisting")
}
- return nil, errors.ThrowInternal(err, "QUERY-ADG42", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-ADG42", "Errors.Internal")
}
idpTemplate.Name = name.String
@@ -1771,7 +1771,7 @@ func prepareIDPTemplatesQuery(ctx context.Context, db prepareDatabase) (sq.Selec
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-SAGrt", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-SAGrt", "Errors.Query.CloseRows")
}
return &IDPTemplates{
diff --git a/internal/query/idp_template_test.go b/internal/query/idp_template_test.go
index 626e411c89..f95b6da05b 100644
--- a/internal/query/idp_template_test.go
+++ b/internal/query/idp_template_test.go
@@ -11,8 +11,8 @@ import (
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/repository/idp"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -509,7 +509,7 @@ func Test_IDPTemplateTemplatesPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
@@ -2132,7 +2132,7 @@ func Test_IDPTemplateTemplatesPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
diff --git a/internal/query/idp_test.go b/internal/query/idp_test.go
index 5b34fac069..9474a0c751 100644
--- a/internal/query/idp_test.go
+++ b/internal/query/idp_test.go
@@ -11,7 +11,7 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -150,7 +150,7 @@ func Test_IDPPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
@@ -353,7 +353,7 @@ func Test_IDPPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
diff --git a/internal/query/idp_user_link.go b/internal/query/idp_user_link.go
index 60d6066044..50e780c372 100644
--- a/internal/query/idp_user_link.go
+++ b/internal/query/idp_user_link.go
@@ -9,9 +9,9 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type IDPUserLink struct {
@@ -100,7 +100,7 @@ func (q *Queries) IDPUserLinks(ctx context.Context, queries *IDPUserLinksSearchQ
}
stmt, args, err := queries.toQuery(query).Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-4zzFK", "Errors.Query.InvalidRequest")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-4zzFK", "Errors.Query.InvalidRequest")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -108,7 +108,7 @@ func (q *Queries) IDPUserLinks(ctx context.Context, queries *IDPUserLinksSearchQ
return err
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-C1E4D", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-C1E4D", "Errors.Internal")
}
idps.State, err = q.latestState(ctx, idpUserLinkTable)
return idps, err
@@ -176,7 +176,7 @@ func prepareIDPUserLinksQuery(ctx context.Context, db prepareDatabase) (sq.Selec
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-nwx6U", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-nwx6U", "Errors.Query.CloseRows")
}
return &IDPUserLinks{
diff --git a/internal/query/instance.go b/internal/query/instance.go
index ba28bb6a24..7c8acdf310 100644
--- a/internal/query/instance.go
+++ b/internal/query/instance.go
@@ -3,7 +3,7 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"strings"
"time"
@@ -14,10 +14,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/database"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -174,7 +174,7 @@ func (q *Queries) SearchInstances(ctx context.Context, queries *InstanceSearchQu
filter, query, scan := prepareInstancesQuery(ctx, q.client)
stmt, args, err := query(queries.toQuery(filter)).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-M9fow", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-M9fow", "Errors.Query.SQLStatement")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -182,7 +182,7 @@ func (q *Queries) SearchInstances(ctx context.Context, queries *InstanceSearchQu
return err
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-3j98f", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-3j98f", "Errors.Internal")
}
return instances, err
}
@@ -203,7 +203,7 @@ func (q *Queries) Instance(ctx context.Context, shouldTriggerBulk bool) (instanc
InstanceColumnID.identifier(): authz.GetInstance(ctx).InstanceID(),
}).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-d9ngs", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-d9ngs", "Errors.Query.SQLStatement")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -223,7 +223,7 @@ func (q *Queries) InstanceByHost(ctx context.Context, host string) (instance aut
InstanceDomainDomainCol.identifier(): host,
}).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-SAfg2", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-SAfg2", "Errors.Query.SQLStatement")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -274,10 +274,10 @@ func prepareInstanceQuery(ctx context.Context, db prepareDatabase, host string)
&lang,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-5m09s", "Errors.IAM.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-5m09s", "Errors.IAM.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-3j9sf", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-3j9sf", "Errors.Internal")
}
instance.DefaultLang = language.Make(lang)
return instance, nil
@@ -377,7 +377,7 @@ func prepareInstancesQuery(ctx context.Context, db prepareDatabase) (sq.SelectBu
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-8nlWW", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-8nlWW", "Errors.Query.CloseRows")
}
return &Instances{
@@ -445,7 +445,7 @@ func prepareInstanceDomainQuery(ctx context.Context, db prepareDatabase, host st
&sequence,
)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-d9nw", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-d9nw", "Errors.Internal")
}
if !domain.Valid {
continue
@@ -461,11 +461,11 @@ func prepareInstanceDomainQuery(ctx context.Context, db prepareDatabase, host st
})
}
if instance.ID == "" {
- return nil, errors.ThrowNotFound(nil, "QUERY-n0wng", "Errors.IAM.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "QUERY-n0wng", "Errors.IAM.NotFound")
}
instance.DefaultLang = language.Make(lang)
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Dfbe2", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Dfbe2", "Errors.Query.CloseRows")
}
return instance, nil
}
@@ -533,7 +533,7 @@ func prepareAuthzInstanceQuery(ctx context.Context, db prepareDatabase, host str
&instance.csp.allowedOrigins,
)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-d3fas", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-d3fas", "Errors.Internal")
}
if !domain.Valid {
continue
@@ -550,11 +550,11 @@ func prepareAuthzInstanceQuery(ctx context.Context, db prepareDatabase, host str
instance.csp.enabled = securityPolicyEnabled.Bool
}
if instance.ID == "" {
- return nil, errors.ThrowNotFound(nil, "QUERY-1kIjX", "Errors.IAM.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "QUERY-1kIjX", "Errors.IAM.NotFound")
}
instance.DefaultLang = language.Make(lang)
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Dfbe2", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Dfbe2", "Errors.Query.CloseRows")
}
return instance, nil
}
diff --git a/internal/query/instance_domain.go b/internal/query/instance_domain.go
index ee5230f06b..285bd12936 100644
--- a/internal/query/instance_domain.go
+++ b/internal/query/instance_domain.go
@@ -9,9 +9,9 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type InstanceDomain struct {
@@ -68,7 +68,7 @@ func (q *Queries) SearchInstanceDomains(ctx context.Context, queries *InstanceDo
InstanceDomainInstanceIDCol.identifier(): authz.GetInstance(ctx).InstanceID(),
}).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-inlsF", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-inlsF", "Errors.Query.SQLStatement")
}
return q.queryInstanceDomains(ctx, stmt, scan, args...)
@@ -81,7 +81,7 @@ func (q *Queries) SearchInstanceDomainsGlobal(ctx context.Context, queries *Inst
query, scan := prepareInstanceDomainsQuery(ctx, q.client)
stmt, args, err := queries.toQuery(query).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-IHhLR", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-IHhLR", "Errors.Query.SQLStatement")
}
return q.queryInstanceDomains(ctx, stmt, scan, args...)
@@ -133,7 +133,7 @@ func prepareInstanceDomainsQuery(ctx context.Context, db prepareDatabase) (sq.Se
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-8nlWW", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-8nlWW", "Errors.Query.CloseRows")
}
return &InstanceDomains{
diff --git a/internal/query/instance_test.go b/internal/query/instance_test.go
index decd687e29..03b9937d5d 100644
--- a/internal/query/instance_test.go
+++ b/internal/query/instance_test.go
@@ -13,7 +13,7 @@ import (
sq "github.com/Masterminds/squirrel"
"golang.org/x/text/language"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -104,7 +104,7 @@ func Test_InstancePrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
diff --git a/internal/query/key.go b/internal/query/key.go
index 7447b11343..5e1f4fca5f 100644
--- a/internal/query/key.go
+++ b/internal/query/key.go
@@ -12,11 +12,11 @@ import (
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/repository/keypair"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Key interface {
@@ -193,7 +193,7 @@ func (q *Queries) ActivePublicKeys(ctx context.Context, t time.Time) (keys *Publ
sq.Gt{KeyPublicColExpiry.identifier(): t},
}).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-SDFfg", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-SDFfg", "Errors.Query.SQLStatement")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -201,11 +201,11 @@ func (q *Queries) ActivePublicKeys(ctx context.Context, t time.Time) (keys *Publ
return err
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Sghn4", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Sghn4", "Errors.Internal")
}
keys.State, err = q.latestState(ctx, keyTable)
- if !errors.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return keys, err
}
return keys, nil
@@ -228,7 +228,7 @@ func (q *Queries) ActivePrivateSigningKey(ctx context.Context, t time.Time) (key
sq.Gt{KeyPrivateColExpiry.identifier(): t},
}).OrderBy(KeyPrivateColExpiry.identifier()).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-SDff2", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-SDff2", "Errors.Query.SQLStatement")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -236,10 +236,10 @@ func (q *Queries) ActivePrivateSigningKey(ctx context.Context, t time.Time) (key
return err
}, query, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-WRFG4", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-WRFG4", "Errors.Internal")
}
keys.State, err = q.latestState(ctx, keyTable)
- if !errors.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return keys, err
}
return keys, nil
@@ -289,7 +289,7 @@ func preparePublicKeysQuery(ctx context.Context, db prepareDatabase) (sq.SelectB
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-rKd6k", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-rKd6k", "Errors.Query.CloseRows")
}
return &PublicKeys{
@@ -340,7 +340,7 @@ func preparePrivateKeysQuery(ctx context.Context, db prepareDatabase) (sq.Select
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-rKd6k", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-rKd6k", "Errors.Query.CloseRows")
}
return &PrivateKeys{
@@ -408,18 +408,18 @@ func (q *Queries) GetActivePublicKeyByID(ctx context.Context, keyID string, curr
return nil, err
}
if model.Algorithm == "" || model.Key == nil {
- return nil, errors.ThrowNotFound(err, "QUERY-Ahf7x", "Errors.Key.NotFound")
+ return nil, zerrors.ThrowNotFound(err, "QUERY-Ahf7x", "Errors.Key.NotFound")
}
if model.Expiry.Before(current) {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-ciF4k", "Errors.Key.ExpireBeforeNow")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-ciF4k", "Errors.Key.ExpireBeforeNow")
}
keyValue, err := crypto.Decrypt(model.Key, q.keyEncryptionAlgorithm)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Ie4oh", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Ie4oh", "Errors.Internal")
}
publicKey, err := crypto.BytesToPublicKey(keyValue)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Kai2Z", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Kai2Z", "Errors.Internal")
}
return &rsaPublicKey{
diff --git a/internal/query/key_test.go b/internal/query/key_test.go
index 553b635241..af3702c0e7 100644
--- a/internal/query/key_test.go
+++ b/internal/query/key_test.go
@@ -20,9 +20,9 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
key_repo "github.com/zitadel/zitadel/internal/repository/keypair"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -88,7 +88,7 @@ func Test_KeyPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
@@ -169,7 +169,7 @@ func Test_KeyPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
@@ -292,7 +292,7 @@ func TestQueries_GetActivePublicKeyByID(t *testing.T) {
eventstore: expectEventstore(
expectFilter(),
),
- wantErr: errs.ThrowNotFound(nil, "QUERY-Ahf7x", "Errors.Key.NotFound"),
+ wantErr: zerrors.ThrowNotFound(nil, "QUERY-Ahf7x", "Errors.Key.NotFound"),
},
{
name: "expired error",
@@ -324,7 +324,7 @@ func TestQueries_GetActivePublicKeyByID(t *testing.T) {
)),
),
),
- wantErr: errs.ThrowInvalidArgument(nil, "QUERY-ciF4k", "Errors.Key.ExpireBeforeNow"),
+ wantErr: zerrors.ThrowInvalidArgument(nil, "QUERY-ciF4k", "Errors.Key.ExpireBeforeNow"),
},
{
name: "decrypt error",
@@ -363,7 +363,7 @@ func TestQueries_GetActivePublicKeyByID(t *testing.T) {
expect.DecryptionKeyIDs().Return([]string{})
return encryption
},
- wantErr: errs.ThrowInternal(nil, "QUERY-Ie4oh", "Errors.Internal"),
+ wantErr: zerrors.ThrowInternal(nil, "QUERY-Ie4oh", "Errors.Internal"),
},
{
name: "parse error",
@@ -403,7 +403,7 @@ func TestQueries_GetActivePublicKeyByID(t *testing.T) {
expect.Decrypt([]byte("public"), "keyID").Return([]byte("foo"), nil)
return encryption
},
- wantErr: errs.ThrowInternal(nil, "QUERY-Kai2Z", "Errors.Internal"),
+ wantErr: zerrors.ThrowInternal(nil, "QUERY-Kai2Z", "Errors.Internal"),
},
{
name: "success",
diff --git a/internal/query/label_policy.go b/internal/query/label_policy.go
index fe21987adb..6dc7b00922 100644
--- a/internal/query/label_policy.go
+++ b/internal/query/label_policy.go
@@ -3,7 +3,7 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"time"
sq "github.com/Masterminds/squirrel"
@@ -11,9 +11,9 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type LabelPolicy struct {
@@ -66,7 +66,7 @@ func (q *Queries) ActiveLabelPolicyByOrg(ctx context.Context, orgID string, with
OrderBy(LabelPolicyColIsDefault.identifier()).
Limit(1).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-V22un", "unable to create sql stmt")
+ return nil, zerrors.ThrowInternal(err, "QUERY-V22un", "unable to create sql stmt")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -99,7 +99,7 @@ func (q *Queries) PreviewLabelPolicyByOrg(ctx context.Context, orgID string) (po
OrderBy(LabelPolicyColIsDefault.identifier()).
Limit(1).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-AG5eq", "unable to create sql stmt")
+ return nil, zerrors.ThrowInternal(err, "QUERY-AG5eq", "unable to create sql stmt")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -122,7 +122,7 @@ func (q *Queries) DefaultActiveLabelPolicy(ctx context.Context) (policy *LabelPo
OrderBy(LabelPolicyColIsDefault.identifier()).
Limit(1).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-mN0Ci", "unable to create sql stmt")
+ return nil, zerrors.ThrowInternal(err, "QUERY-mN0Ci", "unable to create sql stmt")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -145,7 +145,7 @@ func (q *Queries) DefaultPreviewLabelPolicy(ctx context.Context) (policy *LabelP
OrderBy(LabelPolicyColIsDefault.identifier()).
Limit(1).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-B3JQR", "unable to create sql stmt")
+ return nil, zerrors.ThrowInternal(err, "QUERY-B3JQR", "unable to create sql stmt")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -321,10 +321,10 @@ func prepareLabelPolicyQuery(ctx context.Context, db prepareDatabase) (sq.Select
&darkIconURL,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-bJEsm", "Errors.Org.PolicyNotExisting")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-bJEsm", "Errors.Org.PolicyNotExisting")
}
- return nil, errors.ThrowInternal(err, "QUERY-awLM6", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-awLM6", "Errors.Internal")
}
policy.FontURL = fontURL.String
diff --git a/internal/query/languages.go b/internal/query/languages.go
deleted file mode 100644
index f12c29677e..0000000000
--- a/internal/query/languages.go
+++ /dev/null
@@ -1,22 +0,0 @@
-package query
-
-import (
- "context"
-
- "github.com/zitadel/logging"
- "golang.org/x/text/language"
-
- "github.com/zitadel/zitadel/internal/i18n"
-)
-
-func (q *Queries) Languages(ctx context.Context) ([]language.Tag, error) {
- if len(q.supportedLangs) == 0 {
- langs, err := i18n.SupportedLanguages(q.LoginDir)
- if err != nil {
- logging.Log("ADMIN-tiMWs").WithError(err).Debug("unable to parse language")
- return nil, err
- }
- q.supportedLangs = langs
- }
- return q.supportedLangs, nil
-}
diff --git a/internal/query/limits.go b/internal/query/limits.go
index cf9635026d..bd03f4ad91 100644
--- a/internal/query/limits.go
+++ b/internal/query/limits.go
@@ -3,7 +3,7 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"time"
sq "github.com/Masterminds/squirrel"
@@ -11,9 +11,9 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/database"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -71,7 +71,7 @@ func (q *Queries) Limits(ctx context.Context, resourceOwner string) (limits *Lim
LimitsColumnResourceOwner.identifier(): resourceOwner,
}).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-jJe80", "Errors.Query.SQLStatment")
+ return nil, zerrors.ThrowInternal(err, "QUERY-jJe80", "Errors.Query.SQLStatment")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -106,10 +106,10 @@ func prepareLimitsQuery(ctx context.Context, db prepareDatabase) (sq.SelectBuild
&auditLogRetention,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-GU1em", "Errors.Limits.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-GU1em", "Errors.Limits.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-00jgy", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-00jgy", "Errors.Internal")
}
if auditLogRetention.Valid {
limits.AuditLogRetention = &auditLogRetention.Duration
diff --git a/internal/query/limits_test.go b/internal/query/limits_test.go
index 84e6e70e52..efd1272354 100644
--- a/internal/query/limits_test.go
+++ b/internal/query/limits_test.go
@@ -11,7 +11,7 @@ import (
"github.com/muhlemmer/gu"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -56,7 +56,7 @@ func Test_LimitsPrepare(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
diff --git a/internal/query/lockout_policy.go b/internal/query/lockout_policy.go
index d568427b24..e84750cc6d 100644
--- a/internal/query/lockout_policy.go
+++ b/internal/query/lockout_policy.go
@@ -3,7 +3,7 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"time"
sq "github.com/Masterminds/squirrel"
@@ -13,10 +13,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type LockoutPolicy struct {
@@ -113,7 +113,7 @@ func (q *Queries) LockoutPolicyByOrg(ctx context.Context, shouldTriggerBulk bool
OrderBy(LockoutColIsDefault.identifier()).
Limit(1).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-SKR6X", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-SKR6X", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -135,7 +135,7 @@ func (q *Queries) DefaultLockoutPolicy(ctx context.Context) (policy *LockoutPoli
OrderBy(LockoutColIsDefault.identifier()).
Limit(1).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-mN0Ci", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-mN0Ci", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -173,10 +173,10 @@ func prepareLockoutPolicyQuery(ctx context.Context, db prepareDatabase) (sq.Sele
&policy.State,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-63mtI", "Errors.PasswordComplexityPolicy.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-63mtI", "Errors.PasswordComplexityPolicy.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-uulCZ", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-uulCZ", "Errors.Internal")
}
return policy, nil
}
diff --git a/internal/query/lockout_policy_test.go b/internal/query/lockout_policy_test.go
index 0fefcf386e..044f6c291b 100644
--- a/internal/query/lockout_policy_test.go
+++ b/internal/query/lockout_policy_test.go
@@ -9,7 +9,7 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/domain"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -59,7 +59,7 @@ func Test_LockoutPolicyPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
diff --git a/internal/query/login_policy.go b/internal/query/login_policy.go
index fc4b12bf4b..7bd6597976 100644
--- a/internal/query/login_policy.go
+++ b/internal/query/login_policy.go
@@ -3,7 +3,7 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"time"
sq "github.com/Masterminds/squirrel"
@@ -14,10 +14,10 @@ import (
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type LoginPolicy struct {
@@ -194,7 +194,7 @@ func (q *Queries) LoginPolicyByID(ctx context.Context, shouldTriggerBulk bool, o
},
}).Limit(1).OrderBy(LoginPolicyColumnIsDefault.identifier()).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-scVHo", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-scVHo", "Errors.Query.SQLStatement")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -202,7 +202,7 @@ func (q *Queries) LoginPolicyByID(ctx context.Context, shouldTriggerBulk bool, o
return err
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-SWgr3", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-SWgr3", "Errors.Internal")
}
return policy, nil
}
@@ -233,7 +233,7 @@ func (q *Queries) DefaultLoginPolicy(ctx context.Context) (policy *LoginPolicy,
LoginPolicyColumnInstanceID.identifier(): authz.GetInstance(ctx).InstanceID(),
}).OrderBy(LoginPolicyColumnIsDefault.identifier()).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-t4TBK", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-t4TBK", "Errors.Query.SQLStatement")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -241,7 +241,7 @@ func (q *Queries) DefaultLoginPolicy(ctx context.Context) (policy *LoginPolicy,
return err
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-SArt2", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-SArt2", "Errors.Internal")
}
return policy, nil
}
@@ -268,7 +268,7 @@ func (q *Queries) SecondFactorsByOrg(ctx context.Context, orgID string) (factors
OrderBy(LoginPolicyColumnIsDefault.identifier()).
Limit(1).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-scVHo", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-scVHo", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -292,7 +292,7 @@ func (q *Queries) DefaultSecondFactors(ctx context.Context) (factors *SecondFact
LoginPolicyColumnInstanceID.identifier(): authz.GetInstance(ctx).InstanceID(),
}).OrderBy(LoginPolicyColumnIsDefault.identifier()).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-CZ2Nv", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-CZ2Nv", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -328,7 +328,7 @@ func (q *Queries) MultiFactorsByOrg(ctx context.Context, orgID string) (factors
OrderBy(LoginPolicyColumnIsDefault.identifier()).
Limit(1).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-B4o7h", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-B4o7h", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -352,7 +352,7 @@ func (q *Queries) DefaultMultiFactors(ctx context.Context) (factors *MultiFactor
LoginPolicyColumnInstanceID.identifier(): authz.GetInstance(ctx).InstanceID(),
}).OrderBy(LoginPolicyColumnIsDefault.identifier()).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-WxYjr", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-WxYjr", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -425,11 +425,11 @@ func prepareLoginPolicyQuery(ctx context.Context, db prepareDatabase) (sq.Select
&p.MultiFactorCheckLifetime,
)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-YcC53", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-YcC53", "Errors.Internal")
}
}
if p.OrgID == "" {
- return nil, errors.ThrowNotFound(nil, "QUERY-QsUBJ", "Errors.LoginPolicy.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "QUERY-QsUBJ", "Errors.LoginPolicy.NotFound")
}
p.DefaultRedirectURI = defaultRedirectURI.String
return p, nil
@@ -447,10 +447,10 @@ func prepareLoginPolicy2FAsQuery(ctx context.Context, db prepareDatabase) (sq.Se
&p.Factors,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-yPqIZ", "Errors.LoginPolicy.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-yPqIZ", "Errors.LoginPolicy.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-Mr6H3", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Mr6H3", "Errors.Internal")
}
p.Count = uint64(len(p.Factors))
@@ -469,10 +469,10 @@ func prepareLoginPolicyMFAsQuery(ctx context.Context, db prepareDatabase) (sq.Se
&p.Factors,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-yPqIZ", "Errors.LoginPolicy.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-yPqIZ", "Errors.LoginPolicy.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-Mr6H3", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Mr6H3", "Errors.Internal")
}
p.Count = uint64(len(p.Factors))
diff --git a/internal/query/login_policy_test.go b/internal/query/login_policy_test.go
index f346bd9e3a..7714fa302a 100644
--- a/internal/query/login_policy_test.go
+++ b/internal/query/login_policy_test.go
@@ -11,7 +11,7 @@ import (
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -104,7 +104,7 @@ func Test_LoginPolicyPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
@@ -201,7 +201,7 @@ func Test_LoginPolicyPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
@@ -269,7 +269,7 @@ func Test_LoginPolicyPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
diff --git a/internal/query/mail_template.go b/internal/query/mail_template.go
index f0872cf290..9d5ff83162 100644
--- a/internal/query/mail_template.go
+++ b/internal/query/mail_template.go
@@ -3,7 +3,7 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"time"
sq "github.com/Masterminds/squirrel"
@@ -11,9 +11,9 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type MailTemplate struct {
@@ -90,7 +90,7 @@ func (q *Queries) MailTemplateByOrg(ctx context.Context, orgID string, withOwner
OrderBy(MailTemplateColIsDefault.identifier()).
Limit(1).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-m0sJg", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-m0sJg", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -112,7 +112,7 @@ func (q *Queries) DefaultMailTemplate(ctx context.Context) (template *MailTempla
OrderBy(MailTemplateColIsDefault.identifier()).
Limit(1).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-2m0fH", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-2m0fH", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -146,10 +146,10 @@ func prepareMailTemplateQuery(ctx context.Context, db prepareDatabase) (sq.Selec
&policy.State,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-2NO0g", "Errors.MailTemplate.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-2NO0g", "Errors.MailTemplate.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-4Nisf", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-4Nisf", "Errors.Internal")
}
return policy, nil
}
diff --git a/internal/query/message_text.go b/internal/query/message_text.go
index 4bc656c0cc..dd2d9cd50b 100644
--- a/internal/query/message_text.go
+++ b/internal/query/message_text.go
@@ -4,10 +4,9 @@ import (
"context"
"database/sql"
"encoding/json"
- errs "errors"
+ "errors"
"fmt"
"io/ioutil"
- "net/http"
"os"
"time"
@@ -18,9 +17,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/i18n"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type MessageTexts struct {
@@ -137,7 +137,7 @@ func (q *Queries) DefaultMessageText(ctx context.Context) (text *MessageText, er
}).
Limit(1).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-1b9mf", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-1b9mf", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -157,7 +157,7 @@ func (q *Queries) DefaultMessageTextByTypeAndLanguageFromFileSystem(ctx context.
}
messageTexts := new(MessageTexts)
if err := yaml.Unmarshal(contents, messageTexts); err != nil {
- return nil, errors.ThrowInternal(err, "TEXT-3N9fs", "Errors.TranslationFile.ReadError")
+ return nil, zerrors.ThrowInternal(err, "TEXT-3N9fs", "Errors.TranslationFile.ReadError")
}
return messageTexts.GetMessageTextByType(messageType), nil
}
@@ -179,14 +179,14 @@ func (q *Queries) CustomMessageTextByTypeAndLanguage(ctx context.Context, aggreg
query, args, err := stmt.Where(eq).OrderBy(MessageTextColAggregateID.identifier()).Limit(1).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-1b9mf", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-1b9mf", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
msg, err = scan(row)
return err
}, query, args...)
- if errors.IsNotFound(err) {
+ if zerrors.IsNotFound(err) {
return q.IAMMessageTextByTypeAndLanguage(ctx, messageType, language)
}
return msg, err
@@ -202,7 +202,7 @@ func (q *Queries) IAMMessageTextByTypeAndLanguage(ctx context.Context, messageTy
}
notificationTextMap := make(map[string]interface{})
if err := yaml.Unmarshal(contents, ¬ificationTextMap); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-ekjFF", "Errors.TranslationFile.ReadError")
+ return nil, zerrors.ThrowInternal(err, "QUERY-ekjFF", "Errors.TranslationFile.ReadError")
}
texts, err := q.CustomTextList(ctx, authz.GetInstance(ctx).InstanceID(), messageType, language, false)
if err != nil {
@@ -218,11 +218,11 @@ func (q *Queries) IAMMessageTextByTypeAndLanguage(ctx context.Context, messageTy
jsonbody, err := json.Marshal(notificationTextMap)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-3m8fJ", "Errors.TranslationFile.MergeError")
+ return nil, zerrors.ThrowInternal(err, "QUERY-3m8fJ", "Errors.TranslationFile.MergeError")
}
notificationText := new(MessageTexts)
if err := json.Unmarshal(jsonbody, ¬ificationText); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-9MkfD", "Errors.TranslationFile.MergeError")
+ return nil, zerrors.ThrowInternal(err, "QUERY-9MkfD", "Errors.TranslationFile.MergeError")
}
result := notificationText.GetMessageTextByType(messageType)
result.IsDefault = true
@@ -236,9 +236,9 @@ func (q *Queries) readNotificationTextMessages(ctx context.Context, language str
var err error
contents, ok := q.NotificationTranslationFileContents[language]
if !ok {
- contents, err = q.readTranslationFile(q.NotificationDir, fmt.Sprintf("/i18n/%s.yaml", language))
- if errors.IsNotFound(err) {
- contents, err = q.readTranslationFile(q.NotificationDir, fmt.Sprintf("/i18n/%s.yaml", authz.GetInstance(ctx).DefaultLanguage().String()))
+ contents, err = q.readTranslationFile(i18n.NOTIFICATION, fmt.Sprintf("/i18n/%s.yaml", language))
+ if zerrors.IsNotFound(err) {
+ contents, err = q.readTranslationFile(i18n.NOTIFICATION, fmt.Sprintf("/i18n/%s.yaml", authz.GetInstance(ctx).DefaultLanguage().String()))
}
if err != nil {
return nil, err
@@ -294,10 +294,10 @@ func prepareMessageTextQuery(ctx context.Context, db prepareDatabase) (sq.Select
&footer,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-3nlrS", "Errors.MessageText.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-3nlrS", "Errors.MessageText.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-499gJ", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-499gJ", "Errors.Internal")
}
msg.Language = language.Make(lang)
msg.Title = title.String
@@ -311,17 +311,17 @@ func prepareMessageTextQuery(ctx context.Context, db prepareDatabase) (sq.Select
}
}
-func (q *Queries) readTranslationFile(dir http.FileSystem, filename string) ([]byte, error) {
- r, err := dir.Open(filename)
+func (q *Queries) readTranslationFile(namespace i18n.Namespace, filename string) ([]byte, error) {
+ r, err := i18n.LoadFilesystem(namespace).Open(filename)
if os.IsNotExist(err) {
- return nil, errors.ThrowNotFound(err, "QUERY-sN9wg", "Errors.TranslationFile.NotFound")
+ return nil, zerrors.ThrowNotFound(err, "QUERY-sN9wg", "Errors.TranslationFile.NotFound")
}
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-93njw", "Errors.TranslationFile.ReadError")
+ return nil, zerrors.ThrowInternal(err, "QUERY-93njw", "Errors.TranslationFile.ReadError")
}
contents, err := ioutil.ReadAll(r)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-l0fse", "Errors.TranslationFile.ReadError")
+ return nil, zerrors.ThrowInternal(err, "QUERY-l0fse", "Errors.TranslationFile.ReadError")
}
return contents, nil
}
diff --git a/internal/query/message_text_test.go b/internal/query/message_text_test.go
index 713066512f..09df5dcd83 100644
--- a/internal/query/message_text_test.go
+++ b/internal/query/message_text_test.go
@@ -11,7 +11,7 @@ import (
"golang.org/x/text/language"
"github.com/zitadel/zitadel/internal/domain"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -70,7 +70,7 @@ func Test_MessageTextPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
diff --git a/internal/query/milestone.go b/internal/query/milestone.go
index 7a91223c95..0b9c34fc76 100644
--- a/internal/query/milestone.go
+++ b/internal/query/milestone.go
@@ -9,10 +9,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/repository/milestone"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Milestones struct {
@@ -78,7 +78,7 @@ func (q *Queries) SearchMilestones(ctx context.Context, instanceIDs []string, qu
}
stmt, args, err := queries.toQuery(query).Where(sq.Eq{MilestoneInstanceIDColID.identifier(): instanceIDs}).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-A9i5k", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-A9i5k", "Errors.Query.SQLStatement")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
milestones, err = scan(rows)
diff --git a/internal/query/notification_policy.go b/internal/query/notification_policy.go
index ba0b2c549e..f3878e7987 100644
--- a/internal/query/notification_policy.go
+++ b/internal/query/notification_policy.go
@@ -3,7 +3,7 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"time"
sq "github.com/Masterminds/squirrel"
@@ -11,10 +11,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type NotificationPolicy struct {
@@ -104,7 +104,7 @@ func (q *Queries) NotificationPolicyByOrg(ctx context.Context, shouldTriggerBulk
}).
OrderBy(NotificationPolicyColIsDefault.identifier()).Limit(1).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Xuoapqm", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Xuoapqm", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -135,7 +135,7 @@ func (q *Queries) DefaultNotificationPolicy(ctx context.Context, shouldTriggerBu
OrderBy(NotificationPolicyColIsDefault.identifier()).
Limit(1).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-xlqp209", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-xlqp209", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -171,10 +171,10 @@ func prepareNotificationPolicyQuery(ctx context.Context, db prepareDatabase) (sq
&policy.State,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-x0so2p", "Errors.NotificationPolicy.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-x0so2p", "Errors.NotificationPolicy.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-Zixoooq", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Zixoooq", "Errors.Internal")
}
return policy, nil
}
diff --git a/internal/query/notification_policy_test.go b/internal/query/notification_policy_test.go
index 3c5de860fa..d755bdc544 100644
--- a/internal/query/notification_policy_test.go
+++ b/internal/query/notification_policy_test.go
@@ -9,7 +9,7 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/domain"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -56,7 +56,7 @@ func Test_NotificationPolicyPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be NotFoundError got: %w", err), false
}
return nil, true
diff --git a/internal/query/notification_provider.go b/internal/query/notification_provider.go
index 7ba7320e2a..b2038c603d 100644
--- a/internal/query/notification_provider.go
+++ b/internal/query/notification_provider.go
@@ -3,7 +3,7 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"time"
sq "github.com/Masterminds/squirrel"
@@ -11,9 +11,9 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type DebugNotificationProvider struct {
@@ -87,7 +87,7 @@ func (q *Queries) NotificationProviderByIDAndType(ctx context.Context, aggID str
}).
Limit(1).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-f9jSf", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-f9jSf", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -122,10 +122,10 @@ func prepareDebugNotificationProviderQuery(ctx context.Context, db prepareDataba
&p.Compact,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-s9ujf", "Errors.NotificationProvider.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-s9ujf", "Errors.NotificationProvider.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-2liu0", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-2liu0", "Errors.Internal")
}
return p, nil
}
diff --git a/internal/query/notification_provider_test.go b/internal/query/notification_provider_test.go
index b0bfbe5115..2fce31e118 100644
--- a/internal/query/notification_provider_test.go
+++ b/internal/query/notification_provider_test.go
@@ -9,7 +9,7 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/domain"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -56,7 +56,7 @@ func Test_NotificationProviderPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
diff --git a/internal/query/oidc_client.go b/internal/query/oidc_client.go
new file mode 100644
index 0000000000..7157f9e6ef
--- /dev/null
+++ b/internal/query/oidc_client.go
@@ -0,0 +1,60 @@
+package query
+
+import (
+ "context"
+ "database/sql"
+ _ "embed"
+ "errors"
+ "time"
+
+ "github.com/zitadel/zitadel/internal/api/authz"
+ "github.com/zitadel/zitadel/internal/crypto"
+ "github.com/zitadel/zitadel/internal/database"
+ "github.com/zitadel/zitadel/internal/domain"
+ "github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
+)
+
+type OIDCClient struct {
+ InstanceID string `json:"instance_id,omitempty"`
+ AppID string `json:"app_id,omitempty"`
+ State domain.AppState `json:"state,omitempty"`
+ ClientID string `json:"client_id,omitempty"`
+ ClientSecret *crypto.CryptoValue `json:"client_secret,omitempty"`
+ RedirectURIs []string `json:"redirect_uris,omitempty"`
+ ResponseTypes []domain.OIDCResponseType `json:"response_types,omitempty"`
+ GrantTypes []domain.OIDCGrantType `json:"grant_types,omitempty"`
+ ApplicationType domain.OIDCApplicationType `json:"application_type,omitempty"`
+ AuthMethodType domain.OIDCAuthMethodType `json:"auth_method_type,omitempty"`
+ PostLogoutRedirectURIs []string `json:"post_logout_redirect_uris,omitempty"`
+ IsDevMode bool `json:"is_dev_mode,omitempty"`
+ AccessTokenType domain.OIDCTokenType `json:"access_token_type,omitempty"`
+ AccessTokenRoleAssertion bool `json:"access_token_role_assertion,omitempty"`
+ IDTokenRoleAssertion bool `json:"id_token_role_assertion,omitempty"`
+ IDTokenUserinfoAssertion bool `json:"id_token_userinfo_assertion,omitempty"`
+ ClockSkew time.Duration `json:"clock_skew,omitempty"`
+ AdditionalOrigins []string `json:"additional_origins,omitempty"`
+ PublicKeys map[string][]byte `json:"public_keys,omitempty"`
+ ProjectID string `json:"project_id,omitempty"`
+ ProjectRoleKeys []string `json:"project_role_keys,omitempty"`
+ Settings *OIDCSettings `json:"settings,omitempty"`
+}
+
+//go:embed embed/oidc_client_by_id.sql
+var oidcClientQuery string
+
+func (q *Queries) GetOIDCClientByID(ctx context.Context, clientID string, getKeys bool) (client *OIDCClient, err error) {
+ ctx, span := tracing.NewSpan(ctx)
+ defer func() { span.EndWithError(err) }()
+
+ client, err = database.QueryJSONObject[OIDCClient](ctx, q.client, oidcClientQuery,
+ authz.GetInstance(ctx).InstanceID(), clientID, getKeys,
+ )
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-wu6Ee", "Errors.App.NotFound")
+ }
+ if err != nil {
+ return nil, zerrors.ThrowInternal(err, "QUERY-ieR7R", "Errors.Internal")
+ }
+ return client, err
+}
diff --git a/internal/query/oidc_client_test.go b/internal/query/oidc_client_test.go
new file mode 100644
index 0000000000..44f642ccea
--- /dev/null
+++ b/internal/query/oidc_client_test.go
@@ -0,0 +1,208 @@
+package query
+
+import (
+ "database/sql"
+ "database/sql/driver"
+ _ "embed"
+ "regexp"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+
+ "github.com/zitadel/zitadel/internal/api/authz"
+ "github.com/zitadel/zitadel/internal/crypto"
+ "github.com/zitadel/zitadel/internal/database"
+ "github.com/zitadel/zitadel/internal/domain"
+ "github.com/zitadel/zitadel/internal/zerrors"
+)
+
+var (
+ //go:embed testdata/oidc_client_jwt.json
+ testdataOidcClientJWT string
+ //go:embed testdata/oidc_client_public.json
+ testdataOidcClientPublic string
+ //go:embed testdata/oidc_client_secret.json
+ testdataOidcClientSecret string
+ //go:embed testdata/oidc_client_no_settings.json
+ testdataOidcClientNoSettings string
+)
+
+func TestQueries_GetOIDCClientByID(t *testing.T) {
+ expQuery := regexp.QuoteMeta(oidcClientQuery)
+ cols := []string{"client"}
+ pubkey := `-----BEGIN RSA PUBLIC KEY-----
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2ufAL1b72bIy1ar+Ws6b
+GohJJQFB7dfRapDqeqM8Ukp6CVdPzq/pOz1viAq50yzWZJryF+2wshFAKGF9A2/B
+2Yf9bJXPZ/KbkFrYT3NTvYDkvlaSTl9mMnzrU29s48F1PTWKfB+C3aMsOEG1BufV
+s63qF4nrEPjSbhljIco9FZq4XppIzhMQ0fDdA/+XygCJqvuaL0LibM1KrlUdnu71
+YekhSJjEPnvOisXIk4IXywoGIOwtjxkDvNItQvaMVldr4/kb6uvbgdWwq5EwBZXq
+low2kyJov38V4Uk2I8kuXpLcnrpw5Tio2ooiUE27b0vHZqBKOei9Uo88qCrn3EKx
+6QIDAQAB
+-----END RSA PUBLIC KEY-----
+`
+
+ tests := []struct {
+ name string
+ mock sqlExpectation
+ want *OIDCClient
+ wantErr error
+ }{
+ {
+ name: "no rows",
+ mock: mockQueryErr(expQuery, sql.ErrNoRows, "instanceID", "clientID", true),
+ wantErr: zerrors.ThrowNotFound(sql.ErrNoRows, "QUERY-wu6Ee", "Errors.App.NotFound"),
+ },
+ {
+ name: "internal error",
+ mock: mockQueryErr(expQuery, sql.ErrConnDone, "instanceID", "clientID", true),
+ wantErr: zerrors.ThrowInternal(sql.ErrConnDone, "QUERY-ieR7R", "Errors.Internal"),
+ },
+ {
+ name: "jwt client",
+ mock: mockQuery(expQuery, cols, []driver.Value{testdataOidcClientJWT}, "instanceID", "clientID", true),
+ want: &OIDCClient{
+ InstanceID: "230690539048009730",
+ AppID: "236647088211886082",
+ State: domain.AppStateActive,
+ ClientID: "236647088211951618@tests",
+ ClientSecret: nil,
+ RedirectURIs: []string{"http://localhost:9999/auth/callback"},
+ ResponseTypes: []domain.OIDCResponseType{domain.OIDCResponseTypeCode},
+ GrantTypes: []domain.OIDCGrantType{domain.OIDCGrantTypeAuthorizationCode, domain.OIDCGrantTypeRefreshToken},
+ ApplicationType: domain.OIDCApplicationTypeWeb,
+ AuthMethodType: domain.OIDCAuthMethodTypePrivateKeyJWT,
+ PostLogoutRedirectURIs: []string{"https://example.com/logout"},
+ IsDevMode: true,
+ AccessTokenType: domain.OIDCTokenTypeJWT,
+ AccessTokenRoleAssertion: true,
+ IDTokenRoleAssertion: true,
+ IDTokenUserinfoAssertion: true,
+ ClockSkew: 1000000000,
+ AdditionalOrigins: []string{"https://example.com"},
+ ProjectID: "236645808328409090",
+ PublicKeys: map[string][]byte{"236647201860747266": []byte(pubkey)},
+ ProjectRoleKeys: []string{"role1", "role2"},
+ Settings: &OIDCSettings{
+ AccessTokenLifetime: 43200000000000,
+ IdTokenLifetime: 43200000000000,
+ },
+ },
+ },
+ {
+ name: "public client",
+ mock: mockQuery(expQuery, cols, []driver.Value{testdataOidcClientPublic}, "instanceID", "clientID", true),
+ want: &OIDCClient{
+ InstanceID: "230690539048009730",
+ AppID: "236646457053020162",
+ State: domain.AppStateActive,
+ ClientID: "236646457053085698@tests",
+ ClientSecret: nil,
+ RedirectURIs: []string{"http://localhost:9999/auth/callback"},
+ ResponseTypes: []domain.OIDCResponseType{domain.OIDCResponseTypeCode},
+ GrantTypes: []domain.OIDCGrantType{domain.OIDCGrantTypeAuthorizationCode},
+ ApplicationType: domain.OIDCApplicationTypeWeb,
+ AuthMethodType: domain.OIDCAuthMethodTypeNone,
+ PostLogoutRedirectURIs: nil,
+ IsDevMode: true,
+ AccessTokenType: domain.OIDCTokenTypeBearer,
+ AccessTokenRoleAssertion: false,
+ IDTokenRoleAssertion: false,
+ IDTokenUserinfoAssertion: false,
+ ClockSkew: 0,
+ AdditionalOrigins: nil,
+ PublicKeys: nil,
+ ProjectID: "236645808328409090",
+ ProjectRoleKeys: []string{"role1", "role2"},
+ Settings: &OIDCSettings{
+ AccessTokenLifetime: 43200000000000,
+ IdTokenLifetime: 43200000000000,
+ },
+ },
+ },
+ {
+ name: "secret client",
+ mock: mockQuery(expQuery, cols, []driver.Value{testdataOidcClientSecret}, "instanceID", "clientID", true),
+ want: &OIDCClient{
+ InstanceID: "230690539048009730",
+ AppID: "236646858984783874",
+ State: domain.AppStateActive,
+ ClientID: "236646858984849410@tests",
+ ClientSecret: &crypto.CryptoValue{
+ CryptoType: crypto.TypeHash,
+ Algorithm: "bcrypt",
+ Crypted: []byte(`$2a$14$OzZ0XEZZEtD13py/EPba2evsS6WcKZ5orVMj9pWHEGEHmLu2h3PFq`),
+ },
+ RedirectURIs: []string{"http://localhost:9999/auth/callback"},
+ ResponseTypes: []domain.OIDCResponseType{0},
+ GrantTypes: []domain.OIDCGrantType{0},
+ ApplicationType: domain.OIDCApplicationTypeWeb,
+ AuthMethodType: domain.OIDCAuthMethodTypeBasic,
+ PostLogoutRedirectURIs: nil,
+ IsDevMode: true,
+ AccessTokenType: domain.OIDCTokenTypeBearer,
+ AccessTokenRoleAssertion: false,
+ IDTokenRoleAssertion: false,
+ IDTokenUserinfoAssertion: false,
+ ClockSkew: 0,
+ AdditionalOrigins: nil,
+ PublicKeys: nil,
+ ProjectID: "236645808328409090",
+ ProjectRoleKeys: []string{"role1", "role2"},
+ Settings: &OIDCSettings{
+ AccessTokenLifetime: 43200000000000,
+ IdTokenLifetime: 43200000000000,
+ },
+ },
+ },
+ {
+ name: "no oidc settings",
+ mock: mockQuery(expQuery, cols, []driver.Value{testdataOidcClientNoSettings}, "instanceID", "clientID", true),
+ want: &OIDCClient{
+ InstanceID: "239520764275982338",
+ AppID: "239520764276441090",
+ State: domain.AppStateActive,
+ ClientID: "239520764779364354@zitadel",
+ ClientSecret: nil,
+ RedirectURIs: []string{
+ "http://test2-qucuh5.localhost:9000/ui/console/auth/callback",
+ "http://test.localhost.com:9000/ui/console/auth/callback"},
+ ResponseTypes: []domain.OIDCResponseType{0},
+ GrantTypes: []domain.OIDCGrantType{0},
+ ApplicationType: domain.OIDCApplicationTypeUserAgent,
+ AuthMethodType: domain.OIDCAuthMethodTypeNone,
+ PostLogoutRedirectURIs: []string{
+ "http://test2-qucuh5.localhost:9000/ui/console/signedout",
+ "http://test.localhost.com:9000/ui/console/signedout",
+ },
+ IsDevMode: true,
+ AccessTokenType: domain.OIDCTokenTypeBearer,
+ AccessTokenRoleAssertion: false,
+ IDTokenRoleAssertion: false,
+ IDTokenUserinfoAssertion: false,
+ ClockSkew: 0,
+ AdditionalOrigins: nil,
+ PublicKeys: nil,
+ ProjectID: "239520764276178946",
+ ProjectRoleKeys: nil,
+ Settings: nil,
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ execMock(t, tt.mock, func(db *sql.DB) {
+ q := &Queries{
+ client: &database.DB{
+ DB: db,
+ Database: &prepareDB{},
+ },
+ }
+ ctx := authz.NewMockContext("instanceID", "orgID", "loginClient")
+ got, err := q.GetOIDCClientByID(ctx, "clientID", true)
+ require.ErrorIs(t, err, tt.wantErr)
+ assert.Equal(t, tt.want, got)
+ })
+ })
+ }
+}
diff --git a/internal/query/oidc_settings.go b/internal/query/oidc_settings.go
index 7e48ff43a7..32cbc32429 100644
--- a/internal/query/oidc_settings.go
+++ b/internal/query/oidc_settings.go
@@ -3,16 +3,16 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"time"
sq "github.com/Masterminds/squirrel"
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -69,10 +69,10 @@ type OIDCSettings struct {
ResourceOwner string
Sequence uint64
- AccessTokenLifetime time.Duration
- IdTokenLifetime time.Duration
- RefreshTokenIdleExpiration time.Duration
- RefreshTokenExpiration time.Duration
+ AccessTokenLifetime time.Duration `json:"access_token_lifetime,omitempty"`
+ IdTokenLifetime time.Duration `json:"id_token_lifetime,omitempty"`
+ RefreshTokenIdleExpiration time.Duration `json:"refresh_token_idle_expiration,omitempty"`
+ RefreshTokenExpiration time.Duration `json:"refresh_token_expiration,omitempty"`
}
func (q *Queries) OIDCSettingsByAggID(ctx context.Context, aggregateID string) (settings *OIDCSettings, err error) {
@@ -85,7 +85,7 @@ func (q *Queries) OIDCSettingsByAggID(ctx context.Context, aggregateID string) (
OIDCSettingsColumnInstanceID.identifier(): authz.GetInstance(ctx).InstanceID(),
}).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-s9nle", "Errors.Query.SQLStatment")
+ return nil, zerrors.ThrowInternal(err, "QUERY-s9nle", "Errors.Query.SQLStatment")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -122,10 +122,10 @@ func prepareOIDCSettingsQuery(ctx context.Context, db prepareDatabase) (sq.Selec
&oidcSettings.RefreshTokenExpiration,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-s9nlw", "Errors.OIDCSettings.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-s9nlw", "Errors.OIDCSettings.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-9bf8s", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-9bf8s", "Errors.Internal")
}
return oidcSettings, nil
}
diff --git a/internal/query/oidc_settings_test.go b/internal/query/oidc_settings_test.go
index d5aa653160..bdb5cb96ec 100644
--- a/internal/query/oidc_settings_test.go
+++ b/internal/query/oidc_settings_test.go
@@ -9,7 +9,7 @@ import (
"testing"
"time"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -58,7 +58,7 @@ func Test_OIDCConfigsPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
diff --git a/internal/query/org.go b/internal/query/org.go
index fcc53e6a08..65be2ff1a3 100644
--- a/internal/query/org.go
+++ b/internal/query/org.go
@@ -3,7 +3,7 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"time"
sq "github.com/Masterminds/squirrel"
@@ -13,10 +13,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
domain_pkg "github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -109,7 +109,7 @@ func (q *Queries) OrgByID(ctx context.Context, shouldTriggerBulk bool, id string
OrgColumnInstanceID.identifier(): authz.GetInstance(ctx).InstanceID(),
}).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-AWx52", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-AWx52", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -130,7 +130,7 @@ func (q *Queries) OrgByPrimaryDomain(ctx context.Context, domain string) (org *O
OrgColumnState.identifier(): domain_pkg.OrgStateActive,
}).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-TYUCE", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-TYUCE", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -151,7 +151,7 @@ func (q *Queries) OrgByVerifiedDomain(ctx context.Context, domain string) (org *
OrgColumnInstanceID.identifier(): authz.GetInstance(ctx).InstanceID(),
}).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-TYUCE", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-TYUCE", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -166,7 +166,7 @@ func (q *Queries) IsOrgUnique(ctx context.Context, name, domain string) (isUniqu
defer func() { span.EndWithError(err) }()
if name == "" && domain == "" {
- return false, errors.ThrowInvalidArgument(nil, "QUERY-DGqfd", "Errors.Query.InvalidRequest")
+ return false, zerrors.ThrowInvalidArgument(nil, "QUERY-DGqfd", "Errors.Query.InvalidRequest")
}
query, scan := prepareOrgUniqueQuery(ctx, q.client)
stmt, args, err := query.Where(
@@ -188,7 +188,7 @@ func (q *Queries) IsOrgUnique(ctx context.Context, name, domain string) (isUniqu
},
}).ToSql()
if err != nil {
- return false, errors.ThrowInternal(err, "QUERY-Dgbe2", "Errors.Query.SQLStatement")
+ return false, zerrors.ThrowInternal(err, "QUERY-Dgbe2", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -226,7 +226,7 @@ func (q *Queries) SearchOrgs(ctx context.Context, queries *OrgSearchQueries) (or
},
}).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-wQ3by", "Errors.Query.InvalidRequest")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-wQ3by", "Errors.Query.InvalidRequest")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -234,7 +234,7 @@ func (q *Queries) SearchOrgs(ctx context.Context, queries *OrgSearchQueries) (or
return err
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-M6mYN", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-M6mYN", "Errors.Internal")
}
orgs.State, err = q.latestState(ctx, orgsTable)
@@ -297,7 +297,7 @@ func prepareOrgsQuery(ctx context.Context, db prepareDatabase) (sq.SelectBuilder
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-QMXJv", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-QMXJv", "Errors.Query.CloseRows")
}
return &Orgs{
@@ -335,10 +335,10 @@ func prepareOrgQuery(ctx context.Context, db prepareDatabase) (sq.SelectBuilder,
&o.Domain,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-iTTGJ", "Errors.Org.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-iTTGJ", "Errors.Org.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-pWS5H", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-pWS5H", "Errors.Internal")
}
return o, nil
}
@@ -371,10 +371,10 @@ func prepareOrgWithDomainsQuery(ctx context.Context, db prepareDatabase) (sq.Sel
&o.Domain,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-iTTGJ", "Errors.Org.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-iTTGJ", "Errors.Org.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-pWS5H", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-pWS5H", "Errors.Internal")
}
return o, nil
}
@@ -388,7 +388,7 @@ func prepareOrgUniqueQuery(ctx context.Context, db prepareDatabase) (sq.SelectBu
func(row *sql.Row) (isUnique bool, err error) {
err = row.Scan(&isUnique)
if err != nil {
- return false, errors.ThrowInternal(err, "QUERY-e6EiG", "Errors.Internal")
+ return false, zerrors.ThrowInternal(err, "QUERY-e6EiG", "Errors.Internal")
}
return isUnique, err
}
diff --git a/internal/query/org_domain.go b/internal/query/org_domain.go
index d03f0291d8..595ba897d0 100644
--- a/internal/query/org_domain.go
+++ b/internal/query/org_domain.go
@@ -10,9 +10,9 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Domain struct {
@@ -67,7 +67,7 @@ func (q *Queries) SearchOrgDomains(ctx context.Context, queries *OrgDomainSearch
}
stmt, args, err := queries.toQuery(query).Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-ZRfj1", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-ZRfj1", "Errors.Query.SQLStatement")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -75,7 +75,7 @@ func (q *Queries) SearchOrgDomains(ctx context.Context, queries *OrgDomainSearch
return err
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-M6mYN", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-M6mYN", "Errors.Internal")
}
domains.State, err = q.latestState(ctx, orgDomainsTable)
@@ -118,7 +118,7 @@ func prepareDomainsQuery(ctx context.Context, db prepareDatabase) (sq.SelectBuil
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-rKd6k", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-rKd6k", "Errors.Query.CloseRows")
}
return &Domains{
diff --git a/internal/query/org_member.go b/internal/query/org_member.go
index 4b5aed92d1..ea452fe357 100644
--- a/internal/query/org_member.go
+++ b/internal/query/org_member.go
@@ -9,9 +9,9 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -73,7 +73,7 @@ func (q *Queries) OrgMembers(ctx context.Context, queries *OrgMembersQuery) (mem
eq := sq.Eq{OrgMemberInstanceID.identifier(): authz.GetInstance(ctx).InstanceID()}
stmt, args, err := queries.toQuery(query).Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-PDAVB", "Errors.Query.InvalidRequest")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-PDAVB", "Errors.Query.InvalidRequest")
}
currentSequence, err := q.latestState(ctx, orgsTable)
@@ -86,7 +86,7 @@ func (q *Queries) OrgMembers(ctx context.Context, queries *OrgMembersQuery) (mem
return err
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-5g4yV", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-5g4yV", "Errors.Internal")
}
members.State = currentSequence
@@ -175,7 +175,7 @@ func prepareOrgMembersQuery(ctx context.Context, db prepareDatabase) (sq.SelectB
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-N34NV", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-N34NV", "Errors.Query.CloseRows")
}
return &Members{
diff --git a/internal/query/org_member_test.go b/internal/query/org_member_test.go
index 7dc80dffae..37443d4dc9 100644
--- a/internal/query/org_member_test.go
+++ b/internal/query/org_member_test.go
@@ -21,24 +21,24 @@ var (
", members.user_id" +
", members.roles" +
", projections.login_names3.login_name" +
- ", projections.users9_humans.email" +
- ", projections.users9_humans.first_name" +
- ", projections.users9_humans.last_name" +
- ", projections.users9_humans.display_name" +
- ", projections.users9_machines.name" +
- ", projections.users9_humans.avatar_key" +
- ", projections.users9.type" +
+ ", projections.users10_humans.email" +
+ ", projections.users10_humans.first_name" +
+ ", projections.users10_humans.last_name" +
+ ", projections.users10_humans.display_name" +
+ ", projections.users10_machines.name" +
+ ", projections.users10_humans.avatar_key" +
+ ", projections.users10.type" +
", COUNT(*) OVER () " +
"FROM projections.org_members4 AS members " +
- "LEFT JOIN projections.users9_humans " +
- "ON members.user_id = projections.users9_humans.user_id " +
- "AND members.instance_id = projections.users9_humans.instance_id " +
- "LEFT JOIN projections.users9_machines " +
- "ON members.user_id = projections.users9_machines.user_id " +
- "AND members.instance_id = projections.users9_machines.instance_id " +
- "LEFT JOIN projections.users9 " +
- "ON members.user_id = projections.users9.id " +
- "AND members.instance_id = projections.users9.instance_id " +
+ "LEFT JOIN projections.users10_humans " +
+ "ON members.user_id = projections.users10_humans.user_id " +
+ "AND members.instance_id = projections.users10_humans.instance_id " +
+ "LEFT JOIN projections.users10_machines " +
+ "ON members.user_id = projections.users10_machines.user_id " +
+ "AND members.instance_id = projections.users10_machines.instance_id " +
+ "LEFT JOIN projections.users10 " +
+ "ON members.user_id = projections.users10.id " +
+ "AND members.instance_id = projections.users10.instance_id " +
"LEFT JOIN projections.login_names3 " +
"ON members.user_id = projections.login_names3.user_id " +
"AND members.instance_id = projections.login_names3.instance_id " +
diff --git a/internal/query/org_metadata.go b/internal/query/org_metadata.go
index d0c0e04c11..15007e0e56 100644
--- a/internal/query/org_metadata.go
+++ b/internal/query/org_metadata.go
@@ -3,7 +3,7 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"time"
sq "github.com/Masterminds/squirrel"
@@ -12,10 +12,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type OrgMetadataList struct {
@@ -105,7 +105,7 @@ func (q *Queries) GetOrgMetadataByKey(ctx context.Context, shouldTriggerBulk boo
}
stmt, args, err := query.Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-aDaG2", "Errors.Query.SQLStatment")
+ return nil, zerrors.ThrowInternal(err, "QUERY-aDaG2", "Errors.Query.SQLStatment")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -135,7 +135,7 @@ func (q *Queries) SearchOrgMetadata(ctx context.Context, shouldTriggerBulk bool,
query, scan := prepareOrgMetadataListQuery(ctx, q.client)
stmt, args, err := queries.toQuery(query).Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Egbld", "Errors.Query.SQLStatment")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Egbld", "Errors.Query.SQLStatment")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -143,7 +143,7 @@ func (q *Queries) SearchOrgMetadata(ctx context.Context, shouldTriggerBulk bool,
return err
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Ho2wf", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Ho2wf", "Errors.Internal")
}
metadata.State, err = q.latestState(ctx, orgMetadataTable)
@@ -198,10 +198,10 @@ func prepareOrgMetadataQuery(ctx context.Context, db prepareDatabase) (sq.Select
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-Rph32", "Errors.Metadata.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-Rph32", "Errors.Metadata.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-Hajt2", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Hajt2", "Errors.Internal")
}
return m, nil
}
@@ -240,7 +240,7 @@ func prepareOrgMetadataListQuery(ctx context.Context, db prepareDatabase) (sq.Se
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-dd3gh", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-dd3gh", "Errors.Query.CloseRows")
}
return &OrgMetadataList{
diff --git a/internal/query/org_metadata_test.go b/internal/query/org_metadata_test.go
index 600a2cca48..0225ef1c2a 100644
--- a/internal/query/org_metadata_test.go
+++ b/internal/query/org_metadata_test.go
@@ -8,7 +8,7 @@ import (
"regexp"
"testing"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -69,7 +69,7 @@ func Test_OrgMetadataPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
@@ -130,7 +130,7 @@ func Test_OrgMetadataPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
diff --git a/internal/query/org_test.go b/internal/query/org_test.go
index 55e9546297..fe9ba09f5a 100644
--- a/internal/query/org_test.go
+++ b/internal/query/org_test.go
@@ -4,7 +4,7 @@ import (
"context"
"database/sql"
"database/sql/driver"
- errs "errors"
+ "errors"
"fmt"
"regexp"
"testing"
@@ -13,7 +13,7 @@ import (
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -203,7 +203,7 @@ func Test_OrgPrepares(t *testing.T) {
sql.ErrConnDone,
),
err: func(err error) (error, bool) {
- if !errs.Is(err, sql.ErrConnDone) {
+ if !errors.Is(err, sql.ErrConnDone) {
return fmt.Errorf("err should be sql.ErrConnDone got: %w", err), false
}
return nil, true
@@ -221,7 +221,7 @@ func Test_OrgPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errors.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
@@ -268,7 +268,7 @@ func Test_OrgPrepares(t *testing.T) {
sql.ErrConnDone,
),
err: func(err error) (error, bool) {
- if !errs.Is(err, sql.ErrConnDone) {
+ if !errors.Is(err, sql.ErrConnDone) {
return fmt.Errorf("err should be sql.ErrConnDone got: %w", err), false
}
return nil, true
@@ -286,7 +286,7 @@ func Test_OrgPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errors.IsInternal(err) {
+ if !zerrors.IsInternal(err) {
return fmt.Errorf("err should be zitadel.Internal got: %w", err), false
}
return nil, true
@@ -317,7 +317,7 @@ func Test_OrgPrepares(t *testing.T) {
sql.ErrConnDone,
),
err: func(err error) (error, bool) {
- if !errs.Is(err, sql.ErrConnDone) {
+ if !errors.Is(err, sql.ErrConnDone) {
return fmt.Errorf("err should be sql.ErrConnDone got: %w", err), false
}
return nil, true
@@ -400,7 +400,7 @@ func TestQueries_IsOrgUnique(t *testing.T) {
},
want: want{
isUnique: false,
- err: errors.IsErrorInvalidArgument,
+ err: zerrors.IsErrorInvalidArgument,
},
},
}
diff --git a/internal/query/password_age_policy.go b/internal/query/password_age_policy.go
index dd22ed7156..a74980686d 100644
--- a/internal/query/password_age_policy.go
+++ b/internal/query/password_age_policy.go
@@ -3,7 +3,7 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"time"
sq "github.com/Masterminds/squirrel"
@@ -13,10 +13,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type PasswordAgePolicy struct {
@@ -110,7 +110,7 @@ func (q *Queries) PasswordAgePolicyByOrg(ctx context.Context, shouldTriggerBulk
OrderBy(PasswordAgeColIsDefault.identifier()).
Limit(1).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-SKR6X", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-SKR6X", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -138,7 +138,7 @@ func (q *Queries) DefaultPasswordAgePolicy(ctx context.Context, shouldTriggerBul
OrderBy(PasswordAgeColIsDefault.identifier()).
Limit(1).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-mN0Ci", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-mN0Ci", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -176,10 +176,10 @@ func preparePasswordAgePolicyQuery(ctx context.Context, db prepareDatabase) (sq.
&policy.State,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-63mtI", "Errors.Org.PasswordComplexity.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-63mtI", "Errors.Org.PasswordComplexity.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-uulCZ", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-uulCZ", "Errors.Internal")
}
return policy, nil
}
diff --git a/internal/query/password_age_policy_test.go b/internal/query/password_age_policy_test.go
index 738a8bb825..b140f82a06 100644
--- a/internal/query/password_age_policy_test.go
+++ b/internal/query/password_age_policy_test.go
@@ -9,7 +9,7 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/domain"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -58,7 +58,7 @@ func Test_PasswordAgePolicyPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
diff --git a/internal/query/password_complexity_policy.go b/internal/query/password_complexity_policy.go
index c72361f723..d9aba36c5c 100644
--- a/internal/query/password_complexity_policy.go
+++ b/internal/query/password_complexity_policy.go
@@ -3,7 +3,7 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"time"
sq "github.com/Masterminds/squirrel"
@@ -13,10 +13,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type PasswordComplexityPolicy struct {
@@ -62,7 +62,7 @@ func (q *Queries) PasswordComplexityPolicyByOrg(ctx context.Context, shouldTrigg
OrderBy(PasswordComplexityColIsDefault.identifier()).
Limit(1).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-lDnrk", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-lDnrk", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -91,7 +91,7 @@ func (q *Queries) DefaultPasswordComplexityPolicy(ctx context.Context, shouldTri
OrderBy(PasswordComplexityColIsDefault.identifier()).
Limit(1).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-h4Uyr", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-h4Uyr", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -198,10 +198,10 @@ func preparePasswordComplexityPolicyQuery(ctx context.Context, db prepareDatabas
&policy.State,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-63mtI", "Errors.PasswordComplexity.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-63mtI", "Errors.PasswordComplexity.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-uulCZ", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-uulCZ", "Errors.Internal")
}
return policy, nil
}
diff --git a/internal/query/password_complexity_policy_test.go b/internal/query/password_complexity_policy_test.go
index 3f3743831a..ac471f3994 100644
--- a/internal/query/password_complexity_policy_test.go
+++ b/internal/query/password_complexity_policy_test.go
@@ -9,7 +9,7 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/domain"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -64,7 +64,7 @@ func Test_PasswordComplexityPolicyPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
diff --git a/internal/query/privacy_policy.go b/internal/query/privacy_policy.go
index 1a08cfb020..2705f2b753 100644
--- a/internal/query/privacy_policy.go
+++ b/internal/query/privacy_policy.go
@@ -3,7 +3,7 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"time"
sq "github.com/Masterminds/squirrel"
@@ -13,10 +13,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type PrivacyPolicy struct {
@@ -119,7 +119,7 @@ func (q *Queries) PrivacyPolicyByOrg(ctx context.Context, shouldTriggerBulk bool
}).
OrderBy(PrivacyColIsDefault.identifier()).Limit(1).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-UXuPI", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-UXuPI", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -148,7 +148,7 @@ func (q *Queries) DefaultPrivacyPolicy(ctx context.Context, shouldTriggerBulk bo
OrderBy(PrivacyColIsDefault.identifier()).
Limit(1).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-LkFZ7", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-LkFZ7", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -190,10 +190,10 @@ func preparePrivacyPolicyQuery(ctx context.Context, db prepareDatabase) (sq.Sele
&policy.State,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-vNMHL", "Errors.PrivacyPolicy.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-vNMHL", "Errors.PrivacyPolicy.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-csrdo", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-csrdo", "Errors.Internal")
}
return policy, nil
}
diff --git a/internal/query/privacy_policy_test.go b/internal/query/privacy_policy_test.go
index 70b32723d9..55671eef6d 100644
--- a/internal/query/privacy_policy_test.go
+++ b/internal/query/privacy_policy_test.go
@@ -9,7 +9,7 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/domain"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -62,7 +62,7 @@ func Test_PrivacyPolicyPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be NotFoundError got: %w", err), false
}
return nil, true
diff --git a/internal/query/project.go b/internal/query/project.go
index 3876154b51..756039e9ce 100644
--- a/internal/query/project.go
+++ b/internal/query/project.go
@@ -3,7 +3,7 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"time"
sq "github.com/Masterminds/squirrel"
@@ -13,10 +13,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -117,7 +117,7 @@ func (q *Queries) ProjectByID(ctx context.Context, shouldTriggerBulk bool, id st
}
query, args, err := stmt.Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-2m00Q", "Errors.Query.SQLStatment")
+ return nil, zerrors.ThrowInternal(err, "QUERY-2m00Q", "Errors.Query.SQLStatment")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -135,7 +135,7 @@ func (q *Queries) SearchProjects(ctx context.Context, queries *ProjectSearchQuer
eq := sq.Eq{ProjectColumnInstanceID.identifier(): authz.GetInstance(ctx).InstanceID()}
stmt, args, err := queries.toQuery(query).Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-fn9ew", "Errors.Query.InvalidRequest")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-fn9ew", "Errors.Query.InvalidRequest")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -143,7 +143,7 @@ func (q *Queries) SearchProjects(ctx context.Context, queries *ProjectSearchQuer
return err
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-2j00f", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-2j00f", "Errors.Internal")
}
projects.State, err = q.latestState(ctx, projectsTable)
return projects, err
@@ -225,10 +225,10 @@ func prepareProjectQuery(ctx context.Context, db prepareDatabase) (sq.SelectBuil
&p.PrivateLabelingSetting,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-fk2fs", "Errors.Project.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-fk2fs", "Errors.Project.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-dj2FF", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-dj2FF", "Errors.Internal")
}
return p, nil
}
@@ -276,7 +276,7 @@ func prepareProjectsQuery(ctx context.Context, db prepareDatabase) (sq.SelectBui
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-QMXJv", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-QMXJv", "Errors.Query.CloseRows")
}
return &Projects{
diff --git a/internal/query/project_grant.go b/internal/query/project_grant.go
index 78fbc7cd6b..ac2d8696e1 100644
--- a/internal/query/project_grant.go
+++ b/internal/query/project_grant.go
@@ -3,7 +3,7 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"time"
sq "github.com/Masterminds/squirrel"
@@ -14,10 +14,10 @@ import (
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -124,7 +124,7 @@ func (q *Queries) ProjectGrantByID(ctx context.Context, shouldTriggerBulk bool,
}
query, args, err := stmt.Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Nf93d", "Errors.Query.SQLStatment")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Nf93d", "Errors.Query.SQLStatment")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -146,7 +146,7 @@ func (q *Queries) ProjectGrantByIDAndGrantedOrg(ctx context.Context, id, granted
}
query, args, err := stmt.Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-MO9fs", "Errors.Query.SQLStatment")
+ return nil, zerrors.ThrowInternal(err, "QUERY-MO9fs", "Errors.Query.SQLStatment")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -166,7 +166,7 @@ func (q *Queries) SearchProjectGrants(ctx context.Context, queries *ProjectGrant
}
stmt, args, err := queries.toQuery(query).Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-N9fsg", "Errors.Query.InvalidRequest")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-N9fsg", "Errors.Query.InvalidRequest")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -174,7 +174,7 @@ func (q *Queries) SearchProjectGrants(ctx context.Context, queries *ProjectGrant
return err
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-PP02n", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-PP02n", "Errors.Internal")
}
grants.State, err = q.latestState(ctx, projectGrantsTable)
@@ -310,10 +310,10 @@ func prepareProjectGrantQuery(ctx context.Context, db prepareDatabase) (sq.Selec
&resourceOwnerName,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-n98GGs", "Errors.ProjectGrant.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-n98GGs", "Errors.ProjectGrant.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-w9fsH", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-w9fsH", "Errors.Internal")
}
grant.ProjectName = projectName.String
@@ -385,7 +385,7 @@ func prepareProjectGrantsQuery(ctx context.Context, db prepareDatabase) (sq.Sele
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-K9gEE", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-K9gEE", "Errors.Query.CloseRows")
}
return &ProjectGrants{
diff --git a/internal/query/project_grant_member.go b/internal/query/project_grant_member.go
index 60eb0dc894..c13300713f 100644
--- a/internal/query/project_grant_member.go
+++ b/internal/query/project_grant_member.go
@@ -9,8 +9,8 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -82,7 +82,7 @@ func (q *Queries) ProjectGrantMembers(ctx context.Context, queries *ProjectGrant
eq := sq.Eq{ProjectGrantMemberInstanceID.identifier(): authz.GetInstance(ctx).InstanceID()}
stmt, args, err := queries.toQuery(query).Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-USNwM", "Errors.Query.InvalidRequest")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-USNwM", "Errors.Query.InvalidRequest")
}
currentSequence, err := q.latestState(ctx, projectGrantMemberTable)
@@ -95,7 +95,7 @@ func (q *Queries) ProjectGrantMembers(ctx context.Context, queries *ProjectGrant
return err
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Pdg1I", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Pdg1I", "Errors.Internal")
}
members.State = currentSequence
@@ -185,7 +185,7 @@ func prepareProjectGrantMembersQuery(ctx context.Context, db prepareDatabase) (s
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-EqJFc", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-EqJFc", "Errors.Query.CloseRows")
}
return &Members{
diff --git a/internal/query/project_grant_member_test.go b/internal/query/project_grant_member_test.go
index 2cf413913c..91cd210679 100644
--- a/internal/query/project_grant_member_test.go
+++ b/internal/query/project_grant_member_test.go
@@ -21,24 +21,24 @@ var (
", members.user_id" +
", members.roles" +
", projections.login_names3.login_name" +
- ", projections.users9_humans.email" +
- ", projections.users9_humans.first_name" +
- ", projections.users9_humans.last_name" +
- ", projections.users9_humans.display_name" +
- ", projections.users9_machines.name" +
- ", projections.users9_humans.avatar_key" +
- ", projections.users9.type" +
+ ", projections.users10_humans.email" +
+ ", projections.users10_humans.first_name" +
+ ", projections.users10_humans.last_name" +
+ ", projections.users10_humans.display_name" +
+ ", projections.users10_machines.name" +
+ ", projections.users10_humans.avatar_key" +
+ ", projections.users10.type" +
", COUNT(*) OVER () " +
"FROM projections.project_grant_members4 AS members " +
- "LEFT JOIN projections.users9_humans " +
- "ON members.user_id = projections.users9_humans.user_id " +
- "AND members.instance_id = projections.users9_humans.instance_id " +
- "LEFT JOIN projections.users9_machines " +
- "ON members.user_id = projections.users9_machines.user_id " +
- "AND members.instance_id = projections.users9_machines.instance_id " +
- "LEFT JOIN projections.users9 " +
- "ON members.user_id = projections.users9.id " +
- "AND members.instance_id = projections.users9.instance_id " +
+ "LEFT JOIN projections.users10_humans " +
+ "ON members.user_id = projections.users10_humans.user_id " +
+ "AND members.instance_id = projections.users10_humans.instance_id " +
+ "LEFT JOIN projections.users10_machines " +
+ "ON members.user_id = projections.users10_machines.user_id " +
+ "AND members.instance_id = projections.users10_machines.instance_id " +
+ "LEFT JOIN projections.users10 " +
+ "ON members.user_id = projections.users10.id " +
+ "AND members.instance_id = projections.users10.instance_id " +
"LEFT JOIN projections.login_names3 " +
"ON members.user_id = projections.login_names3.user_id " +
"AND members.instance_id = projections.login_names3.instance_id " +
diff --git a/internal/query/project_grant_test.go b/internal/query/project_grant_test.go
index e76fd96119..6d2131dfc4 100644
--- a/internal/query/project_grant_test.go
+++ b/internal/query/project_grant_test.go
@@ -10,7 +10,7 @@ import (
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -393,7 +393,7 @@ func Test_ProjectGrantPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
diff --git a/internal/query/project_member.go b/internal/query/project_member.go
index 989b608732..a86246bdd7 100644
--- a/internal/query/project_member.go
+++ b/internal/query/project_member.go
@@ -9,9 +9,9 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -73,7 +73,7 @@ func (q *Queries) ProjectMembers(ctx context.Context, queries *ProjectMembersQue
eq := sq.Eq{ProjectMemberInstanceID.identifier(): authz.GetInstance(ctx).InstanceID()}
stmt, args, err := queries.toQuery(query).Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-T8CuT", "Errors.Query.InvalidRequest")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-T8CuT", "Errors.Query.InvalidRequest")
}
currentSequence, err := q.latestState(ctx, projectMemberTable)
@@ -86,7 +86,7 @@ func (q *Queries) ProjectMembers(ctx context.Context, queries *ProjectMembersQue
return err
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-uh6pj", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-uh6pj", "Errors.Internal")
}
members.State = currentSequence
@@ -175,7 +175,7 @@ func prepareProjectMembersQuery(ctx context.Context, db prepareDatabase) (sq.Sel
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-ZJ1Ii", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-ZJ1Ii", "Errors.Query.CloseRows")
}
return &Members{
diff --git a/internal/query/project_member_test.go b/internal/query/project_member_test.go
index b280750247..defec46d49 100644
--- a/internal/query/project_member_test.go
+++ b/internal/query/project_member_test.go
@@ -21,24 +21,24 @@ var (
", members.user_id" +
", members.roles" +
", projections.login_names3.login_name" +
- ", projections.users9_humans.email" +
- ", projections.users9_humans.first_name" +
- ", projections.users9_humans.last_name" +
- ", projections.users9_humans.display_name" +
- ", projections.users9_machines.name" +
- ", projections.users9_humans.avatar_key" +
- ", projections.users9.type" +
+ ", projections.users10_humans.email" +
+ ", projections.users10_humans.first_name" +
+ ", projections.users10_humans.last_name" +
+ ", projections.users10_humans.display_name" +
+ ", projections.users10_machines.name" +
+ ", projections.users10_humans.avatar_key" +
+ ", projections.users10.type" +
", COUNT(*) OVER () " +
"FROM projections.project_members4 AS members " +
- "LEFT JOIN projections.users9_humans " +
- "ON members.user_id = projections.users9_humans.user_id " +
- "AND members.instance_id = projections.users9_humans.instance_id " +
- "LEFT JOIN projections.users9_machines " +
- "ON members.user_id = projections.users9_machines.user_id " +
- "AND members.instance_id = projections.users9_machines.instance_id " +
- "LEFT JOIN projections.users9 " +
- "ON members.user_id = projections.users9.id " +
- "AND members.instance_id = projections.users9.instance_id " +
+ "LEFT JOIN projections.users10_humans " +
+ "ON members.user_id = projections.users10_humans.user_id " +
+ "AND members.instance_id = projections.users10_humans.instance_id " +
+ "LEFT JOIN projections.users10_machines " +
+ "ON members.user_id = projections.users10_machines.user_id " +
+ "AND members.instance_id = projections.users10_machines.instance_id " +
+ "LEFT JOIN projections.users10 " +
+ "ON members.user_id = projections.users10.id " +
+ "AND members.instance_id = projections.users10.instance_id " +
"LEFT JOIN projections.login_names3 " +
"ON members.user_id = projections.login_names3.user_id " +
"AND members.instance_id = projections.login_names3.instance_id " +
diff --git a/internal/query/project_role.go b/internal/query/project_role.go
index e7a3fe288d..bca1957ef4 100644
--- a/internal/query/project_role.go
+++ b/internal/query/project_role.go
@@ -11,10 +11,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -98,7 +98,7 @@ func (q *Queries) SearchProjectRoles(ctx context.Context, shouldTriggerBulk bool
query, scan := prepareProjectRolesQuery(ctx, q.client)
stmt, args, err := queries.toQuery(query).Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-3N9ff", "Errors.Query.InvalidRequest")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-3N9ff", "Errors.Query.InvalidRequest")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -106,7 +106,7 @@ func (q *Queries) SearchProjectRoles(ctx context.Context, shouldTriggerBulk bool
return err
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-5Ngd9", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-5Ngd9", "Errors.Internal")
}
roles.State, err = q.latestState(ctx, projectRolesTable)
return roles, err
@@ -130,7 +130,7 @@ func (q *Queries) SearchGrantedProjectRoles(ctx context.Context, grantID, grante
query, scan := prepareProjectRolesQuery(ctx, q.client)
stmt, args, err := queries.toQuery(query).Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-3N9ff", "Errors.Query.InvalidRequest")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-3N9ff", "Errors.Query.InvalidRequest")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -138,7 +138,7 @@ func (q *Queries) SearchGrantedProjectRoles(ctx context.Context, grantID, grante
return err
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-5Ngd9", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-5Ngd9", "Errors.Internal")
}
roles.State, err = q.latestState(ctx, projectRolesTable)
@@ -244,7 +244,7 @@ func prepareProjectRolesQuery(ctx context.Context, db prepareDatabase) (sq.Selec
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-ML0Fs", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-ML0Fs", "Errors.Query.CloseRows")
}
return &ProjectRoles{
diff --git a/internal/query/project_test.go b/internal/query/project_test.go
index eadc60430a..a621c27f42 100644
--- a/internal/query/project_test.go
+++ b/internal/query/project_test.go
@@ -9,7 +9,7 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/domain"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -250,7 +250,7 @@ func Test_ProjectPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
diff --git a/internal/query/projection/action.go b/internal/query/projection/action.go
index 0bdfccce05..13ff7437ae 100644
--- a/internal/query/projection/action.go
+++ b/internal/query/projection/action.go
@@ -4,13 +4,13 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/action"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -113,7 +113,7 @@ func (p *actionProjection) Reducers() []handler.AggregateReducer {
func (p *actionProjection) reduceActionAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*action.AddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Dff21", "reduce.wrong.event.type% s", action.AddedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Dff21", "reduce.wrong.event.type% s", action.AddedEventType)
}
return handler.NewCreateStatement(
e,
@@ -136,7 +136,7 @@ func (p *actionProjection) reduceActionAdded(event eventstore.Event) (*handler.S
func (p *actionProjection) reduceActionChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*action.ChangedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Gg43d", "reduce.wrong.event.type %s", action.ChangedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Gg43d", "reduce.wrong.event.type %s", action.ChangedEventType)
}
values := []handler.Column{
handler.NewCol(ActionChangeDateCol, e.CreationDate()),
@@ -167,7 +167,7 @@ func (p *actionProjection) reduceActionChanged(event eventstore.Event) (*handler
func (p *actionProjection) reduceActionDeactivated(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*action.DeactivatedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Fgh32", "reduce.wrong.event.type %s", action.DeactivatedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Fgh32", "reduce.wrong.event.type %s", action.DeactivatedEventType)
}
return handler.NewUpdateStatement(
e,
@@ -186,7 +186,7 @@ func (p *actionProjection) reduceActionDeactivated(event eventstore.Event) (*han
func (p *actionProjection) reduceActionReactivated(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*action.ReactivatedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-hwdqa", "reduce.wrong.event.type %s", action.ReactivatedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-hwdqa", "reduce.wrong.event.type %s", action.ReactivatedEventType)
}
return handler.NewUpdateStatement(
e,
@@ -205,7 +205,7 @@ func (p *actionProjection) reduceActionReactivated(event eventstore.Event) (*han
func (p *actionProjection) reduceActionRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*action.RemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Dgh2d", "reduce.wrong.event.type %s", action.RemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Dgh2d", "reduce.wrong.event.type %s", action.RemovedEventType)
}
return handler.NewDeleteStatement(
e,
@@ -219,7 +219,7 @@ func (p *actionProjection) reduceActionRemoved(event eventstore.Event) (*handler
func (p *actionProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-mSmWM", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-mSmWM", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewDeleteStatement(
e,
diff --git a/internal/query/projection/action_test.go b/internal/query/projection/action_test.go
index 71dacb9d8e..0f5e382737 100644
--- a/internal/query/projection/action_test.go
+++ b/internal/query/projection/action_test.go
@@ -5,12 +5,12 @@ import (
"time"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/action"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestActionProjection_reduces(t *testing.T) {
@@ -249,7 +249,7 @@ func TestActionProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/app.go b/internal/query/projection/app.go
index 97e7da21f8..9198ecfb20 100644
--- a/internal/query/projection/app.go
+++ b/internal/query/projection/app.go
@@ -5,13 +5,13 @@ import (
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/project"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -232,7 +232,7 @@ func (p *appProjection) Reducers() []handler.AggregateReducer {
func (p *appProjection) reduceAppAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.ApplicationAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-1xYE6", "reduce.wrong.event.type %s", project.ApplicationAddedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-1xYE6", "reduce.wrong.event.type %s", project.ApplicationAddedType)
}
return handler.NewCreateStatement(
e,
@@ -253,7 +253,7 @@ func (p *appProjection) reduceAppAdded(event eventstore.Event) (*handler.Stateme
func (p *appProjection) reduceAppChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.ApplicationChangedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-ZJ8JA", "reduce.wrong.event.type %s", project.ApplicationChangedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-ZJ8JA", "reduce.wrong.event.type %s", project.ApplicationChangedType)
}
if e.Name == "" {
return handler.NewNoOpStatement(event), nil
@@ -275,7 +275,7 @@ func (p *appProjection) reduceAppChanged(event eventstore.Event) (*handler.State
func (p *appProjection) reduceAppDeactivated(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.ApplicationDeactivatedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-MVWxZ", "reduce.wrong.event.type %s", project.ApplicationDeactivatedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-MVWxZ", "reduce.wrong.event.type %s", project.ApplicationDeactivatedType)
}
return handler.NewUpdateStatement(
e,
@@ -294,7 +294,7 @@ func (p *appProjection) reduceAppDeactivated(event eventstore.Event) (*handler.S
func (p *appProjection) reduceAppReactivated(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.ApplicationReactivatedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-D0HZO", "reduce.wrong.event.type %s", project.ApplicationReactivatedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-D0HZO", "reduce.wrong.event.type %s", project.ApplicationReactivatedType)
}
return handler.NewUpdateStatement(
e,
@@ -313,7 +313,7 @@ func (p *appProjection) reduceAppReactivated(event eventstore.Event) (*handler.S
func (p *appProjection) reduceAppRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.ApplicationRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Y99aq", "reduce.wrong.event.type %s", project.ApplicationRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Y99aq", "reduce.wrong.event.type %s", project.ApplicationRemovedType)
}
return handler.NewDeleteStatement(
e,
@@ -327,7 +327,7 @@ func (p *appProjection) reduceAppRemoved(event eventstore.Event) (*handler.State
func (p *appProjection) reduceProjectRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.ProjectRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-DlUlO", "reduce.wrong.event.type %s", project.ProjectRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-DlUlO", "reduce.wrong.event.type %s", project.ProjectRemovedType)
}
return handler.NewDeleteStatement(
e,
@@ -341,7 +341,7 @@ func (p *appProjection) reduceProjectRemoved(event eventstore.Event) (*handler.S
func (p *appProjection) reduceAPIConfigAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.APIConfigAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Y99aq", "reduce.wrong.event.type %s", project.APIConfigAddedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Y99aq", "reduce.wrong.event.type %s", project.APIConfigAddedType)
}
return handler.NewMultiStatement(
e,
@@ -371,7 +371,7 @@ func (p *appProjection) reduceAPIConfigAdded(event eventstore.Event) (*handler.S
func (p *appProjection) reduceAPIConfigChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.APIConfigChangedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-vnZKi", "reduce.wrong.event.type %s", project.APIConfigChangedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-vnZKi", "reduce.wrong.event.type %s", project.APIConfigChangedType)
}
cols := make([]handler.Column, 0, 2)
if e.ClientSecret != nil {
@@ -409,7 +409,7 @@ func (p *appProjection) reduceAPIConfigChanged(event eventstore.Event) (*handler
func (p *appProjection) reduceAPIConfigSecretChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.APIConfigSecretChangedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-ttb0I", "reduce.wrong.event.type %s", project.APIConfigSecretChangedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-ttb0I", "reduce.wrong.event.type %s", project.APIConfigSecretChangedType)
}
return handler.NewMultiStatement(
e,
@@ -439,7 +439,7 @@ func (p *appProjection) reduceAPIConfigSecretChanged(event eventstore.Event) (*h
func (p *appProjection) reduceOIDCConfigAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.OIDCConfigAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-GNHU1", "reduce.wrong.event.type %s", project.OIDCConfigAddedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-GNHU1", "reduce.wrong.event.type %s", project.OIDCConfigAddedType)
}
return handler.NewMultiStatement(
e,
@@ -483,7 +483,7 @@ func (p *appProjection) reduceOIDCConfigAdded(event eventstore.Event) (*handler.
func (p *appProjection) reduceOIDCConfigChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.OIDCConfigChangedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-GNHU1", "reduce.wrong.event.type %s", project.OIDCConfigChangedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-GNHU1", "reduce.wrong.event.type %s", project.OIDCConfigChangedType)
}
cols := make([]handler.Column, 0, 15)
@@ -563,7 +563,7 @@ func (p *appProjection) reduceOIDCConfigChanged(event eventstore.Event) (*handle
func (p *appProjection) reduceOIDCConfigSecretChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.OIDCConfigSecretChangedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-GNHU1", "reduce.wrong.event.type %s", project.OIDCConfigSecretChangedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-GNHU1", "reduce.wrong.event.type %s", project.OIDCConfigSecretChangedType)
}
return handler.NewMultiStatement(
e,
@@ -593,7 +593,7 @@ func (p *appProjection) reduceOIDCConfigSecretChanged(event eventstore.Event) (*
func (p *appProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-Hyd1f", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-Hyd1f", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewDeleteStatement(
@@ -608,7 +608,7 @@ func (p *appProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Sta
func (p *appProjection) reduceSAMLConfigAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.SAMLConfigAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgument(nil, "HANDL-GMHU1", "reduce.wrong.event.type")
+ return nil, zerrors.ThrowInvalidArgument(nil, "HANDL-GMHU1", "reduce.wrong.event.type")
}
return handler.NewMultiStatement(
e,
@@ -638,7 +638,7 @@ func (p *appProjection) reduceSAMLConfigAdded(event eventstore.Event) (*handler.
func (p *appProjection) reduceSAMLConfigChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.SAMLConfigChangedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgument(nil, "HANDL-GMHU2", "reduce.wrong.event.type")
+ return nil, zerrors.ThrowInvalidArgument(nil, "HANDL-GMHU2", "reduce.wrong.event.type")
}
cols := make([]handler.Column, 0, 3)
diff --git a/internal/query/projection/app_test.go b/internal/query/projection/app_test.go
index 8ce659be25..41d7fb24d0 100644
--- a/internal/query/projection/app_test.go
+++ b/internal/query/projection/app_test.go
@@ -6,12 +6,12 @@ import (
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/project"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestAppProjection_reduces(t *testing.T) {
@@ -645,7 +645,7 @@ func TestAppProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/assert.go b/internal/query/projection/assert.go
index 369a6da698..96ed195435 100644
--- a/internal/query/projection/assert.go
+++ b/internal/query/projection/assert.go
@@ -1,14 +1,14 @@
package projection
import (
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func assertEvent[T eventstore.Event](event eventstore.Event) (T, error) {
e, ok := event.(T)
if !ok {
- return e, errors.ThrowInvalidArgumentf(nil, "HANDL-1m9fS", "reduce.wrong.event.type %T", event)
+ return e, zerrors.ThrowInvalidArgumentf(nil, "HANDL-1m9fS", "reduce.wrong.event.type %T", event)
}
return e, nil
}
diff --git a/internal/query/projection/auth_request.go b/internal/query/projection/auth_request.go
index 193f67c585..02a98094b7 100644
--- a/internal/query/projection/auth_request.go
+++ b/internal/query/projection/auth_request.go
@@ -3,12 +3,12 @@ package projection
import (
"context"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/authrequest"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -100,7 +100,7 @@ func (p *authRequestProjection) Reducers() []handler.AggregateReducer {
func (p *authRequestProjection) reduceAuthRequestAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*authrequest.AddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Sfwfa", "reduce.wrong.event.type %s", authrequest.AddedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Sfwfa", "reduce.wrong.event.type %s", authrequest.AddedType)
}
return handler.NewCreateStatement(
@@ -131,7 +131,7 @@ func (p *authRequestProjection) reduceAuthRequestEnded(event eventstore.Event) (
*authrequest.FailedEvent:
break
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-ASF3h", "reduce.wrong.event.type %s", []eventstore.EventType{authrequest.SucceededType, authrequest.FailedType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-ASF3h", "reduce.wrong.event.type %s", []eventstore.EventType{authrequest.SucceededType, authrequest.FailedType})
}
return handler.NewDeleteStatement(
diff --git a/internal/query/projection/auth_request_test.go b/internal/query/projection/auth_request_test.go
index bda25fdf37..66da1c0dcf 100644
--- a/internal/query/projection/auth_request_test.go
+++ b/internal/query/projection/auth_request_test.go
@@ -7,10 +7,10 @@ import (
"github.com/muhlemmer/gu"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/authrequest"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestAuthRequestProjection_reduces(t *testing.T) {
@@ -119,7 +119,7 @@ func TestAuthRequestProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if !errors.IsErrorInvalidArgument(err) {
+ if !zerrors.IsErrorInvalidArgument(err) {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/authn_key.go b/internal/query/projection/authn_key.go
index bc14c917eb..e2229ad332 100644
--- a/internal/query/projection/authn_key.go
+++ b/internal/query/projection/authn_key.go
@@ -5,7 +5,6 @@ import (
"time"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
@@ -13,6 +12,7 @@ import (
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/project"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -163,7 +163,7 @@ func (p *authNKeyProjection) reduceAuthNKeyAdded(event eventstore.Event) (*handl
authNKeyEvent.publicKey = e.PublicKey
authNKeyEvent.keyType = e.KeyType
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-Dgb32", "reduce.wrong.event.type %v", []eventstore.EventType{project.ApplicationKeyAddedEventType, user.MachineKeyAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-Dgb32", "reduce.wrong.event.type %v", []eventstore.EventType{project.ApplicationKeyAddedEventType, user.MachineKeyAddedEventType})
}
return handler.NewCreateStatement(
&authNKeyEvent,
@@ -207,7 +207,7 @@ func (p *authNKeyProjection) reduceAuthNKeyEnabledChanged(event eventstore.Event
changeDate = e.CreationDate()
sequence = e.Sequence()
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-Dbrt1", "reduce.wrong.event.type %v", []eventstore.EventType{project.APIConfigChangedType, project.OIDCConfigChangedType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-Dbrt1", "reduce.wrong.event.type %v", []eventstore.EventType{project.APIConfigChangedType, project.OIDCConfigChangedType})
}
return handler.NewUpdateStatement(
event,
@@ -237,7 +237,7 @@ func (p *authNKeyProjection) reduceAuthNKeyRemoved(event eventstore.Event) (*han
case *user.UserRemovedEvent:
condition = handler.NewCond(AuthNKeyAggregateIDCol, e.Aggregate().ID)
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-BGge42", "reduce.wrong.event.type %v", []eventstore.EventType{project.ApplicationKeyRemovedEventType, project.ApplicationRemovedType, project.ProjectRemovedType, user.MachineKeyRemovedEventType, user.UserRemovedType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-BGge42", "reduce.wrong.event.type %v", []eventstore.EventType{project.ApplicationKeyRemovedEventType, project.ApplicationRemovedType, project.ProjectRemovedType, user.MachineKeyRemovedEventType, user.UserRemovedType})
}
return handler.NewDeleteStatement(
event,
@@ -251,7 +251,7 @@ func (p *authNKeyProjection) reduceAuthNKeyRemoved(event eventstore.Event) (*han
func (p *authNKeyProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-Hyd1f", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-Hyd1f", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewDeleteStatement(
diff --git a/internal/query/projection/authn_key_test.go b/internal/query/projection/authn_key_test.go
index bc016f3758..81879995ce 100644
--- a/internal/query/projection/authn_key_test.go
+++ b/internal/query/projection/authn_key_test.go
@@ -4,13 +4,13 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/project"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestAuthNKeyProjection_reduces(t *testing.T) {
@@ -502,7 +502,7 @@ func TestAuthNKeyProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if !errors.IsErrorInvalidArgument(err) {
+ if !zerrors.IsErrorInvalidArgument(err) {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/custom_text.go b/internal/query/projection/custom_text.go
index a406f4e50b..255902dd7b 100644
--- a/internal/query/projection/custom_text.go
+++ b/internal/query/projection/custom_text.go
@@ -3,13 +3,13 @@ package projection
import (
"context"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/policy"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -117,7 +117,7 @@ func (p *customTextProjection) reduceSet(event eventstore.Event) (*handler.State
customTextEvent = e.CustomTextSetEvent
isDefault = true
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-KKfw4", "reduce.wrong.event.type %v", []eventstore.EventType{org.CustomTextSetEventType, instance.CustomTextSetEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-KKfw4", "reduce.wrong.event.type %v", []eventstore.EventType{org.CustomTextSetEventType, instance.CustomTextSetEventType})
}
return handler.NewUpsertStatement(
&customTextEvent,
@@ -150,7 +150,7 @@ func (p *customTextProjection) reduceRemoved(event eventstore.Event) (*handler.S
case *instance.CustomTextRemovedEvent:
customTextEvent = e.CustomTextRemovedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-n9wJg", "reduce.wrong.event.type %v", []eventstore.EventType{org.CustomTextRemovedEventType, instance.CustomTextRemovedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-n9wJg", "reduce.wrong.event.type %v", []eventstore.EventType{org.CustomTextRemovedEventType, instance.CustomTextRemovedEventType})
}
return handler.NewDeleteStatement(
&customTextEvent,
@@ -171,7 +171,7 @@ func (p *customTextProjection) reduceTemplateRemoved(event eventstore.Event) (*h
case *instance.CustomTextTemplateRemovedEvent:
customTextEvent = e.CustomTextTemplateRemovedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-29iPf", "reduce.wrong.event.type %v", []eventstore.EventType{org.CustomTextTemplateRemovedEventType, instance.CustomTextTemplateRemovedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-29iPf", "reduce.wrong.event.type %v", []eventstore.EventType{org.CustomTextTemplateRemovedEventType, instance.CustomTextTemplateRemovedEventType})
}
return handler.NewDeleteStatement(
&customTextEvent,
@@ -186,7 +186,7 @@ func (p *customTextProjection) reduceTemplateRemoved(event eventstore.Event) (*h
func (p *customTextProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-V2T3z", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-V2T3z", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewDeleteStatement(
diff --git a/internal/query/projection/custom_text_test.go b/internal/query/projection/custom_text_test.go
index 951e236cf7..d366eb35b8 100644
--- a/internal/query/projection/custom_text_test.go
+++ b/internal/query/projection/custom_text_test.go
@@ -3,11 +3,11 @@ package projection
import (
"testing"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestCustomTextProjection_reduces(t *testing.T) {
@@ -292,7 +292,7 @@ func TestCustomTextProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
event = tt.args.event(t)
diff --git a/internal/query/projection/debug_notification.go b/internal/query/projection/debug_notification.go
index 7d553ed0b1..eca16dce0a 100644
--- a/internal/query/projection/debug_notification.go
+++ b/internal/query/projection/debug_notification.go
@@ -6,11 +6,11 @@ import (
"github.com/zitadel/zitadel/internal/domain"
"github.com/zitadel/zitadel/internal/repository/settings"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -104,7 +104,7 @@ func (p *debugNotificationProviderProjection) reduceDebugNotificationProviderAdd
providerEvent = e.DebugNotificationProviderAddedEvent
providerType = domain.NotificationProviderTypeLog
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-pYPxS", "reduce.wrong.event.type %v", []eventstore.EventType{instance.DebugNotificationProviderFileAddedEventType, instance.DebugNotificationProviderLogAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-pYPxS", "reduce.wrong.event.type %v", []eventstore.EventType{instance.DebugNotificationProviderFileAddedEventType, instance.DebugNotificationProviderLogAddedEventType})
}
return handler.NewCreateStatement(&providerEvent, []handler.Column{
@@ -131,7 +131,7 @@ func (p *debugNotificationProviderProjection) reduceDebugNotificationProviderCha
providerEvent = e.DebugNotificationProviderChangedEvent
providerType = domain.NotificationProviderTypeLog
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-pYPxS", "reduce.wrong.event.type %v", []eventstore.EventType{instance.DebugNotificationProviderFileChangedEventType, instance.DebugNotificationProviderLogChangedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-pYPxS", "reduce.wrong.event.type %v", []eventstore.EventType{instance.DebugNotificationProviderFileChangedEventType, instance.DebugNotificationProviderLogChangedEventType})
}
cols := []handler.Column{
@@ -164,7 +164,7 @@ func (p *debugNotificationProviderProjection) reduceDebugNotificationProviderRem
providerEvent = e.DebugNotificationProviderRemovedEvent
providerType = domain.NotificationProviderTypeLog
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-dow9f", "reduce.wrong.event.type %v", []eventstore.EventType{instance.DebugNotificationProviderFileRemovedEventType, instance.DebugNotificationProviderLogRemovedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-dow9f", "reduce.wrong.event.type %v", []eventstore.EventType{instance.DebugNotificationProviderFileRemovedEventType, instance.DebugNotificationProviderLogRemovedEventType})
}
return handler.NewDeleteStatement(
diff --git a/internal/query/projection/debug_notification_provider_test.go b/internal/query/projection/debug_notification_provider_test.go
index cbe943a7ae..10d85678dd 100644
--- a/internal/query/projection/debug_notification_provider_test.go
+++ b/internal/query/projection/debug_notification_provider_test.go
@@ -4,10 +4,10 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestDebugNotificationProviderProjection_reduces(t *testing.T) {
@@ -245,7 +245,7 @@ func TestDebugNotificationProviderProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/device_auth.go b/internal/query/projection/device_auth.go
index f0232192e8..d8231004f9 100644
--- a/internal/query/projection/device_auth.go
+++ b/internal/query/projection/device_auth.go
@@ -3,66 +3,59 @@ package projection
import (
"context"
- "github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/deviceauth"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
- DeviceAuthProjectionTable = "projections.device_authorizations"
+ DeviceAuthRequestProjectionTable = "projections.device_auth_requests"
- DeviceAuthColumnID = "id"
- DeviceAuthColumnClientID = "client_id"
- DeviceAuthColumnDeviceCode = "device_code"
- DeviceAuthColumnUserCode = "user_code"
- DeviceAuthColumnExpires = "expires"
- DeviceAuthColumnScopes = "scopes"
- DeviceAuthColumnState = "state"
- DeviceAuthColumnSubject = "subject"
-
- DeviceAuthColumnCreationDate = "creation_date"
- DeviceAuthColumnChangeDate = "change_date"
- DeviceAuthColumnSequence = "sequence"
- DeviceAuthColumnInstanceID = "instance_id"
+ DeviceAuthRequestColumnClientID = "client_id"
+ DeviceAuthRequestColumnDeviceCode = "device_code"
+ DeviceAuthRequestColumnUserCode = "user_code"
+ DeviceAuthRequestColumnScopes = "scopes"
+ DeviceAuthRequestColumnCreationDate = "creation_date"
+ DeviceAuthRequestColumnChangeDate = "change_date"
+ DeviceAuthRequestColumnSequence = "sequence"
+ DeviceAuthRequestColumnInstanceID = "instance_id"
)
-type deviceAuthProjection struct{}
+// deviceAuthRequestProjection holds device authorization requests
+// and makes them search-able by User Code.
+// In principle the projected data is only needed during user login.
+// Device Token logic uses the eventstore directly.
+type deviceAuthRequestProjection struct{}
func newDeviceAuthProjection(ctx context.Context, config handler.Config) *handler.Handler {
- return handler.NewHandler(ctx, &config, new(deviceAuthProjection))
+ return handler.NewHandler(ctx, &config, new(deviceAuthRequestProjection))
}
-func (*deviceAuthProjection) Name() string {
- return DeviceAuthProjectionTable
+func (*deviceAuthRequestProjection) Name() string {
+ return DeviceAuthRequestProjectionTable
}
-func (*deviceAuthProjection) Init() *old_handler.Check {
+func (*deviceAuthRequestProjection) Init() *old_handler.Check {
return handler.NewTableCheck(
handler.NewTable([]*handler.InitColumn{
- handler.NewColumn(DeviceAuthColumnID, handler.ColumnTypeText),
- handler.NewColumn(DeviceAuthColumnClientID, handler.ColumnTypeText),
- handler.NewColumn(DeviceAuthColumnDeviceCode, handler.ColumnTypeText),
- handler.NewColumn(DeviceAuthColumnUserCode, handler.ColumnTypeText),
- handler.NewColumn(DeviceAuthColumnExpires, handler.ColumnTypeTimestamp),
- handler.NewColumn(DeviceAuthColumnScopes, handler.ColumnTypeTextArray),
- handler.NewColumn(DeviceAuthColumnState, handler.ColumnTypeEnum, handler.Default(domain.DeviceAuthStateInitiated)),
- handler.NewColumn(DeviceAuthColumnSubject, handler.ColumnTypeText, handler.Default("")),
- handler.NewColumn(DeviceAuthColumnCreationDate, handler.ColumnTypeTimestamp),
- handler.NewColumn(DeviceAuthColumnChangeDate, handler.ColumnTypeTimestamp),
- handler.NewColumn(DeviceAuthColumnSequence, handler.ColumnTypeInt64),
- handler.NewColumn(DeviceAuthColumnInstanceID, handler.ColumnTypeText),
+ handler.NewColumn(DeviceAuthRequestColumnClientID, handler.ColumnTypeText),
+ handler.NewColumn(DeviceAuthRequestColumnDeviceCode, handler.ColumnTypeText),
+ handler.NewColumn(DeviceAuthRequestColumnUserCode, handler.ColumnTypeText),
+ handler.NewColumn(DeviceAuthRequestColumnScopes, handler.ColumnTypeTextArray),
+ handler.NewColumn(DeviceAuthRequestColumnCreationDate, handler.ColumnTypeTimestamp),
+ handler.NewColumn(DeviceAuthRequestColumnChangeDate, handler.ColumnTypeTimestamp),
+ handler.NewColumn(DeviceAuthRequestColumnSequence, handler.ColumnTypeInt64),
+ handler.NewColumn(DeviceAuthRequestColumnInstanceID, handler.ColumnTypeText),
},
- handler.NewPrimaryKey(DeviceAuthColumnInstanceID, DeviceAuthColumnID),
- handler.WithIndex(handler.NewIndex("user_code", []string{DeviceAuthColumnInstanceID, DeviceAuthColumnUserCode})),
- handler.WithIndex(handler.NewIndex("device_code", []string{DeviceAuthColumnInstanceID, DeviceAuthColumnClientID, DeviceAuthColumnDeviceCode})),
+ handler.NewPrimaryKey(DeviceAuthRequestColumnInstanceID, DeviceAuthRequestColumnDeviceCode),
+ handler.WithIndex(handler.NewIndex("user_code", []string{DeviceAuthRequestColumnInstanceID, DeviceAuthRequestColumnUserCode})),
),
)
}
-func (p *deviceAuthProjection) Reducers() []handler.AggregateReducer {
+func (p *deviceAuthRequestProjection) Reducers() []handler.AggregateReducer {
return []handler.AggregateReducer{
{
Aggregate: deviceauth.AggregateType,
@@ -73,89 +66,49 @@ func (p *deviceAuthProjection) Reducers() []handler.AggregateReducer {
},
{
Event: deviceauth.ApprovedEventType,
- Reduce: p.reduceAppoved,
+ Reduce: p.reduceDoneEvents,
},
{
Event: deviceauth.CanceledEventType,
- Reduce: p.reduceCanceled,
- },
- {
- Event: deviceauth.RemovedEventType,
- Reduce: p.reduceRemoved,
+ Reduce: p.reduceDoneEvents,
},
},
},
}
}
-func (p *deviceAuthProjection) reduceAdded(event eventstore.Event) (*handler.Statement, error) {
+func (p *deviceAuthRequestProjection) reduceAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*deviceauth.AddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-chu6O", "reduce.wrong.event.type %T != %s", event, deviceauth.AddedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-chu6O", "reduce.wrong.event.type %T != %s", event, deviceauth.AddedEventType)
}
return handler.NewCreateStatement(
e,
[]handler.Column{
- handler.NewCol(DeviceAuthColumnID, e.Aggregate().ID),
- handler.NewCol(DeviceAuthColumnClientID, e.ClientID),
- handler.NewCol(DeviceAuthColumnDeviceCode, e.DeviceCode),
- handler.NewCol(DeviceAuthColumnUserCode, e.UserCode),
- handler.NewCol(DeviceAuthColumnExpires, e.Expires),
- handler.NewCol(DeviceAuthColumnScopes, e.Scopes),
- handler.NewCol(DeviceAuthColumnCreationDate, e.CreationDate()),
- handler.NewCol(DeviceAuthColumnChangeDate, e.CreationDate()),
- handler.NewCol(DeviceAuthColumnSequence, e.Sequence()),
- handler.NewCol(DeviceAuthColumnInstanceID, e.Aggregate().InstanceID),
+ handler.NewCol(DeviceAuthRequestColumnClientID, e.ClientID),
+ handler.NewCol(DeviceAuthRequestColumnDeviceCode, e.DeviceCode),
+ handler.NewCol(DeviceAuthRequestColumnUserCode, e.UserCode),
+ handler.NewCol(DeviceAuthRequestColumnScopes, e.Scopes),
+ handler.NewCol(DeviceAuthRequestColumnCreationDate, e.CreationDate()),
+ handler.NewCol(DeviceAuthRequestColumnChangeDate, e.CreationDate()),
+ handler.NewCol(DeviceAuthRequestColumnSequence, e.Sequence()),
+ handler.NewCol(DeviceAuthRequestColumnInstanceID, e.Aggregate().InstanceID),
},
), nil
}
-func (p *deviceAuthProjection) reduceAppoved(event eventstore.Event) (*handler.Statement, error) {
- e, ok := event.(*deviceauth.ApprovedEvent)
- if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-kei0A", "reduce.wrong.event.type %T != %s", event, deviceauth.ApprovedEventType)
- }
- return handler.NewUpdateStatement(e,
- []handler.Column{
- handler.NewCol(DeviceAuthColumnState, domain.DeviceAuthStateApproved),
- handler.NewCol(DeviceAuthColumnSubject, e.Subject),
- handler.NewCol(DeviceAuthColumnChangeDate, e.CreationDate()),
- handler.NewCol(DeviceAuthColumnSequence, e.Sequence()),
- },
- []handler.Condition{
- handler.NewCond(DeviceAuthColumnInstanceID, e.Aggregate().InstanceID),
- handler.NewCond(DeviceAuthColumnID, e.Aggregate().ID),
- },
- ), nil
-}
+// reduceDoneEvents removes the device auth request from the projection.
+func (p *deviceAuthRequestProjection) reduceDoneEvents(event eventstore.Event) (*handler.Statement, error) {
+ switch event.(type) {
+ case *deviceauth.ApprovedEvent, *deviceauth.CanceledEvent:
+ return handler.NewDeleteStatement(event,
+ []handler.Condition{
+ handler.NewCond(DeviceAuthRequestColumnInstanceID, event.Aggregate().InstanceID),
+ handler.NewCond(DeviceAuthRequestColumnDeviceCode, event.Aggregate().ID),
+ },
+ ), nil
-func (p *deviceAuthProjection) reduceCanceled(event eventstore.Event) (*handler.Statement, error) {
- e, ok := event.(*deviceauth.CanceledEvent)
- if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-eeS8d", "reduce.wrong.event.type %T != %s", event, deviceauth.CanceledEventType)
+ default:
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-eeS8d", "reduce.wrong.event.type %T", event)
}
- return handler.NewUpdateStatement(e,
- []handler.Column{
- handler.NewCol(DeviceAuthColumnState, e.Reason.State()),
- handler.NewCol(DeviceAuthColumnChangeDate, e.CreationDate()),
- handler.NewCol(DeviceAuthColumnSequence, e.Sequence()),
- },
- []handler.Condition{
- handler.NewCond(DeviceAuthColumnInstanceID, e.Aggregate().InstanceID),
- handler.NewCond(DeviceAuthColumnID, e.Aggregate().ID),
- },
- ), nil
-}
-
-func (p *deviceAuthProjection) reduceRemoved(event eventstore.Event) (*handler.Statement, error) {
- e, ok := event.(*deviceauth.RemovedEvent)
- if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-AJi1u", "reduce.wrong.event.type %T != %s", event, deviceauth.RemovedEventType)
- }
- return handler.NewDeleteStatement(e,
- []handler.Condition{
- handler.NewCond(DeviceAuthColumnInstanceID, e.Aggregate().InstanceID),
- handler.NewCond(DeviceAuthColumnID, e.Aggregate().ID),
- },
- ), nil
}
diff --git a/internal/query/projection/domain_policy.go b/internal/query/projection/domain_policy.go
index b11fbf2607..9277d342a9 100644
--- a/internal/query/projection/domain_policy.go
+++ b/internal/query/projection/domain_policy.go
@@ -4,13 +4,13 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/policy"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -116,7 +116,7 @@ func (p *domainPolicyProjection) reduceAdded(event eventstore.Event) (*handler.S
policyEvent = e.DomainPolicyAddedEvent
isDefault = true
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-CSE7A", "reduce.wrong.event.type %v", []eventstore.EventType{org.DomainPolicyAddedEventType, instance.DomainPolicyAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-CSE7A", "reduce.wrong.event.type %v", []eventstore.EventType{org.DomainPolicyAddedEventType, instance.DomainPolicyAddedEventType})
}
return handler.NewCreateStatement(
&policyEvent,
@@ -143,7 +143,7 @@ func (p *domainPolicyProjection) reduceChanged(event eventstore.Event) (*handler
case *instance.DomainPolicyChangedEvent:
policyEvent = e.DomainPolicyChangedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-qgVug", "reduce.wrong.event.type %v", []eventstore.EventType{org.DomainPolicyChangedEventType, instance.DomainPolicyChangedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-qgVug", "reduce.wrong.event.type %v", []eventstore.EventType{org.DomainPolicyChangedEventType, instance.DomainPolicyChangedEventType})
}
cols := []handler.Column{
handler.NewCol(DomainPolicyChangeDateCol, policyEvent.CreationDate()),
@@ -170,7 +170,7 @@ func (p *domainPolicyProjection) reduceChanged(event eventstore.Event) (*handler
func (p *domainPolicyProjection) reduceRemoved(event eventstore.Event) (*handler.Statement, error) {
policyEvent, ok := event.(*org.DomainPolicyRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-JAENd", "reduce.wrong.event.type %s", org.DomainPolicyRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-JAENd", "reduce.wrong.event.type %s", org.DomainPolicyRemovedEventType)
}
return handler.NewDeleteStatement(
policyEvent,
@@ -183,7 +183,7 @@ func (p *domainPolicyProjection) reduceRemoved(event eventstore.Event) (*handler
func (p *domainPolicyProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-JYD2K", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-JYD2K", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewDeleteStatement(
diff --git a/internal/query/projection/domain_policy_test.go b/internal/query/projection/domain_policy_test.go
index 0df5f786d1..418640cb1e 100644
--- a/internal/query/projection/domain_policy_test.go
+++ b/internal/query/projection/domain_policy_test.go
@@ -4,11 +4,11 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestDomainPolicyProjection_reduces(t *testing.T) {
@@ -258,7 +258,7 @@ func TestDomainPolicyProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/executer_test.go b/internal/query/projection/executer_test.go
index 8dca87a383..9c1dd021fc 100644
--- a/internal/query/projection/executer_test.go
+++ b/internal/query/projection/executer_test.go
@@ -6,7 +6,7 @@ import (
"github.com/stretchr/testify/assert"
- "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type testExecuter struct {
@@ -30,7 +30,7 @@ func (e *testExecuter) Exec(stmt string, args ...interface{}) (sql.Result, error
}
if e.execIdx >= len(e.executions) {
- return nil, errors.ThrowInternal(nil, "PROJE-8TNoE", "too many executions")
+ return nil, zerrors.ThrowInternal(nil, "PROJE-8TNoE", "too many executions")
}
e.executions[e.execIdx].gottenArgs = args
e.executions[e.execIdx].gottenStmt = stmt
diff --git a/internal/query/projection/flow.go b/internal/query/projection/flow.go
index 5d03d8f07d..2e954bca28 100644
--- a/internal/query/projection/flow.go
+++ b/internal/query/projection/flow.go
@@ -3,12 +3,12 @@ package projection
import (
"context"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -84,7 +84,7 @@ func (p *flowProjection) Reducers() []handler.AggregateReducer {
func (p *flowProjection) reduceTriggerActionsSetEventType(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.TriggerActionsSetEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-uYq4r", "reduce.wrong.event.type %s", org.TriggerActionsSetEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-uYq4r", "reduce.wrong.event.type %s", org.TriggerActionsSetEventType)
}
stmts := make([]func(reader eventstore.Event) handler.Exec, len(e.ActionIDs)+1)
stmts[0] = handler.AddDeleteStatement(
@@ -115,7 +115,7 @@ func (p *flowProjection) reduceTriggerActionsSetEventType(event eventstore.Event
func (p *flowProjection) reduceFlowClearedEventType(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.FlowClearedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-uYq4r", "reduce.wrong.event.type %s", org.FlowClearedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-uYq4r", "reduce.wrong.event.type %s", org.FlowClearedEventType)
}
return handler.NewDeleteStatement(
e,
@@ -130,7 +130,7 @@ func (p *flowProjection) reduceFlowClearedEventType(event eventstore.Event) (*ha
func (p *flowProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-Yd7WC", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-Yd7WC", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewDeleteStatement(
diff --git a/internal/query/projection/flow_test.go b/internal/query/projection/flow_test.go
index 757aea548b..add857b464 100644
--- a/internal/query/projection/flow_test.go
+++ b/internal/query/projection/flow_test.go
@@ -4,11 +4,11 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestFlowProjection_reduces(t *testing.T) {
@@ -162,7 +162,7 @@ func TestFlowProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/idp.go b/internal/query/projection/idp.go
index db5cc4319a..32bb5abec3 100644
--- a/internal/query/projection/idp.go
+++ b/internal/query/projection/idp.go
@@ -5,13 +5,13 @@ import (
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/idpconfig"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -223,7 +223,7 @@ func (p *idpProjection) reduceIDPAdded(event eventstore.Event) (*handler.Stateme
idpEvent = e.IDPConfigAddedEvent
idpOwnerType = domain.IdentityProviderTypeSystem
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-fcUdQ", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPConfigAddedEventType, instance.IDPConfigAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-fcUdQ", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPConfigAddedEventType, instance.IDPConfigAddedEventType})
}
return handler.NewCreateStatement(
@@ -252,7 +252,7 @@ func (p *idpProjection) reduceIDPChanged(event eventstore.Event) (*handler.State
case *instance.IDPConfigChangedEvent:
idpEvent = e.IDPConfigChangedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-NVvJD", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPConfigChangedEventType, instance.IDPConfigChangedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-NVvJD", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPConfigChangedEventType, instance.IDPConfigChangedEventType})
}
cols := make([]handler.Column, 0, 5)
@@ -292,7 +292,7 @@ func (p *idpProjection) reduceIDPDeactivated(event eventstore.Event) (*handler.S
case *instance.IDPConfigDeactivatedEvent:
idpEvent = e.IDPConfigDeactivatedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-94O5l", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPConfigDeactivatedEventType, instance.IDPConfigDeactivatedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-94O5l", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPConfigDeactivatedEventType, instance.IDPConfigDeactivatedEventType})
}
return handler.NewUpdateStatement(
@@ -317,7 +317,7 @@ func (p *idpProjection) reduceIDPReactivated(event eventstore.Event) (*handler.S
case *instance.IDPConfigReactivatedEvent:
idpEvent = e.IDPConfigReactivatedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-I8QyS", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPConfigReactivatedEventType, instance.IDPConfigReactivatedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-I8QyS", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPConfigReactivatedEventType, instance.IDPConfigReactivatedEventType})
}
return handler.NewUpdateStatement(
@@ -342,7 +342,7 @@ func (p *idpProjection) reduceIDPRemoved(event eventstore.Event) (*handler.State
case *instance.IDPConfigRemovedEvent:
idpEvent = e.IDPConfigRemovedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-B4zy8", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPConfigRemovedEventType, instance.IDPConfigRemovedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-B4zy8", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPConfigRemovedEventType, instance.IDPConfigRemovedEventType})
}
return handler.NewDeleteStatement(
@@ -362,7 +362,7 @@ func (p *idpProjection) reduceOIDCConfigAdded(event eventstore.Event) (*handler.
case *instance.IDPOIDCConfigAddedEvent:
idpEvent = e.OIDCConfigAddedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-2FuAA", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPOIDCConfigAddedEventType, instance.IDPOIDCConfigAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-2FuAA", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPOIDCConfigAddedEventType, instance.IDPOIDCConfigAddedEventType})
}
return handler.NewMultiStatement(&idpEvent,
@@ -403,7 +403,7 @@ func (p *idpProjection) reduceOIDCConfigChanged(event eventstore.Event) (*handle
case *instance.IDPOIDCConfigChangedEvent:
idpEvent = e.OIDCConfigChangedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-x2IVI", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPOIDCConfigChangedEventType, instance.IDPOIDCConfigChangedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-x2IVI", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPOIDCConfigChangedEventType, instance.IDPOIDCConfigChangedEventType})
}
cols := make([]handler.Column, 0, 8)
@@ -467,7 +467,7 @@ func (p *idpProjection) reduceJWTConfigAdded(event eventstore.Event) (*handler.S
case *instance.IDPJWTConfigAddedEvent:
idpEvent = e.JWTConfigAddedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-qvPdb", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPJWTConfigAddedEventType, instance.IDPJWTConfigAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-qvPdb", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPJWTConfigAddedEventType, instance.IDPJWTConfigAddedEventType})
}
return handler.NewMultiStatement(&idpEvent,
@@ -505,7 +505,7 @@ func (p *idpProjection) reduceJWTConfigChanged(event eventstore.Event) (*handler
case *instance.IDPJWTConfigChangedEvent:
idpEvent = e.JWTConfigChangedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-x2IVI", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPJWTConfigChangedEventType, instance.IDPJWTConfigChangedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-x2IVI", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPJWTConfigChangedEventType, instance.IDPJWTConfigChangedEventType})
}
cols := make([]handler.Column, 0, 4)
@@ -552,7 +552,7 @@ func (p *idpProjection) reduceJWTConfigChanged(event eventstore.Event) (*handler
func (p *idpProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-YsbQC", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-YsbQC", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewDeleteStatement(
diff --git a/internal/query/projection/idp_login_policy_link.go b/internal/query/projection/idp_login_policy_link.go
index 7fcdc57804..a72cd84fde 100644
--- a/internal/query/projection/idp_login_policy_link.go
+++ b/internal/query/projection/idp_login_policy_link.go
@@ -4,13 +4,13 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/policy"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -138,7 +138,7 @@ func (p *idpLoginPolicyLinkProjection) reduceAdded(event eventstore.Event) (*han
idp = e.IdentityProviderAddedEvent
providerType = domain.IdentityProviderTypeSystem
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Nlp55", "reduce.wrong.event.type %v", []eventstore.EventType{org.LoginPolicyIDPProviderAddedEventType, instance.LoginPolicyIDPProviderAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Nlp55", "reduce.wrong.event.type %v", []eventstore.EventType{org.LoginPolicyIDPProviderAddedEventType, instance.LoginPolicyIDPProviderAddedEventType})
}
return handler.NewCreateStatement(&idp,
@@ -164,7 +164,7 @@ func (p *idpLoginPolicyLinkProjection) reduceRemoved(event eventstore.Event) (*h
case *instance.IdentityProviderRemovedEvent:
idp = e.IdentityProviderRemovedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-tUMYY", "reduce.wrong.event.type %v", []eventstore.EventType{org.LoginPolicyIDPProviderRemovedEventType, instance.LoginPolicyIDPProviderRemovedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-tUMYY", "reduce.wrong.event.type %v", []eventstore.EventType{org.LoginPolicyIDPProviderRemovedEventType, instance.LoginPolicyIDPProviderRemovedEventType})
}
return handler.NewDeleteStatement(&idp,
@@ -185,7 +185,7 @@ func (p *idpLoginPolicyLinkProjection) reduceCascadeRemoved(event eventstore.Eve
case *instance.IdentityProviderCascadeRemovedEvent:
idp = e.IdentityProviderCascadeRemovedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-iCKSj", "reduce.wrong.event.type %v", []eventstore.EventType{org.LoginPolicyIDPProviderCascadeRemovedEventType, instance.LoginPolicyIDPProviderCascadeRemovedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-iCKSj", "reduce.wrong.event.type %v", []eventstore.EventType{org.LoginPolicyIDPProviderCascadeRemovedEventType, instance.LoginPolicyIDPProviderCascadeRemovedEventType})
}
return handler.NewDeleteStatement(&idp,
@@ -213,7 +213,7 @@ func (p *idpLoginPolicyLinkProjection) reduceIDPConfigRemoved(event eventstore.E
handler.NewCond(IDPLoginPolicyLinkInstanceIDCol, event.Aggregate().InstanceID),
}
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-u6tze", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPConfigRemovedEventType, instance.IDPConfigRemovedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-u6tze", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPConfigRemovedEventType, instance.IDPConfigRemovedEventType})
}
return handler.NewDeleteStatement(event, conditions), nil
@@ -235,7 +235,7 @@ func (p *idpLoginPolicyLinkProjection) reduceIDPRemoved(event eventstore.Event)
handler.NewCond(IDPLoginPolicyLinkInstanceIDCol, event.Aggregate().InstanceID),
}
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-SFED3", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPRemovedEventType, instance.IDPRemovedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-SFED3", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPRemovedEventType, instance.IDPRemovedEventType})
}
return handler.NewDeleteStatement(event, conditions), nil
@@ -244,7 +244,7 @@ func (p *idpLoginPolicyLinkProjection) reduceIDPRemoved(event eventstore.Event)
func (p *idpLoginPolicyLinkProjection) reducePolicyRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.LoginPolicyRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-SF3dg", "reduce.wrong.event.type %s", org.LoginPolicyRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-SF3dg", "reduce.wrong.event.type %s", org.LoginPolicyRemovedEventType)
}
return handler.NewDeleteStatement(e,
[]handler.Condition{
@@ -257,7 +257,7 @@ func (p *idpLoginPolicyLinkProjection) reducePolicyRemoved(event eventstore.Even
func (p *idpLoginPolicyLinkProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-YbhOv", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-YbhOv", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewDeleteStatement(
diff --git a/internal/query/projection/idp_login_policy_link_test.go b/internal/query/projection/idp_login_policy_link_test.go
index 4f58ec1fae..bfda5ac735 100644
--- a/internal/query/projection/idp_login_policy_link_test.go
+++ b/internal/query/projection/idp_login_policy_link_test.go
@@ -4,11 +4,11 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestIDPLoginPolicyLinkProjection_reduces(t *testing.T) {
@@ -420,7 +420,7 @@ func TestIDPLoginPolicyLinkProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/idp_template.go b/internal/query/projection/idp_template.go
index 181fecefb6..00cac448af 100644
--- a/internal/query/projection/idp_template.go
+++ b/internal/query/projection/idp_template.go
@@ -6,7 +6,6 @@ import (
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
@@ -14,6 +13,7 @@ import (
"github.com/zitadel/zitadel/internal/repository/idpconfig"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -679,7 +679,7 @@ func (p *idpTemplateProjection) reduceOAuthIDPAdded(event eventstore.Event) (*ha
idpEvent = e.OAuthIDPAddedEvent
idpOwnerType = domain.IdentityProviderTypeSystem
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-ap9ihb", "reduce.wrong.event.type %v", []eventstore.EventType{org.OAuthIDPAddedEventType, instance.OAuthIDPAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-ap9ihb", "reduce.wrong.event.type %v", []eventstore.EventType{org.OAuthIDPAddedEventType, instance.OAuthIDPAddedEventType})
}
return handler.NewMultiStatement(
@@ -727,7 +727,7 @@ func (p *idpTemplateProjection) reduceOAuthIDPChanged(event eventstore.Event) (*
case *instance.OAuthIDPChangedEvent:
idpEvent = e.OAuthIDPChangedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.OAuthIDPChangedEventType, instance.OAuthIDPChangedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.OAuthIDPChangedEventType, instance.OAuthIDPChangedEventType})
}
ops := make([]func(eventstore.Event) handler.Exec, 0, 2)
@@ -771,7 +771,7 @@ func (p *idpTemplateProjection) reduceOIDCIDPAdded(event eventstore.Event) (*han
idpEvent = e.OIDCIDPAddedEvent
idpOwnerType = domain.IdentityProviderTypeSystem
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-9s02m1", "reduce.wrong.event.type %v", []eventstore.EventType{org.OIDCIDPAddedEventType, instance.OIDCIDPAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-9s02m1", "reduce.wrong.event.type %v", []eventstore.EventType{org.OIDCIDPAddedEventType, instance.OIDCIDPAddedEventType})
}
return handler.NewMultiStatement(
@@ -817,7 +817,7 @@ func (p *idpTemplateProjection) reduceOIDCIDPChanged(event eventstore.Event) (*h
case *instance.OIDCIDPChangedEvent:
idpEvent = e.OIDCIDPChangedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.OIDCIDPChangedEventType, instance.OIDCIDPChangedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.OIDCIDPChangedEventType, instance.OIDCIDPChangedEventType})
}
ops := make([]func(eventstore.Event) handler.Exec, 0, 2)
@@ -858,7 +858,7 @@ func (p *idpTemplateProjection) reduceOIDCIDPMigratedAzureAD(event eventstore.Ev
case *instance.OIDCIDPMigratedAzureADEvent:
idpEvent = e.OIDCIDPMigratedAzureADEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.OIDCIDPMigratedAzureADEventType, instance.OIDCIDPMigratedAzureADEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.OIDCIDPMigratedAzureADEventType, instance.OIDCIDPMigratedAzureADEventType})
}
return handler.NewMultiStatement(
@@ -909,7 +909,7 @@ func (p *idpTemplateProjection) reduceOIDCIDPMigratedGoogle(event eventstore.Eve
case *instance.OIDCIDPMigratedGoogleEvent:
idpEvent = e.OIDCIDPMigratedGoogleEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.OIDCIDPMigratedGoogleEventType, instance.OIDCIDPMigratedGoogleEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.OIDCIDPMigratedGoogleEventType, instance.OIDCIDPMigratedGoogleEventType})
}
return handler.NewMultiStatement(
@@ -961,7 +961,7 @@ func (p *idpTemplateProjection) reduceJWTIDPAdded(event eventstore.Event) (*hand
idpEvent = e.JWTIDPAddedEvent
idpOwnerType = domain.IdentityProviderTypeSystem
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-xopi2s", "reduce.wrong.event.type %v", []eventstore.EventType{org.JWTIDPAddedEventType, instance.JWTIDPAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-xopi2s", "reduce.wrong.event.type %v", []eventstore.EventType{org.JWTIDPAddedEventType, instance.JWTIDPAddedEventType})
}
return handler.NewMultiStatement(
@@ -1006,7 +1006,7 @@ func (p *idpTemplateProjection) reduceJWTIDPChanged(event eventstore.Event) (*ha
case *instance.JWTIDPChangedEvent:
idpEvent = e.JWTIDPChangedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.JWTIDPChangedEventType, instance.JWTIDPChangedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.JWTIDPChangedEventType, instance.JWTIDPChangedEventType})
}
ops := make([]func(eventstore.Event) handler.Exec, 0, 2)
@@ -1050,7 +1050,7 @@ func (p *idpTemplateProjection) reduceOldConfigAdded(event eventstore.Event) (*h
idpEvent = e.IDPConfigAddedEvent
idpOwnerType = domain.IdentityProviderTypeSystem
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-ADfeg", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPConfigAddedEventType, instance.IDPConfigAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-ADfeg", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPConfigAddedEventType, instance.IDPConfigAddedEventType})
}
return handler.NewCreateStatement(
@@ -1082,7 +1082,7 @@ func (p *idpTemplateProjection) reduceOldConfigChanged(event eventstore.Event) (
case *instance.IDPConfigChangedEvent:
idpEvent = e.IDPConfigChangedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-SAfg2", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPConfigChangedEventType, instance.IDPConfigChangedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-SAfg2", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPConfigChangedEventType, instance.IDPConfigChangedEventType})
}
cols := make([]handler.Column, 0, 4)
@@ -1115,7 +1115,7 @@ func (p *idpTemplateProjection) reduceOldOIDCConfigAdded(event eventstore.Event)
case *instance.IDPOIDCConfigAddedEvent:
idpEvent = e.OIDCConfigAddedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-ASFdq2", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPOIDCConfigAddedEventType, instance.IDPOIDCConfigAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-ASFdq2", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPOIDCConfigAddedEventType, instance.IDPOIDCConfigAddedEventType})
}
return handler.NewMultiStatement(
@@ -1154,7 +1154,7 @@ func (p *idpTemplateProjection) reduceOldOIDCConfigChanged(event eventstore.Even
case *instance.IDPOIDCConfigChangedEvent:
idpEvent = e.OIDCConfigChangedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.OIDCIDPChangedEventType, instance.OIDCIDPChangedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.OIDCIDPChangedEventType, instance.OIDCIDPChangedEventType})
}
ops := make([]func(eventstore.Event) handler.Exec, 0, 2)
@@ -1210,7 +1210,7 @@ func (p *idpTemplateProjection) reduceOldJWTConfigAdded(event eventstore.Event)
case *instance.IDPJWTConfigAddedEvent:
idpEvent = e.JWTConfigAddedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-ASFdq2", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPJWTConfigAddedEventType, instance.IDPJWTConfigAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-ASFdq2", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPJWTConfigAddedEventType, instance.IDPJWTConfigAddedEventType})
}
return handler.NewMultiStatement(
@@ -1248,7 +1248,7 @@ func (p *idpTemplateProjection) reduceOldJWTConfigChanged(event eventstore.Event
case *instance.IDPJWTConfigChangedEvent:
idpEvent = e.JWTConfigChangedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.JWTIDPChangedEventType, instance.JWTIDPChangedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.JWTIDPChangedEventType, instance.JWTIDPChangedEventType})
}
ops := make([]func(eventstore.Event) handler.Exec, 0, 2)
@@ -1307,7 +1307,7 @@ func (p *idpTemplateProjection) reduceAzureADIDPAdded(event eventstore.Event) (*
idpEvent = e.AzureADIDPAddedEvent
idpOwnerType = domain.IdentityProviderTypeSystem
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-x9a022b", "reduce.wrong.event.type %v", []eventstore.EventType{org.AzureADIDPAddedEventType, instance.AzureADIDPAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-x9a022b", "reduce.wrong.event.type %v", []eventstore.EventType{org.AzureADIDPAddedEventType, instance.AzureADIDPAddedEventType})
}
return handler.NewMultiStatement(
@@ -1353,7 +1353,7 @@ func (p *idpTemplateProjection) reduceAzureADIDPChanged(event eventstore.Event)
case *instance.AzureADIDPChangedEvent:
idpEvent = e.AzureADIDPChangedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.AzureADIDPChangedEventType, instance.AzureADIDPChangedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.AzureADIDPChangedEventType, instance.AzureADIDPChangedEventType})
}
ops := make([]func(eventstore.Event) handler.Exec, 0, 2)
@@ -1397,7 +1397,7 @@ func (p *idpTemplateProjection) reduceGitHubIDPAdded(event eventstore.Event) (*h
idpEvent = e.GitHubIDPAddedEvent
idpOwnerType = domain.IdentityProviderTypeSystem
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-x9a022b", "reduce.wrong.event.type %v", []eventstore.EventType{org.GitHubIDPAddedEventType, instance.GitHubIDPAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-x9a022b", "reduce.wrong.event.type %v", []eventstore.EventType{org.GitHubIDPAddedEventType, instance.GitHubIDPAddedEventType})
}
return handler.NewMultiStatement(
@@ -1444,7 +1444,7 @@ func (p *idpTemplateProjection) reduceGitHubEnterpriseIDPAdded(event eventstore.
idpEvent = e.GitHubEnterpriseIDPAddedEvent
idpOwnerType = domain.IdentityProviderTypeSystem
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Sf3g2a", "reduce.wrong.event.type %v", []eventstore.EventType{org.GitHubEnterpriseIDPAddedEventType, instance.GitHubEnterpriseIDPAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Sf3g2a", "reduce.wrong.event.type %v", []eventstore.EventType{org.GitHubEnterpriseIDPAddedEventType, instance.GitHubEnterpriseIDPAddedEventType})
}
return handler.NewMultiStatement(
@@ -1491,7 +1491,7 @@ func (p *idpTemplateProjection) reduceGitHubIDPChanged(event eventstore.Event) (
case *instance.GitHubIDPChangedEvent:
idpEvent = e.GitHubIDPChangedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.GitHubIDPChangedEventType, instance.GitHubIDPChangedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.GitHubIDPChangedEventType, instance.GitHubIDPChangedEventType})
}
ops := make([]func(eventstore.Event) handler.Exec, 0, 2)
@@ -1532,7 +1532,7 @@ func (p *idpTemplateProjection) reduceGitHubEnterpriseIDPChanged(event eventstor
case *instance.GitHubEnterpriseIDPChangedEvent:
idpEvent = e.GitHubEnterpriseIDPChangedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-SDg3g", "reduce.wrong.event.type %v", []eventstore.EventType{org.GitHubEnterpriseIDPChangedEventType, instance.GitHubEnterpriseIDPChangedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-SDg3g", "reduce.wrong.event.type %v", []eventstore.EventType{org.GitHubEnterpriseIDPChangedEventType, instance.GitHubEnterpriseIDPChangedEventType})
}
ops := make([]func(eventstore.Event) handler.Exec, 0, 2)
@@ -1576,7 +1576,7 @@ func (p *idpTemplateProjection) reduceGitLabIDPAdded(event eventstore.Event) (*h
idpEvent = e.GitLabIDPAddedEvent
idpOwnerType = domain.IdentityProviderTypeSystem
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-x9a022b", "reduce.wrong.event.type %v", []eventstore.EventType{org.GitLabIDPAddedEventType, instance.GitLabIDPAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-x9a022b", "reduce.wrong.event.type %v", []eventstore.EventType{org.GitLabIDPAddedEventType, instance.GitLabIDPAddedEventType})
}
return handler.NewMultiStatement(
@@ -1620,7 +1620,7 @@ func (p *idpTemplateProjection) reduceGitLabIDPChanged(event eventstore.Event) (
case *instance.GitLabIDPChangedEvent:
idpEvent = e.GitLabIDPChangedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.GitLabIDPChangedEventType, instance.GitLabIDPChangedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.GitLabIDPChangedEventType, instance.GitLabIDPChangedEventType})
}
ops := make([]func(eventstore.Event) handler.Exec, 0, 2)
@@ -1664,7 +1664,7 @@ func (p *idpTemplateProjection) reduceGitLabSelfHostedIDPAdded(event eventstore.
idpEvent = e.GitLabSelfHostedIDPAddedEvent
idpOwnerType = domain.IdentityProviderTypeSystem
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-SAF3gw", "reduce.wrong.event.type %v", []eventstore.EventType{org.GitLabSelfHostedIDPAddedEventType, instance.GitLabSelfHostedIDPAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-SAF3gw", "reduce.wrong.event.type %v", []eventstore.EventType{org.GitLabSelfHostedIDPAddedEventType, instance.GitLabSelfHostedIDPAddedEventType})
}
return handler.NewMultiStatement(
@@ -1709,7 +1709,7 @@ func (p *idpTemplateProjection) reduceGitLabSelfHostedIDPChanged(event eventstor
case *instance.GitLabSelfHostedIDPChangedEvent:
idpEvent = e.GitLabSelfHostedIDPChangedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-SAf3g2", "reduce.wrong.event.type %v", []eventstore.EventType{org.GitLabSelfHostedIDPChangedEventType, instance.GitLabSelfHostedIDPChangedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-SAf3g2", "reduce.wrong.event.type %v", []eventstore.EventType{org.GitLabSelfHostedIDPChangedEventType, instance.GitLabSelfHostedIDPChangedEventType})
}
ops := make([]func(eventstore.Event) handler.Exec, 0, 2)
@@ -1753,7 +1753,7 @@ func (p *idpTemplateProjection) reduceGoogleIDPAdded(event eventstore.Event) (*h
idpEvent = e.GoogleIDPAddedEvent
idpOwnerType = domain.IdentityProviderTypeSystem
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-ap9ihb", "reduce.wrong.event.type %v", []eventstore.EventType{org.GoogleIDPAddedEventType, instance.GoogleIDPAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-ap9ihb", "reduce.wrong.event.type %v", []eventstore.EventType{org.GoogleIDPAddedEventType, instance.GoogleIDPAddedEventType})
}
return handler.NewMultiStatement(
@@ -1797,7 +1797,7 @@ func (p *idpTemplateProjection) reduceGoogleIDPChanged(event eventstore.Event) (
case *instance.GoogleIDPChangedEvent:
idpEvent = e.GoogleIDPChangedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.GoogleIDPChangedEventType, instance.GoogleIDPChangedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.GoogleIDPChangedEventType, instance.GoogleIDPChangedEventType})
}
ops := make([]func(eventstore.Event) handler.Exec, 0, 2)
@@ -1841,7 +1841,7 @@ func (p *idpTemplateProjection) reduceLDAPIDPAdded(event eventstore.Event) (*han
idpEvent = e.LDAPIDPAddedEvent
idpOwnerType = domain.IdentityProviderTypeSystem
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-9s02m1", "reduce.wrong.event.type %v", []eventstore.EventType{org.LDAPIDPAddedEventType, instance.LDAPIDPAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-9s02m1", "reduce.wrong.event.type %v", []eventstore.EventType{org.LDAPIDPAddedEventType, instance.LDAPIDPAddedEventType})
}
return handler.NewMultiStatement(
@@ -1904,7 +1904,7 @@ func (p *idpTemplateProjection) reduceLDAPIDPChanged(event eventstore.Event) (*h
case *instance.LDAPIDPChangedEvent:
idpEvent = e.LDAPIDPChangedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.LDAPIDPChangedEventType, instance.LDAPIDPChangedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-p1582ks", "reduce.wrong.event.type %v", []eventstore.EventType{org.LDAPIDPChangedEventType, instance.LDAPIDPChangedEventType})
}
ops := make([]func(eventstore.Event) handler.Exec, 0, 2)
@@ -1949,7 +1949,7 @@ func (p *idpTemplateProjection) reduceSAMLIDPAdded(event eventstore.Event) (*han
idpEvent = e.SAMLIDPAddedEvent
idpOwnerType = domain.IdentityProviderTypeSystem
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-9s02m1", "reduce.wrong.event.type %v", []eventstore.EventType{org.SAMLIDPAddedEventType, instance.SAMLIDPAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-9s02m1", "reduce.wrong.event.type %v", []eventstore.EventType{org.SAMLIDPAddedEventType, instance.SAMLIDPAddedEventType})
}
return handler.NewMultiStatement(
@@ -1995,7 +1995,7 @@ func (p *idpTemplateProjection) reduceSAMLIDPChanged(event eventstore.Event) (*h
case *instance.SAMLIDPChangedEvent:
idpEvent = e.SAMLIDPChangedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-o7c0fii4ad", "reduce.wrong.event.type %v", []eventstore.EventType{org.SAMLIDPChangedEventType, instance.SAMLIDPChangedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-o7c0fii4ad", "reduce.wrong.event.type %v", []eventstore.EventType{org.SAMLIDPChangedEventType, instance.SAMLIDPChangedEventType})
}
ops := make([]func(eventstore.Event) handler.Exec, 0, 2)
@@ -2040,7 +2040,7 @@ func (p *idpTemplateProjection) reduceAppleIDPAdded(event eventstore.Event) (*ha
idpEvent = e.AppleIDPAddedEvent
idpOwnerType = domain.IdentityProviderTypeSystem
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-SFvg3", "reduce.wrong.event.type %v", []eventstore.EventType{org.AppleIDPAddedEventType /*, instance.AppleIDPAddedEventType*/})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-SFvg3", "reduce.wrong.event.type %v", []eventstore.EventType{org.AppleIDPAddedEventType /*, instance.AppleIDPAddedEventType*/})
}
return handler.NewMultiStatement(
@@ -2086,7 +2086,7 @@ func (p *idpTemplateProjection) reduceAppleIDPChanged(event eventstore.Event) (*
case *instance.AppleIDPChangedEvent:
idpEvent = e.AppleIDPChangedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-GBez3", "reduce.wrong.event.type %v", []eventstore.EventType{org.AppleIDPChangedEventType /*, instance.AppleIDPChangedEventType*/})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-GBez3", "reduce.wrong.event.type %v", []eventstore.EventType{org.AppleIDPChangedEventType /*, instance.AppleIDPChangedEventType*/})
}
ops := make([]func(eventstore.Event) handler.Exec, 0, 2)
@@ -2127,7 +2127,7 @@ func (p *idpTemplateProjection) reduceIDPConfigRemoved(event eventstore.Event) (
case *instance.IDPConfigRemovedEvent:
idpEvent = e.IDPConfigRemovedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-SAFet", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPConfigRemovedEventType, instance.IDPConfigRemovedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-SAFet", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPConfigRemovedEventType, instance.IDPConfigRemovedEventType})
}
return handler.NewDeleteStatement(
@@ -2147,7 +2147,7 @@ func (p *idpTemplateProjection) reduceIDPRemoved(event eventstore.Event) (*handl
case *instance.IDPRemovedEvent:
idpEvent = e.RemovedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-xbcvwin2", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPRemovedEventType, instance.IDPRemovedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-xbcvwin2", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPRemovedEventType, instance.IDPRemovedEventType})
}
return handler.NewDeleteStatement(
@@ -2162,7 +2162,7 @@ func (p *idpTemplateProjection) reduceIDPRemoved(event eventstore.Event) (*handl
func (p *idpTemplateProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-Jp0D2K", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-Jp0D2K", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewDeleteStatement(
diff --git a/internal/query/projection/idp_template_test.go b/internal/query/projection/idp_template_test.go
index 5e33aebe87..8490810d83 100644
--- a/internal/query/projection/idp_template_test.go
+++ b/internal/query/projection/idp_template_test.go
@@ -7,11 +7,11 @@ import (
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -150,7 +150,7 @@ func TestIDPTemplateProjection_reducesRemove(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if !errors.IsErrorInvalidArgument(err) {
+ if !zerrors.IsErrorInvalidArgument(err) {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
@@ -426,7 +426,7 @@ func TestIDPTemplateProjection_reducesOAuth(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if !errors.IsErrorInvalidArgument(err) {
+ if !zerrors.IsErrorInvalidArgument(err) {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
@@ -750,7 +750,7 @@ func TestIDPTemplateProjection_reducesAzureAD(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if !errors.IsErrorInvalidArgument(err) {
+ if !zerrors.IsErrorInvalidArgument(err) {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
@@ -1002,7 +1002,7 @@ func TestIDPTemplateProjection_reducesGitHub(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if !errors.IsErrorInvalidArgument(err) {
+ if !zerrors.IsErrorInvalidArgument(err) {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
@@ -1272,7 +1272,7 @@ func TestIDPTemplateProjection_reducesGitHubEnterprise(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if !errors.IsErrorInvalidArgument(err) {
+ if !zerrors.IsErrorInvalidArgument(err) {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
@@ -1522,7 +1522,7 @@ func TestIDPTemplateProjection_reducesGitLab(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if !errors.IsErrorInvalidArgument(err) {
+ if !zerrors.IsErrorInvalidArgument(err) {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
@@ -1780,7 +1780,7 @@ func TestIDPTemplateProjection_reducesGitLabSelfHosted(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if !errors.IsErrorInvalidArgument(err) {
+ if !zerrors.IsErrorInvalidArgument(err) {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
@@ -2030,7 +2030,7 @@ func TestIDPTemplateProjection_reducesGoogle(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if !errors.IsErrorInvalidArgument(err) {
+ if !zerrors.IsErrorInvalidArgument(err) {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
@@ -2423,7 +2423,7 @@ func TestIDPTemplateProjection_reducesLDAP(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if !errors.IsErrorInvalidArgument(err) {
+ if !zerrors.IsErrorInvalidArgument(err) {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
@@ -2681,7 +2681,7 @@ func TestIDPTemplateProjection_reducesApple(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if !errors.IsErrorInvalidArgument(err) {
+ if !zerrors.IsErrorInvalidArgument(err) {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
@@ -2967,7 +2967,7 @@ func TestIDPTemplateProjection_reducesSAML(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if !errors.IsErrorInvalidArgument(err) {
+ if !zerrors.IsErrorInvalidArgument(err) {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
@@ -3497,7 +3497,7 @@ func TestIDPTemplateProjection_reducesOIDC(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if !errors.IsErrorInvalidArgument(err) {
+ if !zerrors.IsErrorInvalidArgument(err) {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
@@ -4084,7 +4084,7 @@ func TestIDPTemplateProjection_reducesOldConfig(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if !errors.IsErrorInvalidArgument(err) {
+ if !zerrors.IsErrorInvalidArgument(err) {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
@@ -4326,7 +4326,7 @@ func TestIDPTemplateProjection_reducesJWT(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if !errors.IsErrorInvalidArgument(err) {
+ if !zerrors.IsErrorInvalidArgument(err) {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/idp_test.go b/internal/query/projection/idp_test.go
index bedd528cdf..37c86b8511 100644
--- a/internal/query/projection/idp_test.go
+++ b/internal/query/projection/idp_test.go
@@ -5,11 +5,11 @@ import (
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestIDPProjection_reduces(t *testing.T) {
@@ -920,7 +920,7 @@ func TestIDPProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/idp_user_link.go b/internal/query/projection/idp_user_link.go
index ce588a20e1..edcaf4fc86 100644
--- a/internal/query/projection/idp_user_link.go
+++ b/internal/query/projection/idp_user_link.go
@@ -3,13 +3,13 @@ package projection
import (
"context"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -82,6 +82,10 @@ func (p *idpUserLinkProjection) Reducers() []handler.AggregateReducer {
Event: user.UserIDPExternalIDMigratedType,
Reduce: p.reduceExternalIDMigrated,
},
+ {
+ Event: user.UserIDPExternalUsernameChangedType,
+ Reduce: p.reduceExternalUsernameChanged,
+ },
},
},
{
@@ -116,7 +120,7 @@ func (p *idpUserLinkProjection) Reducers() []handler.AggregateReducer {
func (p *idpUserLinkProjection) reduceAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.UserIDPLinkAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-DpmXq", "reduce.wrong.event.type %s", user.UserIDPLinkAddedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-DpmXq", "reduce.wrong.event.type %s", user.UserIDPLinkAddedType)
}
return handler.NewCreateStatement(e,
@@ -137,7 +141,7 @@ func (p *idpUserLinkProjection) reduceAdded(event eventstore.Event) (*handler.St
func (p *idpUserLinkProjection) reduceRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.UserIDPLinkRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-AZmfJ", "reduce.wrong.event.type %s", user.UserIDPLinkRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-AZmfJ", "reduce.wrong.event.type %s", user.UserIDPLinkRemovedType)
}
return handler.NewDeleteStatement(e,
@@ -153,7 +157,7 @@ func (p *idpUserLinkProjection) reduceRemoved(event eventstore.Event) (*handler.
func (p *idpUserLinkProjection) reduceCascadeRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.UserIDPLinkCascadeRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-jQpv9", "reduce.wrong.event.type %s", user.UserIDPLinkCascadeRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-jQpv9", "reduce.wrong.event.type %s", user.UserIDPLinkCascadeRemovedType)
}
return handler.NewDeleteStatement(e,
@@ -169,7 +173,7 @@ func (p *idpUserLinkProjection) reduceCascadeRemoved(event eventstore.Event) (*h
func (p *idpUserLinkProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-PGiAY", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-PGiAY", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewDeleteStatement(
@@ -184,7 +188,7 @@ func (p *idpUserLinkProjection) reduceOwnerRemoved(event eventstore.Event) (*han
func (p *idpUserLinkProjection) reduceUserRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.UserRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-uwlWE", "reduce.wrong.event.type %s", user.UserRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-uwlWE", "reduce.wrong.event.type %s", user.UserRemovedType)
}
return handler.NewDeleteStatement(e,
@@ -198,7 +202,7 @@ func (p *idpUserLinkProjection) reduceUserRemoved(event eventstore.Event) (*hand
func (p *idpUserLinkProjection) reduceExternalIDMigrated(event eventstore.Event) (*handler.Statement, error) {
e, err := assertEvent[*user.UserIDPExternalIDMigratedEvent](event)
if err != nil {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-AS3th", "reduce.wrong.event.type %s", user.UserIDPExternalIDMigratedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-AS3th", "reduce.wrong.event.type %s", user.UserIDPExternalIDMigratedType)
}
return handler.NewUpdateStatement(e,
@@ -216,6 +220,27 @@ func (p *idpUserLinkProjection) reduceExternalIDMigrated(event eventstore.Event)
), nil
}
+func (p *idpUserLinkProjection) reduceExternalUsernameChanged(event eventstore.Event) (*handler.Statement, error) {
+ e, err := assertEvent[*user.UserIDPExternalUsernameEvent](event)
+ if err != nil {
+ return nil, err
+ }
+
+ return handler.NewUpdateStatement(e,
+ []handler.Column{
+ handler.NewCol(IDPUserLinkChangeDateCol, e.CreationDate()),
+ handler.NewCol(IDPUserLinkSequenceCol, e.Sequence()),
+ handler.NewCol(IDPUserLinkDisplayNameCol, e.ExternalUsername),
+ },
+ []handler.Condition{
+ handler.NewCond(IDPUserLinkIDPIDCol, e.IDPConfigID),
+ handler.NewCond(IDPUserLinkUserIDCol, e.Aggregate().ID),
+ handler.NewCond(IDPUserLinkExternalUserIDCol, e.ExternalUserID),
+ handler.NewCond(IDPUserLinkInstanceIDCol, e.Aggregate().InstanceID),
+ },
+ ), nil
+}
+
func (p *idpUserLinkProjection) reduceIDPConfigRemoved(event eventstore.Event) (*handler.Statement, error) {
var idpID string
@@ -225,7 +250,7 @@ func (p *idpUserLinkProjection) reduceIDPConfigRemoved(event eventstore.Event) (
case *instance.IDPConfigRemovedEvent:
idpID = e.ConfigID
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-iCKSj", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPConfigRemovedEventType, instance.IDPConfigRemovedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-iCKSj", "reduce.wrong.event.type %v", []eventstore.EventType{org.IDPConfigRemovedEventType, instance.IDPConfigRemovedEventType})
}
return handler.NewDeleteStatement(event,
diff --git a/internal/query/projection/idp_user_link_test.go b/internal/query/projection/idp_user_link_test.go
index a5e860844f..6545d30b40 100644
--- a/internal/query/projection/idp_user_link_test.go
+++ b/internal/query/projection/idp_user_link_test.go
@@ -3,12 +3,12 @@ package projection
import (
"testing"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestIDPUserLinkProjection_reduces(t *testing.T) {
@@ -238,6 +238,41 @@ func TestIDPUserLinkProjection_reduces(t *testing.T) {
},
},
},
+ {
+ name: "reduceExternalUsernameChanged",
+ args: args{
+ event: getEvent(testEvent(
+ user.UserIDPExternalUsernameChangedType,
+ user.AggregateType,
+ []byte(`{
+ "idpConfigId": "idp-config-id",
+ "userId": "external-user-id",
+ "username": "new-username"
+}`),
+ ), eventstore.GenericEventMapper[user.UserIDPExternalUsernameEvent]),
+ },
+ reduce: (&idpUserLinkProjection{}).reduceExternalUsernameChanged,
+ want: wantReduce{
+ aggregateType: user.AggregateType,
+ sequence: 15,
+ executer: &testExecuter{
+ executions: []execution{
+ {
+ expectedStmt: "UPDATE projections.idp_user_links3 SET (change_date, sequence, display_name) = ($1, $2, $3) WHERE (idp_id = $4) AND (user_id = $5) AND (external_user_id = $6) AND (instance_id = $7)",
+ expectedArgs: []interface{}{
+ anyArg{},
+ uint64(15),
+ "new-username",
+ "idp-config-id",
+ "agg-id",
+ "external-user-id",
+ "instance-id",
+ },
+ },
+ },
+ },
+ },
+ },
{
name: "org IDPConfigRemovedEvent",
args: args{
@@ -303,7 +338,7 @@ func TestIDPUserLinkProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/instance.go b/internal/query/projection/instance.go
index 68a1106064..9f46ee22fa 100644
--- a/internal/query/projection/instance.go
+++ b/internal/query/projection/instance.go
@@ -3,11 +3,11 @@ package projection
import (
"context"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -95,7 +95,7 @@ func (p *instanceProjection) Reducers() []handler.AggregateReducer {
func (p *instanceProjection) reduceInstanceAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*instance.InstanceAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-29nlS", "reduce.wrong.event.type %s", instance.InstanceAddedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-29nlS", "reduce.wrong.event.type %s", instance.InstanceAddedEventType)
}
return handler.NewCreateStatement(
e,
@@ -113,7 +113,7 @@ func reduceInstanceRemovedHelper(instanceIDCol string) func(event eventstore.Eve
return func(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*instance.InstanceRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-22nlS", "reduce.wrong.event.type %s", instance.InstanceRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-22nlS", "reduce.wrong.event.type %s", instance.InstanceRemovedEventType)
}
return handler.NewDeleteStatement(
e,
@@ -127,7 +127,7 @@ func reduceInstanceRemovedHelper(instanceIDCol string) func(event eventstore.Eve
func (p *instanceProjection) reduceInstanceChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*instance.InstanceChangedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-so2am1", "reduce.wrong.event.type %s", instance.InstanceChangedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-so2am1", "reduce.wrong.event.type %s", instance.InstanceChangedEventType)
}
return handler.NewUpdateStatement(
e,
@@ -145,7 +145,7 @@ func (p *instanceProjection) reduceInstanceChanged(event eventstore.Event) (*han
func (p *instanceProjection) reduceDefaultOrgSet(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*instance.DefaultOrgSetEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-2n9f2", "reduce.wrong.event.type %s", instance.DefaultOrgSetEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-2n9f2", "reduce.wrong.event.type %s", instance.DefaultOrgSetEventType)
}
return handler.NewUpdateStatement(
e,
@@ -163,7 +163,7 @@ func (p *instanceProjection) reduceDefaultOrgSet(event eventstore.Event) (*handl
func (p *instanceProjection) reduceIAMProjectSet(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*instance.ProjectSetEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-30o0e", "reduce.wrong.event.type %s", instance.ProjectSetEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-30o0e", "reduce.wrong.event.type %s", instance.ProjectSetEventType)
}
return handler.NewUpdateStatement(
e,
@@ -181,7 +181,7 @@ func (p *instanceProjection) reduceIAMProjectSet(event eventstore.Event) (*handl
func (p *instanceProjection) reduceConsoleSet(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*instance.ConsoleSetEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Dgf11", "reduce.wrong.event.type %s", instance.ConsoleSetEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Dgf11", "reduce.wrong.event.type %s", instance.ConsoleSetEventType)
}
return handler.NewUpdateStatement(
e,
@@ -200,7 +200,7 @@ func (p *instanceProjection) reduceConsoleSet(event eventstore.Event) (*handler.
func (p *instanceProjection) reduceDefaultLanguageSet(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*instance.DefaultLanguageSetEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-30o0e", "reduce.wrong.event.type %s", instance.DefaultLanguageSetEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-30o0e", "reduce.wrong.event.type %s", instance.DefaultLanguageSetEventType)
}
return handler.NewUpdateStatement(
e,
diff --git a/internal/query/projection/instance_domain.go b/internal/query/projection/instance_domain.go
index 8eff389ce1..4be3c58342 100644
--- a/internal/query/projection/instance_domain.go
+++ b/internal/query/projection/instance_domain.go
@@ -3,11 +3,11 @@ package projection
import (
"context"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -82,7 +82,7 @@ func (p *instanceDomainProjection) Reducers() []handler.AggregateReducer {
func (p *instanceDomainProjection) reduceDomainAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*instance.DomainAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-38nNf", "reduce.wrong.event.type %s", instance.InstanceDomainAddedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-38nNf", "reduce.wrong.event.type %s", instance.InstanceDomainAddedEventType)
}
return handler.NewCreateStatement(
e,
@@ -101,7 +101,7 @@ func (p *instanceDomainProjection) reduceDomainAdded(event eventstore.Event) (*h
func (p *instanceDomainProjection) reduceDomainPrimarySet(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*instance.DomainPrimarySetEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-f8nlw", "reduce.wrong.event.type %s", instance.InstanceDomainPrimarySetEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-f8nlw", "reduce.wrong.event.type %s", instance.InstanceDomainPrimarySetEventType)
}
return handler.NewMultiStatement(
e,
@@ -133,7 +133,7 @@ func (p *instanceDomainProjection) reduceDomainPrimarySet(event eventstore.Event
func (p *instanceDomainProjection) reduceDomainRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*instance.DomainRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-388Nk", "reduce.wrong.event.type %s", instance.InstanceDomainRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-388Nk", "reduce.wrong.event.type %s", instance.InstanceDomainRemovedEventType)
}
return handler.NewDeleteStatement(
e,
diff --git a/internal/query/projection/instance_domain_test.go b/internal/query/projection/instance_domain_test.go
index 7997bc0a8b..d8bf93a5f0 100644
--- a/internal/query/projection/instance_domain_test.go
+++ b/internal/query/projection/instance_domain_test.go
@@ -3,10 +3,10 @@ package projection
import (
"testing"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestInstanceDomainProjection_reduces(t *testing.T) {
@@ -109,7 +109,7 @@ func TestInstanceDomainProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/instance_member.go b/internal/query/projection/instance_member.go
index f58d098102..ef71a4bf58 100644
--- a/internal/query/projection/instance_member.go
+++ b/internal/query/projection/instance_member.go
@@ -3,13 +3,13 @@ package projection
import (
"context"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -102,7 +102,7 @@ func (p *instanceMemberProjection) Reducers() []handler.AggregateReducer {
func (p *instanceMemberProjection) reduceAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*instance.MemberAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-pGNCu", "reduce.wrong.event.type %s", instance.MemberAddedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-pGNCu", "reduce.wrong.event.type %s", instance.MemberAddedEventType)
}
ctx := setMemberContext(e.Aggregate())
userOwner, err := getResourceOwnerOfUser(ctx, p.es, e.Aggregate().InstanceID, e.UserID)
@@ -115,7 +115,7 @@ func (p *instanceMemberProjection) reduceAdded(event eventstore.Event) (*handler
func (p *instanceMemberProjection) reduceChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*instance.MemberChangedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-5WQcZ", "reduce.wrong.event.type %s", instance.MemberChangedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-5WQcZ", "reduce.wrong.event.type %s", instance.MemberChangedEventType)
}
return reduceMemberChanged(e.MemberChangedEvent)
}
@@ -123,7 +123,7 @@ func (p *instanceMemberProjection) reduceChanged(event eventstore.Event) (*handl
func (p *instanceMemberProjection) reduceCascadeRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*instance.MemberCascadeRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Dmdf2", "reduce.wrong.event.type %s", instance.MemberCascadeRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Dmdf2", "reduce.wrong.event.type %s", instance.MemberCascadeRemovedEventType)
}
return reduceMemberCascadeRemoved(e.MemberCascadeRemovedEvent)
}
@@ -131,7 +131,7 @@ func (p *instanceMemberProjection) reduceCascadeRemoved(event eventstore.Event)
func (p *instanceMemberProjection) reduceRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*instance.MemberRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-exVqy", "reduce.wrong.event.type %s", instance.MemberRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-exVqy", "reduce.wrong.event.type %s", instance.MemberRemovedEventType)
}
return reduceMemberRemoved(e, withMemberCond(MemberUserIDCol, e.UserID))
}
@@ -139,7 +139,7 @@ func (p *instanceMemberProjection) reduceRemoved(event eventstore.Event) (*handl
func (p *instanceMemberProjection) reduceUserRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.UserRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-mkDHF", "reduce.wrong.event.type %s", user.UserRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-mkDHF", "reduce.wrong.event.type %s", user.UserRemovedType)
}
return reduceMemberRemoved(e, withMemberCond(MemberUserIDCol, e.Aggregate().ID))
}
@@ -147,7 +147,7 @@ func (p *instanceMemberProjection) reduceUserRemoved(event eventstore.Event) (*h
func (p *instanceMemberProjection) reduceUserOwnerRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-mkDHa", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-mkDHa", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return reduceMemberUserOwnerRemoved(e)
}
diff --git a/internal/query/projection/instance_member_test.go b/internal/query/projection/instance_member_test.go
index 5631407439..22490ddc49 100644
--- a/internal/query/projection/instance_member_test.go
+++ b/internal/query/projection/instance_member_test.go
@@ -8,12 +8,12 @@ import (
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestInstanceMemberProjection_reduces(t *testing.T) {
@@ -256,7 +256,7 @@ func TestInstanceMemberProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/instance_test.go b/internal/query/projection/instance_test.go
index 274e28f3f9..8228c2308b 100644
--- a/internal/query/projection/instance_test.go
+++ b/internal/query/projection/instance_test.go
@@ -3,10 +3,10 @@ package projection
import (
"testing"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestInstanceProjection_reduces(t *testing.T) {
@@ -167,7 +167,7 @@ func TestInstanceProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/key.go b/internal/query/projection/key.go
index d15cb62ea7..37581aab36 100644
--- a/internal/query/projection/key.go
+++ b/internal/query/projection/key.go
@@ -5,12 +5,12 @@ import (
"time"
"github.com/zitadel/zitadel/internal/crypto"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/keypair"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -141,7 +141,7 @@ func (p *keyProjection) Reducers() []handler.AggregateReducer {
func (p *keyProjection) reduceKeyPairAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*keypair.AddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-SAbr2", "reduce.wrong.event.type %s", keypair.AddedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-SAbr2", "reduce.wrong.event.type %s", keypair.AddedEventType)
}
if e.PrivateKey.Expiry.Before(time.Now()) && e.PublicKey.Expiry.Before(time.Now()) {
return handler.NewNoOpStatement(e), nil
@@ -174,7 +174,7 @@ func (p *keyProjection) reduceKeyPairAdded(event eventstore.Event) (*handler.Sta
if e.PublicKey.Expiry.After(time.Now()) {
publicKey, err := crypto.Decrypt(e.PublicKey.Key, p.encryptionAlgorithm)
if err != nil {
- return nil, errors.ThrowInternal(err, "HANDL-DAg2f", "cannot decrypt public key")
+ return nil, zerrors.ThrowInternal(err, "HANDL-DAg2f", "cannot decrypt public key")
}
creates = append(creates, handler.AddCreateStatement(
[]handler.Column{
@@ -193,7 +193,7 @@ func (p *keyProjection) reduceKeyPairAdded(event eventstore.Event) (*handler.Sta
func (p *keyProjection) reduceCertificateAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*keypair.AddedCertificateEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-SAbr09", "reduce.wrong.event.type %s", keypair.AddedCertificateEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-SAbr09", "reduce.wrong.event.type %s", keypair.AddedCertificateEventType)
}
if e.Certificate.Expiry.Before(time.Now()) {
@@ -202,7 +202,7 @@ func (p *keyProjection) reduceCertificateAdded(event eventstore.Event) (*handler
certificate, err := crypto.Decrypt(e.Certificate.Key, p.certEncryptionAlgorithm)
if err != nil {
- return nil, errors.ThrowInternal(err, "HANDL-Dajwig2f", "cannot decrypt certificate")
+ return nil, zerrors.ThrowInternal(err, "HANDL-Dajwig2f", "cannot decrypt certificate")
}
creates := []func(eventstore.Event) handler.Exec{handler.AddCreateStatement(
diff --git a/internal/query/projection/key_test.go b/internal/query/projection/key_test.go
index 26e56b731a..7022c1b9ec 100644
--- a/internal/query/projection/key_test.go
+++ b/internal/query/projection/key_test.go
@@ -9,11 +9,11 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/keypair"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestKeyProjection_reduces(t *testing.T) {
@@ -159,7 +159,7 @@ func TestKeyProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if !errors.IsErrorInvalidArgument(err) {
+ if !zerrors.IsErrorInvalidArgument(err) {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/label_policy.go b/internal/query/projection/label_policy.go
index 49f69738e4..dd9c1d07db 100644
--- a/internal/query/projection/label_policy.go
+++ b/internal/query/projection/label_policy.go
@@ -4,13 +4,13 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/policy"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -242,7 +242,7 @@ func (p *labelPolicyProjection) reduceAdded(event eventstore.Event) (*handler.St
policyEvent = e.LabelPolicyAddedEvent
isDefault = true
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-CSE7A", "reduce.wrong.event.type %v", []eventstore.EventType{org.LabelPolicyAddedEventType, instance.LabelPolicyAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-CSE7A", "reduce.wrong.event.type %v", []eventstore.EventType{org.LabelPolicyAddedEventType, instance.LabelPolicyAddedEventType})
}
return handler.NewCreateStatement(
&policyEvent,
@@ -278,7 +278,7 @@ func (p *labelPolicyProjection) reduceChanged(event eventstore.Event) (*handler.
case *instance.LabelPolicyChangedEvent:
policyEvent = e.LabelPolicyChangedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-qgVug", "reduce.wrong.event.type %v", []eventstore.EventType{org.LabelPolicyChangedEventType, instance.LabelPolicyChangedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-qgVug", "reduce.wrong.event.type %v", []eventstore.EventType{org.LabelPolicyChangedEventType, instance.LabelPolicyChangedEventType})
}
cols := []handler.Column{
handler.NewCol(LabelPolicyChangeDateCol, policyEvent.CreatedAt()),
@@ -333,7 +333,7 @@ func (p *labelPolicyProjection) reduceChanged(event eventstore.Event) (*handler.
func (p *labelPolicyProjection) reduceRemoved(event eventstore.Event) (*handler.Statement, error) {
policyEvent, ok := event.(*org.LabelPolicyRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-ATMBz", "reduce.wrong.event.type %s", org.LabelPolicyRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-ATMBz", "reduce.wrong.event.type %s", org.LabelPolicyRemovedEventType)
}
return handler.NewDeleteStatement(
policyEvent,
@@ -348,7 +348,7 @@ func (p *labelPolicyProjection) reduceActivated(event eventstore.Event) (*handle
case *org.LabelPolicyActivatedEvent, *instance.LabelPolicyActivatedEvent:
// everything ok
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-dldEU", "reduce.wrong.event.type %v", []eventstore.EventType{org.LabelPolicyActivatedEventType, instance.LabelPolicyActivatedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-dldEU", "reduce.wrong.event.type %v", []eventstore.EventType{org.LabelPolicyActivatedEventType, instance.LabelPolicyActivatedEventType})
}
return handler.NewCopyStatement(
event,
@@ -430,7 +430,7 @@ func (p *labelPolicyProjection) reduceLogoAdded(event eventstore.Event) (*handle
case *instance.LabelPolicyLogoDarkAddedEvent:
storeKey = handler.NewCol(LabelPolicyDarkLogoURLCol, e.StoreKey)
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-4wbOI", "reduce.wrong.event.type %v", []eventstore.EventType{org.LabelPolicyLogoAddedEventType, instance.LabelPolicyLogoAddedEventType, org.LabelPolicyLogoDarkAddedEventType, instance.LabelPolicyLogoDarkAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-4wbOI", "reduce.wrong.event.type %v", []eventstore.EventType{org.LabelPolicyLogoAddedEventType, instance.LabelPolicyLogoAddedEventType, org.LabelPolicyLogoDarkAddedEventType, instance.LabelPolicyLogoDarkAddedEventType})
}
return handler.NewUpdateStatement(
@@ -459,7 +459,7 @@ func (p *labelPolicyProjection) reduceLogoRemoved(event eventstore.Event) (*hand
case *instance.LabelPolicyLogoDarkRemovedEvent:
col = LabelPolicyDarkLogoURLCol
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-kg8H4", "reduce.wrong.event.type %v", []eventstore.EventType{org.LabelPolicyLogoRemovedEventType, instance.LabelPolicyLogoRemovedEventType, org.LabelPolicyLogoDarkRemovedEventType, instance.LabelPolicyLogoDarkRemovedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-kg8H4", "reduce.wrong.event.type %v", []eventstore.EventType{org.LabelPolicyLogoRemovedEventType, instance.LabelPolicyLogoRemovedEventType, org.LabelPolicyLogoDarkRemovedEventType, instance.LabelPolicyLogoDarkRemovedEventType})
}
return handler.NewUpdateStatement(
@@ -488,7 +488,7 @@ func (p *labelPolicyProjection) reduceIconAdded(event eventstore.Event) (*handle
case *instance.LabelPolicyIconDarkAddedEvent:
storeKey = handler.NewCol(LabelPolicyDarkIconURLCol, e.StoreKey)
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-e2JFz", "reduce.wrong.event.type %v", []eventstore.EventType{org.LabelPolicyIconAddedEventType, instance.LabelPolicyIconAddedEventType, org.LabelPolicyIconDarkAddedEventType, instance.LabelPolicyIconDarkAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-e2JFz", "reduce.wrong.event.type %v", []eventstore.EventType{org.LabelPolicyIconAddedEventType, instance.LabelPolicyIconAddedEventType, org.LabelPolicyIconDarkAddedEventType, instance.LabelPolicyIconDarkAddedEventType})
}
return handler.NewUpdateStatement(
@@ -517,7 +517,7 @@ func (p *labelPolicyProjection) reduceIconRemoved(event eventstore.Event) (*hand
case *instance.LabelPolicyIconDarkRemovedEvent:
col = LabelPolicyDarkIconURLCol
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-gfgbY", "reduce.wrong.event.type %v", []eventstore.EventType{org.LabelPolicyIconRemovedEventType, instance.LabelPolicyIconRemovedEventType, org.LabelPolicyIconDarkRemovedEventType, instance.LabelPolicyIconDarkRemovedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-gfgbY", "reduce.wrong.event.type %v", []eventstore.EventType{org.LabelPolicyIconRemovedEventType, instance.LabelPolicyIconRemovedEventType, org.LabelPolicyIconDarkRemovedEventType, instance.LabelPolicyIconDarkRemovedEventType})
}
return handler.NewUpdateStatement(
@@ -542,7 +542,7 @@ func (p *labelPolicyProjection) reduceFontAdded(event eventstore.Event) (*handle
case *instance.LabelPolicyFontAddedEvent:
storeKey = handler.NewCol(LabelPolicyFontURLCol, e.StoreKey)
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-65i9W", "reduce.wrong.event.type %v", []eventstore.EventType{org.LabelPolicyFontAddedEventType, instance.LabelPolicyFontAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-65i9W", "reduce.wrong.event.type %v", []eventstore.EventType{org.LabelPolicyFontAddedEventType, instance.LabelPolicyFontAddedEventType})
}
return handler.NewUpdateStatement(
@@ -567,7 +567,7 @@ func (p *labelPolicyProjection) reduceFontRemoved(event eventstore.Event) (*hand
case *instance.LabelPolicyFontRemovedEvent:
col = LabelPolicyFontURLCol
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-xf32J", "reduce.wrong.event.type %v", []eventstore.EventType{org.LabelPolicyFontRemovedEventType, instance.LabelPolicyFontRemovedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-xf32J", "reduce.wrong.event.type %v", []eventstore.EventType{org.LabelPolicyFontRemovedEventType, instance.LabelPolicyFontRemovedEventType})
}
return handler.NewUpdateStatement(
@@ -589,7 +589,7 @@ func (p *labelPolicyProjection) reduceAssetsRemoved(event eventstore.Event) (*ha
case *org.LabelPolicyAssetsRemovedEvent, *instance.LabelPolicyAssetsRemovedEvent:
//ok
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-qi39A", "reduce.wrong.event.type %v", []eventstore.EventType{org.LabelPolicyAssetsRemovedEventType, instance.LabelPolicyAssetsRemovedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-qi39A", "reduce.wrong.event.type %v", []eventstore.EventType{org.LabelPolicyAssetsRemovedEventType, instance.LabelPolicyAssetsRemovedEventType})
}
return handler.NewUpdateStatement(
@@ -613,7 +613,7 @@ func (p *labelPolicyProjection) reduceAssetsRemoved(event eventstore.Event) (*ha
func (p *labelPolicyProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-Su6pX", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-Su6pX", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewDeleteStatement(
diff --git a/internal/query/projection/label_policy_test.go b/internal/query/projection/label_policy_test.go
index 202e8cd32c..4fbc8b17a5 100644
--- a/internal/query/projection/label_policy_test.go
+++ b/internal/query/projection/label_policy_test.go
@@ -4,11 +4,11 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestLabelPolicyProjection_reduces(t *testing.T) {
@@ -1025,7 +1025,7 @@ func TestLabelPolicyProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/limits_test.go b/internal/query/projection/limits_test.go
index 0277e29243..b5b8e0ad46 100644
--- a/internal/query/projection/limits_test.go
+++ b/internal/query/projection/limits_test.go
@@ -4,10 +4,10 @@ import (
"testing"
"time"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/limits"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestLimitsProjection_reduces(t *testing.T) {
@@ -85,7 +85,7 @@ func TestLimitsProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if !errors.IsErrorInvalidArgument(err) {
+ if !zerrors.IsErrorInvalidArgument(err) {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
event = tt.args.event(t)
diff --git a/internal/query/projection/lockout_policy.go b/internal/query/projection/lockout_policy.go
index 9ab9f6f519..ceb99c2aa0 100644
--- a/internal/query/projection/lockout_policy.go
+++ b/internal/query/projection/lockout_policy.go
@@ -4,13 +4,13 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/policy"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -114,7 +114,7 @@ func (p *lockoutPolicyProjection) reduceAdded(event eventstore.Event) (*handler.
policyEvent = e.LockoutPolicyAddedEvent
isDefault = true
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-d8mZO", "reduce.wrong.event.type, %v", []eventstore.EventType{org.LockoutPolicyAddedEventType, instance.LockoutPolicyAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-d8mZO", "reduce.wrong.event.type, %v", []eventstore.EventType{org.LockoutPolicyAddedEventType, instance.LockoutPolicyAddedEventType})
}
return handler.NewCreateStatement(
&policyEvent,
@@ -140,7 +140,7 @@ func (p *lockoutPolicyProjection) reduceChanged(event eventstore.Event) (*handle
case *instance.LockoutPolicyChangedEvent:
policyEvent = e.LockoutPolicyChangedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-pT3mQ", "reduce.wrong.event.type, %v", []eventstore.EventType{org.LockoutPolicyChangedEventType, instance.LockoutPolicyChangedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-pT3mQ", "reduce.wrong.event.type, %v", []eventstore.EventType{org.LockoutPolicyChangedEventType, instance.LockoutPolicyChangedEventType})
}
cols := []handler.Column{
handler.NewCol(LockoutPolicyChangeDateCol, policyEvent.CreationDate()),
@@ -164,7 +164,7 @@ func (p *lockoutPolicyProjection) reduceChanged(event eventstore.Event) (*handle
func (p *lockoutPolicyProjection) reduceRemoved(event eventstore.Event) (*handler.Statement, error) {
policyEvent, ok := event.(*org.LockoutPolicyRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-Bqut9", "reduce.wrong.event.type %s", org.LockoutPolicyRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-Bqut9", "reduce.wrong.event.type %s", org.LockoutPolicyRemovedEventType)
}
return handler.NewDeleteStatement(
policyEvent,
@@ -177,7 +177,7 @@ func (p *lockoutPolicyProjection) reduceRemoved(event eventstore.Event) (*handle
func (p *lockoutPolicyProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-IoW0x", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-IoW0x", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewDeleteStatement(
diff --git a/internal/query/projection/lockout_policy_test.go b/internal/query/projection/lockout_policy_test.go
index 65e7125746..781f3a48c4 100644
--- a/internal/query/projection/lockout_policy_test.go
+++ b/internal/query/projection/lockout_policy_test.go
@@ -4,11 +4,11 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestLockoutPolicyProjection_reduces(t *testing.T) {
@@ -250,7 +250,7 @@ func TestLockoutPolicyProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/login_name.go b/internal/query/projection/login_name.go
index 44058e5871..3c31928af4 100644
--- a/internal/query/projection/login_name.go
+++ b/internal/query/projection/login_name.go
@@ -6,7 +6,6 @@ import (
sq "github.com/Masterminds/squirrel"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
@@ -14,6 +13,7 @@ import (
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/policy"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -340,7 +340,7 @@ func (p *loginNameProjection) reduceUserCreated(event eventstore.Event) (*handle
case *user.MachineAddedEvent:
userName = e.UserName
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-ayo69", "reduce.wrong.event.type %v", []eventstore.EventType{user.UserV1AddedType, user.HumanAddedType, user.UserV1RegisteredType, user.HumanRegisteredType, user.MachineAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-ayo69", "reduce.wrong.event.type %v", []eventstore.EventType{user.UserV1AddedType, user.HumanAddedType, user.UserV1RegisteredType, user.HumanRegisteredType, user.MachineAddedEventType})
}
return handler.NewCreateStatement(
@@ -358,7 +358,7 @@ func (p *loginNameProjection) reduceUserCreated(event eventstore.Event) (*handle
func (p *loginNameProjection) reduceUserRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.UserRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-QIe3C", "reduce.wrong.event.type %s", user.UserRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-QIe3C", "reduce.wrong.event.type %s", user.UserRemovedType)
}
return handler.NewDeleteStatement(
@@ -374,7 +374,7 @@ func (p *loginNameProjection) reduceUserRemoved(event eventstore.Event) (*handle
func (p *loginNameProjection) reduceUserNameChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.UsernameChangedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-QlwjC", "reduce.wrong.event.type %s", user.UserUserNameChangedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-QlwjC", "reduce.wrong.event.type %s", user.UserUserNameChangedType)
}
return handler.NewUpdateStatement(
@@ -393,7 +393,7 @@ func (p *loginNameProjection) reduceUserNameChanged(event eventstore.Event) (*ha
func (p *loginNameProjection) reduceUserDomainClaimed(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.DomainClaimedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-AQMBY", "reduce.wrong.event.type %s", user.UserDomainClaimedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-AQMBY", "reduce.wrong.event.type %s", user.UserDomainClaimedType)
}
return handler.NewUpdateStatement(
@@ -423,7 +423,7 @@ func (p *loginNameProjection) reduceOrgIAMPolicyAdded(event eventstore.Event) (*
policyEvent = &e.DomainPolicyAddedEvent
isDefault = true
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-yCV6S", "reduce.wrong.event.type %v", []eventstore.EventType{org.DomainPolicyAddedEventType, instance.DomainPolicyAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-yCV6S", "reduce.wrong.event.type %v", []eventstore.EventType{org.DomainPolicyAddedEventType, instance.DomainPolicyAddedEventType})
}
return handler.NewCreateStatement(
@@ -447,7 +447,7 @@ func (p *loginNameProjection) reduceDomainPolicyChanged(event eventstore.Event)
case *instance.DomainPolicyChangedEvent:
policyEvent = &e.DomainPolicyChangedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-ArFDd", "reduce.wrong.event.type %v", []eventstore.EventType{org.DomainPolicyChangedEventType, instance.DomainPolicyChangedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-ArFDd", "reduce.wrong.event.type %v", []eventstore.EventType{org.DomainPolicyChangedEventType, instance.DomainPolicyChangedEventType})
}
if policyEvent.UserLoginMustBeDomain == nil {
@@ -470,7 +470,7 @@ func (p *loginNameProjection) reduceDomainPolicyChanged(event eventstore.Event)
func (p *loginNameProjection) reduceDomainPolicyRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.DomainPolicyRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-ysEeB", "reduce.wrong.event.type %s", org.DomainPolicyRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-ysEeB", "reduce.wrong.event.type %s", org.DomainPolicyRemovedEventType)
}
return handler.NewDeleteStatement(
@@ -486,7 +486,7 @@ func (p *loginNameProjection) reduceDomainPolicyRemoved(event eventstore.Event)
func (p *loginNameProjection) reduceDomainVerified(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.DomainVerifiedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-weGAh", "reduce.wrong.event.type %s", org.OrgDomainVerifiedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-weGAh", "reduce.wrong.event.type %s", org.OrgDomainVerifiedEventType)
}
return handler.NewCreateStatement(
@@ -503,7 +503,7 @@ func (p *loginNameProjection) reduceDomainVerified(event eventstore.Event) (*han
func (p *loginNameProjection) reducePrimaryDomainSet(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.DomainPrimarySetEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-eOXPN", "reduce.wrong.event.type %s", org.OrgDomainPrimarySetEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-eOXPN", "reduce.wrong.event.type %s", org.OrgDomainPrimarySetEventType)
}
return handler.NewMultiStatement(
@@ -536,7 +536,7 @@ func (p *loginNameProjection) reducePrimaryDomainSet(event eventstore.Event) (*h
func (p *loginNameProjection) reduceDomainRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.DomainRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-4RHYq", "reduce.wrong.event.type %s", org.OrgDomainRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-4RHYq", "reduce.wrong.event.type %s", org.OrgDomainRemovedEventType)
}
return handler.NewDeleteStatement(
@@ -553,7 +553,7 @@ func (p *loginNameProjection) reduceDomainRemoved(event eventstore.Event) (*hand
func (p *loginNameProjection) reduceInstanceRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*instance.InstanceRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-ASeg3", "reduce.wrong.event.type %s", instance.InstanceRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-ASeg3", "reduce.wrong.event.type %s", instance.InstanceRemovedEventType)
}
return handler.NewMultiStatement(
@@ -582,7 +582,7 @@ func (p *loginNameProjection) reduceInstanceRemoved(event eventstore.Event) (*ha
func (p *loginNameProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-px02mo", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-px02mo", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewMultiStatement(
diff --git a/internal/query/projection/login_name_test.go b/internal/query/projection/login_name_test.go
index 019f6fd0a7..dcab0a857e 100644
--- a/internal/query/projection/login_name_test.go
+++ b/internal/query/projection/login_name_test.go
@@ -3,12 +3,12 @@ package projection
import (
"testing"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestLoginNameProjection_reduces(t *testing.T) {
@@ -572,7 +572,7 @@ func TestLoginNameProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/login_policy.go b/internal/query/projection/login_policy.go
index 3101accbeb..024f727d6f 100644
--- a/internal/query/projection/login_policy.go
+++ b/internal/query/projection/login_policy.go
@@ -3,13 +3,13 @@ package projection
import (
"context"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/policy"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -175,7 +175,7 @@ func (p *loginPolicyProjection) reduceLoginPolicyAdded(event eventstore.Event) (
policyEvent = e.LoginPolicyAddedEvent
isDefault = false
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-pYPxS", "reduce.wrong.event.type %v", []eventstore.EventType{org.LoginPolicyAddedEventType, instance.LoginPolicyAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-pYPxS", "reduce.wrong.event.type %v", []eventstore.EventType{org.LoginPolicyAddedEventType, instance.LoginPolicyAddedEventType})
}
return handler.NewCreateStatement(&policyEvent, []handler.Column{
@@ -213,7 +213,7 @@ func (p *loginPolicyProjection) reduceLoginPolicyChanged(event eventstore.Event)
case *org.LoginPolicyChangedEvent:
policyEvent = e.LoginPolicyChangedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-BpaO6", "reduce.wrong.event.type %v", []eventstore.EventType{org.LoginPolicyChangedEventType, instance.LoginPolicyChangedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-BpaO6", "reduce.wrong.event.type %v", []eventstore.EventType{org.LoginPolicyChangedEventType, instance.LoginPolicyChangedEventType})
}
cols := []handler.Column{
@@ -290,7 +290,7 @@ func (p *loginPolicyProjection) reduceMFAAdded(event eventstore.Event) (*handler
case *org.LoginPolicyMultiFactorAddedEvent:
policyEvent = e.MultiFactorAddedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-WMhAV", "reduce.wrong.event.type %v", []eventstore.EventType{org.LoginPolicyMultiFactorAddedEventType, instance.LoginPolicyMultiFactorAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-WMhAV", "reduce.wrong.event.type %v", []eventstore.EventType{org.LoginPolicyMultiFactorAddedEventType, instance.LoginPolicyMultiFactorAddedEventType})
}
return handler.NewUpdateStatement(
@@ -315,7 +315,7 @@ func (p *loginPolicyProjection) reduceMFARemoved(event eventstore.Event) (*handl
case *org.LoginPolicyMultiFactorRemovedEvent:
policyEvent = e.MultiFactorRemovedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-czU7n", "reduce.wrong.event.type %v", []eventstore.EventType{org.LoginPolicyMultiFactorRemovedEventType, instance.LoginPolicyMultiFactorRemovedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-czU7n", "reduce.wrong.event.type %v", []eventstore.EventType{org.LoginPolicyMultiFactorRemovedEventType, instance.LoginPolicyMultiFactorRemovedEventType})
}
return handler.NewUpdateStatement(
@@ -335,7 +335,7 @@ func (p *loginPolicyProjection) reduceMFARemoved(event eventstore.Event) (*handl
func (p *loginPolicyProjection) reduceLoginPolicyRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.LoginPolicyRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-oRSvD", "reduce.wrong.event.type %s", org.LoginPolicyRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-oRSvD", "reduce.wrong.event.type %s", org.LoginPolicyRemovedEventType)
}
return handler.NewDeleteStatement(
e,
@@ -354,7 +354,7 @@ func (p *loginPolicyProjection) reduceSecondFactorAdded(event eventstore.Event)
case *org.LoginPolicySecondFactorAddedEvent:
policyEvent = e.SecondFactorAddedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-agB2E", "reduce.wrong.event.type %v", []eventstore.EventType{org.LoginPolicySecondFactorAddedEventType, instance.LoginPolicySecondFactorAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-agB2E", "reduce.wrong.event.type %v", []eventstore.EventType{org.LoginPolicySecondFactorAddedEventType, instance.LoginPolicySecondFactorAddedEventType})
}
return handler.NewUpdateStatement(
@@ -379,7 +379,7 @@ func (p *loginPolicyProjection) reduceSecondFactorRemoved(event eventstore.Event
case *org.LoginPolicySecondFactorRemovedEvent:
policyEvent = e.SecondFactorRemovedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-KYJvA", "reduce.wrong.event.type %v", []eventstore.EventType{org.LoginPolicySecondFactorRemovedEventType, instance.LoginPolicySecondFactorRemovedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-KYJvA", "reduce.wrong.event.type %v", []eventstore.EventType{org.LoginPolicySecondFactorRemovedEventType, instance.LoginPolicySecondFactorRemovedEventType})
}
return handler.NewUpdateStatement(
@@ -399,7 +399,7 @@ func (p *loginPolicyProjection) reduceSecondFactorRemoved(event eventstore.Event
func (p *loginPolicyProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-B8NZW", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-B8NZW", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewDeleteStatement(
diff --git a/internal/query/projection/login_policy_test.go b/internal/query/projection/login_policy_test.go
index 4ebfa3483d..1f10e63bef 100644
--- a/internal/query/projection/login_policy_test.go
+++ b/internal/query/projection/login_policy_test.go
@@ -5,11 +5,11 @@ import (
"time"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestLoginPolicyProjection_reduces(t *testing.T) {
@@ -739,7 +739,7 @@ func TestLoginPolicyProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/mail_template.go b/internal/query/projection/mail_template.go
index 91bab4c655..e5b4e0b908 100644
--- a/internal/query/projection/mail_template.go
+++ b/internal/query/projection/mail_template.go
@@ -4,13 +4,13 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/policy"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -110,7 +110,7 @@ func (p *mailTemplateProjection) reduceAdded(event eventstore.Event) (*handler.S
templateEvent = e.MailTemplateAddedEvent
isDefault = true
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-0pJ3f", "reduce.wrong.event.type, %v", []eventstore.EventType{org.MailTemplateAddedEventType, instance.MailTemplateAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-0pJ3f", "reduce.wrong.event.type, %v", []eventstore.EventType{org.MailTemplateAddedEventType, instance.MailTemplateAddedEventType})
}
return handler.NewCreateStatement(
&templateEvent,
@@ -134,7 +134,7 @@ func (p *mailTemplateProjection) reduceChanged(event eventstore.Event) (*handler
case *instance.MailTemplateChangedEvent:
policyEvent = e.MailTemplateChangedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-gJ03f", "reduce.wrong.event.type, %v", []eventstore.EventType{org.MailTemplateChangedEventType, instance.MailTemplateChangedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-gJ03f", "reduce.wrong.event.type, %v", []eventstore.EventType{org.MailTemplateChangedEventType, instance.MailTemplateChangedEventType})
}
cols := []handler.Column{
handler.NewCol(MailTemplateChangeDateCol, policyEvent.CreationDate()),
@@ -155,7 +155,7 @@ func (p *mailTemplateProjection) reduceChanged(event eventstore.Event) (*handler
func (p *mailTemplateProjection) reduceRemoved(event eventstore.Event) (*handler.Statement, error) {
policyEvent, ok := event.(*org.MailTemplateRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-3jJGs", "reduce.wrong.event.type %s", org.MailTemplateRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-3jJGs", "reduce.wrong.event.type %s", org.MailTemplateRemovedEventType)
}
return handler.NewDeleteStatement(
policyEvent,
@@ -168,7 +168,7 @@ func (p *mailTemplateProjection) reduceRemoved(event eventstore.Event) (*handler
func (p *mailTemplateProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-CThXR", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-CThXR", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewDeleteStatement(
diff --git a/internal/query/projection/mail_template_test.go b/internal/query/projection/mail_template_test.go
index 336ad394f6..39a7e45260 100644
--- a/internal/query/projection/mail_template_test.go
+++ b/internal/query/projection/mail_template_test.go
@@ -4,11 +4,11 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestMailTemplateProjection_reduces(t *testing.T) {
@@ -240,7 +240,7 @@ func TestMailTemplateProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/message_text_test.go b/internal/query/projection/message_text_test.go
index 0fb3f14410..7f67f946a6 100644
--- a/internal/query/projection/message_text_test.go
+++ b/internal/query/projection/message_text_test.go
@@ -4,11 +4,11 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestMessageTextProjection_reduces(t *testing.T) {
@@ -712,7 +712,7 @@ func TestMessageTextProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/message_texts.go b/internal/query/projection/message_texts.go
index fd6af6c1ab..4b2a2b16ca 100644
--- a/internal/query/projection/message_texts.go
+++ b/internal/query/projection/message_texts.go
@@ -4,13 +4,13 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/policy"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -125,7 +125,7 @@ func (p *messageTextProjection) reduceAdded(event eventstore.Event) (*handler.St
case *instance.CustomTextSetEvent:
templateEvent = e.CustomTextSetEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-2n90r", "reduce.wrong.event.type %v", []eventstore.EventType{org.CustomTextSetEventType, instance.CustomTextSetEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-2n90r", "reduce.wrong.event.type %v", []eventstore.EventType{org.CustomTextSetEventType, instance.CustomTextSetEventType})
}
if !isMessageTemplate(templateEvent.Template) {
return handler.NewNoOpStatement(event), nil
@@ -182,7 +182,7 @@ func (p *messageTextProjection) reduceRemoved(event eventstore.Event) (*handler.
case *instance.CustomTextRemovedEvent:
templateEvent = e.CustomTextRemovedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-fm0ge", "reduce.wrong.event.type %v", []eventstore.EventType{org.CustomTextRemovedEventType, instance.CustomTextRemovedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-fm0ge", "reduce.wrong.event.type %v", []eventstore.EventType{org.CustomTextRemovedEventType, instance.CustomTextRemovedEventType})
}
if !isMessageTemplate(templateEvent.Template) {
return handler.NewNoOpStatement(event), nil
@@ -232,7 +232,7 @@ func (p *messageTextProjection) reduceTemplateRemoved(event eventstore.Event) (*
case *instance.CustomTextTemplateRemovedEvent:
templateEvent = e.CustomTextTemplateRemovedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-2n9rs", "reduce.wrong.event.type %s", org.CustomTextTemplateRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-2n9rs", "reduce.wrong.event.type %s", org.CustomTextTemplateRemovedEventType)
}
if !isMessageTemplate(templateEvent.Template) {
return handler.NewNoOpStatement(event), nil
@@ -251,7 +251,7 @@ func (p *messageTextProjection) reduceTemplateRemoved(event eventstore.Event) (*
func (p *messageTextProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-mLsQw", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-mLsQw", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewDeleteStatement(
diff --git a/internal/query/projection/milestones_test.go b/internal/query/projection/milestones_test.go
index fd606538a7..884c7e27de 100644
--- a/internal/query/projection/milestones_test.go
+++ b/internal/query/projection/milestones_test.go
@@ -5,13 +5,13 @@ import (
"time"
"github.com/zitadel/zitadel/internal/database"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/milestone"
"github.com/zitadel/zitadel/internal/repository/project"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestMilestonesProjection_reduces(t *testing.T) {
@@ -380,7 +380,7 @@ func TestMilestonesProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if !errors.IsErrorInvalidArgument(err) {
+ if !zerrors.IsErrorInvalidArgument(err) {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
event = tt.args.event(t)
diff --git a/internal/query/projection/notification_policy.go b/internal/query/projection/notification_policy.go
index 49c8618a2f..4b4d50f690 100644
--- a/internal/query/projection/notification_policy.go
+++ b/internal/query/projection/notification_policy.go
@@ -4,13 +4,13 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/policy"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -111,7 +111,7 @@ func (p *notificationPolicyProjection) reduceAdded(event eventstore.Event) (*han
policyEvent = e.NotificationPolicyAddedEvent
isDefault = true
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-x02s1m", "reduce.wrong.event.type %v", []eventstore.EventType{org.NotificationPolicyAddedEventType, instance.NotificationPolicyAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-x02s1m", "reduce.wrong.event.type %v", []eventstore.EventType{org.NotificationPolicyAddedEventType, instance.NotificationPolicyAddedEventType})
}
return handler.NewCreateStatement(
&policyEvent,
@@ -136,7 +136,7 @@ func (p *notificationPolicyProjection) reduceChanged(event eventstore.Event) (*h
case *instance.NotificationPolicyChangedEvent:
policyEvent = e.NotificationPolicyChangedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-psom2h19", "reduce.wrong.event.type %v", []eventstore.EventType{org.NotificationPolicyChangedEventType, instance.NotificationPolicyChangedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-psom2h19", "reduce.wrong.event.type %v", []eventstore.EventType{org.NotificationPolicyChangedEventType, instance.NotificationPolicyChangedEventType})
}
cols := []handler.Column{
handler.NewCol(NotificationPolicyColumnChangeDate, policyEvent.CreationDate()),
@@ -157,7 +157,7 @@ func (p *notificationPolicyProjection) reduceChanged(event eventstore.Event) (*h
func (p *notificationPolicyProjection) reduceRemoved(event eventstore.Event) (*handler.Statement, error) {
policyEvent, ok := event.(*org.NotificationPolicyRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-Po2iso2", "reduce.wrong.event.type %s", org.NotificationPolicyRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-Po2iso2", "reduce.wrong.event.type %s", org.NotificationPolicyRemovedEventType)
}
return handler.NewDeleteStatement(
policyEvent,
@@ -170,7 +170,7 @@ func (p *notificationPolicyProjection) reduceRemoved(event eventstore.Event) (*h
func (p *notificationPolicyProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-poxi9a", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-poxi9a", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewDeleteStatement(
diff --git a/internal/query/projection/notification_policy_test.go b/internal/query/projection/notification_policy_test.go
index b21f33b74b..3da507fd20 100644
--- a/internal/query/projection/notification_policy_test.go
+++ b/internal/query/projection/notification_policy_test.go
@@ -4,11 +4,11 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestNotificationPolicyProjection_reduces(t *testing.T) {
@@ -242,7 +242,7 @@ func TestNotificationPolicyProjection_reduces(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if ok := errors.IsErrorInvalidArgument(err); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/oidc_settings.go b/internal/query/projection/oidc_settings.go
index fc53b5260e..8b24b926d7 100644
--- a/internal/query/projection/oidc_settings.go
+++ b/internal/query/projection/oidc_settings.go
@@ -3,11 +3,11 @@ package projection
import (
"context"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -79,7 +79,7 @@ func (p *oidcSettingsProjection) Reducers() []handler.AggregateReducer {
func (p *oidcSettingsProjection) reduceOIDCSettingsAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*instance.OIDCSettingsAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-f9nwf", "reduce.wrong.event.type %s", instance.OIDCSettingsAddedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-f9nwf", "reduce.wrong.event.type %s", instance.OIDCSettingsAddedEventType)
}
return handler.NewCreateStatement(
e,
@@ -101,7 +101,7 @@ func (p *oidcSettingsProjection) reduceOIDCSettingsAdded(event eventstore.Event)
func (p *oidcSettingsProjection) reduceOIDCSettingsChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*instance.OIDCSettingsChangedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-8JJ2d", "reduce.wrong.event.type %s", instance.OIDCSettingsChangedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-8JJ2d", "reduce.wrong.event.type %s", instance.OIDCSettingsChangedEventType)
}
columns := make([]handler.Column, 0, 6)
diff --git a/internal/query/projection/oidc_settings_test.go b/internal/query/projection/oidc_settings_test.go
index c4d5c7b8e2..b78d38d04c 100644
--- a/internal/query/projection/oidc_settings_test.go
+++ b/internal/query/projection/oidc_settings_test.go
@@ -4,10 +4,10 @@ import (
"testing"
"time"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestOIDCSettingsProjection_reduces(t *testing.T) {
@@ -119,7 +119,7 @@ func TestOIDCSettingsProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/org.go b/internal/query/projection/org.go
index 9db19403ce..271aae145e 100644
--- a/internal/query/projection/org.go
+++ b/internal/query/projection/org.go
@@ -4,12 +4,12 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -103,7 +103,7 @@ func (p *orgProjection) Reducers() []handler.AggregateReducer {
func (p *orgProjection) reduceOrgAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-uYq4r", "reduce.wrong.event.type %s", org.OrgAddedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-uYq4r", "reduce.wrong.event.type %s", org.OrgAddedEventType)
}
return handler.NewCreateStatement(
e,
@@ -123,7 +123,7 @@ func (p *orgProjection) reduceOrgAdded(event eventstore.Event) (*handler.Stateme
func (p *orgProjection) reduceOrgChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgChangedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Bg8oM", "reduce.wrong.event.type %s", org.OrgChangedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Bg8oM", "reduce.wrong.event.type %s", org.OrgChangedEventType)
}
if e.Name == "" {
return handler.NewNoOpStatement(e), nil
@@ -145,7 +145,7 @@ func (p *orgProjection) reduceOrgChanged(event eventstore.Event) (*handler.State
func (p *orgProjection) reduceOrgDeactivated(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgDeactivatedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-BApK4", "reduce.wrong.event.type %s", org.OrgDeactivatedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-BApK4", "reduce.wrong.event.type %s", org.OrgDeactivatedEventType)
}
return handler.NewUpdateStatement(
e,
@@ -164,7 +164,7 @@ func (p *orgProjection) reduceOrgDeactivated(event eventstore.Event) (*handler.S
func (p *orgProjection) reduceOrgReactivated(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgReactivatedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-o37De", "reduce.wrong.event.type %s", org.OrgReactivatedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-o37De", "reduce.wrong.event.type %s", org.OrgReactivatedEventType)
}
return handler.NewUpdateStatement(
e,
@@ -183,7 +183,7 @@ func (p *orgProjection) reduceOrgReactivated(event eventstore.Event) (*handler.S
func (p *orgProjection) reducePrimaryDomainSet(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.DomainPrimarySetEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-4TbKT", "reduce.wrong.event.type %s", org.OrgDomainPrimarySetEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-4TbKT", "reduce.wrong.event.type %s", org.OrgDomainPrimarySetEventType)
}
return handler.NewUpdateStatement(
e,
@@ -202,7 +202,7 @@ func (p *orgProjection) reducePrimaryDomainSet(event eventstore.Event) (*handler
func (p *orgProjection) reduceOrgRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-DgMSg", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-DgMSg", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewDeleteStatement(
e,
diff --git a/internal/query/projection/org_domain.go b/internal/query/projection/org_domain.go
index 21e03e9225..b412b7fa3a 100644
--- a/internal/query/projection/org_domain.go
+++ b/internal/query/projection/org_domain.go
@@ -4,12 +4,12 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -103,7 +103,7 @@ func (p *orgDomainProjection) Reducers() []handler.AggregateReducer {
func (p *orgDomainProjection) reduceDomainAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.DomainAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-DM2DI", "reduce.wrong.event.type %s", org.OrgDomainAddedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-DM2DI", "reduce.wrong.event.type %s", org.OrgDomainAddedEventType)
}
return handler.NewCreateStatement(
e,
@@ -124,7 +124,7 @@ func (p *orgDomainProjection) reduceDomainAdded(event eventstore.Event) (*handle
func (p *orgDomainProjection) reduceDomainVerificationAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.DomainVerificationAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-EBzyu", "reduce.wrong.event.type %s", org.OrgDomainVerificationAddedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-EBzyu", "reduce.wrong.event.type %s", org.OrgDomainVerificationAddedEventType)
}
return handler.NewUpdateStatement(
e,
@@ -144,7 +144,7 @@ func (p *orgDomainProjection) reduceDomainVerificationAdded(event eventstore.Eve
func (p *orgDomainProjection) reduceDomainVerified(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.DomainVerifiedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-3Rvkr", "reduce.wrong.event.type %s", org.OrgDomainVerifiedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-3Rvkr", "reduce.wrong.event.type %s", org.OrgDomainVerifiedEventType)
}
return handler.NewUpdateStatement(
e,
@@ -164,7 +164,7 @@ func (p *orgDomainProjection) reduceDomainVerified(event eventstore.Event) (*han
func (p *orgDomainProjection) reducePrimaryDomainSet(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.DomainPrimarySetEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-aIuei", "reduce.wrong.event.type %s", org.OrgDomainPrimarySetEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-aIuei", "reduce.wrong.event.type %s", org.OrgDomainPrimarySetEventType)
}
return handler.NewMultiStatement(
e,
@@ -198,7 +198,7 @@ func (p *orgDomainProjection) reducePrimaryDomainSet(event eventstore.Event) (*h
func (p *orgDomainProjection) reduceDomainRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.DomainRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-gh1Mx", "reduce.wrong.event.type %s", org.OrgDomainRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-gh1Mx", "reduce.wrong.event.type %s", org.OrgDomainRemovedEventType)
}
return handler.NewDeleteStatement(
e,
@@ -213,7 +213,7 @@ func (p *orgDomainProjection) reduceDomainRemoved(event eventstore.Event) (*hand
func (p *orgDomainProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-dMUKJ", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-dMUKJ", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewDeleteStatement(
diff --git a/internal/query/projection/org_domain_test.go b/internal/query/projection/org_domain_test.go
index 0494177ebf..df01b502f9 100644
--- a/internal/query/projection/org_domain_test.go
+++ b/internal/query/projection/org_domain_test.go
@@ -4,11 +4,11 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestOrgDomainProjection_reduces(t *testing.T) {
@@ -245,7 +245,7 @@ func TestOrgDomainProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/org_member.go b/internal/query/projection/org_member.go
index 801b682486..37c6d241a8 100644
--- a/internal/query/projection/org_member.go
+++ b/internal/query/projection/org_member.go
@@ -3,13 +3,13 @@ package projection
import (
"context"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -101,7 +101,7 @@ func (p *orgMemberProjection) Reducers() []handler.AggregateReducer {
func (p *orgMemberProjection) reduceAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.MemberAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-uYq4r", "reduce.wrong.event.type %s", org.MemberAddedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-uYq4r", "reduce.wrong.event.type %s", org.MemberAddedEventType)
}
ctx := setMemberContext(e.Aggregate())
userOwner, err := getResourceOwnerOfUser(ctx, p.es, e.Aggregate().InstanceID, e.UserID)
@@ -114,7 +114,7 @@ func (p *orgMemberProjection) reduceAdded(event eventstore.Event) (*handler.Stat
func (p *orgMemberProjection) reduceChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.MemberChangedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Bg8oM", "reduce.wrong.event.type %s", org.MemberChangedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Bg8oM", "reduce.wrong.event.type %s", org.MemberChangedEventType)
}
return reduceMemberChanged(e.MemberChangedEvent, withMemberCond(OrgMemberOrgIDCol, e.Aggregate().ID))
}
@@ -122,7 +122,7 @@ func (p *orgMemberProjection) reduceChanged(event eventstore.Event) (*handler.St
func (p *orgMemberProjection) reduceCascadeRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.MemberCascadeRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-4twP2", "reduce.wrong.event.type %s", org.MemberCascadeRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-4twP2", "reduce.wrong.event.type %s", org.MemberCascadeRemovedEventType)
}
return reduceMemberCascadeRemoved(e.MemberCascadeRemovedEvent, withMemberCond(OrgMemberOrgIDCol, e.Aggregate().ID))
}
@@ -130,7 +130,7 @@ func (p *orgMemberProjection) reduceCascadeRemoved(event eventstore.Event) (*han
func (p *orgMemberProjection) reduceRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.MemberRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-avatH", "reduce.wrong.event.type %s", org.MemberRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-avatH", "reduce.wrong.event.type %s", org.MemberRemovedEventType)
}
return reduceMemberRemoved(e,
withMemberCond(MemberUserIDCol, e.UserID),
@@ -141,7 +141,7 @@ func (p *orgMemberProjection) reduceRemoved(event eventstore.Event) (*handler.St
func (p *orgMemberProjection) reduceUserRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.UserRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-eBMqH", "reduce.wrong.event.type %s", user.UserRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-eBMqH", "reduce.wrong.event.type %s", user.UserRemovedType)
}
return reduceMemberRemoved(e, withMemberCond(MemberUserIDCol, e.Aggregate().ID))
}
@@ -149,7 +149,7 @@ func (p *orgMemberProjection) reduceUserRemoved(event eventstore.Event) (*handle
func (p *orgMemberProjection) reduceOrgRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-jnGAV", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-jnGAV", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewMultiStatement(
e,
diff --git a/internal/query/projection/org_member_test.go b/internal/query/projection/org_member_test.go
index 5737c30e8b..7c8fd8679d 100644
--- a/internal/query/projection/org_member_test.go
+++ b/internal/query/projection/org_member_test.go
@@ -8,12 +8,12 @@ import (
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestOrgMemberProjection_reduces(t *testing.T) {
@@ -264,7 +264,7 @@ func TestOrgMemberProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/org_metadata.go b/internal/query/projection/org_metadata.go
index e2e21f4e1e..7e4e908820 100644
--- a/internal/query/projection/org_metadata.go
+++ b/internal/query/projection/org_metadata.go
@@ -3,12 +3,12 @@ package projection
import (
"context"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -92,7 +92,7 @@ func (p *orgMetadataProjection) Reducers() []handler.AggregateReducer {
func (p *orgMetadataProjection) reduceMetadataSet(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.MetadataSetEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Ghn53", "reduce.wrong.event.type %s", org.MetadataSetType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Ghn53", "reduce.wrong.event.type %s", org.MetadataSetType)
}
return handler.NewUpsertStatement(
e,
@@ -117,7 +117,7 @@ func (p *orgMetadataProjection) reduceMetadataSet(event eventstore.Event) (*hand
func (p *orgMetadataProjection) reduceMetadataRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.MetadataRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Bm542", "reduce.wrong.event.type %s", org.MetadataRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Bm542", "reduce.wrong.event.type %s", org.MetadataRemovedType)
}
return handler.NewDeleteStatement(
e,
@@ -135,7 +135,7 @@ func (p *orgMetadataProjection) reduceMetadataRemovedAll(event eventstore.Event)
*org.OrgRemovedEvent:
//ok
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Bmnf3", "reduce.wrong.event.type %v", []eventstore.EventType{org.MetadataRemovedAllType, org.OrgRemovedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Bmnf3", "reduce.wrong.event.type %v", []eventstore.EventType{org.MetadataRemovedAllType, org.OrgRemovedEventType})
}
return handler.NewDeleteStatement(
event,
@@ -149,7 +149,7 @@ func (p *orgMetadataProjection) reduceMetadataRemovedAll(event eventstore.Event)
func (p *orgMetadataProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-Hkd1f", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-Hkd1f", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewUpdateStatement(
diff --git a/internal/query/projection/org_metadata_test.go b/internal/query/projection/org_metadata_test.go
index b0fce9911d..1883afac4a 100644
--- a/internal/query/projection/org_metadata_test.go
+++ b/internal/query/projection/org_metadata_test.go
@@ -3,11 +3,11 @@ package projection
import (
"testing"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestOrgMetadataProjection_reduces(t *testing.T) {
@@ -174,7 +174,7 @@ func TestOrgMetadataProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/org_test.go b/internal/query/projection/org_test.go
index 94d72469a7..eec60de1f4 100644
--- a/internal/query/projection/org_test.go
+++ b/internal/query/projection/org_test.go
@@ -4,11 +4,11 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestOrgProjection_reduces(t *testing.T) {
@@ -249,7 +249,7 @@ func TestOrgProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/password_age_policy.go b/internal/query/projection/password_age_policy.go
index 03e0aee338..5a1bbbdc73 100644
--- a/internal/query/projection/password_age_policy.go
+++ b/internal/query/projection/password_age_policy.go
@@ -4,13 +4,13 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/policy"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -114,7 +114,7 @@ func (p *passwordAgeProjection) reduceAdded(event eventstore.Event) (*handler.St
policyEvent = e.PasswordAgePolicyAddedEvent
isDefault = true
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-CJqF0", "reduce.wrong.event.type %v", []eventstore.EventType{org.PasswordAgePolicyAddedEventType, instance.PasswordAgePolicyAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-CJqF0", "reduce.wrong.event.type %v", []eventstore.EventType{org.PasswordAgePolicyAddedEventType, instance.PasswordAgePolicyAddedEventType})
}
return handler.NewCreateStatement(
&policyEvent,
@@ -140,7 +140,7 @@ func (p *passwordAgeProjection) reduceChanged(event eventstore.Event) (*handler.
case *instance.PasswordAgePolicyChangedEvent:
policyEvent = e.PasswordAgePolicyChangedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-i7FZt", "reduce.wrong.event.type %v", []eventstore.EventType{org.PasswordAgePolicyChangedEventType, instance.PasswordAgePolicyChangedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-i7FZt", "reduce.wrong.event.type %v", []eventstore.EventType{org.PasswordAgePolicyChangedEventType, instance.PasswordAgePolicyChangedEventType})
}
cols := []handler.Column{
handler.NewCol(AgePolicyChangeDateCol, policyEvent.CreationDate()),
@@ -164,7 +164,7 @@ func (p *passwordAgeProjection) reduceChanged(event eventstore.Event) (*handler.
func (p *passwordAgeProjection) reduceRemoved(event eventstore.Event) (*handler.Statement, error) {
policyEvent, ok := event.(*org.PasswordAgePolicyRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-EtHWB", "reduce.wrong.event.type %s", org.PasswordAgePolicyRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-EtHWB", "reduce.wrong.event.type %s", org.PasswordAgePolicyRemovedEventType)
}
return handler.NewDeleteStatement(
policyEvent,
@@ -177,7 +177,7 @@ func (p *passwordAgeProjection) reduceRemoved(event eventstore.Event) (*handler.
func (p *passwordAgeProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-edLs2", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-edLs2", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewDeleteStatement(
diff --git a/internal/query/projection/password_age_policy_test.go b/internal/query/projection/password_age_policy_test.go
index 8ce044e785..a1a240b985 100644
--- a/internal/query/projection/password_age_policy_test.go
+++ b/internal/query/projection/password_age_policy_test.go
@@ -4,11 +4,11 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestPasswordAgeProjection_reduces(t *testing.T) {
@@ -250,7 +250,7 @@ func TestPasswordAgeProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/password_complexity_policy.go b/internal/query/projection/password_complexity_policy.go
index 96072017dd..2072ba6360 100644
--- a/internal/query/projection/password_complexity_policy.go
+++ b/internal/query/projection/password_complexity_policy.go
@@ -4,13 +4,13 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/policy"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -120,7 +120,7 @@ func (p *passwordComplexityProjection) reduceAdded(event eventstore.Event) (*han
policyEvent = e.PasswordComplexityPolicyAddedEvent
isDefault = true
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-KTHmJ", "reduce.wrong.event.type %v", []eventstore.EventType{org.PasswordComplexityPolicyAddedEventType, instance.PasswordComplexityPolicyAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-KTHmJ", "reduce.wrong.event.type %v", []eventstore.EventType{org.PasswordComplexityPolicyAddedEventType, instance.PasswordComplexityPolicyAddedEventType})
}
return handler.NewCreateStatement(
&policyEvent,
@@ -149,7 +149,7 @@ func (p *passwordComplexityProjection) reduceChanged(event eventstore.Event) (*h
case *instance.PasswordComplexityPolicyChangedEvent:
policyEvent = e.PasswordComplexityPolicyChangedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-cf3Xb", "reduce.wrong.event.type %v", []eventstore.EventType{org.PasswordComplexityPolicyChangedEventType, instance.PasswordComplexityPolicyChangedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-cf3Xb", "reduce.wrong.event.type %v", []eventstore.EventType{org.PasswordComplexityPolicyChangedEventType, instance.PasswordComplexityPolicyChangedEventType})
}
cols := []handler.Column{
handler.NewCol(ComplexityPolicyChangeDateCol, policyEvent.CreationDate()),
@@ -182,7 +182,7 @@ func (p *passwordComplexityProjection) reduceChanged(event eventstore.Event) (*h
func (p *passwordComplexityProjection) reduceRemoved(event eventstore.Event) (*handler.Statement, error) {
policyEvent, ok := event.(*org.PasswordComplexityPolicyRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-wttCd", "reduce.wrong.event.type %s", org.PasswordComplexityPolicyRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-wttCd", "reduce.wrong.event.type %s", org.PasswordComplexityPolicyRemovedEventType)
}
return handler.NewDeleteStatement(
policyEvent,
@@ -195,7 +195,7 @@ func (p *passwordComplexityProjection) reduceRemoved(event eventstore.Event) (*h
func (p *passwordComplexityProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-pGTz9", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-pGTz9", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewDeleteStatement(
diff --git a/internal/query/projection/password_complexity_policy_test.go b/internal/query/projection/password_complexity_policy_test.go
index 0428d1ae24..f9cb0b75a0 100644
--- a/internal/query/projection/password_complexity_policy_test.go
+++ b/internal/query/projection/password_complexity_policy_test.go
@@ -4,11 +4,11 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestPasswordComplexityProjection_reduces(t *testing.T) {
@@ -274,7 +274,7 @@ func TestPasswordComplexityProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/privacy_policy.go b/internal/query/projection/privacy_policy.go
index 44ac5794fe..2bec8fea18 100644
--- a/internal/query/projection/privacy_policy.go
+++ b/internal/query/projection/privacy_policy.go
@@ -4,13 +4,13 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/policy"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -118,7 +118,7 @@ func (p *privacyPolicyProjection) reduceAdded(event eventstore.Event) (*handler.
policyEvent = e.PrivacyPolicyAddedEvent
isDefault = true
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-kRNh8", "reduce.wrong.event.type %v", []eventstore.EventType{org.PrivacyPolicyAddedEventType, instance.PrivacyPolicyAddedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-kRNh8", "reduce.wrong.event.type %v", []eventstore.EventType{org.PrivacyPolicyAddedEventType, instance.PrivacyPolicyAddedEventType})
}
return handler.NewCreateStatement(
&policyEvent,
@@ -146,7 +146,7 @@ func (p *privacyPolicyProjection) reduceChanged(event eventstore.Event) (*handle
case *instance.PrivacyPolicyChangedEvent:
policyEvent = e.PrivacyPolicyChangedEvent
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-91weZ", "reduce.wrong.event.type %v", []eventstore.EventType{org.PrivacyPolicyChangedEventType, instance.PrivacyPolicyChangedEventType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-91weZ", "reduce.wrong.event.type %v", []eventstore.EventType{org.PrivacyPolicyChangedEventType, instance.PrivacyPolicyChangedEventType})
}
cols := []handler.Column{
handler.NewCol(PrivacyPolicyChangeDateCol, policyEvent.CreationDate()),
@@ -176,7 +176,7 @@ func (p *privacyPolicyProjection) reduceChanged(event eventstore.Event) (*handle
func (p *privacyPolicyProjection) reduceRemoved(event eventstore.Event) (*handler.Statement, error) {
policyEvent, ok := event.(*org.PrivacyPolicyRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-FvtGO", "reduce.wrong.event.type %s", org.PrivacyPolicyRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-FvtGO", "reduce.wrong.event.type %s", org.PrivacyPolicyRemovedEventType)
}
return handler.NewDeleteStatement(
policyEvent,
@@ -189,7 +189,7 @@ func (p *privacyPolicyProjection) reduceRemoved(event eventstore.Event) (*handle
func (p *privacyPolicyProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-bxJCY", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-bxJCY", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewDeleteStatement(
diff --git a/internal/query/projection/privacy_policy_test.go b/internal/query/projection/privacy_policy_test.go
index 53c147507e..2d768f7e4b 100644
--- a/internal/query/projection/privacy_policy_test.go
+++ b/internal/query/projection/privacy_policy_test.go
@@ -4,11 +4,11 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestPrivacyPolicyProjection_reduces(t *testing.T) {
@@ -261,7 +261,7 @@ func TestPrivacyPolicyProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/project.go b/internal/query/projection/project.go
index 95f62cdc7c..b894c37cec 100644
--- a/internal/query/projection/project.go
+++ b/internal/query/projection/project.go
@@ -4,13 +4,13 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/project"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -113,7 +113,7 @@ func (p *projectProjection) Reducers() []handler.AggregateReducer {
func (p *projectProjection) reduceProjectAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.ProjectAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-l000S", "reduce.wrong.event.type %s", project.ProjectAddedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-l000S", "reduce.wrong.event.type %s", project.ProjectAddedType)
}
return handler.NewCreateStatement(
e,
@@ -137,7 +137,7 @@ func (p *projectProjection) reduceProjectAdded(event eventstore.Event) (*handler
func (p *projectProjection) reduceProjectChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.ProjectChangeEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-s00Fs", "reduce.wrong.event.type %s", project.ProjectChangedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-s00Fs", "reduce.wrong.event.type %s", project.ProjectChangedType)
}
if e.Name == nil && e.HasProjectCheck == nil && e.ProjectRoleAssertion == nil && e.ProjectRoleCheck == nil && e.PrivateLabelingSetting == nil {
return handler.NewNoOpStatement(e), nil
@@ -174,7 +174,7 @@ func (p *projectProjection) reduceProjectChanged(event eventstore.Event) (*handl
func (p *projectProjection) reduceProjectDeactivated(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.ProjectDeactivatedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-LLp0f", "reduce.wrong.event.type %s", project.ProjectDeactivatedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-LLp0f", "reduce.wrong.event.type %s", project.ProjectDeactivatedType)
}
return handler.NewUpdateStatement(
e,
@@ -193,7 +193,7 @@ func (p *projectProjection) reduceProjectDeactivated(event eventstore.Event) (*h
func (p *projectProjection) reduceProjectReactivated(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.ProjectReactivatedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-9J98f", "reduce.wrong.event.type %s", project.ProjectReactivatedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-9J98f", "reduce.wrong.event.type %s", project.ProjectReactivatedType)
}
return handler.NewUpdateStatement(
e,
@@ -212,7 +212,7 @@ func (p *projectProjection) reduceProjectReactivated(event eventstore.Event) (*h
func (p *projectProjection) reduceProjectRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.ProjectRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-5N9fs", "reduce.wrong.event.type %s", project.ProjectRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-5N9fs", "reduce.wrong.event.type %s", project.ProjectRemovedType)
}
return handler.NewDeleteStatement(
e,
@@ -226,7 +226,7 @@ func (p *projectProjection) reduceProjectRemoved(event eventstore.Event) (*handl
func (p *projectProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-sbgru", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-sbgru", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewDeleteStatement(
diff --git a/internal/query/projection/project_grant.go b/internal/query/projection/project_grant.go
index 7923299e34..d6fbde8556 100644
--- a/internal/query/projection/project_grant.go
+++ b/internal/query/projection/project_grant.go
@@ -5,13 +5,13 @@ import (
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/project"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -119,7 +119,7 @@ func (p *projectGrantProjection) Reducers() []handler.AggregateReducer {
func (p *projectGrantProjection) reduceProjectGrantAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.GrantAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-g92Fg", "reduce.wrong.event.type %s", project.GrantAddedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-g92Fg", "reduce.wrong.event.type %s", project.GrantAddedType)
}
return handler.NewCreateStatement(
e,
@@ -141,7 +141,7 @@ func (p *projectGrantProjection) reduceProjectGrantAdded(event eventstore.Event)
func (p *projectGrantProjection) reduceProjectGrantChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.GrantChangedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-g0fg4", "reduce.wrong.event.type %s", project.GrantChangedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-g0fg4", "reduce.wrong.event.type %s", project.GrantChangedType)
}
return handler.NewUpdateStatement(
e,
@@ -161,7 +161,7 @@ func (p *projectGrantProjection) reduceProjectGrantChanged(event eventstore.Even
func (p *projectGrantProjection) reduceProjectGrantCascadeChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.GrantCascadeChangedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-ll9Ts", "reduce.wrong.event.type %s", project.GrantCascadeChangedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-ll9Ts", "reduce.wrong.event.type %s", project.GrantCascadeChangedType)
}
return handler.NewUpdateStatement(
e,
@@ -181,7 +181,7 @@ func (p *projectGrantProjection) reduceProjectGrantCascadeChanged(event eventsto
func (p *projectGrantProjection) reduceProjectGrantDeactivated(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.GrantDeactivateEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-0fj2f", "reduce.wrong.event.type %s", project.GrantDeactivatedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-0fj2f", "reduce.wrong.event.type %s", project.GrantDeactivatedType)
}
return handler.NewUpdateStatement(
e,
@@ -201,7 +201,7 @@ func (p *projectGrantProjection) reduceProjectGrantDeactivated(event eventstore.
func (p *projectGrantProjection) reduceProjectGrantReactivated(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.GrantReactivatedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-2M0ve", "reduce.wrong.event.type %s", project.GrantReactivatedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-2M0ve", "reduce.wrong.event.type %s", project.GrantReactivatedType)
}
return handler.NewUpdateStatement(
e,
@@ -221,7 +221,7 @@ func (p *projectGrantProjection) reduceProjectGrantReactivated(event eventstore.
func (p *projectGrantProjection) reduceProjectGrantRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.GrantRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-o0w4f", "reduce.wrong.event.type %s", project.GrantRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-o0w4f", "reduce.wrong.event.type %s", project.GrantRemovedType)
}
return handler.NewDeleteStatement(
e,
@@ -236,7 +236,7 @@ func (p *projectGrantProjection) reduceProjectGrantRemoved(event eventstore.Even
func (p *projectGrantProjection) reduceProjectRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.ProjectRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-gn9rw", "reduce.wrong.event.type %s", project.ProjectRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-gn9rw", "reduce.wrong.event.type %s", project.ProjectRemovedType)
}
return handler.NewDeleteStatement(
e,
@@ -250,7 +250,7 @@ func (p *projectGrantProjection) reduceProjectRemoved(event eventstore.Event) (*
func (p *projectGrantProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-HDgW3", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-HDgW3", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewMultiStatement(
diff --git a/internal/query/projection/project_grant_member.go b/internal/query/projection/project_grant_member.go
index cf357ba919..b86c025315 100644
--- a/internal/query/projection/project_grant_member.go
+++ b/internal/query/projection/project_grant_member.go
@@ -3,7 +3,6 @@ package projection
import (
"context"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
@@ -12,6 +11,7 @@ import (
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/project"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -122,7 +122,7 @@ func (p *projectGrantMemberProjection) Reducers() []handler.AggregateReducer {
func (p *projectGrantMemberProjection) reduceAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.GrantMemberAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-0EBQf", "reduce.wrong.event.type %s", project.GrantMemberAddedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-0EBQf", "reduce.wrong.event.type %s", project.GrantMemberAddedType)
}
ctx := setMemberContext(e.Aggregate())
userOwner, err := getResourceOwnerOfUser(ctx, p.es, e.Aggregate().InstanceID, e.UserID)
@@ -145,7 +145,7 @@ func (p *projectGrantMemberProjection) reduceAdded(event eventstore.Event) (*han
func (p *projectGrantMemberProjection) reduceChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.GrantMemberChangedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-YX5Tk", "reduce.wrong.event.type %s", project.GrantMemberChangedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-YX5Tk", "reduce.wrong.event.type %s", project.GrantMemberChangedType)
}
return reduceMemberChanged(
*member.NewMemberChangedEvent(&e.BaseEvent, e.UserID, e.Roles...),
@@ -157,7 +157,7 @@ func (p *projectGrantMemberProjection) reduceChanged(event eventstore.Event) (*h
func (p *projectGrantMemberProjection) reduceCascadeRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.GrantMemberCascadeRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-adnHG", "reduce.wrong.event.type %s", project.GrantMemberCascadeRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-adnHG", "reduce.wrong.event.type %s", project.GrantMemberCascadeRemovedType)
}
return reduceMemberCascadeRemoved(
*member.NewCascadeRemovedEvent(&e.BaseEvent, e.UserID),
@@ -169,7 +169,7 @@ func (p *projectGrantMemberProjection) reduceCascadeRemoved(event eventstore.Eve
func (p *projectGrantMemberProjection) reduceRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.GrantMemberRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-MGNnA", "reduce.wrong.event.type %s", project.GrantMemberRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-MGNnA", "reduce.wrong.event.type %s", project.GrantMemberRemovedType)
}
return reduceMemberRemoved(e,
withMemberCond(MemberUserIDCol, e.UserID),
@@ -181,7 +181,7 @@ func (p *projectGrantMemberProjection) reduceRemoved(event eventstore.Event) (*h
func (p *projectGrantMemberProjection) reduceUserRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.UserRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-rufJr", "reduce.wrong.event.type %s", user.UserRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-rufJr", "reduce.wrong.event.type %s", user.UserRemovedType)
}
return reduceMemberRemoved(e, withMemberCond(MemberUserIDCol, e.Aggregate().ID))
}
@@ -189,7 +189,7 @@ func (p *projectGrantMemberProjection) reduceUserRemoved(event eventstore.Event)
func (p *projectGrantMemberProjection) reduceInstanceRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*instance.InstanceRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Z2p6o", "reduce.wrong.event.type %s", instance.InstanceRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Z2p6o", "reduce.wrong.event.type %s", instance.InstanceRemovedEventType)
}
return reduceMemberRemoved(e, withMemberCond(MemberInstanceID, e.Aggregate().ID))
}
@@ -197,7 +197,7 @@ func (p *projectGrantMemberProjection) reduceInstanceRemoved(event eventstore.Ev
func (p *projectGrantMemberProjection) reduceOrgRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Zzp6o", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Zzp6o", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewMultiStatement(
e,
@@ -215,7 +215,7 @@ func (p *projectGrantMemberProjection) reduceOrgRemoved(event eventstore.Event)
func (p *projectGrantMemberProjection) reduceProjectRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.ProjectRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-JLODy", "reduce.wrong.event.type %s", project.ProjectRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-JLODy", "reduce.wrong.event.type %s", project.ProjectRemovedType)
}
return reduceMemberRemoved(e, withMemberCond(ProjectGrantMemberProjectIDCol, e.Aggregate().ID))
}
@@ -223,7 +223,7 @@ func (p *projectGrantMemberProjection) reduceProjectRemoved(event eventstore.Eve
func (p *projectGrantMemberProjection) reduceProjectGrantRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.GrantRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-D1J9R", "reduce.wrong.event.type %s", project.GrantRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-D1J9R", "reduce.wrong.event.type %s", project.GrantRemovedType)
}
return reduceMemberRemoved(e,
withMemberCond(ProjectGrantMemberGrantIDCol, e.GrantID),
diff --git a/internal/query/projection/project_grant_member_test.go b/internal/query/projection/project_grant_member_test.go
index b9425d789f..3b7839fe80 100644
--- a/internal/query/projection/project_grant_member_test.go
+++ b/internal/query/projection/project_grant_member_test.go
@@ -8,13 +8,13 @@ import (
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/project"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestProjectGrantMemberProjection_reduces(t *testing.T) {
@@ -344,7 +344,7 @@ func TestProjectGrantMemberProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/project_grant_test.go b/internal/query/projection/project_grant_test.go
index af8692db91..1ea9105704 100644
--- a/internal/query/projection/project_grant_test.go
+++ b/internal/query/projection/project_grant_test.go
@@ -5,12 +5,12 @@ import (
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/project"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestProjectGrantProjection_reduces(t *testing.T) {
@@ -302,7 +302,7 @@ func TestProjectGrantProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/project_member.go b/internal/query/projection/project_member.go
index 1a56605740..bf1f82f85d 100644
--- a/internal/query/projection/project_member.go
+++ b/internal/query/projection/project_member.go
@@ -3,7 +3,6 @@ package projection
import (
"context"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
@@ -12,6 +11,7 @@ import (
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/project"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -114,7 +114,7 @@ func (p *projectMemberProjection) Reducers() []handler.AggregateReducer {
func (p *projectMemberProjection) reduceAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.MemberAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-bgx5Q", "reduce.wrong.event.type %s", project.MemberAddedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-bgx5Q", "reduce.wrong.event.type %s", project.MemberAddedType)
}
ctx := setMemberContext(e.Aggregate())
userOwner, err := getResourceOwnerOfUser(ctx, p.es, e.Aggregate().InstanceID, e.UserID)
@@ -131,7 +131,7 @@ func (p *projectMemberProjection) reduceAdded(event eventstore.Event) (*handler.
func (p *projectMemberProjection) reduceChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.MemberChangedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-90WJ1", "reduce.wrong.event.type %s", project.MemberChangedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-90WJ1", "reduce.wrong.event.type %s", project.MemberChangedType)
}
return reduceMemberChanged(
*member.NewMemberChangedEvent(&e.BaseEvent, e.UserID, e.Roles...),
@@ -142,7 +142,7 @@ func (p *projectMemberProjection) reduceChanged(event eventstore.Event) (*handle
func (p *projectMemberProjection) reduceCascadeRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.MemberCascadeRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-aGd43", "reduce.wrong.event.type %s", project.MemberCascadeRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-aGd43", "reduce.wrong.event.type %s", project.MemberCascadeRemovedType)
}
return reduceMemberCascadeRemoved(
*member.NewCascadeRemovedEvent(&e.BaseEvent, e.UserID),
@@ -153,7 +153,7 @@ func (p *projectMemberProjection) reduceCascadeRemoved(event eventstore.Event) (
func (p *projectMemberProjection) reduceRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.MemberRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-eJZPh", "reduce.wrong.event.type %s", project.MemberRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-eJZPh", "reduce.wrong.event.type %s", project.MemberRemovedType)
}
return reduceMemberRemoved(e,
withMemberCond(MemberUserIDCol, e.UserID),
@@ -164,7 +164,7 @@ func (p *projectMemberProjection) reduceRemoved(event eventstore.Event) (*handle
func (p *projectMemberProjection) reduceUserRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.UserRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-aYA60", "reduce.wrong.event.type %s", user.UserRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-aYA60", "reduce.wrong.event.type %s", user.UserRemovedType)
}
return reduceMemberRemoved(e, withMemberCond(MemberUserIDCol, e.Aggregate().ID))
}
@@ -172,7 +172,7 @@ func (p *projectMemberProjection) reduceUserRemoved(event eventstore.Event) (*ha
func (p *projectMemberProjection) reduceOrgRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-NGUEL", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-NGUEL", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewMultiStatement(
e,
@@ -184,7 +184,7 @@ func (p *projectMemberProjection) reduceOrgRemoved(event eventstore.Event) (*han
func (p *projectMemberProjection) reduceProjectRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.ProjectRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-NGUEL", "reduce.wrong.event.type %s", project.ProjectRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-NGUEL", "reduce.wrong.event.type %s", project.ProjectRemovedType)
}
return reduceMemberRemoved(e, withMemberCond(ProjectMemberProjectIDCol, e.Aggregate().ID))
}
diff --git a/internal/query/projection/project_member_test.go b/internal/query/projection/project_member_test.go
index 49a910c1bb..28faa07e6e 100644
--- a/internal/query/projection/project_member_test.go
+++ b/internal/query/projection/project_member_test.go
@@ -8,13 +8,13 @@ import (
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/project"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestProjectMemberProjection_reduces(t *testing.T) {
@@ -294,7 +294,7 @@ func TestProjectMemberProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/project_role.go b/internal/query/projection/project_role.go
index f1d4d45413..633c35efdb 100644
--- a/internal/query/projection/project_role.go
+++ b/internal/query/projection/project_role.go
@@ -3,13 +3,13 @@ package projection
import (
"context"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/project"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -101,7 +101,7 @@ func (p *projectRoleProjection) Reducers() []handler.AggregateReducer {
func (p *projectRoleProjection) reduceProjectRoleAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.RoleAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-g92Fg", "reduce.wrong.event.type %s", project.RoleAddedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-g92Fg", "reduce.wrong.event.type %s", project.RoleAddedType)
}
return handler.NewCreateStatement(
e,
@@ -122,7 +122,7 @@ func (p *projectRoleProjection) reduceProjectRoleAdded(event eventstore.Event) (
func (p *projectRoleProjection) reduceProjectRoleChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.RoleChangedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-sM0f", "reduce.wrong.event.type %s", project.GrantChangedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-sM0f", "reduce.wrong.event.type %s", project.GrantChangedType)
}
if e.DisplayName == nil && e.Group == nil {
return handler.NewNoOpStatement(e), nil
@@ -150,7 +150,7 @@ func (p *projectRoleProjection) reduceProjectRoleChanged(event eventstore.Event)
func (p *projectRoleProjection) reduceProjectRoleRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.RoleRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-L0fJf", "reduce.wrong.event.type %s", project.GrantRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-L0fJf", "reduce.wrong.event.type %s", project.GrantRemovedType)
}
return handler.NewDeleteStatement(
e,
@@ -165,7 +165,7 @@ func (p *projectRoleProjection) reduceProjectRoleRemoved(event eventstore.Event)
func (p *projectRoleProjection) reduceProjectRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.ProjectRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-l0geG", "reduce.wrong.event.type %s", project.ProjectRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-l0geG", "reduce.wrong.event.type %s", project.ProjectRemovedType)
}
return handler.NewDeleteStatement(
e,
@@ -179,7 +179,7 @@ func (p *projectRoleProjection) reduceProjectRemoved(event eventstore.Event) (*h
func (p *projectRoleProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-3XrHY", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-3XrHY", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewDeleteStatement(
diff --git a/internal/query/projection/project_role_test.go b/internal/query/projection/project_role_test.go
index ee4ace10b5..b6a6d81957 100644
--- a/internal/query/projection/project_role_test.go
+++ b/internal/query/projection/project_role_test.go
@@ -3,12 +3,12 @@ package projection
import (
"testing"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/project"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestProjectRoleProjection_reduces(t *testing.T) {
@@ -217,7 +217,7 @@ func TestProjectRoleProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/project_test.go b/internal/query/projection/project_test.go
index af7e85c6ec..f8e693c7af 100644
--- a/internal/query/projection/project_test.go
+++ b/internal/query/projection/project_test.go
@@ -4,12 +4,12 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/project"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestProjectProjection_reduces(t *testing.T) {
@@ -255,7 +255,7 @@ func TestProjectProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/quota.go b/internal/query/projection/quota.go
index d92ad0b49d..84721f5d3d 100644
--- a/internal/query/projection/quota.go
+++ b/internal/query/projection/quota.go
@@ -5,12 +5,12 @@ import (
"time"
"github.com/zitadel/zitadel/internal/database"
- zitadel_errors "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/quota"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -300,7 +300,7 @@ func (q *quotaProjection) IncrementUsage(ctx context.Context, unit quota.Unit, i
instanceID, unit, periodStart, count,
).Scan(&sum)
if err != nil {
- return 0, zitadel_errors.ThrowInternalf(err, "PROJ-SJL3h", "incrementing usage for unit %d failed for at least one quota period", unit)
+ return 0, zerrors.ThrowInternalf(err, "PROJ-SJL3h", "incrementing usage for unit %d failed for at least one quota period", unit)
}
return sum, err
}
diff --git a/internal/query/projection/quota_test.go b/internal/query/projection/quota_test.go
index fb44901e05..e4c290812e 100644
--- a/internal/query/projection/quota_test.go
+++ b/internal/query/projection/quota_test.go
@@ -10,11 +10,11 @@ import (
"github.com/stretchr/testify/assert"
"github.com/zitadel/zitadel/internal/database"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/quota"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestQuotasProjection_reduces(t *testing.T) {
@@ -348,7 +348,7 @@ func TestQuotasProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if !errors.IsErrorInvalidArgument(err) {
+ if !zerrors.IsErrorInvalidArgument(err) {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
event = tt.args.event(t)
diff --git a/internal/query/projection/restrictions.go b/internal/query/projection/restrictions.go
index 597a6fac64..44bf97c5d0 100644
--- a/internal/query/projection/restrictions.go
+++ b/internal/query/projection/restrictions.go
@@ -3,6 +3,7 @@ package projection
import (
"context"
+ "github.com/zitadel/zitadel/internal/domain"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
@@ -11,7 +12,7 @@ import (
)
const (
- RestrictionsProjectionTable = "projections.restrictions"
+ RestrictionsProjectionTable = "projections.restrictions2"
RestrictionsColumnAggregateID = "aggregate_id"
RestrictionsColumnCreationDate = "creation_date"
@@ -21,6 +22,7 @@ const (
RestrictionsColumnSequence = "sequence"
RestrictionsColumnDisallowPublicOrgRegistration = "disallow_public_org_registration"
+ RestrictionsColumnAllowedLanguages = "allowed_languages"
)
type restrictionsProjection struct{}
@@ -42,7 +44,8 @@ func (*restrictionsProjection) Init() *old_handler.Check {
handler.NewColumn(RestrictionsColumnResourceOwner, handler.ColumnTypeText),
handler.NewColumn(RestrictionsColumnInstanceID, handler.ColumnTypeText),
handler.NewColumn(RestrictionsColumnSequence, handler.ColumnTypeInt64),
- handler.NewColumn(RestrictionsColumnDisallowPublicOrgRegistration, handler.ColumnTypeBool),
+ handler.NewColumn(RestrictionsColumnDisallowPublicOrgRegistration, handler.ColumnTypeBool, handler.Nullable()),
+ handler.NewColumn(RestrictionsColumnAllowedLanguages, handler.ColumnTypeTextArray, handler.Nullable()),
},
handler.NewPrimaryKey(RestrictionsColumnInstanceID, RestrictionsColumnResourceOwner),
),
@@ -89,8 +92,11 @@ func (p *restrictionsProjection) reduceRestrictionsSet(event eventstore.Event) (
handler.NewCol(RestrictionsColumnSequence, e.Sequence()),
handler.NewCol(RestrictionsColumnAggregateID, e.Aggregate().ID),
}
- if e.DisallowPublicOrgRegistrations != nil {
- updateCols = append(updateCols, handler.NewCol(RestrictionsColumnDisallowPublicOrgRegistration, *e.DisallowPublicOrgRegistrations))
+ if e.DisallowPublicOrgRegistration != nil {
+ updateCols = append(updateCols, handler.NewCol(RestrictionsColumnDisallowPublicOrgRegistration, *e.DisallowPublicOrgRegistration))
+ }
+ if e.AllowedLanguages != nil {
+ updateCols = append(updateCols, handler.NewCol(RestrictionsColumnAllowedLanguages, domain.LanguagesToStrings(*e.AllowedLanguages)))
}
return handler.NewUpsertStatement(e, conflictCols, updateCols), nil
}
diff --git a/internal/query/projection/restrictions_test.go b/internal/query/projection/restrictions_test.go
index f018ab00c0..d67459e34c 100644
--- a/internal/query/projection/restrictions_test.go
+++ b/internal/query/projection/restrictions_test.go
@@ -3,10 +3,10 @@ package projection
import (
"testing"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/restrictions"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestRestrictionsProjection_reduces(t *testing.T) {
@@ -25,7 +25,7 @@ func TestRestrictionsProjection_reduces(t *testing.T) {
event: getEvent(testEvent(
restrictions.SetEventType,
restrictions.AggregateType,
- []byte(`{ "disallowPublicOrgRegistrations": true }`),
+ []byte(`{ "disallowPublicOrgRegistration": true }`),
), restrictions.SetEventMapper),
},
reduce: (&restrictionsProjection{}).reduceRestrictionsSet,
@@ -35,7 +35,7 @@ func TestRestrictionsProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "INSERT INTO projections.restrictions (instance_id, resource_owner, creation_date, change_date, sequence, aggregate_id, disallow_public_org_registration) VALUES ($1, $2, $3, $4, $5, $6, $7) ON CONFLICT (instance_id, resource_owner) DO UPDATE SET (creation_date, change_date, sequence, aggregate_id, disallow_public_org_registration) = (projections.restrictions.creation_date, EXCLUDED.change_date, EXCLUDED.sequence, EXCLUDED.aggregate_id, EXCLUDED.disallow_public_org_registration)",
+ expectedStmt: "INSERT INTO projections.restrictions2 (instance_id, resource_owner, creation_date, change_date, sequence, aggregate_id, disallow_public_org_registration) VALUES ($1, $2, $3, $4, $5, $6, $7) ON CONFLICT (instance_id, resource_owner) DO UPDATE SET (creation_date, change_date, sequence, aggregate_id, disallow_public_org_registration) = (projections.restrictions2.creation_date, EXCLUDED.change_date, EXCLUDED.sequence, EXCLUDED.aggregate_id, EXCLUDED.disallow_public_org_registration)",
expectedArgs: []interface{}{
"instance-id",
"ro-id",
@@ -66,7 +66,7 @@ func TestRestrictionsProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "INSERT INTO projections.restrictions (instance_id, resource_owner, creation_date, change_date, sequence, aggregate_id) VALUES ($1, $2, $3, $4, $5, $6) ON CONFLICT (instance_id, resource_owner) DO UPDATE SET (creation_date, change_date, sequence, aggregate_id) = (projections.restrictions.creation_date, EXCLUDED.change_date, EXCLUDED.sequence, EXCLUDED.aggregate_id)",
+ expectedStmt: "INSERT INTO projections.restrictions2 (instance_id, resource_owner, creation_date, change_date, sequence, aggregate_id) VALUES ($1, $2, $3, $4, $5, $6) ON CONFLICT (instance_id, resource_owner) DO UPDATE SET (creation_date, change_date, sequence, aggregate_id) = (projections.restrictions2.creation_date, EXCLUDED.change_date, EXCLUDED.sequence, EXCLUDED.aggregate_id)",
expectedArgs: []interface{}{
"instance-id",
"ro-id",
@@ -85,7 +85,7 @@ func TestRestrictionsProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if !errors.IsErrorInvalidArgument(err) {
+ if !zerrors.IsErrorInvalidArgument(err) {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
event = tt.args.event(t)
diff --git a/internal/query/projection/secret_generator.go b/internal/query/projection/secret_generator.go
index d81937d677..839dcb5d0e 100644
--- a/internal/query/projection/secret_generator.go
+++ b/internal/query/projection/secret_generator.go
@@ -3,11 +3,11 @@ package projection
import (
"context"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -89,7 +89,7 @@ func (p *secretGeneratorProjection) Reducers() []handler.AggregateReducer {
func (p *secretGeneratorProjection) reduceSecretGeneratorAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*instance.SecretGeneratorAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-sk99F", "reduce.wrong.event.type %s", instance.SecretGeneratorAddedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-sk99F", "reduce.wrong.event.type %s", instance.SecretGeneratorAddedEventType)
}
return handler.NewCreateStatement(
e,
@@ -114,7 +114,7 @@ func (p *secretGeneratorProjection) reduceSecretGeneratorAdded(event eventstore.
func (p *secretGeneratorProjection) reduceSecretGeneratorChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*instance.SecretGeneratorChangedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-s00Fs", "reduce.wrong.event.type %s", instance.SecretGeneratorChangedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-s00Fs", "reduce.wrong.event.type %s", instance.SecretGeneratorChangedEventType)
}
columns := make([]handler.Column, 0, 7)
@@ -152,7 +152,7 @@ func (p *secretGeneratorProjection) reduceSecretGeneratorChanged(event eventstor
func (p *secretGeneratorProjection) reduceSecretGeneratorRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*instance.SecretGeneratorRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-fmiIf", "reduce.wrong.event.type %s", instance.SecretGeneratorRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-fmiIf", "reduce.wrong.event.type %s", instance.SecretGeneratorRemovedEventType)
}
return handler.NewDeleteStatement(
e,
diff --git a/internal/query/projection/secret_generator_test.go b/internal/query/projection/secret_generator_test.go
index 4f808d0511..8ddb109b9b 100644
--- a/internal/query/projection/secret_generator_test.go
+++ b/internal/query/projection/secret_generator_test.go
@@ -5,10 +5,10 @@ import (
"time"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestSecretGeneratorProjection_reduces(t *testing.T) {
@@ -154,7 +154,7 @@ func TestSecretGeneratorProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/security_policy.go b/internal/query/projection/security_policy.go
index 4c30cfc868..c8776ed0b1 100644
--- a/internal/query/projection/security_policy.go
+++ b/internal/query/projection/security_policy.go
@@ -3,11 +3,11 @@ package projection
import (
"context"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -66,7 +66,7 @@ func (p *securityPolicyProjection) Reducers() []handler.AggregateReducer {
func (p *securityPolicyProjection) reduceSecurityPolicySet(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*instance.SecurityPolicySetEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-D3g87", "reduce.wrong.event.type %s", instance.SecurityPolicySetEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-D3g87", "reduce.wrong.event.type %s", instance.SecurityPolicySetEventType)
}
changes := []handler.Column{
handler.NewCol(SecurityPolicyColumnCreationDate, e.CreationDate()),
diff --git a/internal/query/projection/session.go b/internal/query/projection/session.go
index 90736523f3..196a352190 100644
--- a/internal/query/projection/session.go
+++ b/internal/query/projection/session.go
@@ -4,13 +4,13 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/session"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -170,7 +170,7 @@ func (p *sessionProjection) Reducers() []handler.AggregateReducer {
func (p *sessionProjection) reduceSessionAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*session.AddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Sfrgf", "reduce.wrong.event.type %s", session.AddedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Sfrgf", "reduce.wrong.event.type %s", session.AddedType)
}
cols := make([]handler.Column, 0, 12)
@@ -207,7 +207,7 @@ func (p *sessionProjection) reduceSessionAdded(event eventstore.Event) (*handler
func (p *sessionProjection) reduceUserChecked(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*session.UserCheckedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-saDg5", "reduce.wrong.event.type %s", session.UserCheckedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-saDg5", "reduce.wrong.event.type %s", session.UserCheckedType)
}
return handler.NewUpdateStatement(
e,
@@ -228,7 +228,7 @@ func (p *sessionProjection) reduceUserChecked(event eventstore.Event) (*handler.
func (p *sessionProjection) reducePasswordChecked(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*session.PasswordCheckedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-SDgrb", "reduce.wrong.event.type %s", session.PasswordCheckedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-SDgrb", "reduce.wrong.event.type %s", session.PasswordCheckedType)
}
return handler.NewUpdateStatement(
@@ -248,7 +248,7 @@ func (p *sessionProjection) reducePasswordChecked(event eventstore.Event) (*hand
func (p *sessionProjection) reduceIntentChecked(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*session.IntentCheckedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-SDgr2", "reduce.wrong.event.type %s", session.IntentCheckedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-SDgr2", "reduce.wrong.event.type %s", session.IntentCheckedType)
}
return handler.NewUpdateStatement(
@@ -268,7 +268,7 @@ func (p *sessionProjection) reduceIntentChecked(event eventstore.Event) (*handle
func (p *sessionProjection) reduceWebAuthNChecked(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*session.WebAuthNCheckedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-WieM4", "reduce.wrong.event.type %s", session.WebAuthNCheckedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-WieM4", "reduce.wrong.event.type %s", session.WebAuthNCheckedType)
}
return handler.NewUpdateStatement(
e,
@@ -288,7 +288,7 @@ func (p *sessionProjection) reduceWebAuthNChecked(event eventstore.Event) (*hand
func (p *sessionProjection) reduceTOTPChecked(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*session.TOTPCheckedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Oqu8i", "reduce.wrong.event.type %s", session.TOTPCheckedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Oqu8i", "reduce.wrong.event.type %s", session.TOTPCheckedType)
}
return handler.NewUpdateStatement(
@@ -348,7 +348,7 @@ func (p *sessionProjection) reduceOTPEmailChecked(event eventstore.Event) (*hand
func (p *sessionProjection) reduceTokenSet(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*session.TokenSetEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-SAfd3", "reduce.wrong.event.type %s", session.TokenSetType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-SAfd3", "reduce.wrong.event.type %s", session.TokenSetType)
}
return handler.NewUpdateStatement(
@@ -368,7 +368,7 @@ func (p *sessionProjection) reduceTokenSet(event eventstore.Event) (*handler.Sta
func (p *sessionProjection) reduceMetadataSet(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*session.MetadataSetEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-SAfd3", "reduce.wrong.event.type %s", session.MetadataSetType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-SAfd3", "reduce.wrong.event.type %s", session.MetadataSetType)
}
return handler.NewUpdateStatement(
@@ -408,7 +408,7 @@ func (p *sessionProjection) reduceLifetimeSet(event eventstore.Event) (*handler.
func (p *sessionProjection) reduceSessionTerminated(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*session.TerminateEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-SAftn", "reduce.wrong.event.type %s", session.TerminateType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-SAftn", "reduce.wrong.event.type %s", session.TerminateType)
}
return handler.NewDeleteStatement(
@@ -423,7 +423,7 @@ func (p *sessionProjection) reduceSessionTerminated(event eventstore.Event) (*ha
func (p *sessionProjection) reducePasswordChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.HumanPasswordChangedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Deg3d", "reduce.wrong.event.type %s", user.HumanPasswordChangedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Deg3d", "reduce.wrong.event.type %s", user.HumanPasswordChangedType)
}
return handler.NewUpdateStatement(
diff --git a/internal/query/projection/session_test.go b/internal/query/projection/session_test.go
index 78218c88ab..ecd9ca5f1e 100644
--- a/internal/query/projection/session_test.go
+++ b/internal/query/projection/session_test.go
@@ -7,12 +7,12 @@ import (
"github.com/muhlemmer/gu"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/session"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestSessionProjection_reduces(t *testing.T) {
@@ -419,7 +419,7 @@ func TestSessionProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if !errors.IsErrorInvalidArgument(err) {
+ if !zerrors.IsErrorInvalidArgument(err) {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/sms.go b/internal/query/projection/sms.go
index eb173a4cf7..13059203f9 100644
--- a/internal/query/projection/sms.go
+++ b/internal/query/projection/sms.go
@@ -4,11 +4,11 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -111,7 +111,7 @@ func (p *smsConfigProjection) Reducers() []handler.AggregateReducer {
func (p *smsConfigProjection) reduceSMSConfigTwilioAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*instance.SMSConfigTwilioAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-s8efs", "reduce.wrong.event.type %s", instance.SMSConfigTwilioAddedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-s8efs", "reduce.wrong.event.type %s", instance.SMSConfigTwilioAddedEventType)
}
return handler.NewMultiStatement(
@@ -144,7 +144,7 @@ func (p *smsConfigProjection) reduceSMSConfigTwilioAdded(event eventstore.Event)
func (p *smsConfigProjection) reduceSMSConfigTwilioChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*instance.SMSConfigTwilioChangedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-fi99F", "reduce.wrong.event.type %s", instance.SMSConfigTwilioChangedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-fi99F", "reduce.wrong.event.type %s", instance.SMSConfigTwilioChangedEventType)
}
columns := make([]handler.Column, 0)
if e.SID != nil {
@@ -180,7 +180,7 @@ func (p *smsConfigProjection) reduceSMSConfigTwilioChanged(event eventstore.Even
func (p *smsConfigProjection) reduceSMSConfigTwilioTokenChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*instance.SMSConfigTwilioTokenChangedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-fi99F", "reduce.wrong.event.type %s", instance.SMSConfigTwilioTokenChangedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-fi99F", "reduce.wrong.event.type %s", instance.SMSConfigTwilioTokenChangedEventType)
}
columns := make([]handler.Column, 0)
if e.Token != nil {
@@ -213,7 +213,7 @@ func (p *smsConfigProjection) reduceSMSConfigTwilioTokenChanged(event eventstore
func (p *smsConfigProjection) reduceSMSConfigActivated(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*instance.SMSConfigActivatedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-fj9Ef", "reduce.wrong.event.type %s", instance.SMSConfigActivatedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-fj9Ef", "reduce.wrong.event.type %s", instance.SMSConfigActivatedEventType)
}
return handler.NewUpdateStatement(
e,
@@ -232,7 +232,7 @@ func (p *smsConfigProjection) reduceSMSConfigActivated(event eventstore.Event) (
func (p *smsConfigProjection) reduceSMSConfigDeactivated(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*instance.SMSConfigDeactivatedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-dj9Js", "reduce.wrong.event.type %s", instance.SMSConfigDeactivatedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-dj9Js", "reduce.wrong.event.type %s", instance.SMSConfigDeactivatedEventType)
}
return handler.NewUpdateStatement(
e,
@@ -251,7 +251,7 @@ func (p *smsConfigProjection) reduceSMSConfigDeactivated(event eventstore.Event)
func (p *smsConfigProjection) reduceSMSConfigRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*instance.SMSConfigRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-s9JJf", "reduce.wrong.event.type %s", instance.SMSConfigRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-s9JJf", "reduce.wrong.event.type %s", instance.SMSConfigRemovedEventType)
}
return handler.NewDeleteStatement(
e,
diff --git a/internal/query/projection/sms_test.go b/internal/query/projection/sms_test.go
index c3ca8f99f8..1e1a384ed2 100644
--- a/internal/query/projection/sms_test.go
+++ b/internal/query/projection/sms_test.go
@@ -5,10 +5,10 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestSMSProjection_reduces(t *testing.T) {
@@ -295,7 +295,7 @@ func TestSMSProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/smtp.go b/internal/query/projection/smtp.go
index 40f1519508..b753df7f57 100644
--- a/internal/query/projection/smtp.go
+++ b/internal/query/projection/smtp.go
@@ -3,11 +3,11 @@ package projection
import (
"context"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -93,7 +93,7 @@ func (p *smtpConfigProjection) Reducers() []handler.AggregateReducer {
func (p *smtpConfigProjection) reduceSMTPConfigAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*instance.SMTPConfigAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-sk99F", "reduce.wrong.event.type %s", instance.SMTPConfigAddedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-sk99F", "reduce.wrong.event.type %s", instance.SMTPConfigAddedEventType)
}
return handler.NewCreateStatement(
e,
@@ -118,7 +118,7 @@ func (p *smtpConfigProjection) reduceSMTPConfigAdded(event eventstore.Event) (*h
func (p *smtpConfigProjection) reduceSMTPConfigChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*instance.SMTPConfigChangedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-wl0wd", "reduce.wrong.event.type %s", instance.SMTPConfigChangedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-wl0wd", "reduce.wrong.event.type %s", instance.SMTPConfigChangedEventType)
}
columns := make([]handler.Column, 0, 8)
@@ -155,7 +155,7 @@ func (p *smtpConfigProjection) reduceSMTPConfigChanged(event eventstore.Event) (
func (p *smtpConfigProjection) reduceSMTPConfigPasswordChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*instance.SMTPConfigPasswordChangedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-fk02f", "reduce.wrong.event.type %s", instance.SMTPConfigChangedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-fk02f", "reduce.wrong.event.type %s", instance.SMTPConfigChangedEventType)
}
return handler.NewUpdateStatement(
diff --git a/internal/query/projection/smtp_test.go b/internal/query/projection/smtp_test.go
index 922ef12478..3fd78c7bc8 100644
--- a/internal/query/projection/smtp_test.go
+++ b/internal/query/projection/smtp_test.go
@@ -3,10 +3,10 @@ package projection
import (
"testing"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestSMTPConfigProjection_reduces(t *testing.T) {
@@ -205,7 +205,7 @@ func TestSMTPConfigProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/user.go b/internal/query/projection/user.go
index 3451e6fc37..61a9708546 100644
--- a/internal/query/projection/user.go
+++ b/internal/query/projection/user.go
@@ -5,17 +5,17 @@ import (
"database/sql"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
- UserTable = "projections.users9"
+ UserTable = "projections.users10"
UserHumanTable = UserTable + "_" + UserHumanSuffix
UserMachineTable = UserTable + "_" + UserMachineSuffix
UserNotifyTable = UserTable + "_" + UserNotifySuffix
@@ -57,7 +57,7 @@ const (
MachineUserInstanceIDCol = "instance_id"
MachineNameCol = "name"
MachineDescriptionCol = "description"
- MachineHasSecretCol = "has_secret"
+ MachineSecretCol = "secret"
MachineAccessTokenTypeCol = "access_token_type"
// notify
@@ -122,7 +122,7 @@ func (*userProjection) Init() *old_handler.Check {
handler.NewColumn(MachineUserInstanceIDCol, handler.ColumnTypeText),
handler.NewColumn(MachineNameCol, handler.ColumnTypeText),
handler.NewColumn(MachineDescriptionCol, handler.ColumnTypeText, handler.Nullable()),
- handler.NewColumn(MachineHasSecretCol, handler.ColumnTypeBool, handler.Default(false)),
+ handler.NewColumn(MachineSecretCol, handler.ColumnTypeJSONB, handler.Nullable()),
handler.NewColumn(MachineAccessTokenTypeCol, handler.ColumnTypeEnum, handler.Default(0)),
},
handler.NewPrimaryKey(MachineUserInstanceIDCol, MachineUserIDCol),
@@ -312,7 +312,7 @@ func (p *userProjection) Reducers() []handler.AggregateReducer {
func (p *userProjection) reduceHumanAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.HumanAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Ebynp", "reduce.wrong.event.type %s", user.HumanAddedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Ebynp", "reduce.wrong.event.type %s", user.HumanAddedType)
}
return handler.NewMultiStatement(
e,
@@ -360,7 +360,7 @@ func (p *userProjection) reduceHumanAdded(event eventstore.Event) (*handler.Stat
func (p *userProjection) reduceHumanRegistered(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.HumanRegisteredEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-xE53M", "reduce.wrong.event.type %s", user.HumanRegisteredType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-xE53M", "reduce.wrong.event.type %s", user.HumanRegisteredType)
}
return handler.NewMultiStatement(
e,
@@ -408,7 +408,7 @@ func (p *userProjection) reduceHumanRegistered(event eventstore.Event) (*handler
func (p *userProjection) reduceHumanInitCodeAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.HumanInitialCodeAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Dvgws", "reduce.wrong.event.type %s", user.HumanInitialCodeAddedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Dvgws", "reduce.wrong.event.type %s", user.HumanInitialCodeAddedType)
}
return handler.NewUpdateStatement(
e,
@@ -425,7 +425,7 @@ func (p *userProjection) reduceHumanInitCodeAdded(event eventstore.Event) (*hand
func (p *userProjection) reduceHumanInitCodeSucceeded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.HumanInitializedCheckSucceededEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Dfvwq", "reduce.wrong.event.type %s", user.HumanInitializedCheckSucceededType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Dfvwq", "reduce.wrong.event.type %s", user.HumanInitializedCheckSucceededType)
}
return handler.NewUpdateStatement(
e,
@@ -442,7 +442,7 @@ func (p *userProjection) reduceHumanInitCodeSucceeded(event eventstore.Event) (*
func (p *userProjection) reduceUserLocked(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.UserLockedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-exyBF", "reduce.wrong.event.type %s", user.UserLockedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-exyBF", "reduce.wrong.event.type %s", user.UserLockedType)
}
return handler.NewUpdateStatement(
@@ -462,7 +462,7 @@ func (p *userProjection) reduceUserLocked(event eventstore.Event) (*handler.Stat
func (p *userProjection) reduceUserUnlocked(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.UserUnlockedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-JIyRl", "reduce.wrong.event.type %s", user.UserUnlockedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-JIyRl", "reduce.wrong.event.type %s", user.UserUnlockedType)
}
return handler.NewUpdateStatement(
@@ -482,7 +482,7 @@ func (p *userProjection) reduceUserUnlocked(event eventstore.Event) (*handler.St
func (p *userProjection) reduceUserDeactivated(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.UserDeactivatedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-6BNjj", "reduce.wrong.event.type %s", user.UserDeactivatedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-6BNjj", "reduce.wrong.event.type %s", user.UserDeactivatedType)
}
return handler.NewUpdateStatement(
@@ -502,7 +502,7 @@ func (p *userProjection) reduceUserDeactivated(event eventstore.Event) (*handler
func (p *userProjection) reduceUserReactivated(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.UserReactivatedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-IoF6j", "reduce.wrong.event.type %s", user.UserReactivatedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-IoF6j", "reduce.wrong.event.type %s", user.UserReactivatedType)
}
return handler.NewUpdateStatement(
@@ -522,7 +522,7 @@ func (p *userProjection) reduceUserReactivated(event eventstore.Event) (*handler
func (p *userProjection) reduceUserRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.UserRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-BQB2t", "reduce.wrong.event.type %s", user.UserRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-BQB2t", "reduce.wrong.event.type %s", user.UserRemovedType)
}
return handler.NewDeleteStatement(
@@ -537,7 +537,7 @@ func (p *userProjection) reduceUserRemoved(event eventstore.Event) (*handler.Sta
func (p *userProjection) reduceUserNameChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.UsernameChangedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-QNKyV", "reduce.wrong.event.type %s", user.UserUserNameChangedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-QNKyV", "reduce.wrong.event.type %s", user.UserUserNameChangedType)
}
return handler.NewUpdateStatement(
@@ -557,7 +557,7 @@ func (p *userProjection) reduceUserNameChanged(event eventstore.Event) (*handler
func (p *userProjection) reduceDomainClaimed(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.DomainClaimedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-ASwf3", "reduce.wrong.event.type %s", user.UserDomainClaimedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-ASwf3", "reduce.wrong.event.type %s", user.UserDomainClaimedType)
}
return handler.NewUpdateStatement(
@@ -577,7 +577,7 @@ func (p *userProjection) reduceDomainClaimed(event eventstore.Event) (*handler.S
func (p *userProjection) reduceHumanProfileChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.HumanProfileChangedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-769v4", "reduce.wrong.event.type %s", user.HumanProfileChangedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-769v4", "reduce.wrong.event.type %s", user.HumanProfileChangedType)
}
cols := make([]handler.Column, 0, 6)
if e.FirstName != "" {
@@ -630,7 +630,7 @@ func (p *userProjection) reduceHumanProfileChanged(event eventstore.Event) (*han
func (p *userProjection) reduceHumanPhoneChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.HumanPhoneChangedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-xOGIA", "reduce.wrong.event.type %s", user.HumanPhoneChangedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-xOGIA", "reduce.wrong.event.type %s", user.HumanPhoneChangedType)
}
return handler.NewMultiStatement(
@@ -672,7 +672,7 @@ func (p *userProjection) reduceHumanPhoneChanged(event eventstore.Event) (*handl
func (p *userProjection) reduceHumanPhoneRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.HumanPhoneRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-JI4S1", "reduce.wrong.event.type %s", user.HumanPhoneRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-JI4S1", "reduce.wrong.event.type %s", user.HumanPhoneRemovedType)
}
return handler.NewMultiStatement(
@@ -715,7 +715,7 @@ func (p *userProjection) reduceHumanPhoneRemoved(event eventstore.Event) (*handl
func (p *userProjection) reduceHumanPhoneVerified(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.HumanPhoneVerifiedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-LBnqG", "reduce.wrong.event.type %s", user.HumanPhoneVerifiedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-LBnqG", "reduce.wrong.event.type %s", user.HumanPhoneVerifiedType)
}
return handler.NewMultiStatement(
@@ -756,7 +756,7 @@ func (p *userProjection) reduceHumanPhoneVerified(event eventstore.Event) (*hand
func (p *userProjection) reduceHumanEmailChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.HumanEmailChangedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-KwiHa", "reduce.wrong.event.type %s", user.HumanEmailChangedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-KwiHa", "reduce.wrong.event.type %s", user.HumanEmailChangedType)
}
return handler.NewMultiStatement(
@@ -798,7 +798,7 @@ func (p *userProjection) reduceHumanEmailChanged(event eventstore.Event) (*handl
func (p *userProjection) reduceHumanEmailVerified(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.HumanEmailVerifiedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-JzcDq", "reduce.wrong.event.type %s", user.HumanEmailVerifiedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-JzcDq", "reduce.wrong.event.type %s", user.HumanEmailVerifiedType)
}
return handler.NewMultiStatement(
@@ -839,7 +839,7 @@ func (p *userProjection) reduceHumanEmailVerified(event eventstore.Event) (*hand
func (p *userProjection) reduceHumanAvatarAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.HumanAvatarAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-eDEdt", "reduce.wrong.event.type %s", user.HumanAvatarAddedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-eDEdt", "reduce.wrong.event.type %s", user.HumanAvatarAddedType)
}
return handler.NewMultiStatement(
@@ -870,7 +870,7 @@ func (p *userProjection) reduceHumanAvatarAdded(event eventstore.Event) (*handle
func (p *userProjection) reduceHumanAvatarRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.HumanAvatarRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-KhETX", "reduce.wrong.event.type %s", user.HumanAvatarRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-KhETX", "reduce.wrong.event.type %s", user.HumanAvatarRemovedType)
}
return handler.NewMultiStatement(
@@ -901,7 +901,7 @@ func (p *userProjection) reduceHumanAvatarRemoved(event eventstore.Event) (*hand
func (p *userProjection) reduceHumanPasswordChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.HumanPasswordChangedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-jqXUY", "reduce.wrong.event.type %s", user.HumanPasswordChangedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-jqXUY", "reduce.wrong.event.type %s", user.HumanPasswordChangedType)
}
return handler.NewUpdateStatement(
@@ -920,7 +920,7 @@ func (p *userProjection) reduceHumanPasswordChanged(event eventstore.Event) (*ha
func (p *userProjection) reduceMachineSecretSet(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.MachineSecretSetEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-x0p1n1i", "reduce.wrong.event.type %s", user.MachineSecretSetType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-x0p1n1i", "reduce.wrong.event.type %s", user.MachineSecretSetType)
}
return handler.NewMultiStatement(
e,
@@ -936,7 +936,7 @@ func (p *userProjection) reduceMachineSecretSet(event eventstore.Event) (*handle
),
handler.AddUpdateStatement(
[]handler.Column{
- handler.NewCol(MachineHasSecretCol, true),
+ handler.NewCol(MachineSecretCol, e.ClientSecret),
},
[]handler.Condition{
handler.NewCond(MachineUserIDCol, e.Aggregate().ID),
@@ -950,7 +950,7 @@ func (p *userProjection) reduceMachineSecretSet(event eventstore.Event) (*handle
func (p *userProjection) reduceMachineSecretRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.MachineSecretRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-x0p6n1i", "reduce.wrong.event.type %s", user.MachineSecretRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-x0p6n1i", "reduce.wrong.event.type %s", user.MachineSecretRemovedType)
}
return handler.NewMultiStatement(
@@ -967,7 +967,7 @@ func (p *userProjection) reduceMachineSecretRemoved(event eventstore.Event) (*ha
),
handler.AddUpdateStatement(
[]handler.Column{
- handler.NewCol(MachineHasSecretCol, false),
+ handler.NewCol(MachineSecretCol, nil),
},
[]handler.Condition{
handler.NewCond(MachineUserIDCol, e.Aggregate().ID),
@@ -981,7 +981,7 @@ func (p *userProjection) reduceMachineSecretRemoved(event eventstore.Event) (*ha
func (p *userProjection) reduceMachineAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.MachineAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-q7ier", "reduce.wrong.event.type %s", user.MachineAddedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-q7ier", "reduce.wrong.event.type %s", user.MachineAddedEventType)
}
return handler.NewMultiStatement(
@@ -1015,7 +1015,7 @@ func (p *userProjection) reduceMachineAdded(event eventstore.Event) (*handler.St
func (p *userProjection) reduceMachineChanged(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.MachineChangedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-qYHvj", "reduce.wrong.event.type %s", user.MachineChangedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-qYHvj", "reduce.wrong.event.type %s", user.MachineChangedEventType)
}
cols := make([]handler.Column, 0, 2)
@@ -1059,7 +1059,7 @@ func (p *userProjection) reduceMachineChanged(event eventstore.Event) (*handler.
func (p *userProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-NCsdV", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-NCsdV", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewDeleteStatement(
diff --git a/internal/query/projection/user_auth_method.go b/internal/query/projection/user_auth_method.go
index 49455c81bd..c545d41c15 100644
--- a/internal/query/projection/user_auth_method.go
+++ b/internal/query/projection/user_auth_method.go
@@ -4,13 +4,13 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -162,7 +162,7 @@ func (p *userAuthMethodProjection) reduceInitAuthMethod(event eventstore.Event)
case *user.HumanOTPAddedEvent:
methodType = domain.UserAuthMethodTypeTOTP
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-f92f", "reduce.wrong.event.type %v", []eventstore.EventType{user.HumanPasswordlessTokenAddedType, user.HumanU2FTokenAddedType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-f92f", "reduce.wrong.event.type %v", []eventstore.EventType{user.HumanPasswordlessTokenAddedType, user.HumanU2FTokenAddedType})
}
return handler.NewUpsertStatement(
@@ -206,7 +206,7 @@ func (p *userAuthMethodProjection) reduceActivateEvent(event eventstore.Event) (
methodType = domain.UserAuthMethodTypeTOTP
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-f92f", "reduce.wrong.event.type %v", []eventstore.EventType{user.HumanPasswordlessTokenAddedType, user.HumanU2FTokenAddedType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-f92f", "reduce.wrong.event.type %v", []eventstore.EventType{user.HumanPasswordlessTokenAddedType, user.HumanU2FTokenAddedType})
}
return handler.NewUpdateStatement(
@@ -235,7 +235,7 @@ func (p *userAuthMethodProjection) reduceAddAuthMethod(event eventstore.Event) (
case *user.HumanOTPEmailAddedEvent:
methodType = domain.UserAuthMethodTypeOTPEmail
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-DS4g3", "reduce.wrong.event.type %v", []eventstore.EventType{user.HumanOTPSMSAddedType, user.HumanOTPEmailAddedType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-DS4g3", "reduce.wrong.event.type %v", []eventstore.EventType{user.HumanOTPSMSAddedType, user.HumanOTPEmailAddedType})
}
return handler.NewCreateStatement(
@@ -274,7 +274,7 @@ func (p *userAuthMethodProjection) reduceRemoveAuthMethod(event eventstore.Event
methodType = domain.UserAuthMethodTypeOTPEmail
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-f92f", "reduce.wrong.event.type %v",
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-f92f", "reduce.wrong.event.type %v",
[]eventstore.EventType{user.HumanPasswordlessTokenAddedType, user.HumanU2FTokenAddedType, user.HumanMFAOTPRemovedType,
user.HumanOTPSMSRemovedType, user.HumanPhoneRemovedType, user.HumanOTPEmailRemovedType})
}
@@ -296,7 +296,7 @@ func (p *userAuthMethodProjection) reduceRemoveAuthMethod(event eventstore.Event
func (p *userAuthMethodProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-FwDZ8", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-FwDZ8", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewDeleteStatement(
diff --git a/internal/query/projection/user_auth_method_test.go b/internal/query/projection/user_auth_method_test.go
index e3d52f253e..4902fba820 100644
--- a/internal/query/projection/user_auth_method_test.go
+++ b/internal/query/projection/user_auth_method_test.go
@@ -4,12 +4,12 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestUserAuthMethodProjection_reduces(t *testing.T) {
@@ -541,7 +541,7 @@ func TestUserAuthMethodProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/user_grant.go b/internal/query/projection/user_grant.go
index 43f8ae8b9f..963cad395d 100644
--- a/internal/query/projection/user_grant.go
+++ b/internal/query/projection/user_grant.go
@@ -6,7 +6,6 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
@@ -15,6 +14,7 @@ import (
"github.com/zitadel/zitadel/internal/repository/project"
"github.com/zitadel/zitadel/internal/repository/user"
"github.com/zitadel/zitadel/internal/repository/usergrant"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -178,7 +178,7 @@ func (p *userGrantProjection) Reducers() []handler.AggregateReducer {
func (p *userGrantProjection) reduceAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*usergrant.UserGrantAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-MQHVB", "reduce.wrong.event.type %s", usergrant.UserGrantAddedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-MQHVB", "reduce.wrong.event.type %s", usergrant.UserGrantAddedType)
}
ctx := setUserGrantContext(e.Aggregate())
@@ -231,7 +231,7 @@ func (p *userGrantProjection) reduceChanged(event eventstore.Event) (*handler.St
case *usergrant.UserGrantCascadeChangedEvent:
roles = e.RoleKeys
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-hOr1E", "reduce.wrong.event.type %v", []eventstore.EventType{usergrant.UserGrantChangedType, usergrant.UserGrantCascadeChangedType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-hOr1E", "reduce.wrong.event.type %v", []eventstore.EventType{usergrant.UserGrantChangedType, usergrant.UserGrantCascadeChangedType})
}
return handler.NewUpdateStatement(
@@ -253,7 +253,7 @@ func (p *userGrantProjection) reduceRemoved(event eventstore.Event) (*handler.St
case *usergrant.UserGrantRemovedEvent, *usergrant.UserGrantCascadeRemovedEvent:
// ok
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-7OBEC", "reduce.wrong.event.type %v", []eventstore.EventType{usergrant.UserGrantRemovedType, usergrant.UserGrantCascadeRemovedType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-7OBEC", "reduce.wrong.event.type %v", []eventstore.EventType{usergrant.UserGrantRemovedType, usergrant.UserGrantCascadeRemovedType})
}
return handler.NewDeleteStatement(
@@ -267,7 +267,7 @@ func (p *userGrantProjection) reduceRemoved(event eventstore.Event) (*handler.St
func (p *userGrantProjection) reduceDeactivated(event eventstore.Event) (*handler.Statement, error) {
if _, ok := event.(*usergrant.UserGrantDeactivatedEvent); !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-oP7Gm", "reduce.wrong.event.type %s", usergrant.UserGrantDeactivatedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-oP7Gm", "reduce.wrong.event.type %s", usergrant.UserGrantDeactivatedType)
}
return handler.NewUpdateStatement(
@@ -285,8 +285,8 @@ func (p *userGrantProjection) reduceDeactivated(event eventstore.Event) (*handle
}
func (p *userGrantProjection) reduceReactivated(event eventstore.Event) (*handler.Statement, error) {
- if _, ok := event.(*usergrant.UserGrantDeactivatedEvent); !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-DGsKh", "reduce.wrong.event.type %s", usergrant.UserGrantReactivatedType)
+ if _, ok := event.(*usergrant.UserGrantReactivatedEvent); !ok {
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-DGsKh", "reduce.wrong.event.type %s", usergrant.UserGrantReactivatedType)
}
return handler.NewUpdateStatement(
@@ -305,7 +305,7 @@ func (p *userGrantProjection) reduceReactivated(event eventstore.Event) (*handle
func (p *userGrantProjection) reduceUserRemoved(event eventstore.Event) (*handler.Statement, error) {
if _, ok := event.(*user.UserRemovedEvent); !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-Bner2a", "reduce.wrong.event.type %s", user.UserRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-Bner2a", "reduce.wrong.event.type %s", user.UserRemovedType)
}
return handler.NewDeleteStatement(
@@ -319,7 +319,7 @@ func (p *userGrantProjection) reduceUserRemoved(event eventstore.Event) (*handle
func (p *userGrantProjection) reduceProjectRemoved(event eventstore.Event) (*handler.Statement, error) {
if _, ok := event.(*project.ProjectRemovedEvent); !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-Bne2a", "reduce.wrong.event.type %s", project.ProjectRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-Bne2a", "reduce.wrong.event.type %s", project.ProjectRemovedType)
}
return handler.NewDeleteStatement(
@@ -334,7 +334,7 @@ func (p *userGrantProjection) reduceProjectRemoved(event eventstore.Event) (*han
func (p *userGrantProjection) reduceProjectGrantRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.GrantRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-dGr2a", "reduce.wrong.event.type %s", project.GrantRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-dGr2a", "reduce.wrong.event.type %s", project.GrantRemovedType)
}
return handler.NewDeleteStatement(
@@ -349,7 +349,7 @@ func (p *userGrantProjection) reduceProjectGrantRemoved(event eventstore.Event)
func (p *userGrantProjection) reduceRoleRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*project.RoleRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-dswg2", "reduce.wrong.event.type %s", project.RoleRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-dswg2", "reduce.wrong.event.type %s", project.RoleRemovedType)
}
return handler.NewUpdateStatement(
@@ -375,7 +375,7 @@ func (p *userGrantProjection) reduceProjectGrantChanged(event eventstore.Event)
grantID = e.GrantID
keys = e.RoleKeys
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-Fh3gw", "reduce.wrong.event.type %v", []eventstore.EventType{project.GrantChangedType, project.GrantCascadeChangedType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-Fh3gw", "reduce.wrong.event.type %v", []eventstore.EventType{project.GrantChangedType, project.GrantCascadeChangedType})
}
return handler.NewUpdateStatement(
@@ -393,7 +393,7 @@ func (p *userGrantProjection) reduceProjectGrantChanged(event eventstore.Event)
func (p *userGrantProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-jpIvp", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-jpIvp", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewMultiStatement(
@@ -441,7 +441,7 @@ func getResourceOwnerOfUser(ctx context.Context, es handler.EventStore, instance
return "", err
}
if len(events) != 1 {
- return "", errors.ThrowNotFound(nil, "PROJ-0I92sp", "Errors.User.NotFound")
+ return "", zerrors.ThrowNotFound(nil, "PROJ-0I92sp", "Errors.User.NotFound")
}
return events[0].Aggregate().ResourceOwner, nil
}
@@ -462,7 +462,7 @@ func getResourceOwnerOfProject(ctx context.Context, es handler.EventStore, insta
return "", err
}
if len(events) != 1 {
- return "", errors.ThrowNotFound(nil, "PROJ-0I91sp", "Errors.Project.NotFound")
+ return "", zerrors.ThrowNotFound(nil, "PROJ-0I91sp", "Errors.Project.NotFound")
}
return events[0].Aggregate().ResourceOwner, nil
}
@@ -486,11 +486,11 @@ func getGrantedOrgOfGrantedProject(ctx context.Context, es handler.EventStore, i
return "", err
}
if len(events) != 1 {
- return "", errors.ThrowNotFound(nil, "PROJ-MoaSpw", "Errors.Grant.NotFound")
+ return "", zerrors.ThrowNotFound(nil, "PROJ-MoaSpw", "Errors.Grant.NotFound")
}
grantAddedEvent, ok := events[0].(*project.GrantAddedEvent)
if !ok {
- return "", errors.ThrowNotFound(nil, "PROJ-P0s2o0", "Errors.Grant.NotFound")
+ return "", zerrors.ThrowNotFound(nil, "PROJ-P0s2o0", "Errors.Grant.NotFound")
}
return grantAddedEvent.GrantedOrgID, nil
}
diff --git a/internal/query/projection/user_grant_test.go b/internal/query/projection/user_grant_test.go
index 97a464e370..22644d6e8c 100644
--- a/internal/query/projection/user_grant_test.go
+++ b/internal/query/projection/user_grant_test.go
@@ -8,7 +8,6 @@ import (
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
@@ -16,6 +15,7 @@ import (
"github.com/zitadel/zitadel/internal/repository/project"
"github.com/zitadel/zitadel/internal/repository/user"
"github.com/zitadel/zitadel/internal/repository/usergrant"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestUserGrantProjection_reduces(t *testing.T) {
@@ -345,7 +345,7 @@ func TestUserGrantProjection_reduces(t *testing.T) {
usergrant.UserGrantReactivatedType,
usergrant.AggregateType,
nil,
- ), usergrant.UserGrantDeactivatedEventMapper),
+ ), usergrant.UserGrantReactivatedEventMapper),
},
reduce: (&userGrantProjection{}).reduceReactivated,
want: wantReduce{
@@ -557,7 +557,7 @@ func TestUserGrantProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/user_metadata.go b/internal/query/projection/user_metadata.go
index e1b155294c..6599e1d2ce 100644
--- a/internal/query/projection/user_metadata.go
+++ b/internal/query/projection/user_metadata.go
@@ -3,13 +3,13 @@ package projection
import (
"context"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -100,7 +100,7 @@ func (p *userMetadataProjection) Reducers() []handler.AggregateReducer {
func (p *userMetadataProjection) reduceMetadataSet(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.MetadataSetEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Ghn52", "reduce.wrong.event.type %s", user.MetadataSetType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Ghn52", "reduce.wrong.event.type %s", user.MetadataSetType)
}
return handler.NewUpsertStatement(
e,
@@ -125,7 +125,7 @@ func (p *userMetadataProjection) reduceMetadataSet(event eventstore.Event) (*han
func (p *userMetadataProjection) reduceMetadataRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.MetadataRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Bm542", "reduce.wrong.event.type %s", user.MetadataRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Bm542", "reduce.wrong.event.type %s", user.MetadataRemovedType)
}
return handler.NewDeleteStatement(
e,
@@ -143,7 +143,7 @@ func (p *userMetadataProjection) reduceMetadataRemovedAll(event eventstore.Event
*user.UserRemovedEvent:
//ok
default:
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Bmnf2", "reduce.wrong.event.type %v", []eventstore.EventType{user.MetadataRemovedAllType, user.UserRemovedType})
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Bmnf2", "reduce.wrong.event.type %v", []eventstore.EventType{user.MetadataRemovedAllType, user.UserRemovedType})
}
return handler.NewDeleteStatement(
event,
@@ -157,7 +157,7 @@ func (p *userMetadataProjection) reduceMetadataRemovedAll(event eventstore.Event
func (p *userMetadataProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-oqwul", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-oqwul", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewDeleteStatement(
diff --git a/internal/query/projection/user_metadata_test.go b/internal/query/projection/user_metadata_test.go
index 9d0bb60ce2..a6d0ac7a4e 100644
--- a/internal/query/projection/user_metadata_test.go
+++ b/internal/query/projection/user_metadata_test.go
@@ -3,12 +3,12 @@ package projection
import (
"testing"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestUserMetadataProjection_reduces(t *testing.T) {
@@ -199,7 +199,7 @@ func TestUserMetadataProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/user_personal_access_token.go b/internal/query/projection/user_personal_access_token.go
index 2c072d3bd8..0efb5d6412 100644
--- a/internal/query/projection/user_personal_access_token.go
+++ b/internal/query/projection/user_personal_access_token.go
@@ -4,13 +4,13 @@ import (
"context"
"github.com/zitadel/zitadel/internal/database"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
old_handler "github.com/zitadel/zitadel/internal/eventstore/handler"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -103,7 +103,7 @@ func (p *personalAccessTokenProjection) Reducers() []handler.AggregateReducer {
func (p *personalAccessTokenProjection) reducePersonalAccessTokenAdded(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.PersonalAccessTokenAddedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-DVgf7", "reduce.wrong.event.type %s", user.PersonalAccessTokenAddedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-DVgf7", "reduce.wrong.event.type %s", user.PersonalAccessTokenAddedType)
}
return handler.NewCreateStatement(
e,
@@ -124,7 +124,7 @@ func (p *personalAccessTokenProjection) reducePersonalAccessTokenAdded(event eve
func (p *personalAccessTokenProjection) reducePersonalAccessTokenRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.PersonalAccessTokenRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-g7u3F", "reduce.wrong.event.type %s", user.PersonalAccessTokenRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-g7u3F", "reduce.wrong.event.type %s", user.PersonalAccessTokenRemovedType)
}
return handler.NewDeleteStatement(
e,
@@ -138,7 +138,7 @@ func (p *personalAccessTokenProjection) reducePersonalAccessTokenRemoved(event e
func (p *personalAccessTokenProjection) reduceUserRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*user.UserRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "HANDL-Dff3h", "reduce.wrong.event.type %s", user.UserRemovedType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "HANDL-Dff3h", "reduce.wrong.event.type %s", user.UserRemovedType)
}
return handler.NewDeleteStatement(
e,
@@ -152,7 +152,7 @@ func (p *personalAccessTokenProjection) reduceUserRemoved(event eventstore.Event
func (p *personalAccessTokenProjection) reduceOwnerRemoved(event eventstore.Event) (*handler.Statement, error) {
e, ok := event.(*org.OrgRemovedEvent)
if !ok {
- return nil, errors.ThrowInvalidArgumentf(nil, "PROJE-zQVhl", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
+ return nil, zerrors.ThrowInvalidArgumentf(nil, "PROJE-zQVhl", "reduce.wrong.event.type %s", org.OrgRemovedEventType)
}
return handler.NewDeleteStatement(
diff --git a/internal/query/projection/user_personal_access_token_test.go b/internal/query/projection/user_personal_access_token_test.go
index 4cb7e3162a..43d7638a66 100644
--- a/internal/query/projection/user_personal_access_token_test.go
+++ b/internal/query/projection/user_personal_access_token_test.go
@@ -5,12 +5,12 @@ import (
"time"
"github.com/zitadel/zitadel/internal/database"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestPersonalAccessTokenProjection_reduces(t *testing.T) {
@@ -169,7 +169,7 @@ func TestPersonalAccessTokenProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/projection/user_test.go b/internal/query/projection/user_test.go
index da4f2a860c..9aaec46cf0 100644
--- a/internal/query/projection/user_test.go
+++ b/internal/query/projection/user_test.go
@@ -4,13 +4,14 @@ import (
"database/sql"
"testing"
+ "github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/org"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestUserProjection_reduces(t *testing.T) {
@@ -50,7 +51,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "INSERT INTO projections.users9 (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)",
+ expectedStmt: "INSERT INTO projections.users10 (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)",
expectedArgs: []interface{}{
"agg-id",
anyArg{},
@@ -64,7 +65,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "INSERT INTO projections.users9_humans (user_id, instance_id, first_name, last_name, nick_name, display_name, preferred_language, gender, email, phone) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)",
+ expectedStmt: "INSERT INTO projections.users10_humans (user_id, instance_id, first_name, last_name, nick_name, display_name, preferred_language, gender, email, phone) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)",
expectedArgs: []interface{}{
"agg-id",
"instance-id",
@@ -79,7 +80,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "INSERT INTO projections.users9_notifications (user_id, instance_id, last_email, last_phone, password_set) VALUES ($1, $2, $3, $4, $5)",
+ expectedStmt: "INSERT INTO projections.users10_notifications (user_id, instance_id, last_email, last_phone, password_set) VALUES ($1, $2, $3, $4, $5)",
expectedArgs: []interface{}{
"agg-id",
"instance-id",
@@ -119,7 +120,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "INSERT INTO projections.users9 (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)",
+ expectedStmt: "INSERT INTO projections.users10 (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)",
expectedArgs: []interface{}{
"agg-id",
anyArg{},
@@ -133,7 +134,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "INSERT INTO projections.users9_humans (user_id, instance_id, first_name, last_name, nick_name, display_name, preferred_language, gender, email, phone) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)",
+ expectedStmt: "INSERT INTO projections.users10_humans (user_id, instance_id, first_name, last_name, nick_name, display_name, preferred_language, gender, email, phone) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)",
expectedArgs: []interface{}{
"agg-id",
"instance-id",
@@ -148,7 +149,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "INSERT INTO projections.users9_notifications (user_id, instance_id, last_email, last_phone, password_set) VALUES ($1, $2, $3, $4, $5)",
+ expectedStmt: "INSERT INTO projections.users10_notifications (user_id, instance_id, last_email, last_phone, password_set) VALUES ($1, $2, $3, $4, $5)",
expectedArgs: []interface{}{
"agg-id",
"instance-id",
@@ -183,7 +184,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "INSERT INTO projections.users9 (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)",
+ expectedStmt: "INSERT INTO projections.users10 (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)",
expectedArgs: []interface{}{
"agg-id",
anyArg{},
@@ -197,7 +198,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "INSERT INTO projections.users9_humans (user_id, instance_id, first_name, last_name, nick_name, display_name, preferred_language, gender, email, phone) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)",
+ expectedStmt: "INSERT INTO projections.users10_humans (user_id, instance_id, first_name, last_name, nick_name, display_name, preferred_language, gender, email, phone) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)",
expectedArgs: []interface{}{
"agg-id",
"instance-id",
@@ -212,7 +213,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "INSERT INTO projections.users9_notifications (user_id, instance_id, last_email, last_phone, password_set) VALUES ($1, $2, $3, $4, $5)",
+ expectedStmt: "INSERT INTO projections.users10_notifications (user_id, instance_id, last_email, last_phone, password_set) VALUES ($1, $2, $3, $4, $5)",
expectedArgs: []interface{}{
"agg-id",
"instance-id",
@@ -252,7 +253,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "INSERT INTO projections.users9 (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)",
+ expectedStmt: "INSERT INTO projections.users10 (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)",
expectedArgs: []interface{}{
"agg-id",
anyArg{},
@@ -266,7 +267,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "INSERT INTO projections.users9_humans (user_id, instance_id, first_name, last_name, nick_name, display_name, preferred_language, gender, email, phone) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)",
+ expectedStmt: "INSERT INTO projections.users10_humans (user_id, instance_id, first_name, last_name, nick_name, display_name, preferred_language, gender, email, phone) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)",
expectedArgs: []interface{}{
"agg-id",
"instance-id",
@@ -281,7 +282,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "INSERT INTO projections.users9_notifications (user_id, instance_id, last_email, last_phone, password_set) VALUES ($1, $2, $3, $4, $5)",
+ expectedStmt: "INSERT INTO projections.users10_notifications (user_id, instance_id, last_email, last_phone, password_set) VALUES ($1, $2, $3, $4, $5)",
expectedArgs: []interface{}{
"agg-id",
"instance-id",
@@ -321,7 +322,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "INSERT INTO projections.users9 (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)",
+ expectedStmt: "INSERT INTO projections.users10 (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)",
expectedArgs: []interface{}{
"agg-id",
anyArg{},
@@ -335,7 +336,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "INSERT INTO projections.users9_humans (user_id, instance_id, first_name, last_name, nick_name, display_name, preferred_language, gender, email, phone) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)",
+ expectedStmt: "INSERT INTO projections.users10_humans (user_id, instance_id, first_name, last_name, nick_name, display_name, preferred_language, gender, email, phone) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)",
expectedArgs: []interface{}{
"agg-id",
"instance-id",
@@ -350,7 +351,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "INSERT INTO projections.users9_notifications (user_id, instance_id, last_email, last_phone, password_set) VALUES ($1, $2, $3, $4, $5)",
+ expectedStmt: "INSERT INTO projections.users10_notifications (user_id, instance_id, last_email, last_phone, password_set) VALUES ($1, $2, $3, $4, $5)",
expectedArgs: []interface{}{
"agg-id",
"instance-id",
@@ -385,7 +386,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "INSERT INTO projections.users9 (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)",
+ expectedStmt: "INSERT INTO projections.users10 (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)",
expectedArgs: []interface{}{
"agg-id",
anyArg{},
@@ -399,7 +400,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "INSERT INTO projections.users9_humans (user_id, instance_id, first_name, last_name, nick_name, display_name, preferred_language, gender, email, phone) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)",
+ expectedStmt: "INSERT INTO projections.users10_humans (user_id, instance_id, first_name, last_name, nick_name, display_name, preferred_language, gender, email, phone) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)",
expectedArgs: []interface{}{
"agg-id",
"instance-id",
@@ -414,7 +415,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "INSERT INTO projections.users9_notifications (user_id, instance_id, last_email, last_phone, password_set) VALUES ($1, $2, $3, $4, $5)",
+ expectedStmt: "INSERT INTO projections.users10_notifications (user_id, instance_id, last_email, last_phone, password_set) VALUES ($1, $2, $3, $4, $5)",
expectedArgs: []interface{}{
"agg-id",
"instance-id",
@@ -444,7 +445,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "UPDATE projections.users9 SET state = $1 WHERE (id = $2) AND (instance_id = $3)",
+ expectedStmt: "UPDATE projections.users10 SET state = $1 WHERE (id = $2) AND (instance_id = $3)",
expectedArgs: []interface{}{
domain.UserStateInitial,
"agg-id",
@@ -472,7 +473,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "UPDATE projections.users9 SET state = $1 WHERE (id = $2) AND (instance_id = $3)",
+ expectedStmt: "UPDATE projections.users10 SET state = $1 WHERE (id = $2) AND (instance_id = $3)",
expectedArgs: []interface{}{
domain.UserStateInitial,
"agg-id",
@@ -500,7 +501,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "UPDATE projections.users9 SET state = $1 WHERE (id = $2) AND (instance_id = $3)",
+ expectedStmt: "UPDATE projections.users10 SET state = $1 WHERE (id = $2) AND (instance_id = $3)",
expectedArgs: []interface{}{
domain.UserStateActive,
"agg-id",
@@ -528,7 +529,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "UPDATE projections.users9 SET state = $1 WHERE (id = $2) AND (instance_id = $3)",
+ expectedStmt: "UPDATE projections.users10 SET state = $1 WHERE (id = $2) AND (instance_id = $3)",
expectedArgs: []interface{}{
domain.UserStateActive,
"agg-id",
@@ -556,7 +557,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "UPDATE projections.users9 SET (change_date, state, sequence) = ($1, $2, $3) WHERE (id = $4) AND (instance_id = $5)",
+ expectedStmt: "UPDATE projections.users10 SET (change_date, state, sequence) = ($1, $2, $3) WHERE (id = $4) AND (instance_id = $5)",
expectedArgs: []interface{}{
anyArg{},
domain.UserStateLocked,
@@ -586,7 +587,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "UPDATE projections.users9 SET (change_date, state, sequence) = ($1, $2, $3) WHERE (id = $4) AND (instance_id = $5)",
+ expectedStmt: "UPDATE projections.users10 SET (change_date, state, sequence) = ($1, $2, $3) WHERE (id = $4) AND (instance_id = $5)",
expectedArgs: []interface{}{
anyArg{},
domain.UserStateActive,
@@ -616,7 +617,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "UPDATE projections.users9 SET (change_date, state, sequence) = ($1, $2, $3) WHERE (id = $4) AND (instance_id = $5)",
+ expectedStmt: "UPDATE projections.users10 SET (change_date, state, sequence) = ($1, $2, $3) WHERE (id = $4) AND (instance_id = $5)",
expectedArgs: []interface{}{
anyArg{},
domain.UserStateInactive,
@@ -646,7 +647,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "UPDATE projections.users9 SET (change_date, state, sequence) = ($1, $2, $3) WHERE (id = $4) AND (instance_id = $5)",
+ expectedStmt: "UPDATE projections.users10 SET (change_date, state, sequence) = ($1, $2, $3) WHERE (id = $4) AND (instance_id = $5)",
expectedArgs: []interface{}{
anyArg{},
domain.UserStateActive,
@@ -676,7 +677,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "DELETE FROM projections.users9 WHERE (id = $1) AND (instance_id = $2)",
+ expectedStmt: "DELETE FROM projections.users10 WHERE (id = $1) AND (instance_id = $2)",
expectedArgs: []interface{}{
"agg-id",
"instance-id",
@@ -705,7 +706,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "UPDATE projections.users9 SET (change_date, username, sequence) = ($1, $2, $3) WHERE (id = $4) AND (instance_id = $5)",
+ expectedStmt: "UPDATE projections.users10 SET (change_date, username, sequence) = ($1, $2, $3) WHERE (id = $4) AND (instance_id = $5)",
expectedArgs: []interface{}{
anyArg{},
"username",
@@ -737,7 +738,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "UPDATE projections.users9 SET (change_date, username, sequence) = ($1, $2, $3) WHERE (id = $4) AND (instance_id = $5)",
+ expectedStmt: "UPDATE projections.users10 SET (change_date, username, sequence) = ($1, $2, $3) WHERE (id = $4) AND (instance_id = $5)",
expectedArgs: []interface{}{
anyArg{},
"id@temporary.domain",
@@ -774,7 +775,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "UPDATE projections.users9 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
+ expectedStmt: "UPDATE projections.users10 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
expectedArgs: []interface{}{
anyArg{},
uint64(15),
@@ -783,7 +784,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "UPDATE projections.users9_humans SET (first_name, last_name, nick_name, display_name, preferred_language, gender) = ($1, $2, $3, $4, $5, $6) WHERE (user_id = $7) AND (instance_id = $8)",
+ expectedStmt: "UPDATE projections.users10_humans SET (first_name, last_name, nick_name, display_name, preferred_language, gender) = ($1, $2, $3, $4, $5, $6) WHERE (user_id = $7) AND (instance_id = $8)",
expectedArgs: []interface{}{
"first-name",
"last-name",
@@ -823,7 +824,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "UPDATE projections.users9 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
+ expectedStmt: "UPDATE projections.users10 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
expectedArgs: []interface{}{
anyArg{},
uint64(15),
@@ -832,7 +833,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "UPDATE projections.users9_humans SET (first_name, last_name, nick_name, display_name, preferred_language, gender) = ($1, $2, $3, $4, $5, $6) WHERE (user_id = $7) AND (instance_id = $8)",
+ expectedStmt: "UPDATE projections.users10_humans SET (first_name, last_name, nick_name, display_name, preferred_language, gender) = ($1, $2, $3, $4, $5, $6) WHERE (user_id = $7) AND (instance_id = $8)",
expectedArgs: []interface{}{
"first-name",
"last-name",
@@ -867,7 +868,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "UPDATE projections.users9 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
+ expectedStmt: "UPDATE projections.users10 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
expectedArgs: []interface{}{
anyArg{},
uint64(15),
@@ -876,7 +877,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "UPDATE projections.users9_humans SET (phone, is_phone_verified) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)",
+ expectedStmt: "UPDATE projections.users10_humans SET (phone, is_phone_verified) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)",
expectedArgs: []interface{}{
domain.PhoneNumber("+41 00 000 00 00"),
false,
@@ -885,7 +886,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "UPDATE projections.users9_notifications SET last_phone = $1 WHERE (user_id = $2) AND (instance_id = $3)",
+ expectedStmt: "UPDATE projections.users10_notifications SET last_phone = $1 WHERE (user_id = $2) AND (instance_id = $3)",
expectedArgs: []interface{}{
&sql.NullString{String: "+41 00 000 00 00", Valid: true},
"agg-id",
@@ -915,7 +916,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "UPDATE projections.users9 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
+ expectedStmt: "UPDATE projections.users10 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
expectedArgs: []interface{}{
anyArg{},
uint64(15),
@@ -924,7 +925,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "UPDATE projections.users9_humans SET (phone, is_phone_verified) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)",
+ expectedStmt: "UPDATE projections.users10_humans SET (phone, is_phone_verified) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)",
expectedArgs: []interface{}{
domain.PhoneNumber("+41 00 000 00 00"),
false,
@@ -933,7 +934,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "UPDATE projections.users9_notifications SET last_phone = $1 WHERE (user_id = $2) AND (instance_id = $3)",
+ expectedStmt: "UPDATE projections.users10_notifications SET last_phone = $1 WHERE (user_id = $2) AND (instance_id = $3)",
expectedArgs: []interface{}{
&sql.NullString{String: "+41 00 000 00 00", Valid: true},
"agg-id",
@@ -961,7 +962,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "UPDATE projections.users9 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
+ expectedStmt: "UPDATE projections.users10 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
expectedArgs: []interface{}{
anyArg{},
uint64(15),
@@ -970,7 +971,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "UPDATE projections.users9_humans SET (phone, is_phone_verified) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)",
+ expectedStmt: "UPDATE projections.users10_humans SET (phone, is_phone_verified) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)",
expectedArgs: []interface{}{
nil,
nil,
@@ -979,7 +980,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "UPDATE projections.users9_notifications SET (last_phone, verified_phone) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)",
+ expectedStmt: "UPDATE projections.users10_notifications SET (last_phone, verified_phone) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)",
expectedArgs: []interface{}{
nil,
nil,
@@ -1008,7 +1009,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "UPDATE projections.users9 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
+ expectedStmt: "UPDATE projections.users10 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
expectedArgs: []interface{}{
anyArg{},
uint64(15),
@@ -1017,7 +1018,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "UPDATE projections.users9_humans SET (phone, is_phone_verified) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)",
+ expectedStmt: "UPDATE projections.users10_humans SET (phone, is_phone_verified) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)",
expectedArgs: []interface{}{
nil,
nil,
@@ -1026,7 +1027,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "UPDATE projections.users9_notifications SET (last_phone, verified_phone) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)",
+ expectedStmt: "UPDATE projections.users10_notifications SET (last_phone, verified_phone) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)",
expectedArgs: []interface{}{
nil,
nil,
@@ -1055,7 +1056,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "UPDATE projections.users9 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
+ expectedStmt: "UPDATE projections.users10 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
expectedArgs: []interface{}{
anyArg{},
uint64(15),
@@ -1064,7 +1065,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "UPDATE projections.users9_humans SET is_phone_verified = $1 WHERE (user_id = $2) AND (instance_id = $3)",
+ expectedStmt: "UPDATE projections.users10_humans SET is_phone_verified = $1 WHERE (user_id = $2) AND (instance_id = $3)",
expectedArgs: []interface{}{
true,
"agg-id",
@@ -1072,7 +1073,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "UPDATE projections.users9_notifications SET verified_phone = last_phone WHERE (user_id = $1) AND (instance_id = $2)",
+ expectedStmt: "UPDATE projections.users10_notifications SET verified_phone = last_phone WHERE (user_id = $1) AND (instance_id = $2)",
expectedArgs: []interface{}{
"agg-id",
"instance-id",
@@ -1099,7 +1100,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "UPDATE projections.users9 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
+ expectedStmt: "UPDATE projections.users10 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
expectedArgs: []interface{}{
anyArg{},
uint64(15),
@@ -1108,7 +1109,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "UPDATE projections.users9_humans SET is_phone_verified = $1 WHERE (user_id = $2) AND (instance_id = $3)",
+ expectedStmt: "UPDATE projections.users10_humans SET is_phone_verified = $1 WHERE (user_id = $2) AND (instance_id = $3)",
expectedArgs: []interface{}{
true,
"agg-id",
@@ -1116,7 +1117,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "UPDATE projections.users9_notifications SET verified_phone = last_phone WHERE (user_id = $1) AND (instance_id = $2)",
+ expectedStmt: "UPDATE projections.users10_notifications SET verified_phone = last_phone WHERE (user_id = $1) AND (instance_id = $2)",
expectedArgs: []interface{}{
"agg-id",
"instance-id",
@@ -1145,7 +1146,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "UPDATE projections.users9 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
+ expectedStmt: "UPDATE projections.users10 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
expectedArgs: []interface{}{
anyArg{},
uint64(15),
@@ -1154,7 +1155,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "UPDATE projections.users9_humans SET (email, is_email_verified) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)",
+ expectedStmt: "UPDATE projections.users10_humans SET (email, is_email_verified) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)",
expectedArgs: []interface{}{
domain.EmailAddress("email@zitadel.com"),
false,
@@ -1163,7 +1164,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "UPDATE projections.users9_notifications SET last_email = $1 WHERE (user_id = $2) AND (instance_id = $3)",
+ expectedStmt: "UPDATE projections.users10_notifications SET last_email = $1 WHERE (user_id = $2) AND (instance_id = $3)",
expectedArgs: []interface{}{
&sql.NullString{String: "email@zitadel.com", Valid: true},
"agg-id",
@@ -1193,7 +1194,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "UPDATE projections.users9 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
+ expectedStmt: "UPDATE projections.users10 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
expectedArgs: []interface{}{
anyArg{},
uint64(15),
@@ -1202,7 +1203,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "UPDATE projections.users9_humans SET (email, is_email_verified) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)",
+ expectedStmt: "UPDATE projections.users10_humans SET (email, is_email_verified) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)",
expectedArgs: []interface{}{
domain.EmailAddress("email@zitadel.com"),
false,
@@ -1211,7 +1212,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "UPDATE projections.users9_notifications SET last_email = $1 WHERE (user_id = $2) AND (instance_id = $3)",
+ expectedStmt: "UPDATE projections.users10_notifications SET last_email = $1 WHERE (user_id = $2) AND (instance_id = $3)",
expectedArgs: []interface{}{
&sql.NullString{String: "email@zitadel.com", Valid: true},
"agg-id",
@@ -1239,7 +1240,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "UPDATE projections.users9 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
+ expectedStmt: "UPDATE projections.users10 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
expectedArgs: []interface{}{
anyArg{},
uint64(15),
@@ -1248,7 +1249,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "UPDATE projections.users9_humans SET is_email_verified = $1 WHERE (user_id = $2) AND (instance_id = $3)",
+ expectedStmt: "UPDATE projections.users10_humans SET is_email_verified = $1 WHERE (user_id = $2) AND (instance_id = $3)",
expectedArgs: []interface{}{
true,
"agg-id",
@@ -1256,7 +1257,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "UPDATE projections.users9_notifications SET verified_email = last_email WHERE (user_id = $1) AND (instance_id = $2)",
+ expectedStmt: "UPDATE projections.users10_notifications SET verified_email = last_email WHERE (user_id = $1) AND (instance_id = $2)",
expectedArgs: []interface{}{
"agg-id",
"instance-id",
@@ -1283,7 +1284,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "UPDATE projections.users9 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
+ expectedStmt: "UPDATE projections.users10 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
expectedArgs: []interface{}{
anyArg{},
uint64(15),
@@ -1292,7 +1293,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "UPDATE projections.users9_humans SET is_email_verified = $1 WHERE (user_id = $2) AND (instance_id = $3)",
+ expectedStmt: "UPDATE projections.users10_humans SET is_email_verified = $1 WHERE (user_id = $2) AND (instance_id = $3)",
expectedArgs: []interface{}{
true,
"agg-id",
@@ -1300,7 +1301,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "UPDATE projections.users9_notifications SET verified_email = last_email WHERE (user_id = $1) AND (instance_id = $2)",
+ expectedStmt: "UPDATE projections.users10_notifications SET verified_email = last_email WHERE (user_id = $1) AND (instance_id = $2)",
expectedArgs: []interface{}{
"agg-id",
"instance-id",
@@ -1329,7 +1330,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "UPDATE projections.users9 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
+ expectedStmt: "UPDATE projections.users10 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
expectedArgs: []interface{}{
anyArg{},
uint64(15),
@@ -1338,7 +1339,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "UPDATE projections.users9_humans SET avatar_key = $1 WHERE (user_id = $2) AND (instance_id = $3)",
+ expectedStmt: "UPDATE projections.users10_humans SET avatar_key = $1 WHERE (user_id = $2) AND (instance_id = $3)",
expectedArgs: []interface{}{
"users/agg-id/avatar",
"agg-id",
@@ -1366,7 +1367,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "UPDATE projections.users9 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
+ expectedStmt: "UPDATE projections.users10 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
expectedArgs: []interface{}{
anyArg{},
uint64(15),
@@ -1375,7 +1376,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "UPDATE projections.users9_humans SET avatar_key = $1 WHERE (user_id = $2) AND (instance_id = $3)",
+ expectedStmt: "UPDATE projections.users10_humans SET avatar_key = $1 WHERE (user_id = $2) AND (instance_id = $3)",
expectedArgs: []interface{}{
nil,
"agg-id",
@@ -1406,7 +1407,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "INSERT INTO projections.users9 (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)",
+ expectedStmt: "INSERT INTO projections.users10 (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)",
expectedArgs: []interface{}{
"agg-id",
anyArg{},
@@ -1420,7 +1421,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "INSERT INTO projections.users9_machines (user_id, instance_id, name, description, access_token_type) VALUES ($1, $2, $3, $4, $5)",
+ expectedStmt: "INSERT INTO projections.users10_machines (user_id, instance_id, name, description, access_token_type) VALUES ($1, $2, $3, $4, $5)",
expectedArgs: []interface{}{
"agg-id",
"instance-id",
@@ -1454,7 +1455,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "INSERT INTO projections.users9 (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)",
+ expectedStmt: "INSERT INTO projections.users10 (id, creation_date, change_date, resource_owner, instance_id, state, sequence, username, type) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)",
expectedArgs: []interface{}{
"agg-id",
anyArg{},
@@ -1468,7 +1469,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "INSERT INTO projections.users9_machines (user_id, instance_id, name, description, access_token_type) VALUES ($1, $2, $3, $4, $5)",
+ expectedStmt: "INSERT INTO projections.users10_machines (user_id, instance_id, name, description, access_token_type) VALUES ($1, $2, $3, $4, $5)",
expectedArgs: []interface{}{
"agg-id",
"instance-id",
@@ -1501,7 +1502,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "UPDATE projections.users9 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
+ expectedStmt: "UPDATE projections.users10 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
expectedArgs: []interface{}{
anyArg{},
uint64(15),
@@ -1510,7 +1511,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "UPDATE projections.users9_machines SET (name, description) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)",
+ expectedStmt: "UPDATE projections.users10_machines SET (name, description) = ($1, $2) WHERE (user_id = $3) AND (instance_id = $4)",
expectedArgs: []interface{}{
"machine-name",
"description",
@@ -1541,7 +1542,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "UPDATE projections.users9 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
+ expectedStmt: "UPDATE projections.users10 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
expectedArgs: []interface{}{
anyArg{},
uint64(15),
@@ -1550,7 +1551,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "UPDATE projections.users9_machines SET name = $1 WHERE (user_id = $2) AND (instance_id = $3)",
+ expectedStmt: "UPDATE projections.users10_machines SET name = $1 WHERE (user_id = $2) AND (instance_id = $3)",
expectedArgs: []interface{}{
"machine-name",
"agg-id",
@@ -1580,7 +1581,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "UPDATE projections.users9 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
+ expectedStmt: "UPDATE projections.users10 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
expectedArgs: []interface{}{
anyArg{},
uint64(15),
@@ -1589,7 +1590,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "UPDATE projections.users9_machines SET description = $1 WHERE (user_id = $2) AND (instance_id = $3)",
+ expectedStmt: "UPDATE projections.users10_machines SET description = $1 WHERE (user_id = $2) AND (instance_id = $3)",
expectedArgs: []interface{}{
"description",
"agg-id",
@@ -1627,7 +1628,7 @@ func TestUserProjection_reduces(t *testing.T) {
user.MachineSecretSetType,
user.AggregateType,
[]byte(`{
- "client_secret": {}
+ "clientSecret": {"CryptoType":1,"Algorithm":"bcrypt","Crypted":"deadbeef"}
}`),
), user.MachineSecretSetEventMapper),
},
@@ -1638,7 +1639,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "UPDATE projections.users9 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
+ expectedStmt: "UPDATE projections.users10 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
expectedArgs: []interface{}{
anyArg{},
uint64(15),
@@ -1647,9 +1648,13 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "UPDATE projections.users9_machines SET has_secret = $1 WHERE (user_id = $2) AND (instance_id = $3)",
+ expectedStmt: "UPDATE projections.users10_machines SET secret = $1 WHERE (user_id = $2) AND (instance_id = $3)",
expectedArgs: []interface{}{
- true,
+ &crypto.CryptoValue{
+ CryptoType: crypto.TypeHash,
+ Algorithm: "bcrypt",
+ Crypted: []byte{117, 230, 157, 109, 231, 159},
+ },
"agg-id",
"instance-id",
},
@@ -1659,7 +1664,7 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- name: "reduceMachineSecretSet",
+ name: "reduceMachineSecretRemoved",
args: args{
event: getEvent(
testEvent(
@@ -1675,7 +1680,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "UPDATE projections.users9 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
+ expectedStmt: "UPDATE projections.users10 SET (change_date, sequence) = ($1, $2) WHERE (id = $3) AND (instance_id = $4)",
expectedArgs: []interface{}{
anyArg{},
uint64(15),
@@ -1684,9 +1689,9 @@ func TestUserProjection_reduces(t *testing.T) {
},
},
{
- expectedStmt: "UPDATE projections.users9_machines SET has_secret = $1 WHERE (user_id = $2) AND (instance_id = $3)",
+ expectedStmt: "UPDATE projections.users10_machines SET secret = $1 WHERE (user_id = $2) AND (instance_id = $3)",
expectedArgs: []interface{}{
- false,
+ nil,
"agg-id",
"instance-id",
},
@@ -1712,7 +1717,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "DELETE FROM projections.users9 WHERE (instance_id = $1) AND (resource_owner = $2)",
+ expectedStmt: "DELETE FROM projections.users10 WHERE (instance_id = $1) AND (resource_owner = $2)",
expectedArgs: []interface{}{
"instance-id",
"agg-id",
@@ -1739,7 +1744,7 @@ func TestUserProjection_reduces(t *testing.T) {
executer: &testExecuter{
executions: []execution{
{
- expectedStmt: "DELETE FROM projections.users9 WHERE (instance_id = $1)",
+ expectedStmt: "DELETE FROM projections.users10 WHERE (instance_id = $1)",
expectedArgs: []interface{}{
"agg-id",
},
@@ -1753,7 +1758,7 @@ func TestUserProjection_reduces(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
event := baseEvent(t)
got, err := tt.reduce(event)
- if _, ok := err.(errors.InvalidArgument); !ok {
+ if ok := zerrors.IsErrorInvalidArgument(err); !ok {
t.Errorf("no wrong event mapping: %v, got: %v", err, got)
}
diff --git a/internal/query/query.go b/internal/query/query.go
index 229895da1c..1b48c44a4f 100644
--- a/internal/query/query.go
+++ b/internal/query/query.go
@@ -3,12 +3,10 @@ package query
import (
"context"
"fmt"
- "net/http"
"regexp"
"sync"
"time"
- "github.com/rakyll/statik/fs"
"github.com/zitadel/logging"
"golang.org/x/text/language"
@@ -22,6 +20,7 @@ import (
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/repository/action"
"github.com/zitadel/zitadel/internal/repository/authrequest"
+ "github.com/zitadel/zitadel/internal/repository/deviceauth"
"github.com/zitadel/zitadel/internal/repository/idpintent"
iam_repo "github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/keypair"
@@ -47,8 +46,6 @@ type Queries struct {
checkPermission domain.PermissionCheck
DefaultLanguage language.Tag
- LoginDir http.FileSystem
- NotificationDir http.FileSystem
mutex sync.Mutex
LoginTranslationFileContents map[string][]byte
NotificationTranslationFileContents map[string][]byte
@@ -71,22 +68,10 @@ func StartQueries(
defaultAuditLogRetention time.Duration,
systemAPIUsers map[string]*authz.SystemAPIUser,
) (repo *Queries, err error) {
- statikLoginFS, err := fs.NewWithNamespace("login")
- if err != nil {
- return nil, fmt.Errorf("unable to start login statik dir")
- }
-
- statikNotificationFS, err := fs.NewWithNamespace("notification")
- if err != nil {
- return nil, fmt.Errorf("unable to start notification statik dir")
- }
-
repo = &Queries{
eventstore: es,
client: querySqlClient,
DefaultLanguage: language.Und,
- LoginDir: statikLoginFS,
- NotificationDir: statikNotificationFS,
LoginTranslationFileContents: make(map[string][]byte),
NotificationTranslationFileContents: make(map[string][]byte),
zitadelRoles: zitadelRoles,
@@ -115,6 +100,7 @@ func StartQueries(
quota.RegisterEventMappers(repo.eventstore)
limits.RegisterEventMappers(repo.eventstore)
restrictions.RegisterEventMappers(repo.eventstore)
+ deviceauth.RegisterEventMappers(repo.eventstore)
repo.checkPermission = permissionCheck(repo)
diff --git a/internal/query/query_test.go b/internal/query/query_test.go
index f1dee69814..a7f43bbabb 100644
--- a/internal/query/query_test.go
+++ b/internal/query/query_test.go
@@ -12,6 +12,7 @@ import (
"github.com/zitadel/zitadel/internal/eventstore/repository/mock"
action_repo "github.com/zitadel/zitadel/internal/repository/action"
"github.com/zitadel/zitadel/internal/repository/authrequest"
+ "github.com/zitadel/zitadel/internal/repository/deviceauth"
"github.com/zitadel/zitadel/internal/repository/feature"
"github.com/zitadel/zitadel/internal/repository/idpintent"
iam_repo "github.com/zitadel/zitadel/internal/repository/instance"
@@ -54,6 +55,7 @@ func expectEventstore(expects ...expect) func(*testing.T) *eventstore.Eventstore
quota_repo.RegisterEventMappers(es)
limits.RegisterEventMappers(es)
feature.RegisterEventMappers(es)
+ deviceauth.RegisterEventMappers(es)
return es
}
}
diff --git a/internal/query/quota.go b/internal/query/quota.go
index 1919902a27..1af5be8f87 100644
--- a/internal/query/quota.go
+++ b/internal/query/quota.go
@@ -3,16 +3,16 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"time"
sq "github.com/Masterminds/squirrel"
"github.com/zitadel/zitadel/internal/database"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/repository/quota"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -70,7 +70,7 @@ func (q *Queries) GetQuota(ctx context.Context, instanceID string, unit quota.Un
},
).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-XmYn9", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-XmYn9", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
qu, err = scan(row)
@@ -96,10 +96,10 @@ func prepareQuotaQuery(ctx context.Context, db prepareDatabase) (sq.SelectBuilde
var now time.Time
err := row.Scan(&q.ID, &q.From, &interval, &q.Amount, &q.Limit, &now)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-rDTM6", "Errors.Quota.NotExisting")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-rDTM6", "Errors.Quota.NotExisting")
}
- return nil, errors.ThrowInternal(err, "QUERY-LqySK", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-LqySK", "Errors.Internal")
}
q.ResetInterval = time.Duration(interval)
q.CurrentPeriodStart = pushPeriodStart(q.From, q.ResetInterval, now)
diff --git a/internal/query/quota_notifications.go b/internal/query/quota_notifications.go
index 7fc0748f63..0015278b20 100644
--- a/internal/query/quota_notifications.go
+++ b/internal/query/quota_notifications.go
@@ -3,18 +3,17 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"math"
"time"
sq "github.com/Masterminds/squirrel"
- "github.com/pkg/errors"
"github.com/zitadel/zitadel/internal/api/call"
- zitadel_errors "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/repository/quota"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -85,7 +84,7 @@ func (q *Queries) GetDueQuotaNotifications(ctx context.Context, instanceID strin
},
).ToSql()
if err != nil {
- return nil, zitadel_errors.ThrowInternal(err, "QUERY-XmYn9", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-XmYn9", "Errors.Query.SQLStatement")
}
var notifications *QuotaNotifications
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -166,10 +165,10 @@ func prepareQuotaNotificationsQuery(ctx context.Context, db prepareDatabase) (sq
var nextDueThreshold sql.NullInt16
err := rows.Scan(&cfg.ID, &cfg.CallURL, &cfg.Percent, &cfg.Repeat, &nextDueThreshold)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, zitadel_errors.ThrowNotFound(err, "QUERY-bbqWb", "Errors.QuotaNotification.NotExisting")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-bbqWb", "Errors.QuotaNotification.NotExisting")
}
- return nil, zitadel_errors.ThrowInternal(err, "QUERY-8copS", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-8copS", "Errors.Internal")
}
if nextDueThreshold.Valid {
cfg.NextDueThreshold = uint16(nextDueThreshold.Int16)
diff --git a/internal/query/quota_periods.go b/internal/query/quota_periods.go
index ce1b76cd08..6ec42deba3 100644
--- a/internal/query/quota_periods.go
+++ b/internal/query/quota_periods.go
@@ -8,10 +8,10 @@ import (
sq "github.com/Masterminds/squirrel"
"github.com/zitadel/zitadel/internal/api/call"
- zitadel_errors "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/repository/quota"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -54,13 +54,13 @@ func (q *Queries) GetRemainingQuotaUsage(ctx context.Context, instanceID string,
}).
ToSql()
if err != nil {
- return nil, zitadel_errors.ThrowInternal(err, "QUERY-FSA3g", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-FSA3g", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
remaining, err = scan(row)
return err
}, query, args...)
- if zitadel_errors.IsNotFound(err) {
+ if zerrors.IsNotFound(err) {
return nil, nil
}
return remaining, err
@@ -78,9 +78,9 @@ func prepareRemainingQuotaUsageQuery(ctx context.Context, db prepareDatabase) (s
err := row.Scan(remaining)
if err != nil {
if errors.Is(err, sql.ErrNoRows) {
- return nil, zitadel_errors.ThrowNotFound(err, "QUERY-quiowi2", "Errors.Internal")
+ return nil, zerrors.ThrowNotFound(err, "QUERY-quiowi2", "Errors.Internal")
}
- return nil, zitadel_errors.ThrowInternal(err, "QUERY-81j1jn2", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-81j1jn2", "Errors.Internal")
}
return remaining, nil
}
diff --git a/internal/query/quota_periods_test.go b/internal/query/quota_periods_test.go
index 25ea2056e9..0f44c5e547 100644
--- a/internal/query/quota_periods_test.go
+++ b/internal/query/quota_periods_test.go
@@ -8,7 +8,7 @@ import (
"regexp"
"testing"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -42,7 +42,7 @@ func Test_prepareRemainingQuotaUsageQuery(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
diff --git a/internal/query/quota_test.go b/internal/query/quota_test.go
index c96af861a0..5a75310b72 100644
--- a/internal/query/quota_test.go
+++ b/internal/query/quota_test.go
@@ -9,7 +9,7 @@ import (
"testing"
"time"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -52,7 +52,7 @@ func Test_QuotaPrepare(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
diff --git a/internal/query/restrictions.go b/internal/query/restrictions.go
index 80217164ab..9e0dd37aa6 100644
--- a/internal/query/restrictions.go
+++ b/internal/query/restrictions.go
@@ -7,12 +7,15 @@ import (
"time"
sq "github.com/Masterminds/squirrel"
+ "golang.org/x/text/language"
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
- zitade_errors "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/database"
+ "github.com/zitadel/zitadel/internal/domain"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ zitade_errors "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -44,10 +47,14 @@ var (
name: projection.RestrictionsColumnSequence,
table: restrictionsTable,
}
- RestrictionsColumnDisallowPublicOrgRegistrations = Column{
+ RestrictionsColumnDisallowPublicOrgRegistration = Column{
name: projection.RestrictionsColumnDisallowPublicOrgRegistration,
table: restrictionsTable,
}
+ RestrictionsColumnAllowedLanguages = Column{
+ name: projection.RestrictionsColumnAllowedLanguages,
+ table: restrictionsTable,
+ }
)
type Restrictions struct {
@@ -58,6 +65,7 @@ type Restrictions struct {
Sequence uint64
DisallowPublicOrgRegistration bool
+ AllowedLanguages []language.Tag
}
func (q *Queries) GetInstanceRestrictions(ctx context.Context) (restrictions Restrictions, err error) {
@@ -91,18 +99,25 @@ func prepareRestrictionsQuery(ctx context.Context, db prepareDatabase) (sq.Selec
RestrictionsColumnChangeDate.identifier(),
RestrictionsColumnResourceOwner.identifier(),
RestrictionsColumnSequence.identifier(),
- RestrictionsColumnDisallowPublicOrgRegistrations.identifier(),
+ RestrictionsColumnDisallowPublicOrgRegistration.identifier(),
+ RestrictionsColumnAllowedLanguages.identifier(),
).
From(restrictionsTable.identifier() + db.Timetravel(call.Took(ctx))).
PlaceholderFormat(sq.Dollar),
func(row *sql.Row) (restrictions Restrictions, err error) {
- return restrictions, row.Scan(
+ allowedLanguages := database.TextArray[string](make([]string, 0))
+ disallowPublicOrgRegistration := sql.NullBool{}
+ err = row.Scan(
&restrictions.AggregateID,
&restrictions.CreationDate,
&restrictions.ChangeDate,
&restrictions.ResourceOwner,
&restrictions.Sequence,
- &restrictions.DisallowPublicOrgRegistration,
+ &disallowPublicOrgRegistration,
+ &allowedLanguages,
)
+ restrictions.DisallowPublicOrgRegistration = disallowPublicOrgRegistration.Bool
+ restrictions.AllowedLanguages = domain.StringsToLanguages(allowedLanguages)
+ return restrictions, err
}
}
diff --git a/internal/query/restrictions_test.go b/internal/query/restrictions_test.go
index 83e6d9a8fe..cc7ee8442a 100644
--- a/internal/query/restrictions_test.go
+++ b/internal/query/restrictions_test.go
@@ -7,16 +7,21 @@ import (
"fmt"
"regexp"
"testing"
+
+ "golang.org/x/text/language"
+
+ "github.com/zitadel/zitadel/internal/database"
)
var (
- expectedRestrictionsQuery = regexp.QuoteMeta("SELECT projections.restrictions.aggregate_id," +
- " projections.restrictions.creation_date," +
- " projections.restrictions.change_date," +
- " projections.restrictions.resource_owner," +
- " projections.restrictions.sequence," +
- " projections.restrictions.disallow_public_org_registration" +
- " FROM projections.restrictions" +
+ expectedRestrictionsQuery = regexp.QuoteMeta("SELECT projections.restrictions2.aggregate_id," +
+ " projections.restrictions2.creation_date," +
+ " projections.restrictions2.change_date," +
+ " projections.restrictions2.resource_owner," +
+ " projections.restrictions2.sequence," +
+ " projections.restrictions2.disallow_public_org_registration," +
+ " projections.restrictions2.allowed_languages" +
+ " FROM projections.restrictions2" +
" AS OF SYSTEM TIME '-1 ms'",
)
@@ -27,6 +32,7 @@ var (
"resource_owner",
"sequence",
"disallow_public_org_registration",
+ "allowed_languages",
}
)
@@ -56,7 +62,9 @@ func Test_RestrictionsPrepare(t *testing.T) {
}
return nil, true
},
- object: Restrictions{},
+ object: Restrictions{
+ AllowedLanguages: make([]language.Tag, 0),
+ },
},
},
{
@@ -73,6 +81,7 @@ func Test_RestrictionsPrepare(t *testing.T) {
"instance1",
0,
true,
+ database.TextArray[string]([]string{"en", "de", "ru"}),
},
),
object: Restrictions{
@@ -82,6 +91,7 @@ func Test_RestrictionsPrepare(t *testing.T) {
ResourceOwner: "instance1",
Sequence: 0,
DisallowPublicOrgRegistration: true,
+ AllowedLanguages: []language.Tag{language.Make("en"), language.Make("de"), language.Make("ru")},
},
},
},
diff --git a/internal/query/search_query.go b/internal/query/search_query.go
index c92f155d2a..b4944a8f2d 100644
--- a/internal/query/search_query.go
+++ b/internal/query/search_query.go
@@ -8,6 +8,7 @@ import (
sq "github.com/Masterminds/squirrel"
+ "github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
)
@@ -255,7 +256,7 @@ func NewInTextQuery(col Column, values []string) (*InTextQuery, error) {
}, nil
}
-type TextQuery struct {
+type textQuery struct {
Column Column
Text string
Compare TextComparison
@@ -269,21 +270,38 @@ var (
ErrEmptyValues = errors.New("values array must not be empty")
)
-func NewTextQuery(col Column, value string, compare TextComparison) (*TextQuery, error) {
+func NewTextQuery(col Column, value string, compare TextComparison) (*textQuery, error) {
if compare < 0 || compare >= textCompareMax {
return nil, ErrInvalidCompare
}
if col.isZero() {
return nil, ErrMissingColumn
}
- return &TextQuery{
+ // handle the comparisons which use (i)like and therefore need to escape potential wildcards in the value
+ switch compare {
+ case TextEqualsIgnoreCase,
+ TextStartsWith,
+ TextStartsWithIgnoreCase,
+ TextEndsWith,
+ TextEndsWithIgnoreCase,
+ TextContains,
+ TextContainsIgnoreCase:
+ value = database.EscapeLikeWildcards(value)
+ case TextEquals,
+ TextListContains,
+ TextNotEquals,
+ textCompareMax:
+ // do nothing
+ }
+
+ return &textQuery{
Column: col,
Text: value,
Compare: compare,
}, nil
}
-func (q *TextQuery) Col() Column {
+func (q *textQuery) Col() Column {
return q.Column
}
@@ -296,11 +314,11 @@ func (q *InTextQuery) comp() sq.Sqlizer {
return sq.Eq{q.Column.identifier(): q.Values}
}
-func (q *TextQuery) toQuery(query sq.SelectBuilder) sq.SelectBuilder {
+func (q *textQuery) toQuery(query sq.SelectBuilder) sq.SelectBuilder {
return query.Where(q.comp())
}
-func (q *TextQuery) comp() sq.Sqlizer {
+func (q *textQuery) comp() sq.Sqlizer {
switch q.Compare {
case TextEquals:
return sq.Eq{q.Column.identifier(): q.Text}
@@ -346,32 +364,6 @@ const (
textCompareMax
)
-// Deprecated: Use TextComparison, will be removed as soon as all calls are changed to query
-func TextComparisonFromMethod(m domain.SearchMethod) TextComparison {
- switch m {
- case domain.SearchMethodEquals:
- return TextEquals
- case domain.SearchMethodEqualsIgnoreCase:
- return TextEqualsIgnoreCase
- case domain.SearchMethodStartsWith:
- return TextStartsWith
- case domain.SearchMethodStartsWithIgnoreCase:
- return TextStartsWithIgnoreCase
- case domain.SearchMethodContains:
- return TextContains
- case domain.SearchMethodContainsIgnoreCase:
- return TextContainsIgnoreCase
- case domain.SearchMethodEndsWith:
- return TextEndsWith
- case domain.SearchMethodEndsWithIgnoreCase:
- return TextEndsWithIgnoreCase
- case domain.SearchMethodListContains:
- return TextListContains
- default:
- return textCompareMax
- }
-}
-
type NumberQuery struct {
Column Column
Number interface{}
diff --git a/internal/query/search_query_test.go b/internal/query/search_query_test.go
index ac56eb6eee..c64b2c131c 100644
--- a/internal/query/search_query_test.go
+++ b/internal/query/search_query_test.go
@@ -191,7 +191,7 @@ func TestNewSubSelect(t *testing.T) {
name: "no column 1",
args: args{
column: Column{},
- queries: []SearchQuery{&TextQuery{testCol, "horst", TextEquals}},
+ queries: []SearchQuery{&textQuery{testCol, "horst", TextEquals}},
},
wantErr: func(err error) bool {
return errors.Is(err, ErrMissingColumn)
@@ -201,7 +201,7 @@ func TestNewSubSelect(t *testing.T) {
name: "no column name 1",
args: args{
column: testNoCol,
- queries: []SearchQuery{&TextQuery{testCol, "horst", TextEquals}},
+ queries: []SearchQuery{&textQuery{testCol, "horst", TextEquals}},
},
wantErr: func(err error) bool {
return errors.Is(err, ErrMissingColumn)
@@ -211,22 +211,22 @@ func TestNewSubSelect(t *testing.T) {
name: "correct 1",
args: args{
column: testCol,
- queries: []SearchQuery{&TextQuery{testCol, "horst", TextEquals}},
+ queries: []SearchQuery{&textQuery{testCol, "horst", TextEquals}},
},
want: &SubSelect{
Column: testCol,
- Queries: []SearchQuery{&TextQuery{testCol, "horst", TextEquals}},
+ Queries: []SearchQuery{&textQuery{testCol, "horst", TextEquals}},
},
},
{
name: "correct 3",
args: args{
column: testCol,
- queries: []SearchQuery{&TextQuery{testCol, "horst1", TextEquals}, &TextQuery{testCol, "horst2", TextEquals}, &TextQuery{testCol, "horst3", TextEquals}},
+ queries: []SearchQuery{&textQuery{testCol, "horst1", TextEquals}, &textQuery{testCol, "horst2", TextEquals}, &textQuery{testCol, "horst3", TextEquals}},
},
want: &SubSelect{
Column: testCol,
- Queries: []SearchQuery{&TextQuery{testCol, "horst1", TextEquals}, &TextQuery{testCol, "horst2", TextEquals}, &TextQuery{testCol, "horst3", TextEquals}},
+ Queries: []SearchQuery{&textQuery{testCol, "horst1", TextEquals}, &textQuery{testCol, "horst2", TextEquals}, &textQuery{testCol, "horst3", TextEquals}},
},
},
}
@@ -275,7 +275,7 @@ func TestSubSelect_comp(t *testing.T) {
name: "queries 1",
fields: fields{
Column: testCol,
- Queries: []SearchQuery{&TextQuery{testCol, "horst", TextEquals}},
+ Queries: []SearchQuery{&textQuery{testCol, "horst", TextEquals}},
},
want: want{
query: sq.Select("test_table.test_col").From("test_table").Where(sq.Eq{"test_table.test_col": interface{}("horst")}),
@@ -285,7 +285,7 @@ func TestSubSelect_comp(t *testing.T) {
name: "queries 1 with alias",
fields: fields{
Column: testColAlias,
- Queries: []SearchQuery{&TextQuery{testColAlias, "horst", TextEquals}},
+ Queries: []SearchQuery{&textQuery{testColAlias, "horst", TextEquals}},
},
want: want{
query: sq.Select("test_alias.test_col").From("test_table AS test_alias").Where(sq.Eq{"test_alias.test_col": interface{}("horst")}),
@@ -295,7 +295,7 @@ func TestSubSelect_comp(t *testing.T) {
name: "queries 3",
fields: fields{
Column: testCol,
- Queries: []SearchQuery{&TextQuery{testCol, "horst1", TextEquals}, &TextQuery{testCol, "horst2", TextEquals}, &TextQuery{testCol, "horst3", TextEquals}},
+ Queries: []SearchQuery{&textQuery{testCol, "horst1", TextEquals}, &textQuery{testCol, "horst2", TextEquals}, &textQuery{testCol, "horst3", TextEquals}},
},
want: want{
query: sq.Select("test_table.test_col").From("test_table").From("test_table").Where(sq.Eq{"test_table.test_col": "horst1"}).From("test_table").Where(sq.Eq{"test_table.test_col": "horst2"}).From("test_table").Where(sq.Eq{"test_table.test_col": "horst3"}),
@@ -585,12 +585,12 @@ func TestNewListQuery(t *testing.T) {
name: "correct",
args: args{
column: testCol,
- data: &SubSelect{Column: testCol, Queries: []SearchQuery{&TextQuery{testCol, "horst1", TextEquals}}},
+ data: &SubSelect{Column: testCol, Queries: []SearchQuery{&textQuery{testCol, "horst1", TextEquals}}},
compare: ListIn,
},
want: &ListQuery{
Column: testCol,
- Data: &SubSelect{Column: testCol, Queries: []SearchQuery{&TextQuery{testCol, "horst1", TextEquals}}},
+ Data: &SubSelect{Column: testCol, Queries: []SearchQuery{&textQuery{testCol, "horst1", TextEquals}}},
Compare: ListIn,
},
},
@@ -697,7 +697,7 @@ func TestListQuery_comp(t *testing.T) {
name: "in subquery text",
fields: fields{
Column: testCol,
- Data: &SubSelect{Column: testCol, Queries: []SearchQuery{&TextQuery{testCol, "horst", TextEquals}}},
+ Data: &SubSelect{Column: testCol, Queries: []SearchQuery{&textQuery{testCol, "horst", TextEquals}}},
Compare: ListIn,
},
want: want{
@@ -779,7 +779,7 @@ func TestNewTextQuery(t *testing.T) {
tests := []struct {
name string
args args
- want *TextQuery
+ want *textQuery
wantErr func(error) bool
}{
{
@@ -827,18 +827,317 @@ func TestNewTextQuery(t *testing.T) {
},
},
{
- name: "correct",
+ name: "equals",
args: args{
column: testCol,
value: "hurst",
compare: TextEquals,
},
- want: &TextQuery{
+ want: &textQuery{
Column: testCol,
Text: "hurst",
Compare: TextEquals,
},
},
+ {
+ name: "equals ignore case",
+ args: args{
+ column: testCol,
+ value: "hurst",
+ compare: TextEqualsIgnoreCase,
+ },
+ want: &textQuery{
+ Column: testCol,
+ Text: "hurst",
+ Compare: TextEqualsIgnoreCase,
+ },
+ },
+ {
+ name: "equals ignore case % wildcard",
+ args: args{
+ column: testCol,
+ value: "hu%rst",
+ compare: TextEqualsIgnoreCase,
+ },
+ want: &textQuery{
+ Column: testCol,
+ Text: "hu\\%rst",
+ Compare: TextEqualsIgnoreCase,
+ },
+ },
+ {
+ name: "equals ignore case _ wildcard",
+ args: args{
+ column: testCol,
+ value: "hu_rst",
+ compare: TextEqualsIgnoreCase,
+ },
+ want: &textQuery{
+ Column: testCol,
+ Text: "hu\\_rst",
+ Compare: TextEqualsIgnoreCase,
+ },
+ },
+ {
+ name: "equals ignore case _, % wildcards",
+ args: args{
+ column: testCol,
+ value: "h_urst%",
+ compare: TextEqualsIgnoreCase,
+ },
+ want: &textQuery{
+ Column: testCol,
+ Text: "h\\_urst\\%",
+ Compare: TextEqualsIgnoreCase,
+ },
+ },
+ {
+ name: "not equal",
+ args: args{
+ column: testCol,
+ value: "hurst",
+ compare: TextNotEquals,
+ },
+ want: &textQuery{
+ Column: testCol,
+ Text: "hurst",
+ Compare: TextNotEquals,
+ },
+ },
+ {
+ name: "starts with",
+ args: args{
+ column: testCol,
+ value: "hurst",
+ compare: TextStartsWith,
+ },
+ want: &textQuery{
+ Column: testCol,
+ Text: "hurst",
+ Compare: TextStartsWith,
+ },
+ },
+ {
+ name: "starts with _ wildcard",
+ args: args{
+ column: testCol,
+ value: "_hurst",
+ compare: TextStartsWith,
+ },
+ want: &textQuery{
+ Column: testCol,
+ Text: "\\_hurst",
+ Compare: TextStartsWith,
+ },
+ },
+ {
+ name: "starts with % wildcard",
+ args: args{
+ column: testCol,
+ value: "hurst%",
+ compare: TextStartsWith,
+ },
+ want: &textQuery{
+ Column: testCol,
+ Text: "hurst\\%",
+ Compare: TextStartsWith,
+ },
+ },
+ {
+ name: "starts with %, % wildcard",
+ args: args{
+ column: testCol,
+ value: "hu%%rst",
+ compare: TextStartsWith,
+ },
+ want: &textQuery{
+ Column: testCol,
+ Text: "hu\\%\\%rst",
+ Compare: TextStartsWith,
+ },
+ },
+ {
+ name: "starts with ignore case",
+ args: args{
+ column: testCol,
+ value: "hurst",
+ compare: TextStartsWithIgnoreCase,
+ },
+ want: &textQuery{
+ Column: testCol,
+ Text: "hurst",
+ Compare: TextStartsWithIgnoreCase,
+ },
+ },
+ {
+ name: "starts with ignore case _ wildcard",
+ args: args{
+ column: testCol,
+ value: "hur_st",
+ compare: TextStartsWithIgnoreCase,
+ },
+ want: &textQuery{
+ Column: testCol,
+ Text: "hur\\_st",
+ Compare: TextStartsWithIgnoreCase,
+ },
+ },
+ {
+ name: "starts with ignore case % wildcard",
+ args: args{
+ column: testCol,
+ value: "hurst%",
+ compare: TextStartsWithIgnoreCase,
+ },
+ want: &textQuery{
+ Column: testCol,
+ Text: "hurst\\%",
+ Compare: TextStartsWithIgnoreCase,
+ },
+ },
+ {
+ name: "starts with ignore case _, _ wildcard",
+ args: args{
+ column: testCol,
+ value: "h_r_t",
+ compare: TextStartsWithIgnoreCase,
+ },
+ want: &textQuery{
+ Column: testCol,
+ Text: "h\\_r\\_t",
+ Compare: TextStartsWithIgnoreCase,
+ },
+ },
+ {
+ name: "ends with",
+ args: args{
+ column: testCol,
+ value: "hurst",
+ compare: TextEndsWith,
+ },
+ want: &textQuery{
+ Column: testCol,
+ Text: "hurst",
+ Compare: TextEndsWith,
+ },
+ },
+ {
+ name: "ends with % wildcard",
+ args: args{
+ column: testCol,
+ value: "%hurst",
+ compare: TextEndsWith,
+ },
+ want: &textQuery{
+ Column: testCol,
+ Text: "\\%hurst",
+ Compare: TextEndsWith,
+ },
+ },
+ {
+ name: "ends with _ wildcard",
+ args: args{
+ column: testCol,
+ value: "hurst_",
+ compare: TextEndsWith,
+ },
+ want: &textQuery{
+ Column: testCol,
+ Text: "hurst\\_",
+ Compare: TextEndsWith,
+ },
+ },
+ {
+ name: "ends with _, % wildcard",
+ args: args{
+ column: testCol,
+ value: "hurst_%",
+ compare: TextEndsWith,
+ },
+ want: &textQuery{
+ Column: testCol,
+ Text: "hurst\\_\\%",
+ Compare: TextEndsWith,
+ },
+ },
+ {
+ name: "ends with ignore case",
+ args: args{
+ column: testCol,
+ value: "hurst",
+ compare: TextEndsWithIgnoreCase,
+ },
+ want: &textQuery{
+ Column: testCol,
+ Text: "hurst",
+ Compare: TextEndsWithIgnoreCase,
+ },
+ },
+ {
+ name: "ends with ignore case _, %, _ wildcards",
+ args: args{
+ column: testCol,
+ value: "h_r_t%",
+ compare: TextEndsWithIgnoreCase,
+ },
+ want: &textQuery{
+ Column: testCol,
+ Text: "h\\_r\\_t\\%",
+ Compare: TextEndsWithIgnoreCase,
+ },
+ },
+ {
+ name: "contains",
+ args: args{
+ column: testCol,
+ value: "hurst",
+ compare: TextContains,
+ },
+ want: &textQuery{
+ Column: testCol,
+ Text: "hurst",
+ Compare: TextContains,
+ },
+ },
+ {
+ name: "contains % wildcard",
+ args: args{
+ column: testCol,
+ value: "%",
+ compare: TextContains,
+ },
+ want: &textQuery{
+ Column: testCol,
+ Text: "\\%",
+ Compare: TextContains,
+ },
+ },
+ {
+ name: "contains ignore csae",
+ args: args{
+ column: testCol,
+ value: "hurst",
+ compare: TextContainsIgnoreCase,
+ },
+ want: &textQuery{
+ Column: testCol,
+ Text: "hurst",
+ Compare: TextContainsIgnoreCase,
+ },
+ },
+ {
+ name: "contains ignore csae _ wildcard",
+ args: args{
+ column: testCol,
+ value: "hurs_",
+ compare: TextContainsIgnoreCase,
+ },
+ want: &textQuery{
+ Column: testCol,
+ Text: "hurs\\_",
+ Compare: TextContainsIgnoreCase,
+ },
+ },
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
@@ -894,6 +1193,17 @@ func TestTextQuery_comp(t *testing.T) {
query: sq.ILike{"test_table.test_col": "Hurst"},
},
},
+ {
+ name: "equals ignore case wildcard",
+ fields: fields{
+ Column: testCol,
+ Text: "Hu%%rst",
+ Compare: TextEqualsIgnoreCase,
+ },
+ want: want{
+ query: sq.ILike{"test_table.test_col": "Hu\\%\\%rst"},
+ },
+ },
{
name: "starts with",
fields: fields{
@@ -905,6 +1215,17 @@ func TestTextQuery_comp(t *testing.T) {
query: sq.Like{"test_table.test_col": "Hurst%"},
},
},
+ {
+ name: "starts with wildcards",
+ fields: fields{
+ Column: testCol,
+ Text: "_Hurst%",
+ Compare: TextStartsWith,
+ },
+ want: want{
+ query: sq.Like{"test_table.test_col": "\\_Hurst\\%%"},
+ },
+ },
{
name: "starts with ignore case",
fields: fields{
@@ -916,6 +1237,17 @@ func TestTextQuery_comp(t *testing.T) {
query: sq.ILike{"test_table.test_col": "Hurst%"},
},
},
+ {
+ name: "starts with ignore case wildcards",
+ fields: fields{
+ Column: testCol,
+ Text: "Hurst%",
+ Compare: TextStartsWithIgnoreCase,
+ },
+ want: want{
+ query: sq.ILike{"test_table.test_col": "Hurst\\%%"},
+ },
+ },
{
name: "ends with",
fields: fields{
@@ -927,6 +1259,17 @@ func TestTextQuery_comp(t *testing.T) {
query: sq.Like{"test_table.test_col": "%Hurst"},
},
},
+ {
+ name: "ends with wildcards",
+ fields: fields{
+ Column: testCol,
+ Text: "Hurst%",
+ Compare: TextEndsWith,
+ },
+ want: want{
+ query: sq.Like{"test_table.test_col": "%Hurst\\%"},
+ },
+ },
{
name: "ends with ignore case",
fields: fields{
@@ -938,6 +1281,17 @@ func TestTextQuery_comp(t *testing.T) {
query: sq.ILike{"test_table.test_col": "%Hurst"},
},
},
+ {
+ name: "ends with ignore case wildcards",
+ fields: fields{
+ Column: testCol,
+ Text: "%Hurst",
+ Compare: TextEndsWithIgnoreCase,
+ },
+ want: want{
+ query: sq.ILike{"test_table.test_col": "%\\%Hurst"},
+ },
+ },
{
name: "contains",
fields: fields{
@@ -949,6 +1303,17 @@ func TestTextQuery_comp(t *testing.T) {
query: sq.Like{"test_table.test_col": "%Hurst%"},
},
},
+ {
+ name: "contains wildcards",
+ fields: fields{
+ Column: testCol,
+ Text: "Hu%rst%",
+ Compare: TextContains,
+ },
+ want: want{
+ query: sq.Like{"test_table.test_col": "%Hu\\%rst\\%%"},
+ },
+ },
{
name: "containts ignore case",
fields: fields{
@@ -960,6 +1325,17 @@ func TestTextQuery_comp(t *testing.T) {
query: sq.ILike{"test_table.test_col": "%Hurst%"},
},
},
+ {
+ name: "contains ignore case wildcards",
+ fields: fields{
+ Column: testCol,
+ Text: "%Hurst%",
+ Compare: TextContainsIgnoreCase,
+ },
+ want: want{
+ query: sq.ILike{"test_table.test_col": "%\\%Hurst\\%%"},
+ },
+ },
{
name: "list containts",
fields: fields{
@@ -999,10 +1375,10 @@ func TestTextQuery_comp(t *testing.T) {
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
- s := &TextQuery{
- Column: tt.fields.Column,
- Text: tt.fields.Text,
- Compare: tt.fields.Compare,
+ s, _ := NewTextQuery(tt.fields.Column, tt.fields.Text, tt.fields.Compare)
+ if s == nil {
+ // used to check correct behavior of comp
+ s = &textQuery{Column: tt.fields.Column, Text: tt.fields.Text, Compare: tt.fields.Compare}
}
query := s.comp()
if query == nil && tt.want.isNil {
@@ -1018,95 +1394,6 @@ func TestTextQuery_comp(t *testing.T) {
}
}
-func TestTextComparisonFromMethod(t *testing.T) {
- type args struct {
- m domain.SearchMethod
- }
- tests := []struct {
- name string
- args args
- want TextComparison
- }{
- {
- name: "equals",
- args: args{
- m: domain.SearchMethodEquals,
- },
- want: TextEquals,
- },
- {
- name: "equals ignore case",
- args: args{
- m: domain.SearchMethodEqualsIgnoreCase,
- },
- want: TextEqualsIgnoreCase,
- },
- {
- name: "starts with",
- args: args{
- m: domain.SearchMethodStartsWith,
- },
- want: TextStartsWith,
- },
- {
- name: "starts with ignore case",
- args: args{
- m: domain.SearchMethodStartsWithIgnoreCase,
- },
- want: TextStartsWithIgnoreCase,
- },
- {
- name: "ends with",
- args: args{
- m: domain.SearchMethodEndsWith,
- },
- want: TextEndsWith,
- },
- {
- name: "ends with ignore case",
- args: args{
- m: domain.SearchMethodEndsWithIgnoreCase,
- },
- want: TextEndsWithIgnoreCase,
- },
- {
- name: "contains",
- args: args{
- m: domain.SearchMethodContains,
- },
- want: TextContains,
- },
- {
- name: "list contains",
- args: args{
- m: domain.SearchMethodListContains,
- },
- want: TextListContains,
- },
- {
- name: "containts ignore case",
- args: args{
- m: domain.SearchMethodContainsIgnoreCase,
- },
- want: TextContainsIgnoreCase,
- },
- {
- name: "invalid search method",
- args: args{
- m: -1,
- },
- want: textCompareMax,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- if got := TextComparisonFromMethod(tt.args.m); got != tt.want {
- t.Errorf("TextCompareFromMethod() = %v, want %v", got, tt.want)
- }
- })
- }
-}
-
func TestNewNumberQuery(t *testing.T) {
type args struct {
column Column
diff --git a/internal/query/secret_generator_test.go b/internal/query/secret_generator_test.go
index 44d2015c19..683dc3441e 100644
--- a/internal/query/secret_generator_test.go
+++ b/internal/query/secret_generator_test.go
@@ -10,7 +10,7 @@ import (
"time"
"github.com/zitadel/zitadel/internal/domain"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -246,7 +246,7 @@ func Test_SecretGeneratorsPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
diff --git a/internal/query/secret_generators.go b/internal/query/secret_generators.go
index f339668a25..d8f838b82a 100644
--- a/internal/query/secret_generators.go
+++ b/internal/query/secret_generators.go
@@ -3,7 +3,7 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"time"
sq "github.com/Masterminds/squirrel"
@@ -12,9 +12,9 @@ import (
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -144,7 +144,7 @@ func (q *Queries) SecretGeneratorByType(ctx context.Context, generatorType domai
SecretGeneratorColumnInstanceID.identifier(): authz.GetInstance(ctx).InstanceID(),
}).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-3k99f", "Errors.Query.SQLStatment")
+ return nil, zerrors.ThrowInternal(err, "QUERY-3k99f", "Errors.Query.SQLStatment")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -164,7 +164,7 @@ func (q *Queries) SearchSecretGenerators(ctx context.Context, queries *SecretGen
SecretGeneratorColumnInstanceID.identifier(): authz.GetInstance(ctx).InstanceID(),
}).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-sn9lw", "Errors.Query.InvalidRequest")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-sn9lw", "Errors.Query.InvalidRequest")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -172,7 +172,7 @@ func (q *Queries) SearchSecretGenerators(ctx context.Context, queries *SecretGen
return err
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-4miii", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-4miii", "Errors.Internal")
}
secretGenerators.State, err = q.latestState(ctx, secretGeneratorsTable)
return secretGenerators, err
@@ -223,10 +223,10 @@ func prepareSecretGeneratorQuery(ctx context.Context, db prepareDatabase) (sq.Se
&secretGenerator.IncludeSymbols,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-m9wff", "Errors.SecretGenerator.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-m9wff", "Errors.SecretGenerator.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-2k99d", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-2k99d", "Errors.Internal")
}
return secretGenerator, nil
}
@@ -276,7 +276,7 @@ func prepareSecretGeneratorsQuery(ctx context.Context, db prepareDatabase) (sq.S
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-em9fs", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-em9fs", "Errors.Query.CloseRows")
}
return &SecretGenerators{
diff --git a/internal/query/security_policy.go b/internal/query/security_policy.go
index 49f355a458..3a4a3abb20 100644
--- a/internal/query/security_policy.go
+++ b/internal/query/security_policy.go
@@ -3,7 +3,7 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"time"
sq "github.com/Masterminds/squirrel"
@@ -11,8 +11,8 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/database"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -63,7 +63,7 @@ func (q *Queries) SecurityPolicy(ctx context.Context) (policy *SecurityPolicy, e
SecurityPolicyColumnInstanceID.identifier(): authz.GetInstance(ctx).InstanceID(),
}).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Sf6d1", "Errors.Query.SQLStatment")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Sf6d1", "Errors.Query.SQLStatment")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -95,8 +95,8 @@ func prepareSecurityPolicyQuery(ctx context.Context, db prepareDatabase) (sq.Sel
&securityPolicy.Enabled,
&securityPolicy.AllowedOrigins,
)
- if err != nil && !errs.Is(err, sql.ErrNoRows) { // ignore not found errors
- return nil, errors.ThrowInternal(err, "QUERY-Dfrt2", "Errors.Internal")
+ if err != nil && !errors.Is(err, sql.ErrNoRows) { // ignore not found errors
+ return nil, zerrors.ThrowInternal(err, "QUERY-Dfrt2", "Errors.Internal")
}
return securityPolicy, nil
}
diff --git a/internal/query/session.go b/internal/query/session.go
index 4507320abe..5aa7c177b1 100644
--- a/internal/query/session.go
+++ b/internal/query/session.go
@@ -3,7 +3,7 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"net"
"net/http"
"time"
@@ -16,10 +16,10 @@ import (
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Sessions struct {
@@ -215,7 +215,7 @@ func (q *Queries) SessionByID(ctx context.Context, shouldTriggerBulk bool, id, s
},
).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-dn9JW", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-dn9JW", "Errors.Query.SQLStatement")
}
var tokenID string
@@ -230,7 +230,7 @@ func (q *Queries) SessionByID(ctx context.Context, shouldTriggerBulk bool, id, s
return session, nil
}
if err := q.sessionTokenVerifier(ctx, sessionToken, session.ID, tokenID); err != nil {
- return nil, errors.ThrowPermissionDenied(nil, "QUERY-dsfr3", "Errors.PermissionDenied")
+ return nil, zerrors.ThrowPermissionDenied(nil, "QUERY-dsfr3", "Errors.PermissionDenied")
}
return session, nil
}
@@ -246,7 +246,7 @@ func (q *Queries) SearchSessions(ctx context.Context, queries *SessionsSearchQue
}).
ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-sn9Jf", "Errors.Query.InvalidRequest")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-sn9Jf", "Errors.Query.InvalidRequest")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -254,7 +254,7 @@ func (q *Queries) SearchSessions(ctx context.Context, queries *SessionsSearchQue
return err
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Sfg42", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Sfg42", "Errors.Internal")
}
sessions.State, err = q.latestState(ctx, sessionsTable)
@@ -366,10 +366,10 @@ func prepareSessionQuery(ctx context.Context, db prepareDatabase) (sq.SelectBuil
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, "", errors.ThrowNotFound(err, "QUERY-SFeaa", "Errors.Session.NotExisting")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, "", zerrors.ThrowNotFound(err, "QUERY-SFeaa", "Errors.Session.NotExisting")
}
- return nil, "", errors.ThrowInternal(err, "QUERY-SAder", "Errors.Internal")
+ return nil, "", zerrors.ThrowInternal(err, "QUERY-SAder", "Errors.Internal")
}
session.UserFactor.UserID = userID.String
@@ -471,7 +471,7 @@ func prepareSessionsQuery(ctx context.Context, db prepareDatabase) (sq.SelectBui
)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-SAfeg", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-SAfeg", "Errors.Internal")
}
session.UserFactor.UserID = userID.String
session.UserFactor.ResourceOwner = userResourceOwner.String
diff --git a/internal/query/sessions_test.go b/internal/query/sessions_test.go
index d4f621073a..711e952323 100644
--- a/internal/query/sessions_test.go
+++ b/internal/query/sessions_test.go
@@ -16,7 +16,7 @@ import (
"github.com/stretchr/testify/require"
"github.com/zitadel/zitadel/internal/domain"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -31,7 +31,7 @@ var (
` projections.sessions8.user_resource_owner,` +
` projections.sessions8.user_checked_at,` +
` projections.login_names3.login_name,` +
- ` projections.users9_humans.display_name,` +
+ ` projections.users10_humans.display_name,` +
` projections.sessions8.password_checked_at,` +
` projections.sessions8.intent_checked_at,` +
` projections.sessions8.webauthn_checked_at,` +
@@ -48,8 +48,8 @@ var (
` projections.sessions8.expiration` +
` FROM projections.sessions8` +
` LEFT JOIN projections.login_names3 ON projections.sessions8.user_id = projections.login_names3.user_id AND projections.sessions8.instance_id = projections.login_names3.instance_id` +
- ` LEFT JOIN projections.users9_humans ON projections.sessions8.user_id = projections.users9_humans.user_id AND projections.sessions8.instance_id = projections.users9_humans.instance_id` +
- ` LEFT JOIN projections.users9 ON projections.sessions8.user_id = projections.users9.id AND projections.sessions8.instance_id = projections.users9.instance_id` +
+ ` LEFT JOIN projections.users10_humans ON projections.sessions8.user_id = projections.users10_humans.user_id AND projections.sessions8.instance_id = projections.users10_humans.instance_id` +
+ ` LEFT JOIN projections.users10 ON projections.sessions8.user_id = projections.users10.id AND projections.sessions8.instance_id = projections.users10.instance_id` +
` AS OF SYSTEM TIME '-1 ms'`)
expectedSessionsQuery = regexp.QuoteMeta(`SELECT projections.sessions8.id,` +
` projections.sessions8.creation_date,` +
@@ -62,7 +62,7 @@ var (
` projections.sessions8.user_resource_owner,` +
` projections.sessions8.user_checked_at,` +
` projections.login_names3.login_name,` +
- ` projections.users9_humans.display_name,` +
+ ` projections.users10_humans.display_name,` +
` projections.sessions8.password_checked_at,` +
` projections.sessions8.intent_checked_at,` +
` projections.sessions8.webauthn_checked_at,` +
@@ -75,8 +75,8 @@ var (
` COUNT(*) OVER ()` +
` FROM projections.sessions8` +
` LEFT JOIN projections.login_names3 ON projections.sessions8.user_id = projections.login_names3.user_id AND projections.sessions8.instance_id = projections.login_names3.instance_id` +
- ` LEFT JOIN projections.users9_humans ON projections.sessions8.user_id = projections.users9_humans.user_id AND projections.sessions8.instance_id = projections.users9_humans.instance_id` +
- ` LEFT JOIN projections.users9 ON projections.sessions8.user_id = projections.users9.id AND projections.sessions8.instance_id = projections.users9.instance_id` +
+ ` LEFT JOIN projections.users10_humans ON projections.sessions8.user_id = projections.users10_humans.user_id AND projections.sessions8.instance_id = projections.users10_humans.instance_id` +
+ ` LEFT JOIN projections.users10 ON projections.sessions8.user_id = projections.users10.id AND projections.sessions8.instance_id = projections.users10.instance_id` +
` AS OF SYSTEM TIME '-1 ms'`)
sessionCols = []string{
@@ -427,7 +427,7 @@ func Test_SessionPrepare(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
diff --git a/internal/query/sms.go b/internal/query/sms.go
index 898f34a4d1..38c798ba17 100644
--- a/internal/query/sms.go
+++ b/internal/query/sms.go
@@ -3,7 +3,7 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"time"
sq "github.com/Masterminds/squirrel"
@@ -12,9 +12,9 @@ import (
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type SMSConfigs struct {
@@ -127,7 +127,7 @@ func (q *Queries) SMSProviderConfigByID(ctx context.Context, id string) (config
},
).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-dn9JW", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-dn9JW", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -151,7 +151,7 @@ func (q *Queries) SMSProviderConfig(ctx context.Context, queries ...SearchQuery)
},
).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-dn9JW", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-dn9JW", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -171,7 +171,7 @@ func (q *Queries) SearchSMSConfigs(ctx context.Context, queries *SMSConfigsSearc
SMSConfigColumnInstanceID.identifier(): authz.GetInstance(ctx).InstanceID(),
}).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-sn9Jf", "Errors.Query.InvalidRequest")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-sn9Jf", "Errors.Query.InvalidRequest")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -179,7 +179,7 @@ func (q *Queries) SearchSMSConfigs(ctx context.Context, queries *SMSConfigsSearc
return err
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-aJnZL", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-aJnZL", "Errors.Internal")
}
configs.State, err = q.latestState(ctx, smsConfigsTable)
return configs, err
@@ -228,10 +228,10 @@ func prepareSMSConfigQuery(ctx context.Context, db prepareDatabase) (sq.SelectBu
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-fn99w", "Errors.SMSConfig.NotExisting")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-fn99w", "Errors.SMSConfig.NotExisting")
}
- return nil, errors.ThrowInternal(err, "QUERY-3n9Js", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-3n9Js", "Errors.Internal")
}
twilioConfig.set(config)
@@ -283,7 +283,7 @@ func prepareSMSConfigsQuery(ctx context.Context, db prepareDatabase) (sq.SelectB
)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-d9jJd", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-d9jJd", "Errors.Internal")
}
twilioConfig.set(config)
diff --git a/internal/query/sms_test.go b/internal/query/sms_test.go
index 9f6c906c77..56bb97e2eb 100644
--- a/internal/query/sms_test.go
+++ b/internal/query/sms_test.go
@@ -10,7 +10,7 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -256,7 +256,7 @@ func Test_SMSConfigPrepare(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
diff --git a/internal/query/smtp.go b/internal/query/smtp.go
index e1d6430eab..81202f2e51 100644
--- a/internal/query/smtp.go
+++ b/internal/query/smtp.go
@@ -3,7 +3,7 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"time"
sq "github.com/Masterminds/squirrel"
@@ -11,9 +11,9 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/crypto"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -106,7 +106,7 @@ func (q *Queries) SMTPConfigByAggregateID(ctx context.Context, aggregateID strin
SMTPConfigColumnInstanceID.identifier(): authz.GetInstance(ctx).InstanceID(),
}).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-3m9sl", "Errors.Query.SQLStatment")
+ return nil, zerrors.ThrowInternal(err, "QUERY-3m9sl", "Errors.Query.SQLStatment")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -151,10 +151,10 @@ func prepareSMTPConfigQuery(ctx context.Context, db prepareDatabase) (sq.SelectB
&password,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-fwofw", "Errors.SMTPConfig.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-fwofw", "Errors.SMTPConfig.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-9k87F", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-9k87F", "Errors.Internal")
}
config.Password = password
return config, nil
diff --git a/internal/query/smtp_test.go b/internal/query/smtp_test.go
index bbfc757db6..1e72fcdde3 100644
--- a/internal/query/smtp_test.go
+++ b/internal/query/smtp_test.go
@@ -9,7 +9,7 @@ import (
"testing"
"github.com/zitadel/zitadel/internal/crypto"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -64,7 +64,7 @@ func Test_SMTPConfigsPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
diff --git a/internal/query/testdata/oidc_client_jwt.json b/internal/query/testdata/oidc_client_jwt.json
new file mode 100644
index 0000000000..df871815dd
--- /dev/null
+++ b/internal/query/testdata/oidc_client_jwt.json
@@ -0,0 +1,29 @@
+{
+ "instance_id": "230690539048009730",
+ "app_id": "236647088211886082",
+ "client_id": "236647088211951618@tests",
+ "client_secret": null,
+ "redirect_uris": ["http://localhost:9999/auth/callback"],
+ "response_types": [0],
+ "grant_types": [0, 2],
+ "application_type": 0,
+ "auth_method_type": 3,
+ "post_logout_redirect_uris": ["https://example.com/logout"],
+ "is_dev_mode": true,
+ "access_token_type": 1,
+ "access_token_role_assertion": true,
+ "id_token_role_assertion": true,
+ "id_token_userinfo_assertion": true,
+ "clock_skew": 1000000000,
+ "additional_origins": ["https://example.com"],
+ "project_id": "236645808328409090",
+ "state": 1,
+ "project_role_keys": ["role1", "role2"],
+ "public_keys": {
+ "236647201860747266": "LS0tLS1CRUdJTiBSU0EgUFVCTElDIEtFWS0tLS0tCk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFB\nT0NBUThBTUlJQkNnS0NBUUVBMnVmQUwxYjcyYkl5MWFyK1dzNmIKR29oSkpRRkI3ZGZSYXBEcWVx\nTThVa3A2Q1ZkUHpxL3BPejF2aUFxNTB5eldaSnJ5Risyd3NoRkFLR0Y5QTIvQgoyWWY5YkpYUFov\nS2JrRnJZVDNOVHZZRGt2bGFTVGw5bU1uenJVMjlzNDhGMVBUV0tmQitDM2FNc09FRzFCdWZWCnM2\nM3FGNG5yRVBqU2JobGpJY285RlpxNFhwcEl6aE1RMGZEZEEvK1h5Z0NKcXZ1YUwwTGliTTFLcmxV\nZG51NzEKWWVraFNKakVQbnZPaXNYSWs0SVh5d29HSU93dGp4a0R2Tkl0UXZhTVZsZHI0L2tiNnV2\nYmdkV3dxNUV3QlpYcQpsb3cya3lKb3YzOFY0VWsySThrdVhwTGNucnB3NVRpbzJvb2lVRTI3YjB2\nSFpxQktPZWk5VW84OHFDcm4zRUt4CjZRSURBUUFCCi0tLS0tRU5EIFJTQSBQVUJMSUMgS0VZLS0t\nLS0K"
+ },
+ "settings": {
+ "access_token_lifetime": 43200000000000,
+ "id_token_lifetime": 43200000000000
+ }
+}
diff --git a/internal/query/testdata/oidc_client_no_settings.json b/internal/query/testdata/oidc_client_no_settings.json
new file mode 100644
index 0000000000..83d810d669
--- /dev/null
+++ b/internal/query/testdata/oidc_client_no_settings.json
@@ -0,0 +1,30 @@
+{
+ "instance_id": "239520764275982338",
+ "app_id": "239520764276441090",
+ "client_id": "239520764779364354@zitadel",
+ "client_secret": null,
+ "redirect_uris": [
+ "http://test2-qucuh5.localhost:9000/ui/console/auth/callback",
+ "http://test.localhost.com:9000/ui/console/auth/callback"
+ ],
+ "response_types": [0],
+ "grant_types": [0],
+ "application_type": 1,
+ "auth_method_type": 2,
+ "post_logout_redirect_uris": [
+ "http://test2-qucuh5.localhost:9000/ui/console/signedout",
+ "http://test.localhost.com:9000/ui/console/signedout"
+ ],
+ "is_dev_mode": true,
+ "access_token_type": 0,
+ "access_token_role_assertion": false,
+ "id_token_role_assertion": false,
+ "id_token_userinfo_assertion": false,
+ "clock_skew": 0,
+ "additional_origins": null,
+ "project_id": "239520764276178946",
+ "state": 1,
+ "project_role_keys": null,
+ "public_keys": null,
+ "settings": null
+}
diff --git a/internal/query/testdata/oidc_client_public.json b/internal/query/testdata/oidc_client_public.json
new file mode 100644
index 0000000000..47cf750c8b
--- /dev/null
+++ b/internal/query/testdata/oidc_client_public.json
@@ -0,0 +1,27 @@
+{
+ "instance_id": "230690539048009730",
+ "app_id": "236646457053020162",
+ "client_id": "236646457053085698@tests",
+ "client_secret": null,
+ "redirect_uris": ["http://localhost:9999/auth/callback"],
+ "response_types": [0],
+ "grant_types": [0],
+ "application_type": 0,
+ "auth_method_type": 2,
+ "post_logout_redirect_uris": null,
+ "is_dev_mode": true,
+ "access_token_type": 0,
+ "access_token_role_assertion": false,
+ "id_token_role_assertion": false,
+ "id_token_userinfo_assertion": false,
+ "clock_skew": 0,
+ "additional_origins": null,
+ "project_id": "236645808328409090",
+ "state": 1,
+ "project_role_keys": ["role1", "role2"],
+ "public_keys": null,
+ "settings": {
+ "access_token_lifetime": 43200000000000,
+ "id_token_lifetime": 43200000000000
+ }
+}
diff --git a/internal/query/testdata/oidc_client_secret.json b/internal/query/testdata/oidc_client_secret.json
new file mode 100644
index 0000000000..e7d5926f7f
--- /dev/null
+++ b/internal/query/testdata/oidc_client_secret.json
@@ -0,0 +1,32 @@
+{
+ "instance_id": "230690539048009730",
+ "app_id": "236646858984783874",
+ "client_id": "236646858984849410@tests",
+ "client_secret": {
+ "KeyID": "",
+ "Crypted": "JDJhJDE0JE96WjBYRVpaRXREMTNweS9FUGJhMmV2c1M2V2NLWjVvclZNajlwV0hFR0VIbUx1MmgzUEZx",
+ "Algorithm": "bcrypt",
+ "CryptoType": 1
+ },
+ "redirect_uris": ["http://localhost:9999/auth/callback"],
+ "response_types": [0],
+ "grant_types": [0],
+ "application_type": 0,
+ "auth_method_type": 0,
+ "post_logout_redirect_uris": null,
+ "is_dev_mode": true,
+ "access_token_type": 0,
+ "access_token_role_assertion": false,
+ "id_token_role_assertion": false,
+ "id_token_userinfo_assertion": false,
+ "clock_skew": 0,
+ "additional_origins": null,
+ "project_id": "236645808328409090",
+ "state": 1,
+ "project_role_keys": ["role1", "role2"],
+ "public_keys": null,
+ "settings": {
+ "access_token_lifetime": 43200000000000,
+ "id_token_lifetime": 43200000000000
+ }
+}
diff --git a/internal/query/user.go b/internal/query/user.go
index 40546effe5..371d5c0002 100644
--- a/internal/query/user.go
+++ b/internal/query/user.go
@@ -4,7 +4,7 @@ import (
"context"
"database/sql"
_ "embed"
- errs "errors"
+ "errors"
"strings"
"time"
@@ -13,11 +13,12 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
+ "github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Users struct {
@@ -92,7 +93,7 @@ type Phone struct {
type Machine struct {
Name string `json:"name,omitempty"`
Description string `json:"description,omitempty"`
- HasSecret bool `json:"has_secret,omitempty"`
+ Secret *crypto.CryptoValue `json:"secret,omitempty"`
AccessTokenType domain.OIDCTokenType `json:"access_token_type,omitempty"`
}
@@ -271,8 +272,8 @@ var (
name: projection.MachineDescriptionCol,
table: machineTable,
}
- MachineHasSecretCol = Column{
- name: projection.MachineHasSecretCol,
+ MachineSecretCol = Column{
+ name: projection.MachineSecretCol,
table: machineTable,
}
MachineAccessTokenTypeCol = Column{
@@ -391,7 +392,7 @@ func (q *Queries) GetUser(ctx context.Context, shouldTriggerBulk bool, queries .
}
stmt, args, err := query.Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Dnhr2", "Errors.Query.SQLStatment")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Dnhr2", "Errors.Query.SQLStatment")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -415,7 +416,7 @@ func (q *Queries) GetHumanProfile(ctx context.Context, userID string, queries ..
}
stmt, args, err := query.Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Dgbg2", "Errors.Query.SQLStatment")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Dgbg2", "Errors.Query.SQLStatment")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -439,7 +440,7 @@ func (q *Queries) GetHumanEmail(ctx context.Context, userID string, queries ...S
}
stmt, args, err := query.Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-BHhj3", "Errors.Query.SQLStatment")
+ return nil, zerrors.ThrowInternal(err, "QUERY-BHhj3", "Errors.Query.SQLStatment")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -463,7 +464,7 @@ func (q *Queries) GetHumanPhone(ctx context.Context, userID string, queries ...S
}
stmt, args, err := query.Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Dg43g", "Errors.Query.SQLStatment")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Dg43g", "Errors.Query.SQLStatment")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -549,7 +550,7 @@ func (q *Queries) GetNotifyUser(ctx context.Context, shouldTriggered bool, queri
}
stmt, args, err := query.Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Err3g", "Errors.Query.SQLStatment")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Err3g", "Errors.Query.SQLStatment")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -568,7 +569,7 @@ func (q *Queries) SearchUsers(ctx context.Context, queries *UserSearchQueries) (
stmt, args, err := queries.toQuery(query).Where(eq).
ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Dgbg2", "Errors.Query.SQLStatment")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Dgbg2", "Errors.Query.SQLStatment")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -576,7 +577,7 @@ func (q *Queries) SearchUsers(ctx context.Context, queries *UserSearchQueries) (
return err
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-AG4gs", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-AG4gs", "Errors.Internal")
}
users.State, err = q.latestState(ctx, userTable)
@@ -616,7 +617,7 @@ func (q *Queries) IsUserUnique(ctx context.Context, username, email, resourceOwn
eq := sq.Eq{UserInstanceIDCol.identifier(): authz.GetInstance(ctx).InstanceID()}
stmt, args, err := query.Where(eq).ToSql()
if err != nil {
- return false, errors.ThrowInternal(err, "QUERY-Dg43g", "Errors.Query.SQLStatment")
+ return false, zerrors.ThrowInternal(err, "QUERY-Dg43g", "Errors.Query.SQLStatment")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -790,7 +791,7 @@ func scanUser(row *sql.Row) (*User, error) {
machineID := sql.NullString{}
name := sql.NullString{}
description := sql.NullString{}
- hasSecret := sql.NullBool{}
+ var secret *crypto.CryptoValue
accessTokenType := sql.NullInt32{}
err := row.Scan(
@@ -819,16 +820,16 @@ func scanUser(row *sql.Row) (*User, error) {
&machineID,
&name,
&description,
- &hasSecret,
+ &secret,
&accessTokenType,
&count,
)
if err != nil || count != 1 {
- if errs.Is(err, sql.ErrNoRows) || count != 1 {
- return nil, errors.ThrowNotFound(err, "QUERY-Dfbg2", "Errors.User.NotFound")
+ if errors.Is(err, sql.ErrNoRows) || count != 1 {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-Dfbg2", "Errors.User.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-Bgah2", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Bgah2", "Errors.Internal")
}
u.PreferredLoginName = preferredLoginName.String
@@ -851,7 +852,7 @@ func scanUser(row *sql.Row) (*User, error) {
u.Machine = &Machine{
Name: name.String,
Description: description.String,
- HasSecret: hasSecret.Bool,
+ Secret: secret,
AccessTokenType: domain.OIDCTokenType(accessTokenType.Int32),
}
}
@@ -893,7 +894,7 @@ func prepareUserQuery(ctx context.Context, db prepareDatabase) (sq.SelectBuilder
MachineUserIDCol.identifier(),
MachineNameCol.identifier(),
MachineDescriptionCol.identifier(),
- MachineHasSecretCol.identifier(),
+ MachineSecretCol.identifier(),
MachineAccessTokenTypeCol.identifier(),
countColumn.identifier(),
).
@@ -909,6 +910,7 @@ func prepareUserQuery(ctx context.Context, db prepareDatabase) (sq.SelectBuilder
userPreferredLoginNameInstanceIDCol.identifier()+" = "+UserInstanceIDCol.identifier()+db.Timetravel(call.Took(ctx)),
preferredLoginNameArgs...).
PlaceholderFormat(sq.Dollar),
+
scanUser
}
@@ -957,13 +959,13 @@ func prepareProfileQuery(ctx context.Context, db prepareDatabase) (sq.SelectBuil
&avatarKey,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-HNhb3", "Errors.User.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-HNhb3", "Errors.User.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-Rfheq", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Rfheq", "Errors.Internal")
}
if !humanID.Valid {
- return nil, errors.ThrowPreconditionFailed(nil, "QUERY-WLTce", "Errors.User.NotHuman")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "QUERY-WLTce", "Errors.User.NotHuman")
}
p.FirstName = firstName.String
@@ -1009,13 +1011,13 @@ func prepareEmailQuery(ctx context.Context, db prepareDatabase) (sq.SelectBuilde
&isEmailVerified,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-Hms2s", "Errors.User.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-Hms2s", "Errors.User.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-Nu42d", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Nu42d", "Errors.Internal")
}
if !humanID.Valid {
- return nil, errors.ThrowPreconditionFailed(nil, "QUERY-pt7HY", "Errors.User.NotHuman")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "QUERY-pt7HY", "Errors.User.NotHuman")
}
e.Email = domain.EmailAddress(email.String)
@@ -1056,13 +1058,13 @@ func preparePhoneQuery(ctx context.Context, db prepareDatabase) (sq.SelectBuilde
&isPhoneVerified,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-DAvb3", "Errors.User.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-DAvb3", "Errors.User.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-Bmf2h", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Bmf2h", "Errors.Internal")
}
if !humanID.Valid {
- return nil, errors.ThrowPreconditionFailed(nil, "QUERY-hliQl", "Errors.User.NotHuman")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "QUERY-hliQl", "Errors.User.NotHuman")
}
e.Phone = phone.String
@@ -1174,14 +1176,14 @@ func scanNotifyUser(row *sql.Row) (*NotifyUser, error) {
)
if err != nil || count != 1 {
- if errs.Is(err, sql.ErrNoRows) || count != 1 {
- return nil, errors.ThrowNotFound(err, "QUERY-Dgqd2", "Errors.User.NotFound")
+ if errors.Is(err, sql.ErrNoRows) || count != 1 {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-Dgqd2", "Errors.User.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-Dbwsg", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Dbwsg", "Errors.Internal")
}
if !notifyUserID.Valid {
- return nil, errors.ThrowPreconditionFailed(nil, "QUERY-Sfw3f", "Errors.User.NotFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "QUERY-Sfw3f", "Errors.User.NotFound")
}
u.LoginNames = loginNames
@@ -1234,10 +1236,10 @@ func prepareUserUniqueQuery(ctx context.Context, db prepareDatabase) (sq.SelectB
&isEmailVerified,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
+ if errors.Is(err, sql.ErrNoRows) {
return true, nil
}
- return false, errors.ThrowInternal(err, "QUERY-Cxces", "Errors.Internal")
+ return false, zerrors.ThrowInternal(err, "QUERY-Cxces", "Errors.Internal")
}
return !userID.Valid, nil
}
@@ -1278,7 +1280,7 @@ func prepareUsersQuery(ctx context.Context, db prepareDatabase) (sq.SelectBuilde
MachineUserIDCol.identifier(),
MachineNameCol.identifier(),
MachineDescriptionCol.identifier(),
- MachineHasSecretCol.identifier(),
+ MachineSecretCol.identifier(),
MachineAccessTokenTypeCol.identifier(),
countColumn.identifier()).
From(userTable.identifier()).
@@ -1317,7 +1319,7 @@ func prepareUsersQuery(ctx context.Context, db prepareDatabase) (sq.SelectBuilde
machineID := sql.NullString{}
name := sql.NullString{}
description := sql.NullString{}
- hasSecret := sql.NullBool{}
+ secret := new(crypto.CryptoValue)
accessTokenType := sql.NullInt32{}
err := rows.Scan(
@@ -1346,7 +1348,7 @@ func prepareUsersQuery(ctx context.Context, db prepareDatabase) (sq.SelectBuilde
&machineID,
&name,
&description,
- &hasSecret,
+ secret,
&accessTokenType,
&count,
)
@@ -1377,7 +1379,7 @@ func prepareUsersQuery(ctx context.Context, db prepareDatabase) (sq.SelectBuilde
u.Machine = &Machine{
Name: name.String,
Description: description.String,
- HasSecret: hasSecret.Bool,
+ Secret: secret,
AccessTokenType: domain.OIDCTokenType(accessTokenType.Int32),
}
}
@@ -1386,7 +1388,7 @@ func prepareUsersQuery(ctx context.Context, db prepareDatabase) (sq.SelectBuilde
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-frhbd", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-frhbd", "Errors.Query.CloseRows")
}
return &Users{
diff --git a/internal/query/user_auth_method.go b/internal/query/user_auth_method.go
index 9341c13e6f..e39fb2a8e9 100644
--- a/internal/query/user_auth_method.go
+++ b/internal/query/user_auth_method.go
@@ -11,9 +11,9 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -127,7 +127,7 @@ func (q *Queries) SearchUserAuthMethods(ctx context.Context, queries *UserAuthMe
}
stmt, args, err := queries.toQuery(query).Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-j9NJd", "Errors.Query.InvalidRequest")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-j9NJd", "Errors.Query.InvalidRequest")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -158,7 +158,7 @@ func (q *Queries) ListActiveUserAuthMethodTypes(ctx context.Context, userID stri
}
stmt, args, err := query.Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-Sfdrg", "Errors.Query.InvalidRequest")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-Sfdrg", "Errors.Query.InvalidRequest")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -189,7 +189,7 @@ func (q *Queries) ListUserAuthMethodTypesRequired(ctx context.Context, userID st
}
stmt, args, err := query.Where(eq).ToSql()
if err != nil {
- return nil, false, false, errors.ThrowInvalidArgument(err, "QUERY-E5ut4", "Errors.Query.InvalidRequest")
+ return nil, false, false, zerrors.ThrowInvalidArgument(err, "QUERY-E5ut4", "Errors.Query.InvalidRequest")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -197,7 +197,7 @@ func (q *Queries) ListUserAuthMethodTypesRequired(ctx context.Context, userID st
return err
}, stmt, args...)
if err != nil {
- return nil, false, false, errors.ThrowInternal(err, "QUERY-Dun75", "Errors.Internal")
+ return nil, false, false, zerrors.ThrowInternal(err, "QUERY-Dun75", "Errors.Internal")
}
return userAuthMethodTypes, forceMFA, forceMFALocalOnly, nil
}
@@ -330,7 +330,7 @@ func prepareUserAuthMethodsQuery(ctx context.Context, db prepareDatabase) (sq.Se
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-3n9fl", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-3n9fl", "Errors.Query.CloseRows")
}
return &AuthMethods{
@@ -392,7 +392,7 @@ func prepareActiveUserAuthMethodTypesQuery(ctx context.Context, db prepareDataba
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-3n9fl", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-3n9fl", "Errors.Query.CloseRows")
}
return &AuthMethodTypes{
@@ -467,7 +467,7 @@ func prepareUserAuthMethodTypesRequiredQuery(ctx context.Context, db prepareData
}
if err := rows.Close(); err != nil {
- return nil, false, false, errors.ThrowInternal(err, "QUERY-W4zje", "Errors.Query.CloseRows")
+ return nil, false, false, zerrors.ThrowInternal(err, "QUERY-W4zje", "Errors.Query.CloseRows")
}
return userAuthMethodTypes, forceMFA.Bool, forceMFALocalOnly.Bool, nil
diff --git a/internal/query/user_auth_method_test.go b/internal/query/user_auth_method_test.go
index a9aae1d1c5..c78bf85699 100644
--- a/internal/query/user_auth_method_test.go
+++ b/internal/query/user_auth_method_test.go
@@ -39,38 +39,38 @@ var (
"method_type",
"count",
}
- prepareActiveAuthMethodTypesStmt = `SELECT projections.users9_notifications.password_set,` +
+ prepareActiveAuthMethodTypesStmt = `SELECT projections.users10_notifications.password_set,` +
` auth_method_types.method_type,` +
` user_idps_count.count` +
- ` FROM projections.users9` +
- ` LEFT JOIN projections.users9_notifications ON projections.users9.id = projections.users9_notifications.user_id AND projections.users9.instance_id = projections.users9_notifications.instance_id` +
+ ` FROM projections.users10` +
+ ` LEFT JOIN projections.users10_notifications ON projections.users10.id = projections.users10_notifications.user_id AND projections.users10.instance_id = projections.users10_notifications.instance_id` +
` LEFT JOIN (SELECT DISTINCT(auth_method_types.method_type), auth_method_types.user_id, auth_method_types.instance_id FROM projections.user_auth_methods4 AS auth_method_types` +
` WHERE auth_method_types.state = $1) AS auth_method_types` +
- ` ON auth_method_types.user_id = projections.users9.id AND auth_method_types.instance_id = projections.users9.instance_id` +
+ ` ON auth_method_types.user_id = projections.users10.id AND auth_method_types.instance_id = projections.users10.instance_id` +
` LEFT JOIN (SELECT user_idps_count.user_id, user_idps_count.instance_id, COUNT(user_idps_count.user_id) AS count FROM projections.idp_user_links3 AS user_idps_count` +
` GROUP BY user_idps_count.user_id, user_idps_count.instance_id) AS user_idps_count` +
- ` ON user_idps_count.user_id = projections.users9.id AND user_idps_count.instance_id = projections.users9.instance_id` +
+ ` ON user_idps_count.user_id = projections.users10.id AND user_idps_count.instance_id = projections.users10.instance_id` +
` AS OF SYSTEM TIME '-1 ms`
prepareActiveAuthMethodTypesCols = []string{
"password_set",
"method_type",
"idps_count",
}
- prepareAuthMethodTypesRequiredStmt = `SELECT projections.users9_notifications.password_set,` +
+ prepareAuthMethodTypesRequiredStmt = `SELECT projections.users10_notifications.password_set,` +
` auth_method_types.method_type,` +
` user_idps_count.count,` +
` auth_methods_force_mfa.force_mfa,` +
` auth_methods_force_mfa.force_mfa_local_only` +
- ` FROM projections.users9` +
- ` LEFT JOIN projections.users9_notifications ON projections.users9.id = projections.users9_notifications.user_id AND projections.users9.instance_id = projections.users9_notifications.instance_id` +
+ ` FROM projections.users10` +
+ ` LEFT JOIN projections.users10_notifications ON projections.users10.id = projections.users10_notifications.user_id AND projections.users10.instance_id = projections.users10_notifications.instance_id` +
` LEFT JOIN (SELECT DISTINCT(auth_method_types.method_type), auth_method_types.user_id, auth_method_types.instance_id FROM projections.user_auth_methods4 AS auth_method_types` +
` WHERE auth_method_types.state = $1) AS auth_method_types` +
- ` ON auth_method_types.user_id = projections.users9.id AND auth_method_types.instance_id = projections.users9.instance_id` +
+ ` ON auth_method_types.user_id = projections.users10.id AND auth_method_types.instance_id = projections.users10.instance_id` +
` LEFT JOIN (SELECT user_idps_count.user_id, user_idps_count.instance_id, COUNT(user_idps_count.user_id) AS count FROM projections.idp_user_links3 AS user_idps_count` +
` GROUP BY user_idps_count.user_id, user_idps_count.instance_id) AS user_idps_count` +
- ` ON user_idps_count.user_id = projections.users9.id AND user_idps_count.instance_id = projections.users9.instance_id` +
+ ` ON user_idps_count.user_id = projections.users10.id AND user_idps_count.instance_id = projections.users10.instance_id` +
` LEFT JOIN (SELECT auth_methods_force_mfa.force_mfa, auth_methods_force_mfa.force_mfa_local_only, auth_methods_force_mfa.instance_id, auth_methods_force_mfa.aggregate_id FROM projections.login_policies5 AS auth_methods_force_mfa ORDER BY auth_methods_force_mfa.is_default) AS auth_methods_force_mfa` +
- ` ON (auth_methods_force_mfa.aggregate_id = projections.users9.instance_id OR auth_methods_force_mfa.aggregate_id = projections.users9.resource_owner) AND auth_methods_force_mfa.instance_id = projections.users9.instance_id` +
+ ` ON (auth_methods_force_mfa.aggregate_id = projections.users10.instance_id OR auth_methods_force_mfa.aggregate_id = projections.users10.resource_owner) AND auth_methods_force_mfa.instance_id = projections.users10.instance_id` +
` AS OF SYSTEM TIME '-1 ms
`
prepareAuthMethodTypesRequiredCols = []string{
diff --git a/internal/query/user_by_id.sql b/internal/query/user_by_id.sql
index 5e6508026a..8f1113de06 100644
--- a/internal/query/user_by_id.sql
+++ b/internal/query/user_by_id.sql
@@ -23,8 +23,6 @@ WITH login_names AS (SELECT
(p.is_default IS TRUE AND p.instance_id = $2)
OR (p.instance_id = $2 AND p.resource_owner = u.resource_owner)
)
- AND
- u.id = $1
ORDER BY is_default
LIMIT 1
) p ON TRUE
@@ -33,6 +31,9 @@ WITH login_names AS (SELECT
ON
u.instance_id = d.instance_id
AND u.resource_owner = d.resource_owner
+ WHERE
+ u.instance_id = $2
+ AND u.id = $1
)
SELECT
u.id
@@ -60,17 +61,17 @@ SELECT
, m.user_id
, m.name
, m.description
- , m.has_secret
+ , m.secret
, m.access_token_type
, count(*) OVER ()
-FROM projections.users9 u
+FROM projections.users10 u
LEFT JOIN
- projections.users9_humans h
+ projections.users10_humans h
ON
u.id = h.user_id
AND u.instance_id = h.instance_id
LEFT JOIN
- projections.users9_machines m
+ projections.users10_machines m
ON
u.id = m.user_id
AND u.instance_id = m.instance_id
diff --git a/internal/query/user_by_login_name.sql b/internal/query/user_by_login_name.sql
index 933a5d0ae7..cf25638fa6 100644
--- a/internal/query/user_by_login_name.sql
+++ b/internal/query/user_by_login_name.sql
@@ -30,6 +30,12 @@ WITH found_users AS (
u.instance_id = d.instance_id
AND u.resource_owner = d.resource_owner
AND CASE WHEN p.must_be_domain THEN d.name_lower = $2 ELSE TRUE END
+ WHERE
+ u.instance_id = $4
+ AND u.user_name_lower IN (
+ $1,
+ $3
+ )
),
login_names AS (SELECT
fu.id user_id
@@ -91,22 +97,22 @@ SELECT
, m.user_id
, m.name
, m.description
- , m.has_secret
+ , m.secret
, m.access_token_type
, count(*) OVER ()
FROM found_users fu
JOIN
- projections.users9 u
+ projections.users10 u
ON
fu.id = u.id
AND fu.instance_id = u.instance_id
LEFT JOIN
- projections.users9_humans h
+ projections.users10_humans h
ON
fu.id = h.user_id
AND fu.instance_id = h.instance_id
LEFT JOIN
- projections.users9_machines m
+ projections.users10_machines m
ON
fu.id = m.user_id
AND fu.instance_id = m.instance_id
diff --git a/internal/query/user_grant.go b/internal/query/user_grant.go
index 170084d899..9e3cd3790f 100644
--- a/internal/query/user_grant.go
+++ b/internal/query/user_grant.go
@@ -3,7 +3,7 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"time"
sq "github.com/Masterminds/squirrel"
@@ -14,10 +14,10 @@ import (
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type UserGrant struct {
@@ -255,7 +255,7 @@ func (q *Queries) UserGrant(ctx context.Context, shouldTriggerBulk bool, withOwn
}
stmt, args, err := query.Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Fa1KW", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Fa1KW", "Errors.Query.SQLStatement")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -283,7 +283,7 @@ func (q *Queries) UserGrants(ctx context.Context, queries *UserGrantsQueries, sh
}
stmt, args, err := queries.toQuery(query).Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-wXnQR", "Errors.Query.SQLStatement")
+ return nil, zerrors.ThrowInternal(err, "QUERY-wXnQR", "Errors.Query.SQLStatement")
}
latestSequence, err := q.latestState(ctx, userGrantTable)
@@ -388,10 +388,10 @@ func prepareUserGrantQuery(ctx context.Context, db prepareDatabase) (sq.SelectBu
&projectName,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-wIPkA", "Errors.UserGrant.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-wIPkA", "Errors.UserGrant.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-oQPcP", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-oQPcP", "Errors.Internal")
}
g.Username = username.String
@@ -523,7 +523,7 @@ func prepareUserGrantsQuery(ctx context.Context, db prepareDatabase) (sq.SelectB
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-iGvmP", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-iGvmP", "Errors.Query.CloseRows")
}
return &UserGrants{
diff --git a/internal/query/user_grant_test.go b/internal/query/user_grant_test.go
index 962c6a1ed6..67e7fb9b86 100644
--- a/internal/query/user_grant_test.go
+++ b/internal/query/user_grant_test.go
@@ -10,7 +10,7 @@ import (
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -23,14 +23,14 @@ var (
", projections.user_grants3.roles" +
", projections.user_grants3.state" +
", projections.user_grants3.user_id" +
- ", projections.users9.username" +
- ", projections.users9.type" +
- ", projections.users9.resource_owner" +
- ", projections.users9_humans.first_name" +
- ", projections.users9_humans.last_name" +
- ", projections.users9_humans.email" +
- ", projections.users9_humans.display_name" +
- ", projections.users9_humans.avatar_key" +
+ ", projections.users10.username" +
+ ", projections.users10.type" +
+ ", projections.users10.resource_owner" +
+ ", projections.users10_humans.first_name" +
+ ", projections.users10_humans.last_name" +
+ ", projections.users10_humans.email" +
+ ", projections.users10_humans.display_name" +
+ ", projections.users10_humans.avatar_key" +
", projections.login_names3.login_name" +
", projections.user_grants3.resource_owner" +
", projections.orgs1.name" +
@@ -38,8 +38,8 @@ var (
", projections.user_grants3.project_id" +
", projections.projects4.name" +
" FROM projections.user_grants3" +
- " LEFT JOIN projections.users9 ON projections.user_grants3.user_id = projections.users9.id AND projections.user_grants3.instance_id = projections.users9.instance_id" +
- " LEFT JOIN projections.users9_humans ON projections.user_grants3.user_id = projections.users9_humans.user_id AND projections.user_grants3.instance_id = projections.users9_humans.instance_id" +
+ " LEFT JOIN projections.users10 ON projections.user_grants3.user_id = projections.users10.id AND projections.user_grants3.instance_id = projections.users10.instance_id" +
+ " LEFT JOIN projections.users10_humans ON projections.user_grants3.user_id = projections.users10_humans.user_id AND projections.user_grants3.instance_id = projections.users10_humans.instance_id" +
" LEFT JOIN projections.orgs1 ON projections.user_grants3.resource_owner = projections.orgs1.id AND projections.user_grants3.instance_id = projections.orgs1.instance_id" +
" LEFT JOIN projections.projects4 ON projections.user_grants3.project_id = projections.projects4.id AND projections.user_grants3.instance_id = projections.projects4.instance_id" +
" LEFT JOIN projections.login_names3 ON projections.user_grants3.user_id = projections.login_names3.user_id AND projections.user_grants3.instance_id = projections.login_names3.instance_id" +
@@ -78,14 +78,14 @@ var (
", projections.user_grants3.roles" +
", projections.user_grants3.state" +
", projections.user_grants3.user_id" +
- ", projections.users9.username" +
- ", projections.users9.type" +
- ", projections.users9.resource_owner" +
- ", projections.users9_humans.first_name" +
- ", projections.users9_humans.last_name" +
- ", projections.users9_humans.email" +
- ", projections.users9_humans.display_name" +
- ", projections.users9_humans.avatar_key" +
+ ", projections.users10.username" +
+ ", projections.users10.type" +
+ ", projections.users10.resource_owner" +
+ ", projections.users10_humans.first_name" +
+ ", projections.users10_humans.last_name" +
+ ", projections.users10_humans.email" +
+ ", projections.users10_humans.display_name" +
+ ", projections.users10_humans.avatar_key" +
", projections.login_names3.login_name" +
", projections.user_grants3.resource_owner" +
", projections.orgs1.name" +
@@ -94,8 +94,8 @@ var (
", projections.projects4.name" +
", COUNT(*) OVER ()" +
" FROM projections.user_grants3" +
- " LEFT JOIN projections.users9 ON projections.user_grants3.user_id = projections.users9.id AND projections.user_grants3.instance_id = projections.users9.instance_id" +
- " LEFT JOIN projections.users9_humans ON projections.user_grants3.user_id = projections.users9_humans.user_id AND projections.user_grants3.instance_id = projections.users9_humans.instance_id" +
+ " LEFT JOIN projections.users10 ON projections.user_grants3.user_id = projections.users10.id AND projections.user_grants3.instance_id = projections.users10.instance_id" +
+ " LEFT JOIN projections.users10_humans ON projections.user_grants3.user_id = projections.users10_humans.user_id AND projections.user_grants3.instance_id = projections.users10_humans.instance_id" +
" LEFT JOIN projections.orgs1 ON projections.user_grants3.resource_owner = projections.orgs1.id AND projections.user_grants3.instance_id = projections.orgs1.instance_id" +
" LEFT JOIN projections.projects4 ON projections.user_grants3.project_id = projections.projects4.id AND projections.user_grants3.instance_id = projections.projects4.instance_id" +
" LEFT JOIN projections.login_names3 ON projections.user_grants3.user_id = projections.login_names3.user_id AND projections.user_grants3.instance_id = projections.login_names3.instance_id" +
@@ -128,7 +128,7 @@ func Test_UserGrantPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
diff --git a/internal/query/user_membership.go b/internal/query/user_membership.go
index 9bf6c5b6d6..b45bd5a943 100644
--- a/internal/query/user_membership.go
+++ b/internal/query/user_membership.go
@@ -11,10 +11,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/database"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Memberships struct {
@@ -142,7 +142,7 @@ func (q *Queries) Memberships(ctx context.Context, queries *MembershipSearchQuer
eq := sq.Eq{membershipInstanceID.identifier(): authz.GetInstance(ctx).InstanceID()}
stmt, args, err := queries.toQuery(query).Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-T84X9", "Errors.Query.InvalidRequest")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-T84X9", "Errors.Query.InvalidRequest")
}
latestSequence, err := q.latestState(ctx, orgMemberTable, instanceMemberTable, projectMemberTable, projectGrantMemberTable)
if err != nil {
@@ -329,7 +329,7 @@ func prepareMembershipsQuery(ctx context.Context, db prepareDatabase, queries *M
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-N34NV", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-N34NV", "Errors.Query.CloseRows")
}
return &Memberships{
diff --git a/internal/query/user_metadata.go b/internal/query/user_metadata.go
index a4f0fd2e9f..d61d17b6b9 100644
--- a/internal/query/user_metadata.go
+++ b/internal/query/user_metadata.go
@@ -3,7 +3,7 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"time"
sq "github.com/Masterminds/squirrel"
@@ -12,10 +12,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type UserMetadataList struct {
@@ -98,7 +98,7 @@ func (q *Queries) GetUserMetadataByKey(ctx context.Context, shouldTriggerBulk bo
}
stmt, args, err := query.Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-aDGG2", "Errors.Query.SQLStatment")
+ return nil, zerrors.ThrowInternal(err, "QUERY-aDGG2", "Errors.Query.SQLStatment")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -126,7 +126,7 @@ func (q *Queries) SearchUserMetadata(ctx context.Context, shouldTriggerBulk bool
}
stmt, args, err := queries.toQuery(query).Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Egbgd", "Errors.Query.SQLStatment")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Egbgd", "Errors.Query.SQLStatment")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -188,10 +188,10 @@ func prepareUserMetadataQuery(ctx context.Context, db prepareDatabase) (sq.Selec
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-Rgh32", "Errors.Metadata.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-Rgh32", "Errors.Metadata.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-Hhjt2", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Hhjt2", "Errors.Internal")
}
return m, nil
}
@@ -230,7 +230,7 @@ func prepareUserMetadataListQuery(ctx context.Context, db prepareDatabase) (sq.S
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-sd3gh", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-sd3gh", "Errors.Query.CloseRows")
}
return &UserMetadataList{
diff --git a/internal/query/user_metadata_test.go b/internal/query/user_metadata_test.go
index 1fbd04cc7b..8e5f9496f8 100644
--- a/internal/query/user_metadata_test.go
+++ b/internal/query/user_metadata_test.go
@@ -8,7 +8,7 @@ import (
"regexp"
"testing"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -68,7 +68,7 @@ func Test_UserMetadataPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
@@ -129,7 +129,7 @@ func Test_UserMetadataPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
diff --git a/internal/query/user_notify_by_id.sql b/internal/query/user_notify_by_id.sql
index d383650c7f..1087a1316b 100644
--- a/internal/query/user_notify_by_id.sql
+++ b/internal/query/user_notify_by_id.sql
@@ -24,8 +24,6 @@ WITH login_names AS (
(p.is_default IS TRUE AND p.instance_id = $2)
OR (p.instance_id = $2 AND p.resource_owner = u.resource_owner)
)
- AND
- u.id = $1
ORDER BY is_default
LIMIT 1
) p ON TRUE
@@ -34,6 +32,9 @@ WITH login_names AS (
ON
u.instance_id = d.instance_id
AND u.resource_owner = d.resource_owner
+ WHERE
+ u.instance_id = $2
+ AND u.id = $1
)
SELECT
u.id
@@ -61,14 +62,14 @@ SELECT
, n.verified_phone
, n.password_set
, count(*) OVER ()
-FROM projections.users9 u
+FROM projections.users10 u
LEFT JOIN
- projections.users9_humans h
+ projections.users10_humans h
ON
u.id = h.user_id
AND u.instance_id = h.instance_id
LEFT JOIN
- projections.users9_notifications n
+ projections.users10_notifications n
ON
u.id = n.user_id
AND u.instance_id = n.instance_id
diff --git a/internal/query/user_notify_by_login_name.sql b/internal/query/user_notify_by_login_name.sql
index c375708894..1347e6cb3c 100644
--- a/internal/query/user_notify_by_login_name.sql
+++ b/internal/query/user_notify_by_login_name.sql
@@ -30,6 +30,12 @@ WITH found_users AS (
u.instance_id = d.instance_id
AND u.resource_owner = d.resource_owner
AND CASE WHEN p.must_be_domain THEN d.name_lower = $2 ELSE TRUE END
+ WHERE
+ u.instance_id = $4
+ AND u.user_name_lower IN (
+ $1,
+ $3
+ )
),
login_names AS (SELECT
fu.id user_id
@@ -93,17 +99,17 @@ SELECT
, count(*) OVER ()
FROM found_users fu
JOIN
- projections.users9 u
+ projections.users10 u
ON
fu.id = u.id
AND fu.instance_id = u.instance_id
LEFT JOIN
- projections.users9_humans h
+ projections.users10_humans h
ON
fu.id = h.user_id
AND fu.instance_id = h.instance_id
LEFT JOIN
- projections.users9_notifications n
+ projections.users10_notifications n
ON
fu.id = n.user_id
AND fu.instance_id = n.instance_id
diff --git a/internal/query/user_otp.go b/internal/query/user_otp.go
index 77e5e16fd9..c257048139 100644
--- a/internal/query/user_otp.go
+++ b/internal/query/user_otp.go
@@ -5,10 +5,10 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/user"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func (q *Queries) GetHumanOTPSecret(ctx context.Context, userID, resourceowner string) (_ string, err error) {
@@ -16,14 +16,14 @@ func (q *Queries) GetHumanOTPSecret(ctx context.Context, userID, resourceowner s
defer func() { span.EndWithError(err) }()
if userID == "" {
- return "", errors.ThrowPreconditionFailed(nil, "QUERY-8N9ds", "Errors.User.UserIDMissing")
+ return "", zerrors.ThrowPreconditionFailed(nil, "QUERY-8N9ds", "Errors.User.UserIDMissing")
}
existingOTP, err := q.otpReadModelByID(ctx, userID, resourceowner)
if err != nil {
return "", err
}
if existingOTP.State != domain.MFAStateReady {
- return "", errors.ThrowNotFound(nil, "QUERY-01982h", "Errors.User.NotFound")
+ return "", zerrors.ThrowNotFound(nil, "QUERY-01982h", "Errors.User.NotFound")
}
return crypto.DecryptString(existingOTP.Secret, q.multifactors.OTP.CryptoMFA)
diff --git a/internal/query/user_password.go b/internal/query/user_password.go
index 5f991cf002..aa0bc60d2c 100644
--- a/internal/query/user_password.go
+++ b/internal/query/user_password.go
@@ -6,10 +6,10 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/user"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type HumanPasswordReadModel struct {
@@ -31,14 +31,14 @@ func (q *Queries) GetHumanPassword(ctx context.Context, orgID, userID string) (e
defer func() { span.EndWithError(err) }()
if userID == "" {
- return "", errors.ThrowInvalidArgument(nil, "QUERY-4Mfsf", "Errors.User.UserIDMissing")
+ return "", zerrors.ThrowInvalidArgument(nil, "QUERY-4Mfsf", "Errors.User.UserIDMissing")
}
existingPassword, err := q.passwordReadModel(ctx, userID, orgID)
if err != nil {
- return "", errors.ThrowInternal(nil, "QUERY-p1k1n2i", "Errors.User.NotFound")
+ return "", zerrors.ThrowInternal(nil, "QUERY-p1k1n2i", "Errors.User.NotFound")
}
if existingPassword.UserState == domain.UserStateUnspecified || existingPassword.UserState == domain.UserStateDeleted {
- return "", errors.ThrowPreconditionFailed(nil, "QUERY-3n77z", "Errors.User.NotFound")
+ return "", zerrors.ThrowPreconditionFailed(nil, "QUERY-3n77z", "Errors.User.NotFound")
}
return existingPassword.EncodedHash, nil
}
diff --git a/internal/query/user_personal_access_token.go b/internal/query/user_personal_access_token.go
index 17726a06ad..47f92ffc8d 100644
--- a/internal/query/user_personal_access_token.go
+++ b/internal/query/user_personal_access_token.go
@@ -3,7 +3,7 @@ package query
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"time"
sq "github.com/Masterminds/squirrel"
@@ -13,10 +13,10 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/call"
"github.com/zitadel/zitadel/internal/database"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -112,7 +112,7 @@ func (q *Queries) PersonalAccessTokenByID(ctx context.Context, shouldTriggerBulk
}
stmt, args, err := query.Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Dgfb4", "Errors.Query.SQLStatment")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Dgfb4", "Errors.Query.SQLStatment")
}
err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
@@ -138,7 +138,7 @@ func (q *Queries) SearchPersonalAccessTokens(ctx context.Context, queries *Perso
}
stmt, args, err := queries.toQuery(query).Where(eq).ToSql()
if err != nil {
- return nil, errors.ThrowInvalidArgument(err, "QUERY-Hjw2w", "Errors.Query.InvalidRequest")
+ return nil, zerrors.ThrowInvalidArgument(err, "QUERY-Hjw2w", "Errors.Query.InvalidRequest")
}
err = q.client.QueryContext(ctx, func(rows *sql.Rows) error {
@@ -147,7 +147,7 @@ func (q *Queries) SearchPersonalAccessTokens(ctx context.Context, queries *Perso
}, stmt, args...)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Bmz63", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-Bmz63", "Errors.Internal")
}
personalAccessTokens.State, err = q.latestState(ctx, personalAccessTokensTable)
@@ -204,10 +204,10 @@ func preparePersonalAccessTokenQuery(ctx context.Context, db prepareDatabase) (s
&p.Scopes,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, errors.ThrowNotFound(err, "QUERY-fRunu", "Errors.PersonalAccessToken.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-fRunu", "Errors.PersonalAccessToken.NotFound")
}
- return nil, errors.ThrowInternal(err, "QUERY-dj2FF", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "QUERY-dj2FF", "Errors.Internal")
}
return p, nil
}
@@ -249,7 +249,7 @@ func preparePersonalAccessTokensQuery(ctx context.Context, db prepareDatabase) (
}
if err := rows.Close(); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-QMXJv", "Errors.Query.CloseRows")
+ return nil, zerrors.ThrowInternal(err, "QUERY-QMXJv", "Errors.Query.CloseRows")
}
return &PersonalAccessTokens{
diff --git a/internal/query/user_personal_access_token_test.go b/internal/query/user_personal_access_token_test.go
index 95b08c87c9..79ba700ed5 100644
--- a/internal/query/user_personal_access_token_test.go
+++ b/internal/query/user_personal_access_token_test.go
@@ -10,7 +10,7 @@ import (
"time"
"github.com/zitadel/zitadel/internal/database"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -81,7 +81,7 @@ func Test_PersonalAccessTokenPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
diff --git a/internal/query/user_test.go b/internal/query/user_test.go
index 1076dd8729..35cd2730ee 100644
--- a/internal/query/user_test.go
+++ b/internal/query/user_test.go
@@ -10,9 +10,10 @@ import (
"golang.org/x/text/language"
+ "github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -22,43 +23,43 @@ var (
preferredLoginNameQuery = `SELECT preferred_login_name.user_id, preferred_login_name.login_name, preferred_login_name.instance_id` +
` FROM projections.login_names3 AS preferred_login_name` +
` WHERE preferred_login_name.is_primary = $1`
- userQuery = `SELECT projections.users9.id,` +
- ` projections.users9.creation_date,` +
- ` projections.users9.change_date,` +
- ` projections.users9.resource_owner,` +
- ` projections.users9.sequence,` +
- ` projections.users9.state,` +
- ` projections.users9.type,` +
- ` projections.users9.username,` +
+ userQuery = `SELECT projections.users10.id,` +
+ ` projections.users10.creation_date,` +
+ ` projections.users10.change_date,` +
+ ` projections.users10.resource_owner,` +
+ ` projections.users10.sequence,` +
+ ` projections.users10.state,` +
+ ` projections.users10.type,` +
+ ` projections.users10.username,` +
` login_names.loginnames,` +
` preferred_login_name.login_name,` +
- ` projections.users9_humans.user_id,` +
- ` projections.users9_humans.first_name,` +
- ` projections.users9_humans.last_name,` +
- ` projections.users9_humans.nick_name,` +
- ` projections.users9_humans.display_name,` +
- ` projections.users9_humans.preferred_language,` +
- ` projections.users9_humans.gender,` +
- ` projections.users9_humans.avatar_key,` +
- ` projections.users9_humans.email,` +
- ` projections.users9_humans.is_email_verified,` +
- ` projections.users9_humans.phone,` +
- ` projections.users9_humans.is_phone_verified,` +
- ` projections.users9_machines.user_id,` +
- ` projections.users9_machines.name,` +
- ` projections.users9_machines.description,` +
- ` projections.users9_machines.has_secret,` +
- ` projections.users9_machines.access_token_type,` +
+ ` projections.users10_humans.user_id,` +
+ ` projections.users10_humans.first_name,` +
+ ` projections.users10_humans.last_name,` +
+ ` projections.users10_humans.nick_name,` +
+ ` projections.users10_humans.display_name,` +
+ ` projections.users10_humans.preferred_language,` +
+ ` projections.users10_humans.gender,` +
+ ` projections.users10_humans.avatar_key,` +
+ ` projections.users10_humans.email,` +
+ ` projections.users10_humans.is_email_verified,` +
+ ` projections.users10_humans.phone,` +
+ ` projections.users10_humans.is_phone_verified,` +
+ ` projections.users10_machines.user_id,` +
+ ` projections.users10_machines.name,` +
+ ` projections.users10_machines.description,` +
+ ` projections.users10_machines.secret,` +
+ ` projections.users10_machines.access_token_type,` +
` COUNT(*) OVER ()` +
- ` FROM projections.users9` +
- ` LEFT JOIN projections.users9_humans ON projections.users9.id = projections.users9_humans.user_id AND projections.users9.instance_id = projections.users9_humans.instance_id` +
- ` LEFT JOIN projections.users9_machines ON projections.users9.id = projections.users9_machines.user_id AND projections.users9.instance_id = projections.users9_machines.instance_id` +
+ ` FROM projections.users10` +
+ ` LEFT JOIN projections.users10_humans ON projections.users10.id = projections.users10_humans.user_id AND projections.users10.instance_id = projections.users10_humans.instance_id` +
+ ` LEFT JOIN projections.users10_machines ON projections.users10.id = projections.users10_machines.user_id AND projections.users10.instance_id = projections.users10_machines.instance_id` +
` LEFT JOIN` +
` (` + loginNamesQuery + `) AS login_names` +
- ` ON login_names.user_id = projections.users9.id AND login_names.instance_id = projections.users9.instance_id` +
+ ` ON login_names.user_id = projections.users10.id AND login_names.instance_id = projections.users10.instance_id` +
` LEFT JOIN` +
` (` + preferredLoginNameQuery + `) AS preferred_login_name` +
- ` ON preferred_login_name.user_id = projections.users9.id AND preferred_login_name.instance_id = projections.users9.instance_id` +
+ ` ON preferred_login_name.user_id = projections.users10.id AND preferred_login_name.instance_id = projections.users10.instance_id` +
` AS OF SYSTEM TIME '-1 ms'`
userCols = []string{
"id",
@@ -71,7 +72,7 @@ var (
"username",
"loginnames",
"login_name",
- //human
+ // human
"user_id",
"first_name",
"last_name",
@@ -84,29 +85,29 @@ var (
"is_email_verified",
"phone",
"is_phone_verified",
- //machine
+ // machine
"user_id",
"name",
"description",
- "has_secret",
+ "secret",
"access_token_type",
"count",
}
- profileQuery = `SELECT projections.users9.id,` +
- ` projections.users9.creation_date,` +
- ` projections.users9.change_date,` +
- ` projections.users9.resource_owner,` +
- ` projections.users9.sequence,` +
- ` projections.users9_humans.user_id,` +
- ` projections.users9_humans.first_name,` +
- ` projections.users9_humans.last_name,` +
- ` projections.users9_humans.nick_name,` +
- ` projections.users9_humans.display_name,` +
- ` projections.users9_humans.preferred_language,` +
- ` projections.users9_humans.gender,` +
- ` projections.users9_humans.avatar_key` +
- ` FROM projections.users9` +
- ` LEFT JOIN projections.users9_humans ON projections.users9.id = projections.users9_humans.user_id AND projections.users9.instance_id = projections.users9_humans.instance_id` +
+ profileQuery = `SELECT projections.users10.id,` +
+ ` projections.users10.creation_date,` +
+ ` projections.users10.change_date,` +
+ ` projections.users10.resource_owner,` +
+ ` projections.users10.sequence,` +
+ ` projections.users10_humans.user_id,` +
+ ` projections.users10_humans.first_name,` +
+ ` projections.users10_humans.last_name,` +
+ ` projections.users10_humans.nick_name,` +
+ ` projections.users10_humans.display_name,` +
+ ` projections.users10_humans.preferred_language,` +
+ ` projections.users10_humans.gender,` +
+ ` projections.users10_humans.avatar_key` +
+ ` FROM projections.users10` +
+ ` LEFT JOIN projections.users10_humans ON projections.users10.id = projections.users10_humans.user_id AND projections.users10.instance_id = projections.users10_humans.instance_id` +
` AS OF SYSTEM TIME '-1 ms'`
profileCols = []string{
"id",
@@ -123,16 +124,16 @@ var (
"gender",
"avatar_key",
}
- emailQuery = `SELECT projections.users9.id,` +
- ` projections.users9.creation_date,` +
- ` projections.users9.change_date,` +
- ` projections.users9.resource_owner,` +
- ` projections.users9.sequence,` +
- ` projections.users9_humans.user_id,` +
- ` projections.users9_humans.email,` +
- ` projections.users9_humans.is_email_verified` +
- ` FROM projections.users9` +
- ` LEFT JOIN projections.users9_humans ON projections.users9.id = projections.users9_humans.user_id AND projections.users9.instance_id = projections.users9_humans.instance_id` +
+ emailQuery = `SELECT projections.users10.id,` +
+ ` projections.users10.creation_date,` +
+ ` projections.users10.change_date,` +
+ ` projections.users10.resource_owner,` +
+ ` projections.users10.sequence,` +
+ ` projections.users10_humans.user_id,` +
+ ` projections.users10_humans.email,` +
+ ` projections.users10_humans.is_email_verified` +
+ ` FROM projections.users10` +
+ ` LEFT JOIN projections.users10_humans ON projections.users10.id = projections.users10_humans.user_id AND projections.users10.instance_id = projections.users10_humans.instance_id` +
` AS OF SYSTEM TIME '-1 ms'`
emailCols = []string{
"id",
@@ -144,16 +145,16 @@ var (
"email",
"is_email_verified",
}
- phoneQuery = `SELECT projections.users9.id,` +
- ` projections.users9.creation_date,` +
- ` projections.users9.change_date,` +
- ` projections.users9.resource_owner,` +
- ` projections.users9.sequence,` +
- ` projections.users9_humans.user_id,` +
- ` projections.users9_humans.phone,` +
- ` projections.users9_humans.is_phone_verified` +
- ` FROM projections.users9` +
- ` LEFT JOIN projections.users9_humans ON projections.users9.id = projections.users9_humans.user_id AND projections.users9.instance_id = projections.users9_humans.instance_id` +
+ phoneQuery = `SELECT projections.users10.id,` +
+ ` projections.users10.creation_date,` +
+ ` projections.users10.change_date,` +
+ ` projections.users10.resource_owner,` +
+ ` projections.users10.sequence,` +
+ ` projections.users10_humans.user_id,` +
+ ` projections.users10_humans.phone,` +
+ ` projections.users10_humans.is_phone_verified` +
+ ` FROM projections.users10` +
+ ` LEFT JOIN projections.users10_humans ON projections.users10.id = projections.users10_humans.user_id AND projections.users10.instance_id = projections.users10_humans.instance_id` +
` AS OF SYSTEM TIME '-1 ms'`
phoneCols = []string{
"id",
@@ -165,14 +166,14 @@ var (
"phone",
"is_phone_verified",
}
- userUniqueQuery = `SELECT projections.users9.id,` +
- ` projections.users9.state,` +
- ` projections.users9.username,` +
- ` projections.users9_humans.user_id,` +
- ` projections.users9_humans.email,` +
- ` projections.users9_humans.is_email_verified` +
- ` FROM projections.users9` +
- ` LEFT JOIN projections.users9_humans ON projections.users9.id = projections.users9_humans.user_id AND projections.users9.instance_id = projections.users9_humans.instance_id` +
+ userUniqueQuery = `SELECT projections.users10.id,` +
+ ` projections.users10.state,` +
+ ` projections.users10.username,` +
+ ` projections.users10_humans.user_id,` +
+ ` projections.users10_humans.email,` +
+ ` projections.users10_humans.is_email_verified` +
+ ` FROM projections.users10` +
+ ` LEFT JOIN projections.users10_humans ON projections.users10.id = projections.users10_humans.user_id AND projections.users10.instance_id = projections.users10_humans.instance_id` +
` AS OF SYSTEM TIME '-1 ms'`
userUniqueCols = []string{
"id",
@@ -182,40 +183,40 @@ var (
"email",
"is_email_verified",
}
- notifyUserQuery = `SELECT projections.users9.id,` +
- ` projections.users9.creation_date,` +
- ` projections.users9.change_date,` +
- ` projections.users9.resource_owner,` +
- ` projections.users9.sequence,` +
- ` projections.users9.state,` +
- ` projections.users9.type,` +
- ` projections.users9.username,` +
+ notifyUserQuery = `SELECT projections.users10.id,` +
+ ` projections.users10.creation_date,` +
+ ` projections.users10.change_date,` +
+ ` projections.users10.resource_owner,` +
+ ` projections.users10.sequence,` +
+ ` projections.users10.state,` +
+ ` projections.users10.type,` +
+ ` projections.users10.username,` +
` login_names.loginnames,` +
` preferred_login_name.login_name,` +
- ` projections.users9_humans.user_id,` +
- ` projections.users9_humans.first_name,` +
- ` projections.users9_humans.last_name,` +
- ` projections.users9_humans.nick_name,` +
- ` projections.users9_humans.display_name,` +
- ` projections.users9_humans.preferred_language,` +
- ` projections.users9_humans.gender,` +
- ` projections.users9_humans.avatar_key,` +
- ` projections.users9_notifications.user_id,` +
- ` projections.users9_notifications.last_email,` +
- ` projections.users9_notifications.verified_email,` +
- ` projections.users9_notifications.last_phone,` +
- ` projections.users9_notifications.verified_phone,` +
- ` projections.users9_notifications.password_set,` +
+ ` projections.users10_humans.user_id,` +
+ ` projections.users10_humans.first_name,` +
+ ` projections.users10_humans.last_name,` +
+ ` projections.users10_humans.nick_name,` +
+ ` projections.users10_humans.display_name,` +
+ ` projections.users10_humans.preferred_language,` +
+ ` projections.users10_humans.gender,` +
+ ` projections.users10_humans.avatar_key,` +
+ ` projections.users10_notifications.user_id,` +
+ ` projections.users10_notifications.last_email,` +
+ ` projections.users10_notifications.verified_email,` +
+ ` projections.users10_notifications.last_phone,` +
+ ` projections.users10_notifications.verified_phone,` +
+ ` projections.users10_notifications.password_set,` +
` COUNT(*) OVER ()` +
- ` FROM projections.users9` +
- ` LEFT JOIN projections.users9_humans ON projections.users9.id = projections.users9_humans.user_id AND projections.users9.instance_id = projections.users9_humans.instance_id` +
- ` LEFT JOIN projections.users9_notifications ON projections.users9.id = projections.users9_notifications.user_id AND projections.users9.instance_id = projections.users9_notifications.instance_id` +
+ ` FROM projections.users10` +
+ ` LEFT JOIN projections.users10_humans ON projections.users10.id = projections.users10_humans.user_id AND projections.users10.instance_id = projections.users10_humans.instance_id` +
+ ` LEFT JOIN projections.users10_notifications ON projections.users10.id = projections.users10_notifications.user_id AND projections.users10.instance_id = projections.users10_notifications.instance_id` +
` LEFT JOIN` +
` (` + loginNamesQuery + `) AS login_names` +
- ` ON login_names.user_id = projections.users9.id AND login_names.instance_id = projections.users9.instance_id` +
+ ` ON login_names.user_id = projections.users10.id AND login_names.instance_id = projections.users10.instance_id` +
` LEFT JOIN` +
` (` + preferredLoginNameQuery + `) AS preferred_login_name` +
- ` ON preferred_login_name.user_id = projections.users9.id AND preferred_login_name.instance_id = projections.users9.instance_id` +
+ ` ON preferred_login_name.user_id = projections.users10.id AND preferred_login_name.instance_id = projections.users10.instance_id` +
` AS OF SYSTEM TIME '-1 ms'`
notifyUserCols = []string{
"id",
@@ -228,7 +229,7 @@ var (
"username",
"loginnames",
"login_name",
- //human
+ // human
"user_id",
"first_name",
"last_name",
@@ -237,7 +238,7 @@ var (
"preferred_language",
"gender",
"avatar_key",
- //machine
+ // machine
"user_id",
"last_email",
"verified_email",
@@ -246,43 +247,43 @@ var (
"password_set",
"count",
}
- usersQuery = `SELECT projections.users9.id,` +
- ` projections.users9.creation_date,` +
- ` projections.users9.change_date,` +
- ` projections.users9.resource_owner,` +
- ` projections.users9.sequence,` +
- ` projections.users9.state,` +
- ` projections.users9.type,` +
- ` projections.users9.username,` +
+ usersQuery = `SELECT projections.users10.id,` +
+ ` projections.users10.creation_date,` +
+ ` projections.users10.change_date,` +
+ ` projections.users10.resource_owner,` +
+ ` projections.users10.sequence,` +
+ ` projections.users10.state,` +
+ ` projections.users10.type,` +
+ ` projections.users10.username,` +
` login_names.loginnames,` +
` preferred_login_name.login_name,` +
- ` projections.users9_humans.user_id,` +
- ` projections.users9_humans.first_name,` +
- ` projections.users9_humans.last_name,` +
- ` projections.users9_humans.nick_name,` +
- ` projections.users9_humans.display_name,` +
- ` projections.users9_humans.preferred_language,` +
- ` projections.users9_humans.gender,` +
- ` projections.users9_humans.avatar_key,` +
- ` projections.users9_humans.email,` +
- ` projections.users9_humans.is_email_verified,` +
- ` projections.users9_humans.phone,` +
- ` projections.users9_humans.is_phone_verified,` +
- ` projections.users9_machines.user_id,` +
- ` projections.users9_machines.name,` +
- ` projections.users9_machines.description,` +
- ` projections.users9_machines.has_secret,` +
- ` projections.users9_machines.access_token_type,` +
+ ` projections.users10_humans.user_id,` +
+ ` projections.users10_humans.first_name,` +
+ ` projections.users10_humans.last_name,` +
+ ` projections.users10_humans.nick_name,` +
+ ` projections.users10_humans.display_name,` +
+ ` projections.users10_humans.preferred_language,` +
+ ` projections.users10_humans.gender,` +
+ ` projections.users10_humans.avatar_key,` +
+ ` projections.users10_humans.email,` +
+ ` projections.users10_humans.is_email_verified,` +
+ ` projections.users10_humans.phone,` +
+ ` projections.users10_humans.is_phone_verified,` +
+ ` projections.users10_machines.user_id,` +
+ ` projections.users10_machines.name,` +
+ ` projections.users10_machines.description,` +
+ ` projections.users10_machines.secret,` +
+ ` projections.users10_machines.access_token_type,` +
` COUNT(*) OVER ()` +
- ` FROM projections.users9` +
- ` LEFT JOIN projections.users9_humans ON projections.users9.id = projections.users9_humans.user_id AND projections.users9.instance_id = projections.users9_humans.instance_id` +
- ` LEFT JOIN projections.users9_machines ON projections.users9.id = projections.users9_machines.user_id AND projections.users9.instance_id = projections.users9_machines.instance_id` +
+ ` FROM projections.users10` +
+ ` LEFT JOIN projections.users10_humans ON projections.users10.id = projections.users10_humans.user_id AND projections.users10.instance_id = projections.users10_humans.instance_id` +
+ ` LEFT JOIN projections.users10_machines ON projections.users10.id = projections.users10_machines.user_id AND projections.users10.instance_id = projections.users10_machines.instance_id` +
` LEFT JOIN` +
` (` + loginNamesQuery + `) AS login_names` +
- ` ON login_names.user_id = projections.users9.id AND login_names.instance_id = projections.users9.instance_id` +
+ ` ON login_names.user_id = projections.users10.id AND login_names.instance_id = projections.users10.instance_id` +
` LEFT JOIN` +
` (` + preferredLoginNameQuery + `) AS preferred_login_name` +
- ` ON preferred_login_name.user_id = projections.users9.id AND preferred_login_name.instance_id = projections.users9.instance_id` +
+ ` ON preferred_login_name.user_id = projections.users10.id AND preferred_login_name.instance_id = projections.users10.instance_id` +
` AS OF SYSTEM TIME '-1 ms'`
usersCols = []string{
"id",
@@ -295,7 +296,7 @@ var (
"username",
"loginnames",
"login_name",
- //human
+ // human
"user_id",
"first_name",
"last_name",
@@ -308,11 +309,11 @@ var (
"is_email_verified",
"phone",
"is_phone_verified",
- //machine
+ // machine
"user_id",
"name",
"description",
- "has_secret",
+ "secret",
"access_token_type",
"count",
}
@@ -339,7 +340,7 @@ func Test_UserPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
@@ -365,7 +366,7 @@ func Test_UserPrepares(t *testing.T) {
"username",
database.TextArray[string]{"login_name1", "login_name2"},
"login_name1",
- //human
+ // human
"id",
"first_name",
"last_name",
@@ -378,7 +379,7 @@ func Test_UserPrepares(t *testing.T) {
true,
"phone",
true,
- //machine
+ // machine
nil,
nil,
nil,
@@ -432,7 +433,7 @@ func Test_UserPrepares(t *testing.T) {
"username",
database.TextArray[string]{"login_name1", "login_name2"},
"login_name1",
- //human
+ // human
nil,
nil,
nil,
@@ -445,11 +446,11 @@ func Test_UserPrepares(t *testing.T) {
nil,
nil,
nil,
- //machine
+ // machine
"id",
"name",
"description",
- true,
+ nil,
domain.OIDCTokenTypeBearer,
1,
},
@@ -469,7 +470,71 @@ func Test_UserPrepares(t *testing.T) {
Machine: &Machine{
Name: "name",
Description: "description",
- HasSecret: true,
+ Secret: nil,
+ AccessTokenType: domain.OIDCTokenTypeBearer,
+ },
+ },
+ },
+ {
+ name: "prepareUserQuery machine with secret found",
+ prepare: prepareUserQuery,
+ want: want{
+ sqlExpectations: mockQuery(
+ regexp.QuoteMeta(userQuery),
+ userCols,
+ []driver.Value{
+ "id",
+ testNow,
+ testNow,
+ "resource_owner",
+ uint64(20211108),
+ domain.UserStateActive,
+ domain.UserTypeMachine,
+ "username",
+ database.TextArray[string]{"login_name1", "login_name2"},
+ "login_name1",
+ // human
+ nil,
+ nil,
+ nil,
+ nil,
+ nil,
+ nil,
+ nil,
+ nil,
+ nil,
+ nil,
+ nil,
+ nil,
+ // machine
+ "id",
+ "name",
+ "description",
+ `{"CryptoType":1,"Algorithm":"bcrypt","Crypted":"deadbeef"}`,
+ domain.OIDCTokenTypeBearer,
+ 1,
+ },
+ ),
+ },
+ object: &User{
+ ID: "id",
+ CreationDate: testNow,
+ ChangeDate: testNow,
+ ResourceOwner: "resource_owner",
+ Sequence: 20211108,
+ State: domain.UserStateActive,
+ Type: domain.UserTypeMachine,
+ Username: "username",
+ LoginNames: database.TextArray[string]{"login_name1", "login_name2"},
+ PreferredLoginName: "login_name1",
+ Machine: &Machine{
+ Name: "name",
+ Description: "description",
+ Secret: &crypto.CryptoValue{
+ CryptoType: crypto.TypeHash,
+ Algorithm: "bcrypt",
+ Crypted: []byte{117, 230, 157, 109, 231, 159},
+ },
AccessTokenType: domain.OIDCTokenTypeBearer,
},
},
@@ -501,7 +566,7 @@ func Test_UserPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
@@ -572,7 +637,7 @@ func Test_UserPrepares(t *testing.T) {
},
),
err: func(err error) (error, bool) {
- if !errs.IsPreconditionFailed(err) {
+ if !zerrors.IsPreconditionFailed(err) {
return fmt.Errorf("err should be zitadel.PredconditionError got: %w", err), false
}
return nil, true
@@ -607,7 +672,7 @@ func Test_UserPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
@@ -666,7 +731,7 @@ func Test_UserPrepares(t *testing.T) {
},
),
err: func(err error) (error, bool) {
- if !errs.IsPreconditionFailed(err) {
+ if !zerrors.IsPreconditionFailed(err) {
return fmt.Errorf("err should be zitadel.PredconditionError got: %w", err), false
}
return nil, true
@@ -701,7 +766,7 @@ func Test_UserPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
@@ -760,7 +825,7 @@ func Test_UserPrepares(t *testing.T) {
},
),
err: func(err error) (error, bool) {
- if !errs.IsPreconditionFailed(err) {
+ if !zerrors.IsPreconditionFailed(err) {
return fmt.Errorf("err should be zitadel.PredconditionError got: %w", err), false
}
return nil, true
@@ -795,7 +860,7 @@ func Test_UserPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
@@ -849,7 +914,7 @@ func Test_UserPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
@@ -875,7 +940,7 @@ func Test_UserPrepares(t *testing.T) {
"username",
database.TextArray[string]{"login_name1", "login_name2"},
"login_name1",
- //human
+ // human
"id",
"first_name",
"last_name",
@@ -938,7 +1003,7 @@ func Test_UserPrepares(t *testing.T) {
"username",
database.TextArray[string]{"login_name1", "login_name2"},
"login_name1",
- //human
+ // human
"id",
"first_name",
"last_name",
@@ -957,7 +1022,7 @@ func Test_UserPrepares(t *testing.T) {
},
),
err: func(err error) (error, bool) {
- if !errs.IsPreconditionFailed(err) {
+ if !zerrors.IsPreconditionFailed(err) {
return fmt.Errorf("err should be zitadel.PredconditionError got: %w", err), false
}
return nil, true
@@ -992,7 +1057,7 @@ func Test_UserPrepares(t *testing.T) {
nil,
),
err: func(err error) (error, bool) {
- if !errs.IsNotFound(err) {
+ if !zerrors.IsNotFound(err) {
return fmt.Errorf("err should be zitadel.NotFoundError got: %w", err), false
}
return nil, true
@@ -1019,7 +1084,7 @@ func Test_UserPrepares(t *testing.T) {
"username",
database.TextArray[string]{"login_name1", "login_name2"},
"login_name1",
- //human
+ // human
"id",
"first_name",
"last_name",
@@ -1032,7 +1097,7 @@ func Test_UserPrepares(t *testing.T) {
true,
"phone",
true,
- //machine
+ // machine
nil,
nil,
nil,
@@ -1094,7 +1159,7 @@ func Test_UserPrepares(t *testing.T) {
"username",
database.TextArray[string]{"login_name1", "login_name2"},
"login_name1",
- //human
+ // human
"id",
"first_name",
"last_name",
@@ -1107,7 +1172,7 @@ func Test_UserPrepares(t *testing.T) {
true,
"phone",
true,
- //machine
+ // machine
nil,
nil,
nil,
@@ -1125,7 +1190,7 @@ func Test_UserPrepares(t *testing.T) {
"username",
database.TextArray[string]{"login_name1", "login_name2"},
"login_name1",
- //human
+ // human
nil,
nil,
nil,
@@ -1138,11 +1203,11 @@ func Test_UserPrepares(t *testing.T) {
nil,
nil,
nil,
- //machine
+ // machine
"id",
"name",
"description",
- true,
+ `{"CryptoType":1,"Algorithm":"bcrypt","Crypted":"deadbeef"}`,
domain.OIDCTokenTypeBearer,
},
},
@@ -1190,9 +1255,13 @@ func Test_UserPrepares(t *testing.T) {
LoginNames: database.TextArray[string]{"login_name1", "login_name2"},
PreferredLoginName: "login_name1",
Machine: &Machine{
- Name: "name",
- Description: "description",
- HasSecret: true,
+ Name: "name",
+ Description: "description",
+ Secret: &crypto.CryptoValue{
+ CryptoType: crypto.TypeHash,
+ Algorithm: "bcrypt",
+ Crypted: []byte{117, 230, 157, 109, 231, 159},
+ },
AccessTokenType: domain.OIDCTokenTypeBearer,
},
},
diff --git a/internal/query/userinfo.go b/internal/query/userinfo.go
index c42a893319..2e2c27f9bc 100644
--- a/internal/query/userinfo.go
+++ b/internal/query/userinfo.go
@@ -4,15 +4,15 @@ import (
"context"
"database/sql"
_ "embed"
- "encoding/json"
+ "errors"
"sync"
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/database"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/handler/v2"
"github.com/zitadel/zitadel/internal/query/projection"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
// oidcUserInfoTriggerHandlers slice can only be created after zitadel
@@ -40,23 +40,17 @@ func (q *Queries) GetOIDCUserInfo(ctx context.Context, userID string, roleAudien
ctx, span := tracing.NewSpan(ctx)
defer func() { span.EndWithError(err) }()
- var data []byte
- err = q.client.QueryRowContext(ctx, func(row *sql.Row) error {
- return row.Scan(&data)
- },
- oidcUserInfoQuery,
+ userInfo, err := database.QueryJSONObject[OIDCUserInfo](ctx, q.client, oidcUserInfoQuery,
userID, authz.GetInstance(ctx).InstanceID(), database.TextArray[string](roleAudience),
)
- if err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Oath6", "Errors.Internal")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, zerrors.ThrowNotFound(err, "QUERY-Eey2a", "Errors.User.NotFound")
}
-
- userInfo := new(OIDCUserInfo)
- if err = json.Unmarshal(data, userInfo); err != nil {
- return nil, errors.ThrowInternal(err, "QUERY-Vohs6", "Errors.Internal")
+ if err != nil {
+ return nil, zerrors.ThrowInternal(err, "QUERY-Oath6", "Errors.Internal")
}
if userInfo.User == nil {
- return nil, errors.ThrowNotFound(nil, "QUERY-ahs4S", "Errors.User.NotFound")
+ return nil, zerrors.ThrowNotFound(nil, "QUERY-ahs4S", "Errors.User.NotFound")
}
return userInfo, nil
diff --git a/internal/query/userinfo_test.go b/internal/query/userinfo_test.go
index 34c713d506..2a6cb959c8 100644
--- a/internal/query/userinfo_test.go
+++ b/internal/query/userinfo_test.go
@@ -16,7 +16,7 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -68,21 +68,13 @@ func TestQueries_GetOIDCUserInfo(t *testing.T) {
mock: mockQueryErr(expQuery, sql.ErrConnDone, "231965491734773762", "instanceID", nil),
wantErr: sql.ErrConnDone,
},
- {
- name: "unmarshal error",
- args: args{
- userID: "231965491734773762",
- },
- mock: mockQuery(expQuery, []string{"json_build_object"}, []driver.Value{`~~~`}, "231965491734773762", "instanceID", nil),
- wantErr: errors.ThrowInternal(nil, "QUERY-Vohs6", "Errors.Internal"),
- },
{
name: "user not found",
args: args{
userID: "231965491734773762",
},
mock: mockQuery(expQuery, []string{"json_build_object"}, []driver.Value{testdataUserInfoNotFound}, "231965491734773762", "instanceID", nil),
- wantErr: errors.ThrowNotFound(nil, "QUERY-ahs4S", "Errors.User.NotFound"),
+ wantErr: zerrors.ThrowNotFound(nil, "QUERY-ahs4S", "Errors.User.NotFound"),
},
{
name: "human without metadata",
diff --git a/internal/renderer/renderer.go b/internal/renderer/renderer.go
index 72da287a36..d9e4a44ef5 100644
--- a/internal/renderer/renderer.go
+++ b/internal/renderer/renderer.go
@@ -11,8 +11,8 @@ import (
"golang.org/x/text/language"
"github.com/zitadel/zitadel/internal/api/authz"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/i18n"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -23,17 +23,13 @@ const (
type Renderer struct {
Templates map[string]*template.Template
- dir http.FileSystem
cookieName string
}
-func NewRenderer(dir http.FileSystem, tmplMapping map[string]string, funcs map[string]interface{}, cookieName string) (*Renderer, error) {
+func NewRenderer(tmplMapping map[string]string, funcs map[string]interface{}, cookieName string) (*Renderer, error) {
var err error
- r := &Renderer{
- dir: dir,
- cookieName: cookieName,
- }
- err = r.loadTemplates(dir, nil, tmplMapping, funcs)
+ r := &Renderer{cookieName: cookieName}
+ err = r.loadTemplates(i18n.LoadFilesystem(i18n.LOGIN), nil, tmplMapping, funcs)
if err != nil {
return nil, err
}
@@ -47,8 +43,8 @@ func (r *Renderer) RenderTemplate(w http.ResponseWriter, req *http.Request, tran
}
}
-func (r *Renderer) NewTranslator(ctx context.Context) (*i18n.Translator, error) {
- return i18n.NewTranslator(r.dir, authz.GetInstance(ctx).DefaultLanguage(), r.cookieName)
+func (r *Renderer) NewTranslator(ctx context.Context, allowedLanguages []language.Tag) (*i18n.Translator, error) {
+ return i18n.NewLoginTranslator(authz.GetInstance(ctx).DefaultLanguage(), allowedLanguages, r.cookieName)
}
func (r *Renderer) Localize(translator *i18n.Translator, id string, args map[string]interface{}) string {
@@ -85,17 +81,17 @@ func (r *Renderer) loadTemplates(dir http.FileSystem, translator *i18n.Translato
}
templatesDir, err := dir.Open(templatesPath)
if err != nil {
- return errors.ThrowNotFound(err, "RENDE-G3aea", "path not found")
+ return zerrors.ThrowNotFound(err, "RENDE-G3aea", "path not found")
}
defer templatesDir.Close()
files, err := templatesDir.Readdir(0)
if err != nil {
- return errors.ThrowNotFound(err, "RENDE-dfR33", "cannot read dir")
+ return zerrors.ThrowNotFound(err, "RENDE-dfR33", "cannot read dir")
}
tmpl := template.New("")
for _, file := range files {
if err := r.addFileToTemplate(dir, tmpl, tmplMapping, funcs, file); err != nil {
- return errors.ThrowNotFound(err, "RENDE-dfTe1", "cannot append file to templates")
+ return zerrors.ThrowNotFound(err, "RENDE-dfTe1", "cannot append file to templates")
}
}
r.Templates = make(map[string]*template.Template, len(tmplMapping))
diff --git a/internal/repository/action/action.go b/internal/repository/action/action.go
index e1195fa66e..518238266d 100644
--- a/internal/repository/action/action.go
+++ b/internal/repository/action/action.go
@@ -4,8 +4,8 @@ import (
"context"
"time"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -76,7 +76,7 @@ func AddedEventMapper(event eventstore.Event) (eventstore.Event, error) {
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "ACTION-4n8vs", "unable to unmarshal action added")
+ return nil, zerrors.ThrowInternal(err, "ACTION-4n8vs", "unable to unmarshal action added")
}
return e, nil
@@ -112,7 +112,7 @@ func NewChangedEvent(
changes []ActionChanges,
) (*ChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "ACTION-dg4t2", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "ACTION-dg4t2", "Errors.NoChangesFound")
}
changeEvent := &ChangedEvent{
BaseEvent: *eventstore.NewBaseEventForPush(
@@ -161,7 +161,7 @@ func ChangedEventMapper(event eventstore.Event) (eventstore.Event, error) {
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "ACTION-4n8vs", "unable to unmarshal action changed")
+ return nil, zerrors.ThrowInternal(err, "ACTION-4n8vs", "unable to unmarshal action changed")
}
return e, nil
diff --git a/internal/repository/asset/asset.go b/internal/repository/asset/asset.go
index e965b1ef8b..ca389fc394 100644
--- a/internal/repository/asset/asset.go
+++ b/internal/repository/asset/asset.go
@@ -1,8 +1,8 @@
package asset
import (
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -42,7 +42,7 @@ func AddedEventMapper(event eventstore.Event) (eventstore.Event, error) {
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "ASSET-1WEAx", "unable to unmarshal asset")
+ return nil, zerrors.ThrowInternal(err, "ASSET-1WEAx", "unable to unmarshal asset")
}
return e, nil
@@ -80,7 +80,7 @@ func RemovedEventMapper(event eventstore.Event) (eventstore.Event, error) {
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "ASSET-1m9PP", "unable to unmarshal asset")
+ return nil, zerrors.ThrowInternal(err, "ASSET-1m9PP", "unable to unmarshal asset")
}
return e, nil
diff --git a/internal/repository/authrequest/auth_request.go b/internal/repository/authrequest/auth_request.go
index 3633da54a2..5e9f1ad390 100644
--- a/internal/repository/authrequest/auth_request.go
+++ b/internal/repository/authrequest/auth_request.go
@@ -5,8 +5,8 @@ import (
"time"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -92,7 +92,7 @@ func AddedEventMapper(event eventstore.Event) (eventstore.Event, error) {
}
err := event.Unmarshal(added)
if err != nil {
- return nil, errors.ThrowInternal(err, "AUTHR-DG4gn", "unable to unmarshal auth request added")
+ return nil, zerrors.ThrowInternal(err, "AUTHR-DG4gn", "unable to unmarshal auth request added")
}
return added, nil
@@ -141,7 +141,7 @@ func SessionLinkedEventMapper(event eventstore.Event) (eventstore.Event, error)
}
err := event.Unmarshal(added)
if err != nil {
- return nil, errors.ThrowInternal(err, "AUTHR-Sfe3w", "unable to unmarshal auth request session linked")
+ return nil, zerrors.ThrowInternal(err, "AUTHR-Sfe3w", "unable to unmarshal auth request session linked")
}
return added, nil
@@ -182,7 +182,7 @@ func FailedEventMapper(event eventstore.Event) (eventstore.Event, error) {
}
err := event.Unmarshal(added)
if err != nil {
- return nil, errors.ThrowInternal(err, "AUTHR-Sfe3w", "unable to unmarshal auth request session linked")
+ return nil, zerrors.ThrowInternal(err, "AUTHR-Sfe3w", "unable to unmarshal auth request session linked")
}
return added, nil
@@ -218,7 +218,7 @@ func CodeAddedEventMapper(event eventstore.Event) (eventstore.Event, error) {
}
err := event.Unmarshal(added)
if err != nil {
- return nil, errors.ThrowInternal(err, "AUTHR-Sfe3w", "unable to unmarshal auth request code added")
+ return nil, zerrors.ThrowInternal(err, "AUTHR-Sfe3w", "unable to unmarshal auth request code added")
}
return added, nil
diff --git a/internal/repository/deviceauth/constraints.go b/internal/repository/deviceauth/constraints.go
index d8362760ea..e88c83e388 100644
--- a/internal/repository/deviceauth/constraints.go
+++ b/internal/repository/deviceauth/constraints.go
@@ -1,8 +1,6 @@
package deviceauth
import (
- "strings"
-
"github.com/zitadel/zitadel/internal/eventstore"
)
@@ -13,15 +11,11 @@ const (
DuplicateDeviceCode = "Errors.DeviceCode.AlreadyExists"
)
-func deviceCodeUniqueField(clientID, deviceCode string) string {
- return strings.Join([]string{clientID, deviceCode}, ":")
-}
-
-func NewAddUniqueConstraints(clientID, deviceCode, userCode string) []*eventstore.UniqueConstraint {
+func NewAddUniqueConstraints(deviceCode, userCode string) []*eventstore.UniqueConstraint {
return []*eventstore.UniqueConstraint{
eventstore.NewAddEventUniqueConstraint(
UniqueDeviceCode,
- deviceCodeUniqueField(clientID, deviceCode),
+ deviceCode,
DuplicateDeviceCode,
),
eventstore.NewAddEventUniqueConstraint(
@@ -32,11 +26,11 @@ func NewAddUniqueConstraints(clientID, deviceCode, userCode string) []*eventstor
}
}
-func NewRemoveUniqueConstraints(clientID, deviceCode, userCode string) []*eventstore.UniqueConstraint {
+func NewRemoveUniqueConstraints(deviceCode, userCode string) []*eventstore.UniqueConstraint {
return []*eventstore.UniqueConstraint{
eventstore.NewRemoveUniqueConstraint(
UniqueDeviceCode,
- deviceCodeUniqueField(clientID, deviceCode),
+ deviceCode,
),
eventstore.NewRemoveUniqueConstraint(
UniqueUserCode,
diff --git a/internal/repository/deviceauth/device_auth.go b/internal/repository/deviceauth/device_auth.go
index 26b50f4ee9..54f8eb623e 100644
--- a/internal/repository/deviceauth/device_auth.go
+++ b/internal/repository/deviceauth/device_auth.go
@@ -13,7 +13,6 @@ const (
AddedEventType = eventTypePrefix + "added"
ApprovedEventType = eventTypePrefix + "approved"
CanceledEventType = eventTypePrefix + "canceled"
- RemovedEventType = eventTypePrefix + "removed"
)
type AddedEvent struct {
@@ -36,7 +35,7 @@ func (e *AddedEvent) Payload() any {
}
func (e *AddedEvent) UniqueConstraints() []*eventstore.UniqueConstraint {
- return NewAddUniqueConstraints(e.ClientID, e.DeviceCode, e.UserCode)
+ return NewAddUniqueConstraints(e.DeviceCode, e.UserCode)
}
func NewAddedEvent(
@@ -58,7 +57,9 @@ func NewAddedEvent(
type ApprovedEvent struct {
*eventstore.BaseEvent `json:"-"`
- Subject string
+ Subject string
+ UserAuthMethods []domain.UserAuthMethodType
+ AuthTime time.Time
}
func (e *ApprovedEvent) SetBaseEvent(b *eventstore.BaseEvent) {
@@ -77,12 +78,16 @@ func NewApprovedEvent(
ctx context.Context,
aggregate *eventstore.Aggregate,
subject string,
+ userAuthMethods []domain.UserAuthMethodType,
+ authTime time.Time,
) *ApprovedEvent {
return &ApprovedEvent{
eventstore.NewBaseEventForPush(
ctx, aggregate, ApprovedEventType,
),
subject,
+ userAuthMethods,
+ authTime,
}
}
@@ -107,36 +112,3 @@ func (e *CanceledEvent) UniqueConstraints() []*eventstore.UniqueConstraint {
func NewCanceledEvent(ctx context.Context, aggregate *eventstore.Aggregate, reason domain.DeviceAuthCanceled) *CanceledEvent {
return &CanceledEvent{eventstore.NewBaseEventForPush(ctx, aggregate, CanceledEventType), reason}
}
-
-type RemovedEvent struct {
- *eventstore.BaseEvent `json:"-"`
-
- ClientID string
- DeviceCode string
- UserCode string
-}
-
-func (e *RemovedEvent) SetBaseEvent(b *eventstore.BaseEvent) {
- e.BaseEvent = b
-}
-
-func (e *RemovedEvent) Payload() any {
- return e
-}
-
-func (e *RemovedEvent) UniqueConstraints() []*eventstore.UniqueConstraint {
- return NewRemoveUniqueConstraints(e.ClientID, e.DeviceCode, e.UserCode)
-}
-
-func NewRemovedEvent(
- ctx context.Context,
- aggregate *eventstore.Aggregate,
- clientID, deviceCode, userCode string,
-) *RemovedEvent {
- return &RemovedEvent{
- eventstore.NewBaseEventForPush(
- ctx, aggregate, RemovedEventType,
- ),
- clientID, deviceCode, userCode,
- }
-}
diff --git a/internal/repository/deviceauth/eventstore.go b/internal/repository/deviceauth/eventstore.go
new file mode 100644
index 0000000000..6ebdf71b6e
--- /dev/null
+++ b/internal/repository/deviceauth/eventstore.go
@@ -0,0 +1,9 @@
+package deviceauth
+
+import "github.com/zitadel/zitadel/internal/eventstore"
+
+func RegisterEventMappers(es *eventstore.Eventstore) {
+ es.RegisterFilterEventMapper(AggregateType, AddedEventType, eventstore.GenericEventMapper[AddedEvent]).
+ RegisterFilterEventMapper(AggregateType, ApprovedEventType, eventstore.GenericEventMapper[ApprovedEvent]).
+ RegisterFilterEventMapper(AggregateType, CanceledEventType, eventstore.GenericEventMapper[CanceledEvent])
+}
diff --git a/internal/repository/flow/flow.go b/internal/repository/flow/flow.go
index d0c6a20f0c..cd60bd80fd 100644
--- a/internal/repository/flow/flow.go
+++ b/internal/repository/flow/flow.go
@@ -2,8 +2,8 @@ package flow
import (
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -51,7 +51,7 @@ func TriggerActionsSetEventMapper(event eventstore.Event) (eventstore.Event, err
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "FLOW-4n8vs", "unable to unmarshal trigger actions")
+ return nil, zerrors.ThrowInternal(err, "FLOW-4n8vs", "unable to unmarshal trigger actions")
}
return e, nil
@@ -92,7 +92,7 @@ func TriggerActionsCascadeRemovedEventMapper(event eventstore.Event) (eventstore
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "FLOW-4n8vs", "unable to unmarshal trigger actions")
+ return nil, zerrors.ThrowInternal(err, "FLOW-4n8vs", "unable to unmarshal trigger actions")
}
return e, nil
@@ -129,7 +129,7 @@ func FlowClearedEventMapper(event eventstore.Event) (eventstore.Event, error) {
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "FLOW-BHfg2", "unable to unmarshal flow cleared")
+ return nil, zerrors.ThrowInternal(err, "FLOW-BHfg2", "unable to unmarshal flow cleared")
}
return e, nil
diff --git a/internal/repository/idp/apple.go b/internal/repository/idp/apple.go
index f140357c05..9c8004b936 100644
--- a/internal/repository/idp/apple.go
+++ b/internal/repository/idp/apple.go
@@ -2,8 +2,8 @@ package idp
import (
"github.com/zitadel/zitadel/internal/crypto"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type AppleIDPAddedEvent struct {
@@ -58,7 +58,7 @@ func AppleIDPAddedEventMapper(event eventstore.Event) (eventstore.Event, error)
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IDP-Beqss", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "IDP-Beqss", "unable to unmarshal event")
}
return e, nil
@@ -83,7 +83,7 @@ func NewAppleIDPChangedEvent(
changes []AppleIDPChanges,
) (*AppleIDPChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "IDP-SF3h2", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "IDP-SF3h2", "Errors.NoChangesFound")
}
changedEvent := &AppleIDPChangedEvent{
BaseEvent: *base,
@@ -154,7 +154,7 @@ func AppleIDPChangedEventMapper(event eventstore.Event) (eventstore.Event, error
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IDP-NBe1s", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "IDP-NBe1s", "unable to unmarshal event")
}
return e, nil
diff --git a/internal/repository/idp/azuread.go b/internal/repository/idp/azuread.go
index ae7a434a8f..a804070f1a 100644
--- a/internal/repository/idp/azuread.go
+++ b/internal/repository/idp/azuread.go
@@ -2,8 +2,8 @@ package idp
import (
"github.com/zitadel/zitadel/internal/crypto"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type AzureADIDPAddedEvent struct {
@@ -58,7 +58,7 @@ func AzureADIDPAddedEventMapper(event eventstore.Event) (eventstore.Event, error
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IDP-Grh2g", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "IDP-Grh2g", "unable to unmarshal event")
}
return e, nil
@@ -83,7 +83,7 @@ func NewAzureADIDPChangedEvent(
changes []AzureADIDPChanges,
) (*AzureADIDPChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "IDP-BH3dl", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "IDP-BH3dl", "Errors.NoChangesFound")
}
changedEvent := &AzureADIDPChangedEvent{
BaseEvent: *base,
@@ -154,7 +154,7 @@ func AzureADIDPChangedEventMapper(event eventstore.Event) (eventstore.Event, err
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IDP-D3gjzh", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "IDP-D3gjzh", "unable to unmarshal event")
}
return e, nil
diff --git a/internal/repository/idp/github.go b/internal/repository/idp/github.go
index 0b0a902a1d..a146bbc557 100644
--- a/internal/repository/idp/github.go
+++ b/internal/repository/idp/github.go
@@ -2,8 +2,8 @@ package idp
import (
"github.com/zitadel/zitadel/internal/crypto"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type GitHubIDPAddedEvent struct {
@@ -52,7 +52,7 @@ func GitHubIDPAddedEventMapper(event eventstore.Event) (eventstore.Event, error)
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IDP-sdfs3", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "IDP-sdfs3", "unable to unmarshal event")
}
return e, nil
@@ -75,7 +75,7 @@ func NewGitHubIDPChangedEvent(
changes []GitHubIDPChanges,
) (*GitHubIDPChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "IDP-BH3dl", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "IDP-BH3dl", "Errors.NoChangesFound")
}
changedEvent := &GitHubIDPChangedEvent{
BaseEvent: *base,
@@ -133,7 +133,7 @@ func GitHubIDPChangedEventMapper(event eventstore.Event) (eventstore.Event, erro
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IDP-Sfrth", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "IDP-Sfrth", "unable to unmarshal event")
}
return e, nil
@@ -194,7 +194,7 @@ func GitHubEnterpriseIDPAddedEventMapper(event eventstore.Event) (eventstore.Eve
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IDP-sdfs3", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "IDP-sdfs3", "unable to unmarshal event")
}
return e, nil
@@ -220,7 +220,7 @@ func NewGitHubEnterpriseIDPChangedEvent(
changes []GitHubEnterpriseIDPChanges,
) (*GitHubEnterpriseIDPChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "IDP-JHKs9", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "IDP-JHKs9", "Errors.NoChangesFound")
}
changedEvent := &GitHubEnterpriseIDPChangedEvent{
BaseEvent: *base,
@@ -296,7 +296,7 @@ func GitHubEnterpriseIDPChangedEventMapper(event eventstore.Event) (eventstore.E
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IDP-ASf3r", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "IDP-ASf3r", "unable to unmarshal event")
}
return e, nil
diff --git a/internal/repository/idp/gitlab.go b/internal/repository/idp/gitlab.go
index 85cfabc746..e06024aa4b 100644
--- a/internal/repository/idp/gitlab.go
+++ b/internal/repository/idp/gitlab.go
@@ -2,8 +2,8 @@ package idp
import (
"github.com/zitadel/zitadel/internal/crypto"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type GitLabIDPAddedEvent struct {
@@ -52,7 +52,7 @@ func GitLabIDPAddedEventMapper(event eventstore.Event) (eventstore.Event, error)
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IDP-KLewio", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "IDP-KLewio", "unable to unmarshal event")
}
return e, nil
@@ -75,7 +75,7 @@ func NewGitLabIDPChangedEvent(
changes []GitLabIDPChanges,
) (*GitLabIDPChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "IDP-K2gje", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "IDP-K2gje", "Errors.NoChangesFound")
}
changedEvent := &GitLabIDPChangedEvent{
BaseEvent: *base,
@@ -134,7 +134,7 @@ func GitLabIDPChangedEventMapper(event eventstore.Event) (eventstore.Event, erro
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IDP-Sfhjk", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "IDP-Sfhjk", "unable to unmarshal event")
}
return e, nil
@@ -189,7 +189,7 @@ func GitLabSelfHostedIDPAddedEventMapper(event eventstore.Event) (eventstore.Eve
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IDP-S1efv", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "IDP-S1efv", "unable to unmarshal event")
}
return e, nil
@@ -213,7 +213,7 @@ func NewGitLabSelfHostedIDPChangedEvent(
changes []GitLabSelfHostedIDPChanges,
) (*GitLabSelfHostedIDPChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "IDP-Dghj6", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "IDP-Dghj6", "Errors.NoChangesFound")
}
changedEvent := &GitLabSelfHostedIDPChangedEvent{
BaseEvent: *base,
@@ -278,7 +278,7 @@ func GitLabSelfHostedIDPChangedEventMapper(event eventstore.Event) (eventstore.E
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IDP-SFrhj", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "IDP-SFrhj", "unable to unmarshal event")
}
return e, nil
diff --git a/internal/repository/idp/google.go b/internal/repository/idp/google.go
index 3510b27ac7..1a2c64c9a8 100644
--- a/internal/repository/idp/google.go
+++ b/internal/repository/idp/google.go
@@ -2,8 +2,8 @@ package idp
import (
"github.com/zitadel/zitadel/internal/crypto"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type GoogleIDPAddedEvent struct {
@@ -52,7 +52,7 @@ func GoogleIDPAddedEventMapper(event eventstore.Event) (eventstore.Event, error)
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IDP-SAff1", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "IDP-SAff1", "unable to unmarshal event")
}
return e, nil
@@ -75,7 +75,7 @@ func NewGoogleIDPChangedEvent(
changes []GoogleIDPChanges,
) (*GoogleIDPChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "IDP-Dg3qs", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "IDP-Dg3qs", "Errors.NoChangesFound")
}
changedEvent := &GoogleIDPChangedEvent{
BaseEvent: *base,
@@ -133,7 +133,7 @@ func GoogleIDPChangedEventMapper(event eventstore.Event) (eventstore.Event, erro
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IDP-SF3t2", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "IDP-SF3t2", "unable to unmarshal event")
}
return e, nil
diff --git a/internal/repository/idp/idp.go b/internal/repository/idp/idp.go
index 96b2204854..341caebb85 100644
--- a/internal/repository/idp/idp.go
+++ b/internal/repository/idp/idp.go
@@ -1,8 +1,8 @@
package idp
import (
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Options struct {
@@ -86,7 +86,7 @@ func RemovedEventMapper(event eventstore.Event) (eventstore.Event, error) {
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IDP-plSD2", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "IDP-plSD2", "unable to unmarshal event")
}
return e, nil
diff --git a/internal/repository/idp/jwt.go b/internal/repository/idp/jwt.go
index 786d4a62f7..7fe82e7c0a 100644
--- a/internal/repository/idp/jwt.go
+++ b/internal/repository/idp/jwt.go
@@ -1,8 +1,8 @@
package idp
import (
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type JWTIDPAddedEvent struct {
@@ -54,7 +54,7 @@ func JWTIDPAddedEventMapper(event eventstore.Event) (eventstore.Event, error) {
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IDP-Et1dq", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "IDP-Et1dq", "unable to unmarshal event")
}
return e, nil
@@ -78,7 +78,7 @@ func NewJWTIDPChangedEvent(
changes []JWTIDPChanges,
) (*JWTIDPChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "IDP-BH3dl", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "IDP-BH3dl", "Errors.NoChangesFound")
}
changedEvent := &JWTIDPChangedEvent{
BaseEvent: *base,
@@ -143,7 +143,7 @@ func JWTIDPChangedEventMapper(event eventstore.Event) (eventstore.Event, error)
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IDP-D3gjzh", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "IDP-D3gjzh", "unable to unmarshal event")
}
return e, nil
diff --git a/internal/repository/idp/ldap.go b/internal/repository/idp/ldap.go
index bc1b41fb75..5f5bb9ced5 100644
--- a/internal/repository/idp/ldap.go
+++ b/internal/repository/idp/ldap.go
@@ -4,8 +4,8 @@ import (
"time"
"github.com/zitadel/zitadel/internal/crypto"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type LDAPIDPAddedEvent struct {
@@ -178,7 +178,7 @@ func LDAPIDPAddedEventMapper(event eventstore.Event) (eventstore.Event, error) {
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IDP-Dgh42", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "IDP-Dgh42", "unable to unmarshal event")
}
return e, nil
@@ -241,7 +241,7 @@ func NewLDAPIDPChangedEvent(
changes []LDAPIDPChanges,
) (*LDAPIDPChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "IDP-SDf3f", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "IDP-SDf3f", "Errors.NoChangesFound")
}
changedEvent := &LDAPIDPChangedEvent{
BaseEvent: *base,
@@ -342,7 +342,7 @@ func LDAPIDPChangedEventMapper(event eventstore.Event) (eventstore.Event, error)
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IDP-Sfth3", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "IDP-Sfth3", "unable to unmarshal event")
}
return e, nil
diff --git a/internal/repository/idp/oauth.go b/internal/repository/idp/oauth.go
index ce0178f8db..9b9b776082 100644
--- a/internal/repository/idp/oauth.go
+++ b/internal/repository/idp/oauth.go
@@ -2,8 +2,8 @@ package idp
import (
"github.com/zitadel/zitadel/internal/crypto"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type OAuthIDPAddedEvent struct {
@@ -64,7 +64,7 @@ func OAuthIDPAddedEventMapper(event eventstore.Event) (eventstore.Event, error)
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IDP-Et1dq", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "IDP-Et1dq", "unable to unmarshal event")
}
return e, nil
@@ -91,7 +91,7 @@ func NewOAuthIDPChangedEvent(
changes []OAuthIDPChanges,
) (*OAuthIDPChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "IDP-BH3dl", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "IDP-BH3dl", "Errors.NoChangesFound")
}
changedEvent := &OAuthIDPChangedEvent{
BaseEvent: *base,
@@ -173,7 +173,7 @@ func OAuthIDPChangedEventMapper(event eventstore.Event) (eventstore.Event, error
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IDP-SAf3gw", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "IDP-SAf3gw", "unable to unmarshal event")
}
return e, nil
diff --git a/internal/repository/idp/oidc.go b/internal/repository/idp/oidc.go
index 45478dc83d..0970129ceb 100644
--- a/internal/repository/idp/oidc.go
+++ b/internal/repository/idp/oidc.go
@@ -2,8 +2,8 @@ package idp
import (
"github.com/zitadel/zitadel/internal/crypto"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type OIDCIDPAddedEvent struct {
@@ -58,7 +58,7 @@ func OIDCIDPAddedEventMapper(event eventstore.Event) (eventstore.Event, error) {
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IDP-Et1dq", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "IDP-Et1dq", "unable to unmarshal event")
}
return e, nil
@@ -83,7 +83,7 @@ func NewOIDCIDPChangedEvent(
changes []OIDCIDPChanges,
) (*OIDCIDPChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "IDP-BH3dl", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "IDP-BH3dl", "Errors.NoChangesFound")
}
changedEvent := &OIDCIDPChangedEvent{
BaseEvent: *base,
@@ -154,7 +154,7 @@ func OIDCIDPChangedEventMapper(event eventstore.Event) (eventstore.Event, error)
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IDP-D3gjzh", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "IDP-D3gjzh", "unable to unmarshal event")
}
return e, nil
diff --git a/internal/repository/idp/saml.go b/internal/repository/idp/saml.go
index c4205600f4..37534da203 100644
--- a/internal/repository/idp/saml.go
+++ b/internal/repository/idp/saml.go
@@ -2,8 +2,8 @@ package idp
import (
"github.com/zitadel/zitadel/internal/crypto"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type SAMLIDPAddedEvent struct {
@@ -58,7 +58,7 @@ func SAMLIDPAddedEventMapper(event eventstore.Event) (eventstore.Event, error) {
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IDP-v9uajo3k71", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "IDP-v9uajo3k71", "unable to unmarshal event")
}
return e, nil
@@ -83,7 +83,7 @@ func NewSAMLIDPChangedEvent(
changes []SAMLIDPChanges,
) (*SAMLIDPChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "IDP-cz6mnf860t", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "IDP-cz6mnf860t", "Errors.NoChangesFound")
}
changedEvent := &SAMLIDPChangedEvent{
BaseEvent: *base,
@@ -154,7 +154,7 @@ func SAMLIDPChangedEventMapper(event eventstore.Event) (eventstore.Event, error)
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IDP-w1t1824tw5", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "IDP-w1t1824tw5", "unable to unmarshal event")
}
return e, nil
diff --git a/internal/repository/idpconfig/idp_config.go b/internal/repository/idpconfig/idp_config.go
index ca9754ebe7..f6cdc748cd 100644
--- a/internal/repository/idpconfig/idp_config.go
+++ b/internal/repository/idpconfig/idp_config.go
@@ -2,8 +2,8 @@ package idpconfig
import (
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -66,7 +66,7 @@ func IDPConfigAddedEventMapper(event eventstore.Event) (eventstore.Event, error)
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "OIDC-plaBZ", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "OIDC-plaBZ", "unable to unmarshal event")
}
return e, nil
@@ -103,7 +103,7 @@ func NewIDPConfigChangedEvent(
changes []IDPConfigChanges,
) (*IDPConfigChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "IDPCONFIG-Dsg21", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "IDPCONFIG-Dsg21", "Errors.NoChangesFound")
}
changeEvent := &IDPConfigChangedEvent{
BaseEvent: *base,
@@ -143,7 +143,7 @@ func IDPConfigChangedEventMapper(event eventstore.Event) (eventstore.Event, erro
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "OIDC-plaBZ", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "OIDC-plaBZ", "unable to unmarshal event")
}
return e, nil
@@ -181,7 +181,7 @@ func IDPConfigDeactivatedEventMapper(event eventstore.Event) (eventstore.Event,
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "OIDC-plaBZ", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "OIDC-plaBZ", "unable to unmarshal event")
}
return e, nil
@@ -219,7 +219,7 @@ func IDPConfigReactivatedEventMapper(event eventstore.Event) (eventstore.Event,
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "OIDC-plaBZ", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "OIDC-plaBZ", "unable to unmarshal event")
}
return e, nil
@@ -260,7 +260,7 @@ func IDPConfigRemovedEventMapper(event eventstore.Event) (eventstore.Event, erro
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "OIDC-plaBZ", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "OIDC-plaBZ", "unable to unmarshal event")
}
return e, nil
diff --git a/internal/repository/idpconfig/jwt_config.go b/internal/repository/idpconfig/jwt_config.go
index b2c460fdbc..6d6a31e1cc 100644
--- a/internal/repository/idpconfig/jwt_config.go
+++ b/internal/repository/idpconfig/jwt_config.go
@@ -2,8 +2,7 @@ package idpconfig
import (
"github.com/zitadel/zitadel/internal/eventstore"
-
- "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -54,7 +53,7 @@ func JWTConfigAddedEventMapper(event eventstore.Event) (eventstore.Event, error)
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "JWT-m0fwf", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "JWT-m0fwf", "unable to unmarshal event")
}
return e, nil
@@ -85,7 +84,7 @@ func NewJWTConfigChangedEvent(
changes []JWTConfigChanges,
) (*JWTConfigChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "IDPCONFIG-fn93s", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "IDPCONFIG-fn93s", "Errors.NoChangesFound")
}
changeEvent := &JWTConfigChangedEvent{
BaseEvent: *base,
@@ -130,7 +129,7 @@ func JWTConfigChangedEventMapper(event eventstore.Event) (eventstore.Event, erro
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "JWT-fk3fs", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "JWT-fk3fs", "unable to unmarshal event")
}
return e, nil
diff --git a/internal/repository/idpconfig/oidc_config.go b/internal/repository/idpconfig/oidc_config.go
index 36e0136f06..2a3c80ed5a 100644
--- a/internal/repository/idpconfig/oidc_config.go
+++ b/internal/repository/idpconfig/oidc_config.go
@@ -3,8 +3,8 @@ package idpconfig
import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -69,7 +69,7 @@ func OIDCConfigAddedEventMapper(event eventstore.Event) (eventstore.Event, error
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "OIDC-plaBZ", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "OIDC-plaBZ", "unable to unmarshal event")
}
return e, nil
@@ -105,7 +105,7 @@ func NewOIDCConfigChangedEvent(
changes []OIDCConfigChanges,
) (*OIDCConfigChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "IDPCONFIG-ADzr5", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "IDPCONFIG-ADzr5", "Errors.NoChangesFound")
}
changeEvent := &OIDCConfigChangedEvent{
BaseEvent: *base,
@@ -174,7 +174,7 @@ func OIDCConfigChangedEventMapper(event eventstore.Event) (eventstore.Event, err
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "OIDC-plaBZ", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "OIDC-plaBZ", "unable to unmarshal event")
}
return e, nil
diff --git a/internal/repository/idpintent/intent.go b/internal/repository/idpintent/intent.go
index 7a596becb0..9ac1a875cc 100644
--- a/internal/repository/idpintent/intent.go
+++ b/internal/repository/idpintent/intent.go
@@ -5,8 +5,8 @@ import (
"net/url"
"github.com/zitadel/zitadel/internal/crypto"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -60,7 +60,7 @@ func StartedEventMapper(event eventstore.Event) (eventstore.Event, error) {
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IDP-Sf3f1", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "IDP-Sf3f1", "unable to unmarshal event")
}
return e, nil
@@ -118,7 +118,7 @@ func SucceededEventMapper(event eventstore.Event) (eventstore.Event, error) {
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IDP-HBreq", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "IDP-HBreq", "unable to unmarshal event")
}
return e, nil
@@ -173,7 +173,7 @@ func SAMLSucceededEventMapper(event eventstore.Event) (eventstore.Event, error)
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IDP-l4tw23y6lq", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "IDP-l4tw23y6lq", "unable to unmarshal event")
}
return e, nil
@@ -215,7 +215,7 @@ func SAMLRequestEventMapper(event eventstore.Event) (eventstore.Event, error) {
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IDP-l85678vwlf", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "IDP-l85678vwlf", "unable to unmarshal event")
}
return e, nil
@@ -270,7 +270,7 @@ func LDAPSucceededEventMapper(event eventstore.Event) (eventstore.Event, error)
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IDP-HBreq", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "IDP-HBreq", "unable to unmarshal event")
}
return e, nil
@@ -312,7 +312,7 @@ func FailedEventMapper(event eventstore.Event) (eventstore.Event, error) {
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IDP-Sfer3", "unable to unmarshal event")
+ return nil, zerrors.ThrowInternal(err, "IDP-Sfer3", "unable to unmarshal event")
}
return e, nil
diff --git a/internal/repository/instance/domain.go b/internal/repository/instance/domain.go
index 0194bdbc2f..faeb45a71f 100644
--- a/internal/repository/instance/domain.go
+++ b/internal/repository/instance/domain.go
@@ -3,8 +3,8 @@ package instance
import (
"context"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -61,7 +61,7 @@ func DomainAddedEventMapper(event eventstore.Event) (eventstore.Event, error) {
}
err := event.Unmarshal(domainAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "INSTANCE-3noij", "unable to unmarshal instance domain added")
+ return nil, zerrors.ThrowInternal(err, "INSTANCE-3noij", "unable to unmarshal instance domain added")
}
return domainAdded, nil
@@ -98,7 +98,7 @@ func DomainPrimarySetEventMapper(event eventstore.Event) (eventstore.Event, erro
}
err := event.Unmarshal(domainAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "INSTANCE-29jöF", "unable to unmarshal instance domain added")
+ return nil, zerrors.ThrowInternal(err, "INSTANCE-29jöF", "unable to unmarshal instance domain added")
}
return domainAdded, nil
@@ -135,7 +135,7 @@ func DomainRemovedEventMapper(event eventstore.Event) (eventstore.Event, error)
}
err := event.Unmarshal(domainRemoved)
if err != nil {
- return nil, errors.ThrowInternal(err, "INSTANCE-BngB2", "unable to unmarshal instance domain removed")
+ return nil, zerrors.ThrowInternal(err, "INSTANCE-BngB2", "unable to unmarshal instance domain removed")
}
return domainRemoved, nil
diff --git a/internal/repository/instance/event_default_language.go b/internal/repository/instance/event_default_language.go
index 4912664348..237fbb5687 100644
--- a/internal/repository/instance/event_default_language.go
+++ b/internal/repository/instance/event_default_language.go
@@ -5,8 +5,8 @@ import (
"golang.org/x/text/language"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -48,7 +48,7 @@ func DefaultLanguageSetMapper(event eventstore.Event) (eventstore.Event, error)
}
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IAM-3j9fs", "unable to unmarshal default language set")
+ return nil, zerrors.ThrowInternal(err, "IAM-3j9fs", "unable to unmarshal default language set")
}
return e, nil
diff --git a/internal/repository/instance/event_iam_project_set.go b/internal/repository/instance/event_iam_project_set.go
index b2f15fdd3c..2506085a0d 100644
--- a/internal/repository/instance/event_iam_project_set.go
+++ b/internal/repository/instance/event_iam_project_set.go
@@ -3,8 +3,8 @@ package instance
import (
"context"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -47,7 +47,7 @@ func ProjectSetMapper(event eventstore.Event) (eventstore.Event, error) {
}
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IAM-cdFZH", "unable to unmarshal global org set")
+ return nil, zerrors.ThrowInternal(err, "IAM-cdFZH", "unable to unmarshal global org set")
}
return e, nil
@@ -91,7 +91,7 @@ func ConsoleSetMapper(event eventstore.Event) (eventstore.Event, error) {
}
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IAM-cdFZH", "unable to unmarshal console set")
+ return nil, zerrors.ThrowInternal(err, "IAM-cdFZH", "unable to unmarshal console set")
}
return e, nil
diff --git a/internal/repository/instance/event_org_set.go b/internal/repository/instance/event_org_set.go
index 161e317131..a88bfd72e2 100644
--- a/internal/repository/instance/event_org_set.go
+++ b/internal/repository/instance/event_org_set.go
@@ -3,8 +3,8 @@ package instance
import (
"context"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -46,7 +46,7 @@ func DefaultOrgSetMapper(event eventstore.Event) (eventstore.Event, error) {
}
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IAM-cdFZH", "unable to unmarshal default org set")
+ return nil, zerrors.ThrowInternal(err, "IAM-cdFZH", "unable to unmarshal default org set")
}
return e, nil
diff --git a/internal/repository/instance/instance.go b/internal/repository/instance/instance.go
index 8480fd17c5..bd0214075c 100644
--- a/internal/repository/instance/instance.go
+++ b/internal/repository/instance/instance.go
@@ -3,8 +3,8 @@ package instance
import (
"context"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -44,7 +44,7 @@ func InstanceAddedEventMapper(event eventstore.Event) (eventstore.Event, error)
}
err := event.Unmarshal(instanceAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "INSTANCE-s9l3F", "unable to unmarshal instance added")
+ return nil, zerrors.ThrowInternal(err, "INSTANCE-s9l3F", "unable to unmarshal instance added")
}
return instanceAdded, nil
@@ -81,7 +81,7 @@ func InstanceChangedEventMapper(event eventstore.Event) (eventstore.Event, error
}
err := event.Unmarshal(instanceChanged)
if err != nil {
- return nil, errors.ThrowInternal(err, "INSTANCE-3hfo8", "unable to unmarshal instance changed")
+ return nil, zerrors.ThrowInternal(err, "INSTANCE-3hfo8", "unable to unmarshal instance changed")
}
return instanceChanged, nil
diff --git a/internal/repository/instance/oidc_settings.go b/internal/repository/instance/oidc_settings.go
index edef8d2c68..c3829499f8 100644
--- a/internal/repository/instance/oidc_settings.go
+++ b/internal/repository/instance/oidc_settings.go
@@ -4,8 +4,8 @@ import (
"context"
"time"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -58,7 +58,7 @@ func OIDCSettingsAddedEventMapper(event eventstore.Event) (eventstore.Event, err
}
err := event.Unmarshal(oidcSettingsAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "IAM-soiwj", "unable to unmarshal oidc config added")
+ return nil, zerrors.ThrowInternal(err, "IAM-soiwj", "unable to unmarshal oidc config added")
}
return oidcSettingsAdded, nil
@@ -87,7 +87,7 @@ func NewOIDCSettingsChangeEvent(
changes []OIDCSettingsChanges,
) (*OIDCSettingsChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "IAM-dnlwe", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "IAM-dnlwe", "Errors.NoChangesFound")
}
changeEvent := &OIDCSettingsChangedEvent{
BaseEvent: *eventstore.NewBaseEventForPush(
@@ -135,7 +135,7 @@ func OIDCSettingsChangedEventMapper(event eventstore.Event) (eventstore.Event, e
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IAM-f98uf", "unable to unmarshal oidc settings changed")
+ return nil, zerrors.ThrowInternal(err, "IAM-f98uf", "unable to unmarshal oidc settings changed")
}
return e, nil
diff --git a/internal/repository/instance/policy_security.go b/internal/repository/instance/policy_security.go
index 4faeb8eccb..f5627c54ca 100644
--- a/internal/repository/instance/policy_security.go
+++ b/internal/repository/instance/policy_security.go
@@ -3,8 +3,8 @@ package instance
import (
"context"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -25,7 +25,7 @@ func NewSecurityPolicySetEvent(
changes []SecurityPolicyChanges,
) (*SecurityPolicySetEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "POLICY-EWsf3", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "POLICY-EWsf3", "Errors.NoChangesFound")
}
event := &SecurityPolicySetEvent{
BaseEvent: *eventstore.NewBaseEventForPush(
@@ -71,7 +71,7 @@ func SecurityPolicySetEventMapper(event eventstore.Event) (eventstore.Event, err
}
err := event.Unmarshal(securityPolicyAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "IAM-soiwj", "unable to unmarshal oidc config added")
+ return nil, zerrors.ThrowInternal(err, "IAM-soiwj", "unable to unmarshal oidc config added")
}
return securityPolicyAdded, nil
diff --git a/internal/repository/instance/secret_generator.go b/internal/repository/instance/secret_generator.go
index 4af5387c07..08e03df2b1 100644
--- a/internal/repository/instance/secret_generator.go
+++ b/internal/repository/instance/secret_generator.go
@@ -5,8 +5,8 @@ import (
"time"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -83,7 +83,7 @@ func SecretGeneratorAddedEventMapper(event eventstore.Event) (eventstore.Event,
}
err := event.Unmarshal(secretGeneratorAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "IAM-en9f4", "unable to unmarshal secret generator added")
+ return nil, zerrors.ThrowInternal(err, "IAM-en9f4", "unable to unmarshal secret generator added")
}
return secretGeneratorAdded, nil
@@ -116,7 +116,7 @@ func NewSecretGeneratorChangeEvent(
changes []SecretGeneratorChanges,
) (*SecretGeneratorChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "IAM-j2jfw", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "IAM-j2jfw", "Errors.NoChangesFound")
}
changeEvent := &SecretGeneratorChangedEvent{
BaseEvent: *eventstore.NewBaseEventForPush(
@@ -177,7 +177,7 @@ func SecretGeneratorChangedEventMapper(event eventstore.Event) (eventstore.Event
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IAM-2m09e", "unable to unmarshal secret generator changed")
+ return nil, zerrors.ThrowInternal(err, "IAM-2m09e", "unable to unmarshal secret generator changed")
}
return e, nil
@@ -219,7 +219,7 @@ func SecretGeneratorRemovedEventMapper(event eventstore.Event) (eventstore.Event
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IAM-m09ke", "unable to unmarshal secret generator removed")
+ return nil, zerrors.ThrowInternal(err, "IAM-m09ke", "unable to unmarshal secret generator removed")
}
return e, nil
diff --git a/internal/repository/instance/sms.go b/internal/repository/instance/sms.go
index dfa7e83c24..1b79f1d77e 100644
--- a/internal/repository/instance/sms.go
+++ b/internal/repository/instance/sms.go
@@ -4,8 +4,8 @@ import (
"context"
"github.com/zitadel/zitadel/internal/crypto"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -63,7 +63,7 @@ func SMSConfigTwilioAddedEventMapper(event eventstore.Event) (eventstore.Event,
}
err := event.Unmarshal(smsConfigAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "IAM-smwiR", "unable to unmarshal sms config twilio added")
+ return nil, zerrors.ThrowInternal(err, "IAM-smwiR", "unable to unmarshal sms config twilio added")
}
return smsConfigAdded, nil
@@ -84,7 +84,7 @@ func NewSMSConfigTwilioChangedEvent(
changes []SMSConfigTwilioChanges,
) (*SMSConfigTwilioChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "IAM-smn8e", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "IAM-smn8e", "Errors.NoChangesFound")
}
changeEvent := &SMSConfigTwilioChangedEvent{
BaseEvent: *eventstore.NewBaseEventForPush(
@@ -128,7 +128,7 @@ func SMSConfigTwilioChangedEventMapper(event eventstore.Event) (eventstore.Event
}
err := event.Unmarshal(smsConfigChanged)
if err != nil {
- return nil, errors.ThrowInternal(err, "IAM-smwiR", "unable to unmarshal sms config twilio added")
+ return nil, zerrors.ThrowInternal(err, "IAM-smwiR", "unable to unmarshal sms config twilio added")
}
return smsConfigChanged, nil
@@ -172,7 +172,7 @@ func SMSConfigTwilioTokenChangedEventMapper(event eventstore.Event) (eventstore.
}
err := event.Unmarshal(smtpConfigTokenChagned)
if err != nil {
- return nil, errors.ThrowInternal(err, "IAM-fi9Wf", "unable to unmarshal sms config token changed")
+ return nil, zerrors.ThrowInternal(err, "IAM-fi9Wf", "unable to unmarshal sms config token changed")
}
return smtpConfigTokenChagned, nil
@@ -212,7 +212,7 @@ func SMSConfigActivatedEventMapper(event eventstore.Event) (eventstore.Event, er
}
err := event.Unmarshal(smsConfigActivated)
if err != nil {
- return nil, errors.ThrowInternal(err, "IAM-dn92f", "unable to unmarshal sms config twilio activated changed")
+ return nil, zerrors.ThrowInternal(err, "IAM-dn92f", "unable to unmarshal sms config twilio activated changed")
}
return smsConfigActivated, nil
@@ -252,7 +252,7 @@ func SMSConfigDeactivatedEventMapper(event eventstore.Event) (eventstore.Event,
}
err := event.Unmarshal(smsConfigDeactivated)
if err != nil {
- return nil, errors.ThrowInternal(err, "IAM-dn92f", "unable to unmarshal sms config twilio deactivated changed")
+ return nil, zerrors.ThrowInternal(err, "IAM-dn92f", "unable to unmarshal sms config twilio deactivated changed")
}
return smsConfigDeactivated, nil
@@ -292,7 +292,7 @@ func SMSConfigRemovedEventMapper(event eventstore.Event) (eventstore.Event, erro
}
err := event.Unmarshal(smsConfigRemoved)
if err != nil {
- return nil, errors.ThrowInternal(err, "IAM-99iNF", "unable to unmarshal sms config removed")
+ return nil, zerrors.ThrowInternal(err, "IAM-99iNF", "unable to unmarshal sms config removed")
}
return smsConfigRemoved, nil
diff --git a/internal/repository/instance/smtp_config.go b/internal/repository/instance/smtp_config.go
index eccb18dfee..b0da86cd2d 100644
--- a/internal/repository/instance/smtp_config.go
+++ b/internal/repository/instance/smtp_config.go
@@ -4,8 +4,8 @@ import (
"context"
"github.com/zitadel/zitadel/internal/crypto"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -69,7 +69,7 @@ func SMTPConfigAddedEventMapper(event eventstore.Event) (eventstore.Event, error
}
err := event.Unmarshal(smtpConfigAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "IAM-39fks", "unable to unmarshal smtp config added")
+ return nil, zerrors.ThrowInternal(err, "IAM-39fks", "unable to unmarshal smtp config added")
}
return smtpConfigAdded, nil
@@ -100,7 +100,7 @@ func NewSMTPConfigChangeEvent(
changes []SMTPConfigChanges,
) (*SMTPConfigChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "IAM-o0pWf", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "IAM-o0pWf", "Errors.NoChangesFound")
}
changeEvent := &SMTPConfigChangedEvent{
BaseEvent: *eventstore.NewBaseEventForPush(
@@ -160,7 +160,7 @@ func SMTPConfigChangedEventMapper(event eventstore.Event) (eventstore.Event, err
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "IAM-m09oo", "unable to unmarshal smtp changed")
+ return nil, zerrors.ThrowInternal(err, "IAM-m09oo", "unable to unmarshal smtp changed")
}
return e, nil
@@ -201,7 +201,7 @@ func SMTPConfigPasswordChangedEventMapper(event eventstore.Event) (eventstore.Ev
}
err := event.Unmarshal(smtpConfigPasswordChagned)
if err != nil {
- return nil, errors.ThrowInternal(err, "IAM-99iNF", "unable to unmarshal smtp config password changed")
+ return nil, zerrors.ThrowInternal(err, "IAM-99iNF", "unable to unmarshal smtp config password changed")
}
return smtpConfigPasswordChagned, nil
@@ -238,7 +238,7 @@ func SMTPConfigRemovedEventMapper(event eventstore.Event) (eventstore.Event, err
}
err := event.Unmarshal(smtpConfigRemoved)
if err != nil {
- return nil, errors.ThrowInternal(err, "IAM-DVw1s", "unable to unmarshal smtp config removed")
+ return nil, zerrors.ThrowInternal(err, "IAM-DVw1s", "unable to unmarshal smtp config removed")
}
return smtpConfigRemoved, nil
diff --git a/internal/repository/keypair/certificate.go b/internal/repository/keypair/certificate.go
index 9a49ccc7d0..2fd9a62d6a 100644
--- a/internal/repository/keypair/certificate.go
+++ b/internal/repository/keypair/certificate.go
@@ -5,8 +5,8 @@ import (
"time"
"github.com/zitadel/zitadel/internal/crypto"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -52,7 +52,7 @@ func AddedCertificateEventMapper(event eventstore.Event) (eventstore.Event, erro
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "KEY-4n9vs", "unable to unmarshal certificate added")
+ return nil, zerrors.ThrowInternal(err, "KEY-4n9vs", "unable to unmarshal certificate added")
}
return e, nil
diff --git a/internal/repository/keypair/key_pair.go b/internal/repository/keypair/key_pair.go
index 99b57555d5..8bf2e77080 100644
--- a/internal/repository/keypair/key_pair.go
+++ b/internal/repository/keypair/key_pair.go
@@ -6,8 +6,8 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -72,7 +72,7 @@ func AddedEventMapper(event eventstore.Event) (eventstore.Event, error) {
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "KEY-4n8vs", "unable to unmarshal key pair added")
+ return nil, zerrors.ThrowInternal(err, "KEY-4n8vs", "unable to unmarshal key pair added")
}
return e, nil
diff --git a/internal/repository/member/events.go b/internal/repository/member/events.go
index 3ead301f0c..0c98b46a41 100644
--- a/internal/repository/member/events.go
+++ b/internal/repository/member/events.go
@@ -3,8 +3,8 @@ package member
import (
"fmt"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -64,7 +64,7 @@ func MemberAddedEventMapper(event eventstore.Event) (eventstore.Event, error) {
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "POLIC-puqv4", "unable to unmarshal label policy")
+ return nil, zerrors.ThrowInternal(err, "POLIC-puqv4", "unable to unmarshal label policy")
}
return e, nil
@@ -104,7 +104,7 @@ func ChangedEventMapper(event eventstore.Event) (eventstore.Event, error) {
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "POLIC-puqv4", "unable to unmarshal label policy")
+ return nil, zerrors.ThrowInternal(err, "POLIC-puqv4", "unable to unmarshal label policy")
}
return e, nil
@@ -142,7 +142,7 @@ func RemovedEventMapper(event eventstore.Event) (eventstore.Event, error) {
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "MEMBER-Ep4ip", "unable to unmarshal label policy")
+ return nil, zerrors.ThrowInternal(err, "MEMBER-Ep4ip", "unable to unmarshal label policy")
}
return e, nil
@@ -180,7 +180,7 @@ func CascadeRemovedEventMapper(event eventstore.Event) (eventstore.Event, error)
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "MEMBER-3j9sf", "unable to unmarshal label policy")
+ return nil, zerrors.ThrowInternal(err, "MEMBER-3j9sf", "unable to unmarshal label policy")
}
return e, nil
diff --git a/internal/repository/metadata/metadata.go b/internal/repository/metadata/metadata.go
index 7026badb1a..2e4a3c11c0 100644
--- a/internal/repository/metadata/metadata.go
+++ b/internal/repository/metadata/metadata.go
@@ -1,8 +1,8 @@
package metadata
import (
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -45,7 +45,7 @@ func SetEventMapper(event eventstore.Event) (eventstore.Event, error) {
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "META-3n9fs", "unable to unmarshal metadata set")
+ return nil, zerrors.ThrowInternal(err, "META-3n9fs", "unable to unmarshal metadata set")
}
return e, nil
@@ -83,7 +83,7 @@ func RemovedEventMapper(event eventstore.Event) (eventstore.Event, error) {
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "META-2m99f", "unable to unmarshal metadata removed")
+ return nil, zerrors.ThrowInternal(err, "META-2m99f", "unable to unmarshal metadata removed")
}
return e, nil
diff --git a/internal/repository/org/domain.go b/internal/repository/org/domain.go
index 3489642121..5987e9c3c7 100644
--- a/internal/repository/org/domain.go
+++ b/internal/repository/org/domain.go
@@ -5,8 +5,8 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -64,7 +64,7 @@ func DomainAddedEventMapper(event eventstore.Event) (eventstore.Event, error) {
}
err := event.Unmarshal(orgDomainAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "ORG-GBr52", "unable to unmarshal org domain added")
+ return nil, zerrors.ThrowInternal(err, "ORG-GBr52", "unable to unmarshal org domain added")
}
return orgDomainAdded, nil
@@ -110,7 +110,7 @@ func DomainVerificationAddedEventMapper(event eventstore.Event) (eventstore.Even
}
err := event.Unmarshal(orgDomainVerificationAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "ORG-NRN32", "unable to unmarshal org domain verification added")
+ return nil, zerrors.ThrowInternal(err, "ORG-NRN32", "unable to unmarshal org domain verification added")
}
return orgDomainVerificationAdded, nil
@@ -147,7 +147,7 @@ func DomainVerificationFailedEventMapper(event eventstore.Event) (eventstore.Eve
}
err := event.Unmarshal(orgDomainVerificationFailed)
if err != nil {
- return nil, errors.ThrowInternal(err, "ORG-Bhm37", "unable to unmarshal org domain verification failed")
+ return nil, zerrors.ThrowInternal(err, "ORG-Bhm37", "unable to unmarshal org domain verification failed")
}
return orgDomainVerificationFailed, nil
@@ -184,7 +184,7 @@ func DomainVerifiedEventMapper(event eventstore.Event) (eventstore.Event, error)
}
err := event.Unmarshal(orgDomainVerified)
if err != nil {
- return nil, errors.ThrowInternal(err, "ORG-BFSwt", "unable to unmarshal org domain verified")
+ return nil, zerrors.ThrowInternal(err, "ORG-BFSwt", "unable to unmarshal org domain verified")
}
return orgDomainVerified, nil
@@ -221,7 +221,7 @@ func DomainPrimarySetEventMapper(event eventstore.Event) (eventstore.Event, erro
}
err := event.Unmarshal(orgDomainPrimarySet)
if err != nil {
- return nil, errors.ThrowInternal(err, "ORG-N5787", "unable to unmarshal org domain primary set")
+ return nil, zerrors.ThrowInternal(err, "ORG-N5787", "unable to unmarshal org domain primary set")
}
return orgDomainPrimarySet, nil
@@ -263,7 +263,7 @@ func DomainRemovedEventMapper(event eventstore.Event) (eventstore.Event, error)
}
err := event.Unmarshal(orgDomainRemoved)
if err != nil {
- return nil, errors.ThrowInternal(err, "ORG-BngB2", "unable to unmarshal org domain removed")
+ return nil, zerrors.ThrowInternal(err, "ORG-BngB2", "unable to unmarshal org domain removed")
}
return orgDomainRemoved, nil
diff --git a/internal/repository/org/eventstore.go b/internal/repository/org/eventstore.go
index 79d409e1c7..ca24c58f96 100644
--- a/internal/repository/org/eventstore.go
+++ b/internal/repository/org/eventstore.go
@@ -2,7 +2,6 @@ package org
import (
"github.com/zitadel/zitadel/internal/eventstore"
- "github.com/zitadel/zitadel/internal/repository/deviceauth"
)
func RegisterEventMappers(es *eventstore.Eventstore) {
@@ -114,9 +113,5 @@ func RegisterEventMappers(es *eventstore.Eventstore) {
RegisterFilterEventMapper(AggregateType, MetadataRemovedAllType, MetadataRemovedAllEventMapper).
RegisterFilterEventMapper(AggregateType, NotificationPolicyAddedEventType, NotificationPolicyAddedEventMapper).
RegisterFilterEventMapper(AggregateType, NotificationPolicyChangedEventType, NotificationPolicyChangedEventMapper).
- RegisterFilterEventMapper(AggregateType, NotificationPolicyRemovedEventType, NotificationPolicyRemovedEventMapper).
- RegisterFilterEventMapper(AggregateType, deviceauth.AddedEventType, eventstore.GenericEventMapper[deviceauth.AddedEvent]).
- RegisterFilterEventMapper(AggregateType, deviceauth.ApprovedEventType, eventstore.GenericEventMapper[deviceauth.ApprovedEvent]).
- RegisterFilterEventMapper(AggregateType, deviceauth.CanceledEventType, eventstore.GenericEventMapper[deviceauth.CanceledEvent]).
- RegisterFilterEventMapper(AggregateType, deviceauth.RemovedEventType, eventstore.GenericEventMapper[deviceauth.RemovedEvent])
+ RegisterFilterEventMapper(AggregateType, NotificationPolicyRemovedEventType, NotificationPolicyRemovedEventMapper)
}
diff --git a/internal/repository/org/org.go b/internal/repository/org/org.go
index 66bbc59a44..af19fb18f4 100644
--- a/internal/repository/org/org.go
+++ b/internal/repository/org/org.go
@@ -4,10 +4,10 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/project"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -63,7 +63,7 @@ func OrgAddedEventMapper(event eventstore.Event) (eventstore.Event, error) {
}
err := event.Unmarshal(orgAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "ORG-Bren2", "unable to unmarshal org added")
+ return nil, zerrors.ThrowInternal(err, "ORG-Bren2", "unable to unmarshal org added")
}
return orgAdded, nil
@@ -105,7 +105,7 @@ func OrgChangedEventMapper(event eventstore.Event) (eventstore.Event, error) {
}
err := event.Unmarshal(orgChanged)
if err != nil {
- return nil, errors.ThrowInternal(err, "ORG-Bren2", "unable to unmarshal org added")
+ return nil, zerrors.ThrowInternal(err, "ORG-Bren2", "unable to unmarshal org added")
}
return orgChanged, nil
diff --git a/internal/repository/policy/custom_text.go b/internal/repository/policy/custom_text.go
index 4f3272bbee..9046977f55 100644
--- a/internal/repository/policy/custom_text.go
+++ b/internal/repository/policy/custom_text.go
@@ -3,8 +3,8 @@ package policy
import (
"golang.org/x/text/language"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -54,7 +54,7 @@ func CustomTextSetEventMapper(event eventstore.Event) (eventstore.Event, error)
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "TEXT-28dwe", "unable to unmarshal custom text")
+ return nil, zerrors.ThrowInternal(err, "TEXT-28dwe", "unable to unmarshal custom text")
}
return e, nil
@@ -92,7 +92,7 @@ func CustomTextRemovedEventMapper(event eventstore.Event) (eventstore.Event, err
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "TEXT-28sMf", "unable to unmarshal custom text removed")
+ return nil, zerrors.ThrowInternal(err, "TEXT-28sMf", "unable to unmarshal custom text removed")
}
return e, nil
@@ -128,7 +128,7 @@ func CustomTextTemplateRemovedEventMapper(event eventstore.Event) (eventstore.Ev
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "TEXT-mKKRs", "unable to unmarshal custom text message removed")
+ return nil, zerrors.ThrowInternal(err, "TEXT-mKKRs", "unable to unmarshal custom text message removed")
}
return e, nil
diff --git a/internal/repository/policy/label.go b/internal/repository/policy/label.go
index d3025b5ba0..b004b2377d 100644
--- a/internal/repository/policy/label.go
+++ b/internal/repository/policy/label.go
@@ -2,9 +2,9 @@ package policy
import (
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/asset"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -95,7 +95,7 @@ func LabelPolicyAddedEventMapper(event eventstore.Event) (eventstore.Event, erro
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "POLIC-puqv4", "unable to unmarshal label policy")
+ return nil, zerrors.ThrowInternal(err, "POLIC-puqv4", "unable to unmarshal label policy")
}
return e, nil
@@ -131,7 +131,7 @@ func NewLabelPolicyChangedEvent(
changes []LabelPolicyChanges,
) (*LabelPolicyChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "POLICY-Asfd3", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "POLICY-Asfd3", "Errors.NoChangesFound")
}
changeEvent := &LabelPolicyChangedEvent{
BaseEvent: *base,
@@ -223,7 +223,7 @@ func LabelPolicyChangedEventMapper(event eventstore.Event) (eventstore.Event, er
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "POLIC-qhfFb", "unable to unmarshal label policy")
+ return nil, zerrors.ThrowInternal(err, "POLIC-qhfFb", "unable to unmarshal label policy")
}
return e, nil
diff --git a/internal/repository/policy/login.go b/internal/repository/policy/login.go
index f5e3618552..06def120bd 100644
--- a/internal/repository/policy/login.go
+++ b/internal/repository/policy/login.go
@@ -4,8 +4,8 @@ import (
"time"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -94,7 +94,7 @@ func LoginPolicyAddedEventMapper(event eventstore.Event) (eventstore.Event, erro
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "POLIC-nWndT", "unable to unmarshal policy")
+ return nil, zerrors.ThrowInternal(err, "POLIC-nWndT", "unable to unmarshal policy")
}
return e, nil
@@ -135,7 +135,7 @@ func NewLoginPolicyChangedEvent(
changes []LoginPolicyChanges,
) (*LoginPolicyChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "POLICY-ADg34", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "POLICY-ADg34", "Errors.NoChangesFound")
}
changeEvent := &LoginPolicyChangedEvent{
BaseEvent: *base,
@@ -257,7 +257,7 @@ func LoginPolicyChangedEventMapper(event eventstore.Event) (eventstore.Event, er
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "POLIC-ehssl", "unable to unmarshal policy")
+ return nil, zerrors.ThrowInternal(err, "POLIC-ehssl", "unable to unmarshal policy")
}
return e, nil
diff --git a/internal/repository/policy/mail_template.go b/internal/repository/policy/mail_template.go
index 3b02c0f4fc..19af380b81 100644
--- a/internal/repository/policy/mail_template.go
+++ b/internal/repository/policy/mail_template.go
@@ -1,8 +1,8 @@
package policy
import (
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -44,7 +44,7 @@ func MailTemplateAddedEventMapper(event eventstore.Event) (eventstore.Event, err
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "POLIC-5m9if", "unable to unmarshal mail template")
+ return nil, zerrors.ThrowInternal(err, "POLIC-5m9if", "unable to unmarshal mail template")
}
return e, nil
@@ -69,7 +69,7 @@ func NewMailTemplateChangedEvent(
changes []MailTemplateChanges,
) (*MailTemplateChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "POLICY-m9osd", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "POLICY-m9osd", "Errors.NoChangesFound")
}
changeEvent := &MailTemplateChangedEvent{
BaseEvent: *base,
@@ -95,7 +95,7 @@ func MailTemplateChangedEventMapper(event eventstore.Event) (eventstore.Event, e
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "POLIC-3uu8K", "unable to unmarshal mail template policy")
+ return nil, zerrors.ThrowInternal(err, "POLIC-3uu8K", "unable to unmarshal mail template policy")
}
return e, nil
diff --git a/internal/repository/policy/mail_text.go b/internal/repository/policy/mail_text.go
index 04e3363ab9..98ab936365 100644
--- a/internal/repository/policy/mail_text.go
+++ b/internal/repository/policy/mail_text.go
@@ -3,8 +3,8 @@ package policy
import (
"fmt"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -80,7 +80,7 @@ func MailTextAddedEventMapper(event eventstore.Event) (eventstore.Event, error)
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "POLIC-5m9if", "unable to unmarshal mail text policy")
+ return nil, zerrors.ThrowInternal(err, "POLIC-5m9if", "unable to unmarshal mail text policy")
}
return e, nil
@@ -114,7 +114,7 @@ func NewMailTextChangedEvent(
changes []MailTextChanges,
) (*MailTextChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "POLICY-m9osd", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "POLICY-m9osd", "Errors.NoChangesFound")
}
changeEvent := &MailTextChangedEvent{
BaseEvent: *base,
@@ -172,7 +172,7 @@ func MailTextChangedEventMapper(event eventstore.Event) (eventstore.Event, error
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "POLIC-bn88u", "unable to unmarshal mail text policy")
+ return nil, zerrors.ThrowInternal(err, "POLIC-bn88u", "unable to unmarshal mail text policy")
}
return e, nil
diff --git a/internal/repository/policy/policy_domain.go b/internal/repository/policy/policy_domain.go
index 607fa5e4a5..bd1d9c1b7e 100644
--- a/internal/repository/policy/policy_domain.go
+++ b/internal/repository/policy/policy_domain.go
@@ -1,8 +1,8 @@
package policy
import (
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -49,7 +49,7 @@ func DomainPolicyAddedEventMapper(event eventstore.Event) (eventstore.Event, err
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "POLIC-TvSmA", "unable to unmarshal policy")
+ return nil, zerrors.ThrowInternal(err, "POLIC-TvSmA", "unable to unmarshal policy")
}
return e, nil
@@ -76,7 +76,7 @@ func NewDomainPolicyChangedEvent(
changes []DomainPolicyChanges,
) (*DomainPolicyChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "POLICY-DAf3h", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "POLICY-DAf3h", "Errors.NoChangesFound")
}
changeEvent := &DomainPolicyChangedEvent{
BaseEvent: *base,
@@ -114,7 +114,7 @@ func DomainPolicyChangedEventMapper(event eventstore.Event) (eventstore.Event, e
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "POLIC-0Pl9d", "unable to unmarshal policy")
+ return nil, zerrors.ThrowInternal(err, "POLIC-0Pl9d", "unable to unmarshal policy")
}
return e, nil
diff --git a/internal/repository/policy/policy_login_factors.go b/internal/repository/policy/policy_login_factors.go
index a2749eb5fd..0e9625f228 100644
--- a/internal/repository/policy/policy_login_factors.go
+++ b/internal/repository/policy/policy_login_factors.go
@@ -2,8 +2,8 @@ package policy
import (
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -39,7 +39,7 @@ func SecondFactorAddedEventMapper(event eventstore.Event) (eventstore.Event, err
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "POLIC-Lp0dE", "unable to unmarshal policy")
+ return nil, zerrors.ThrowInternal(err, "POLIC-Lp0dE", "unable to unmarshal policy")
}
return e, nil
@@ -75,7 +75,7 @@ func SecondFactorRemovedEventMapper(event eventstore.Event) (eventstore.Event, e
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "POLIC-5M9gd", "unable to unmarshal policy")
+ return nil, zerrors.ThrowInternal(err, "POLIC-5M9gd", "unable to unmarshal policy")
}
return e, nil
@@ -112,7 +112,7 @@ func MultiFactorAddedEventMapper(event eventstore.Event) (eventstore.Event, erro
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "POLIC-5Ms90", "unable to unmarshal policy")
+ return nil, zerrors.ThrowInternal(err, "POLIC-5Ms90", "unable to unmarshal policy")
}
return e, nil
@@ -148,7 +148,7 @@ func MultiFactorRemovedEventMapper(event eventstore.Event) (eventstore.Event, er
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "POLIC-1N8sd", "unable to unmarshal policy")
+ return nil, zerrors.ThrowInternal(err, "POLIC-1N8sd", "unable to unmarshal policy")
}
return e, nil
diff --git a/internal/repository/policy/policy_login_identity_provider.go b/internal/repository/policy/policy_login_identity_provider.go
index 2b5ff578cf..37166f6bde 100644
--- a/internal/repository/policy/policy_login_identity_provider.go
+++ b/internal/repository/policy/policy_login_identity_provider.go
@@ -2,8 +2,8 @@ package policy
import (
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -48,7 +48,7 @@ func IdentityProviderAddedEventMapper(event eventstore.Event) (eventstore.Event,
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "PROVI-bfNnp", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "PROVI-bfNnp", "Errors.Internal")
}
return e, nil
@@ -85,7 +85,7 @@ func IdentityProviderRemovedEventMapper(event eventstore.Event) (eventstore.Even
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "PROVI-6H0KQ", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "PROVI-6H0KQ", "Errors.Internal")
}
return e, nil
@@ -122,7 +122,7 @@ func IdentityProviderCascadeRemovedEventMapper(event eventstore.Event) (eventsto
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "PROVI-7M9fs", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "PROVI-7M9fs", "Errors.Internal")
}
return e, nil
diff --git a/internal/repository/policy/policy_notification.go b/internal/repository/policy/policy_notification.go
index 3ce617e789..c6f234ef2c 100644
--- a/internal/repository/policy/policy_notification.go
+++ b/internal/repository/policy/policy_notification.go
@@ -1,8 +1,8 @@
package policy
import (
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -42,7 +42,7 @@ func NotificationPolicyAddedEventMapper(event eventstore.Event) (eventstore.Even
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "POLIC-0sp2nios", "unable to unmarshal policy")
+ return nil, zerrors.ThrowInternal(err, "POLIC-0sp2nios", "unable to unmarshal policy")
}
return e, nil
@@ -67,7 +67,7 @@ func NewNotificationPolicyChangedEvent(
changes []NotificationPolicyChanges,
) (*NotificationPolicyChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "POLICY-09sp2m", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "POLICY-09sp2m", "Errors.NoChangesFound")
}
changeEvent := &NotificationPolicyChangedEvent{
BaseEvent: *base,
@@ -93,7 +93,7 @@ func NotificationPolicyChangedEventMapper(event eventstore.Event) (eventstore.Ev
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "POLIC-09s2oss", "unable to unmarshal policy")
+ return nil, zerrors.ThrowInternal(err, "POLIC-09s2oss", "unable to unmarshal policy")
}
return e, nil
diff --git a/internal/repository/policy/policy_password_age.go b/internal/repository/policy/policy_password_age.go
index ee2ea88a3d..b8c5fadb7e 100644
--- a/internal/repository/policy/policy_password_age.go
+++ b/internal/repository/policy/policy_password_age.go
@@ -1,8 +1,8 @@
package policy
import (
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -46,7 +46,7 @@ func PasswordAgePolicyAddedEventMapper(event eventstore.Event) (eventstore.Event
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "POLIC-T3mGp", "unable to unmarshal policy")
+ return nil, zerrors.ThrowInternal(err, "POLIC-T3mGp", "unable to unmarshal policy")
}
return e, nil
@@ -72,7 +72,7 @@ func NewPasswordAgePolicyChangedEvent(
changes []PasswordAgePolicyChanges,
) (*PasswordAgePolicyChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "POLICY-DAgt5", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "POLICY-DAgt5", "Errors.NoChangesFound")
}
changeEvent := &PasswordAgePolicyChangedEvent{
BaseEvent: *base,
@@ -104,7 +104,7 @@ func PasswordAgePolicyChangedEventMapper(event eventstore.Event) (eventstore.Eve
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "POLIC-PqaVq", "unable to unmarshal policy")
+ return nil, zerrors.ThrowInternal(err, "POLIC-PqaVq", "unable to unmarshal policy")
}
return e, nil
diff --git a/internal/repository/policy/policy_password_complexity.go b/internal/repository/policy/policy_password_complexity.go
index 00a35da803..da38774c68 100644
--- a/internal/repository/policy/policy_password_complexity.go
+++ b/internal/repository/policy/policy_password_complexity.go
@@ -1,8 +1,8 @@
package policy
import (
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -54,7 +54,7 @@ func PasswordComplexityPolicyAddedEventMapper(event eventstore.Event) (eventstor
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "POLIC-wYxlM", "unable to unmarshal policy")
+ return nil, zerrors.ThrowInternal(err, "POLIC-wYxlM", "unable to unmarshal policy")
}
return e, nil
@@ -83,7 +83,7 @@ func NewPasswordComplexityPolicyChangedEvent(
changes []PasswordComplexityPolicyChanges,
) (*PasswordComplexityPolicyChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "POLICY-Rdhu3", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "POLICY-Rdhu3", "Errors.NoChangesFound")
}
changeEvent := &PasswordComplexityPolicyChangedEvent{
BaseEvent: *base,
@@ -133,7 +133,7 @@ func PasswordComplexityPolicyChangedEventMapper(event eventstore.Event) (eventst
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "POLIC-zBGB0", "unable to unmarshal policy")
+ return nil, zerrors.ThrowInternal(err, "POLIC-zBGB0", "unable to unmarshal policy")
}
return e, nil
diff --git a/internal/repository/policy/policy_password_lockout.go b/internal/repository/policy/policy_password_lockout.go
index 5e1c1b3984..8ca0737674 100644
--- a/internal/repository/policy/policy_password_lockout.go
+++ b/internal/repository/policy/policy_password_lockout.go
@@ -1,8 +1,8 @@
package policy
import (
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -46,7 +46,7 @@ func LockoutPolicyAddedEventMapper(event eventstore.Event) (eventstore.Event, er
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "POLIC-8XiVd", "unable to unmarshal policy")
+ return nil, zerrors.ThrowInternal(err, "POLIC-8XiVd", "unable to unmarshal policy")
}
return e, nil
@@ -72,7 +72,7 @@ func NewLockoutPolicyChangedEvent(
changes []LockoutPolicyChanges,
) (*LockoutPolicyChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "POLICY-sdgh6", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "POLICY-sdgh6", "Errors.NoChangesFound")
}
changeEvent := &LockoutPolicyChangedEvent{
BaseEvent: *base,
@@ -104,7 +104,7 @@ func LockoutPolicyChangedEventMapper(event eventstore.Event) (eventstore.Event,
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "POLIC-lWGRc", "unable to unmarshal policy")
+ return nil, zerrors.ThrowInternal(err, "POLIC-lWGRc", "unable to unmarshal policy")
}
return e, nil
diff --git a/internal/repository/policy/policy_privacy.go b/internal/repository/policy/policy_privacy.go
index 75782c3cd1..0b674fff64 100644
--- a/internal/repository/policy/policy_privacy.go
+++ b/internal/repository/policy/policy_privacy.go
@@ -2,8 +2,8 @@ package policy
import (
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -51,7 +51,7 @@ func PrivacyPolicyAddedEventMapper(event eventstore.Event) (eventstore.Event, er
}
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "POLIC-2k0fs", "unable to unmarshal policy")
+ return nil, zerrors.ThrowInternal(err, "POLIC-2k0fs", "unable to unmarshal policy")
}
return e, nil
@@ -79,7 +79,7 @@ func NewPrivacyPolicyChangedEvent(
changes []PrivacyPolicyChanges,
) (*PrivacyPolicyChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "POLICY-PPo0s", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "POLICY-PPo0s", "Errors.NoChangesFound")
}
changeEvent := &PrivacyPolicyChangedEvent{
BaseEvent: *base,
@@ -123,7 +123,7 @@ func PrivacyPolicyChangedEventMapper(event eventstore.Event) (eventstore.Event,
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "POLIC-22nf9", "unable to unmarshal policy")
+ return nil, zerrors.ThrowInternal(err, "POLIC-22nf9", "unable to unmarshal policy")
}
return e, nil
diff --git a/internal/repository/project/api_config.go b/internal/repository/project/api_config.go
index 4f24589ac4..7da3103125 100644
--- a/internal/repository/project/api_config.go
+++ b/internal/repository/project/api_config.go
@@ -5,8 +5,8 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -81,7 +81,7 @@ func APIConfigAddedEventMapper(event eventstore.Event) (eventstore.Event, error)
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "API-BFd15", "unable to unmarshal api config")
+ return nil, zerrors.ThrowInternal(err, "API-BFd15", "unable to unmarshal api config")
}
return e, nil
@@ -110,7 +110,7 @@ func NewAPIConfigChangedEvent(
changes []APIConfigChanges,
) (*APIConfigChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "API-i8idç", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "API-i8idç", "Errors.NoChangesFound")
}
changeEvent := &APIConfigChangedEvent{
@@ -142,7 +142,7 @@ func APIConfigChangedEventMapper(event eventstore.Event) (eventstore.Event, erro
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "API-BFd15", "unable to unmarshal api config")
+ return nil, zerrors.ThrowInternal(err, "API-BFd15", "unable to unmarshal api config")
}
return e, nil
@@ -187,7 +187,7 @@ func APIConfigSecretChangedEventMapper(event eventstore.Event) (eventstore.Event
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "API-M893d", "unable to unmarshal api config")
+ return nil, zerrors.ThrowInternal(err, "API-M893d", "unable to unmarshal api config")
}
return e, nil
@@ -229,7 +229,7 @@ func APIConfigSecretCheckSucceededEventMapper(event eventstore.Event) (eventstor
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "API-837gV", "unable to unmarshal api config")
+ return nil, zerrors.ThrowInternal(err, "API-837gV", "unable to unmarshal api config")
}
return e, nil
@@ -271,7 +271,7 @@ func APIConfigSecretCheckFailedEventMapper(event eventstore.Event) (eventstore.E
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "API-987g%", "unable to unmarshal api config")
+ return nil, zerrors.ThrowInternal(err, "API-987g%", "unable to unmarshal api config")
}
return e, nil
diff --git a/internal/repository/project/application.go b/internal/repository/project/application.go
index be2a944ef6..cb6dea1566 100644
--- a/internal/repository/project/application.go
+++ b/internal/repository/project/application.go
@@ -4,8 +4,8 @@ import (
"context"
"fmt"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -70,7 +70,7 @@ func ApplicationAddedEventMapper(event eventstore.Event) (eventstore.Event, erro
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "APPLICATION-Nffg2", "unable to unmarshal application")
+ return nil, zerrors.ThrowInternal(err, "APPLICATION-Nffg2", "unable to unmarshal application")
}
return e, nil
@@ -121,7 +121,7 @@ func ApplicationChangedEventMapper(event eventstore.Event) (eventstore.Event, er
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "APPLICATION-9l0cs", "unable to unmarshal application")
+ return nil, zerrors.ThrowInternal(err, "APPLICATION-9l0cs", "unable to unmarshal application")
}
return e, nil
@@ -163,7 +163,7 @@ func ApplicationDeactivatedEventMapper(event eventstore.Event) (eventstore.Event
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "APPLICATION-0p9fB", "unable to unmarshal application")
+ return nil, zerrors.ThrowInternal(err, "APPLICATION-0p9fB", "unable to unmarshal application")
}
return e, nil
@@ -205,7 +205,7 @@ func ApplicationReactivatedEventMapper(event eventstore.Event) (eventstore.Event
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "APPLICATION-1m9e3", "unable to unmarshal application")
+ return nil, zerrors.ThrowInternal(err, "APPLICATION-1m9e3", "unable to unmarshal application")
}
return e, nil
@@ -257,7 +257,7 @@ func ApplicationRemovedEventMapper(event eventstore.Event) (eventstore.Event, er
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "APPLICATION-1m9e3", "unable to unmarshal application")
+ return nil, zerrors.ThrowInternal(err, "APPLICATION-1m9e3", "unable to unmarshal application")
}
return e, nil
diff --git a/internal/repository/project/grant.go b/internal/repository/project/grant.go
index e9c60b4dab..486a62d924 100644
--- a/internal/repository/project/grant.go
+++ b/internal/repository/project/grant.go
@@ -4,8 +4,8 @@ import (
"context"
"fmt"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -74,7 +74,7 @@ func GrantAddedEventMapper(event eventstore.Event) (eventstore.Event, error) {
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "PROJECT-mL0vs", "unable to unmarshal project grant")
+ return nil, zerrors.ThrowInternal(err, "PROJECT-mL0vs", "unable to unmarshal project grant")
}
return e, nil
@@ -119,7 +119,7 @@ func GrantChangedEventMapper(event eventstore.Event) (eventstore.Event, error) {
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "PROJECT-mL0vs", "unable to unmarshal project grant")
+ return nil, zerrors.ThrowInternal(err, "PROJECT-mL0vs", "unable to unmarshal project grant")
}
return e, nil
@@ -164,7 +164,7 @@ func GrantCascadeChangedEventMapper(event eventstore.Event) (eventstore.Event, e
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "PROJECT-9o0se", "unable to unmarshal project grant")
+ return nil, zerrors.ThrowInternal(err, "PROJECT-9o0se", "unable to unmarshal project grant")
}
return e, nil
@@ -206,7 +206,7 @@ func GrantDeactivateEventMapper(event eventstore.Event) (eventstore.Event, error
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "PROJECT-9o0se", "unable to unmarshal project grant")
+ return nil, zerrors.ThrowInternal(err, "PROJECT-9o0se", "unable to unmarshal project grant")
}
return e, nil
@@ -248,7 +248,7 @@ func GrantReactivatedEventMapper(event eventstore.Event) (eventstore.Event, erro
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "PROJECT-78f7D", "unable to unmarshal project grant")
+ return nil, zerrors.ThrowInternal(err, "PROJECT-78f7D", "unable to unmarshal project grant")
}
return e, nil
@@ -293,7 +293,7 @@ func GrantRemovedEventMapper(event eventstore.Event) (eventstore.Event, error) {
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "PROJECT-28jM8", "unable to unmarshal project grant")
+ return nil, zerrors.ThrowInternal(err, "PROJECT-28jM8", "unable to unmarshal project grant")
}
return e, nil
diff --git a/internal/repository/project/grant_member.go b/internal/repository/project/grant_member.go
index 5e5e700d94..0e7947c869 100644
--- a/internal/repository/project/grant_member.go
+++ b/internal/repository/project/grant_member.go
@@ -4,9 +4,9 @@ import (
"context"
"fmt"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/member"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -73,7 +73,7 @@ func GrantMemberAddedEventMapper(event eventstore.Event) (eventstore.Event, erro
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "PROJECT-9f0sf", "unable to unmarshal label policy")
+ return nil, zerrors.ThrowInternal(err, "PROJECT-9f0sf", "unable to unmarshal label policy")
}
return e, nil
@@ -121,7 +121,7 @@ func GrantMemberChangedEventMapper(event eventstore.Event) (eventstore.Event, er
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "PROJECT-39fi8", "unable to unmarshal label policy")
+ return nil, zerrors.ThrowInternal(err, "PROJECT-39fi8", "unable to unmarshal label policy")
}
return e, nil
@@ -166,7 +166,7 @@ func GrantMemberRemovedEventMapper(event eventstore.Event) (eventstore.Event, er
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "PROJECT-173fM", "unable to unmarshal label policy")
+ return nil, zerrors.ThrowInternal(err, "PROJECT-173fM", "unable to unmarshal label policy")
}
return e, nil
@@ -211,7 +211,7 @@ func GrantMemberCascadeRemovedEventMapper(event eventstore.Event) (eventstore.Ev
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "PROJECT-3kfs3", "unable to unmarshal label policy")
+ return nil, zerrors.ThrowInternal(err, "PROJECT-3kfs3", "unable to unmarshal label policy")
}
return e, nil
diff --git a/internal/repository/project/key.go b/internal/repository/project/key.go
index 4eb03c8ddc..a9f85d1c24 100644
--- a/internal/repository/project/key.go
+++ b/internal/repository/project/key.go
@@ -5,8 +5,8 @@ import (
"time"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -66,7 +66,7 @@ func ApplicationKeyAddedEventMapper(event eventstore.Event) (eventstore.Event, e
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "API-BFd15", "unable to unmarshal api config")
+ return nil, zerrors.ThrowInternal(err, "API-BFd15", "unable to unmarshal api config")
}
return e, nil
@@ -107,7 +107,7 @@ func ApplicationKeyRemovedEventMapper(event eventstore.Event) (eventstore.Event,
}
err := event.Unmarshal(applicationKeyRemoved)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-cjLeA", "unable to unmarshal application key removed")
+ return nil, zerrors.ThrowInternal(err, "USER-cjLeA", "unable to unmarshal application key removed")
}
return applicationKeyRemoved, nil
diff --git a/internal/repository/project/oidc_config.go b/internal/repository/project/oidc_config.go
index 977af91ea6..5534bd571e 100644
--- a/internal/repository/project/oidc_config.go
+++ b/internal/repository/project/oidc_config.go
@@ -6,8 +6,8 @@ import (
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -190,7 +190,7 @@ func OIDCConfigAddedEventMapper(event eventstore.Event) (eventstore.Event, error
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "OIDC-BFd15", "unable to unmarshal oidc config")
+ return nil, zerrors.ThrowInternal(err, "OIDC-BFd15", "unable to unmarshal oidc config")
}
return e, nil
@@ -232,7 +232,7 @@ func NewOIDCConfigChangedEvent(
changes []OIDCConfigChanges,
) (*OIDCConfigChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "OIDC-i8idç", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "OIDC-i8idç", "Errors.NoChangesFound")
}
changeEvent := &OIDCConfigChangedEvent{
@@ -348,7 +348,7 @@ func OIDCConfigChangedEventMapper(event eventstore.Event) (eventstore.Event, err
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "OIDC-BFd15", "unable to unmarshal oidc config")
+ return nil, zerrors.ThrowInternal(err, "OIDC-BFd15", "unable to unmarshal oidc config")
}
return e, nil
@@ -393,7 +393,7 @@ func OIDCConfigSecretChangedEventMapper(event eventstore.Event) (eventstore.Even
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "OIDC-M893d", "unable to unmarshal oidc config")
+ return nil, zerrors.ThrowInternal(err, "OIDC-M893d", "unable to unmarshal oidc config")
}
return e, nil
@@ -435,7 +435,7 @@ func OIDCConfigSecretCheckSucceededEventMapper(event eventstore.Event) (eventsto
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "OIDC-837gV", "unable to unmarshal oidc config")
+ return nil, zerrors.ThrowInternal(err, "OIDC-837gV", "unable to unmarshal oidc config")
}
return e, nil
@@ -477,7 +477,7 @@ func OIDCConfigSecretCheckFailedEventMapper(event eventstore.Event) (eventstore.
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "OIDC-987g%", "unable to unmarshal oidc config")
+ return nil, zerrors.ThrowInternal(err, "OIDC-987g%", "unable to unmarshal oidc config")
}
return e, nil
diff --git a/internal/repository/project/project.go b/internal/repository/project/project.go
index f378142436..9774877301 100644
--- a/internal/repository/project/project.go
+++ b/internal/repository/project/project.go
@@ -4,8 +4,8 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -79,7 +79,7 @@ func ProjectAddedEventMapper(event eventstore.Event) (eventstore.Event, error) {
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "PROJECT-Bfg2f", "unable to unmarshal project")
+ return nil, zerrors.ThrowInternal(err, "PROJECT-Bfg2f", "unable to unmarshal project")
}
return e, nil
@@ -117,7 +117,7 @@ func NewProjectChangeEvent(
changes []ProjectChanges,
) (*ProjectChangeEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "PROJECT-mV9xc", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "PROJECT-mV9xc", "Errors.NoChangesFound")
}
changeEvent := &ProjectChangeEvent{
BaseEvent: *eventstore.NewBaseEventForPush(
@@ -172,7 +172,7 @@ func ProjectChangeEventMapper(event eventstore.Event) (eventstore.Event, error)
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "PROJECT-M9osd", "unable to unmarshal project")
+ return nil, zerrors.ThrowInternal(err, "PROJECT-M9osd", "unable to unmarshal project")
}
return e, nil
diff --git a/internal/repository/project/role.go b/internal/repository/project/role.go
index e5bf74d0ef..098b32189b 100644
--- a/internal/repository/project/role.go
+++ b/internal/repository/project/role.go
@@ -4,8 +4,8 @@ import (
"context"
"fmt"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var (
@@ -71,7 +71,7 @@ func RoleAddedEventMapper(event eventstore.Event) (eventstore.Event, error) {
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "PROJECT-2M0xy", "unable to unmarshal project role")
+ return nil, zerrors.ThrowInternal(err, "PROJECT-2M0xy", "unable to unmarshal project role")
}
return e, nil
@@ -100,7 +100,7 @@ func NewRoleChangedEvent(
changes []RoleChanges,
) (*RoleChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "PROJECT-eR9vx", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "PROJECT-eR9vx", "Errors.NoChangesFound")
}
changeEvent := &RoleChangedEvent{
BaseEvent: *eventstore.NewBaseEventForPush(
@@ -142,7 +142,7 @@ func RoleChangedEventMapper(event eventstore.Event) (eventstore.Event, error) {
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "PROJECT-3M0vx", "unable to unmarshal project role")
+ return nil, zerrors.ThrowInternal(err, "PROJECT-3M0vx", "unable to unmarshal project role")
}
return e, nil
@@ -183,7 +183,7 @@ func RoleRemovedEventMapper(event eventstore.Event) (eventstore.Event, error) {
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "PROJECT-1M0xs", "unable to unmarshal project role")
+ return nil, zerrors.ThrowInternal(err, "PROJECT-1M0xs", "unable to unmarshal project role")
}
return e, nil
diff --git a/internal/repository/project/saml_config.go b/internal/repository/project/saml_config.go
index 3406484433..97af24a0d9 100644
--- a/internal/repository/project/saml_config.go
+++ b/internal/repository/project/saml_config.go
@@ -3,8 +3,8 @@ package project
import (
"context"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -71,7 +71,7 @@ func SAMLConfigAddedEventMapper(event eventstore.Event) (eventstore.Event, error
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "SAML-BDd15", "unable to unmarshal saml config")
+ return nil, zerrors.ThrowInternal(err, "SAML-BDd15", "unable to unmarshal saml config")
}
return e, nil
@@ -109,7 +109,7 @@ func NewSAMLConfigChangedEvent(
changes []SAMLConfigChanges,
) (*SAMLConfigChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "SAML-i8idç", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "SAML-i8idç", "Errors.NoChangesFound")
}
changeEvent := &SAMLConfigChangedEvent{
@@ -154,7 +154,7 @@ func SAMLConfigChangedEventMapper(event eventstore.Event) (eventstore.Event, err
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "SAML-BFd15", "unable to unmarshal saml config")
+ return nil, zerrors.ThrowInternal(err, "SAML-BFd15", "unable to unmarshal saml config")
}
return e, nil
diff --git a/internal/repository/quota/events.go b/internal/repository/quota/events.go
index 616f61faed..af75383333 100644
--- a/internal/repository/quota/events.go
+++ b/internal/repository/quota/events.go
@@ -5,8 +5,8 @@ import (
"strconv"
"time"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Unit uint
@@ -113,7 +113,7 @@ func SetEventMapper(event eventstore.Event) (eventstore.Event, error) {
}
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUOTA-kmIpI", "unable to unmarshal quota set")
+ return nil, zerrors.ThrowInternal(err, "QUOTA-kmIpI", "unable to unmarshal quota set")
}
return e, nil
@@ -169,7 +169,7 @@ func NotificationDueEventMapper(event eventstore.Event) (eventstore.Event, error
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUOTA-k56rT", "unable to unmarshal notification due")
+ return nil, zerrors.ThrowInternal(err, "QUOTA-k56rT", "unable to unmarshal notification due")
}
return e, nil
@@ -228,7 +228,7 @@ func NotifiedEventMapper(event eventstore.Event) (eventstore.Event, error) {
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUOTA-4n8vs", "unable to unmarshal quota notified")
+ return nil, zerrors.ThrowInternal(err, "QUOTA-4n8vs", "unable to unmarshal quota notified")
}
return e, nil
@@ -269,7 +269,7 @@ func RemovedEventMapper(event eventstore.Event) (eventstore.Event, error) {
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "QUOTA-4bReE", "unable to unmarshal quota removed")
+ return nil, zerrors.ThrowInternal(err, "QUOTA-4bReE", "unable to unmarshal quota removed")
}
return e, nil
diff --git a/internal/repository/restrictions/events.go b/internal/repository/restrictions/events.go
index e15fd7c767..7b28af3c30 100644
--- a/internal/repository/restrictions/events.go
+++ b/internal/repository/restrictions/events.go
@@ -2,6 +2,7 @@ package restrictions
import (
"github.com/muhlemmer/gu"
+ "golang.org/x/text/language"
"github.com/zitadel/zitadel/internal/eventstore"
)
@@ -13,8 +14,9 @@ const (
// SetEvent describes that restrictions are added or modified and contains only changed properties
type SetEvent struct {
- *eventstore.BaseEvent `json:"-"`
- DisallowPublicOrgRegistrations *bool `json:"disallowPublicOrgRegistrations,omitempty"`
+ *eventstore.BaseEvent `json:"-"`
+ DisallowPublicOrgRegistration *bool `json:"disallowPublicOrgRegistration,omitempty"`
+ AllowedLanguages *[]language.Tag `json:"allowedLanguages,omitempty"`
}
func (e *SetEvent) Payload() any {
@@ -44,9 +46,15 @@ func NewSetEvent(
type RestrictionsChange func(*SetEvent)
-func ChangePublicOrgRegistrations(disallow bool) RestrictionsChange {
+func ChangeDisallowPublicOrgRegistration(disallow bool) RestrictionsChange {
return func(e *SetEvent) {
- e.DisallowPublicOrgRegistrations = gu.Ptr(disallow)
+ e.DisallowPublicOrgRegistration = gu.Ptr(disallow)
+ }
+}
+
+func ChangeAllowedLanguages(allowedLanguages []language.Tag) RestrictionsChange {
+ return func(e *SetEvent) {
+ e.AllowedLanguages = &allowedLanguages
}
}
diff --git a/internal/repository/session/session.go b/internal/repository/session/session.go
index 464c72971c..116d85a186 100644
--- a/internal/repository/session/session.go
+++ b/internal/repository/session/session.go
@@ -7,8 +7,8 @@ import (
"github.com/zitadel/zitadel/internal/api/http"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -66,7 +66,7 @@ func AddedEventMapper(event eventstore.Event) (eventstore.Event, error) {
err := event.Unmarshal(added)
if err != nil {
- return nil, errors.ThrowInternal(err, "SESSION-DG4gn", "unable to unmarshal session added")
+ return nil, zerrors.ThrowInternal(err, "SESSION-DG4gn", "unable to unmarshal session added")
}
return added, nil
@@ -113,7 +113,7 @@ func UserCheckedEventMapper(event eventstore.Event) (eventstore.Event, error) {
}
err := event.Unmarshal(added)
if err != nil {
- return nil, errors.ThrowInternal(err, "SESSION-DSGn5", "unable to unmarshal user checked")
+ return nil, zerrors.ThrowInternal(err, "SESSION-DSGn5", "unable to unmarshal user checked")
}
return added, nil
@@ -154,7 +154,7 @@ func PasswordCheckedEventMapper(event eventstore.Event) (eventstore.Event, error
}
err := event.Unmarshal(added)
if err != nil {
- return nil, errors.ThrowInternal(err, "SESSION-DGt21", "unable to unmarshal password checked")
+ return nil, zerrors.ThrowInternal(err, "SESSION-DGt21", "unable to unmarshal password checked")
}
return added, nil
@@ -195,7 +195,7 @@ func IntentCheckedEventMapper(event eventstore.Event) (eventstore.Event, error)
}
err := event.Unmarshal(added)
if err != nil {
- return nil, errors.ThrowInternal(err, "SESSION-DGt90", "unable to unmarshal intent checked")
+ return nil, zerrors.ThrowInternal(err, "SESSION-DGt90", "unable to unmarshal intent checked")
}
return added, nil
@@ -564,7 +564,7 @@ func TokenSetEventMapper(event eventstore.Event) (eventstore.Event, error) {
}
err := event.Unmarshal(added)
if err != nil {
- return nil, errors.ThrowInternal(err, "SESSION-Sf3va", "unable to unmarshal token set")
+ return nil, zerrors.ThrowInternal(err, "SESSION-Sf3va", "unable to unmarshal token set")
}
return added, nil
@@ -605,7 +605,7 @@ func MetadataSetEventMapper(event eventstore.Event) (eventstore.Event, error) {
}
err := event.Unmarshal(added)
if err != nil {
- return nil, errors.ThrowInternal(err, "SESSION-BD21d", "unable to unmarshal metadata set")
+ return nil, zerrors.ThrowInternal(err, "SESSION-BD21d", "unable to unmarshal metadata set")
}
return added, nil
diff --git a/internal/repository/settings/debug_notification.go b/internal/repository/settings/debug_notification.go
index c1ae68f87f..97a3d8630a 100644
--- a/internal/repository/settings/debug_notification.go
+++ b/internal/repository/settings/debug_notification.go
@@ -1,8 +1,8 @@
package settings
import (
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -45,7 +45,7 @@ func DebugNotificationProviderAddedEventMapper(event eventstore.Event) (eventsto
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "SET-f93ns", "unable to unmarshal debug notification added")
+ return nil, zerrors.ThrowInternal(err, "SET-f93ns", "unable to unmarshal debug notification added")
}
return e, nil
@@ -70,7 +70,7 @@ func NewDebugNotificationProviderChangedEvent(
changes []DebugNotificationProviderChanges,
) (*DebugNotificationProviderChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "SET-hj90s", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "SET-hj90s", "Errors.NoChangesFound")
}
changeEvent := &DebugNotificationProviderChangedEvent{
BaseEvent: *base,
@@ -96,7 +96,7 @@ func DebugNotificationProviderChangedEventMapper(event eventstore.Event) (events
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "POLIC-ehssl", "unable to unmarshal policy")
+ return nil, zerrors.ThrowInternal(err, "POLIC-ehssl", "unable to unmarshal policy")
}
return e, nil
diff --git a/internal/repository/user/eventstore.go b/internal/repository/user/eventstore.go
index 414895d5a2..289d8af40a 100644
--- a/internal/repository/user/eventstore.go
+++ b/internal/repository/user/eventstore.go
@@ -68,6 +68,7 @@ func RegisterEventMappers(es *eventstore.Eventstore) {
RegisterFilterEventMapper(AggregateType, UserIDPLinkCascadeRemovedType, UserIDPLinkCascadeRemovedEventMapper).
RegisterFilterEventMapper(AggregateType, UserIDPLoginCheckSucceededType, UserIDPCheckSucceededEventMapper).
RegisterFilterEventMapper(AggregateType, UserIDPExternalIDMigratedType, eventstore.GenericEventMapper[UserIDPExternalIDMigratedEvent]).
+ RegisterFilterEventMapper(AggregateType, UserIDPExternalUsernameChangedType, eventstore.GenericEventMapper[UserIDPExternalUsernameEvent]).
RegisterFilterEventMapper(AggregateType, HumanEmailChangedType, HumanEmailChangedEventMapper).
RegisterFilterEventMapper(AggregateType, HumanEmailVerifiedType, HumanEmailVerifiedEventMapper).
RegisterFilterEventMapper(AggregateType, HumanEmailVerificationFailedType, HumanEmailVerificationFailedEventMapper).
diff --git a/internal/repository/user/human.go b/internal/repository/user/human.go
index 7cbeaa9c71..c53b9e03d6 100644
--- a/internal/repository/user/human.go
+++ b/internal/repository/user/human.go
@@ -9,8 +9,8 @@ import (
"github.com/zitadel/zitadel/internal/api/http"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -128,7 +128,7 @@ func HumanAddedEventMapper(event eventstore.Event) (eventstore.Event, error) {
}
err := event.Unmarshal(humanAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-vGlhy", "unable to unmarshal human added")
+ return nil, zerrors.ThrowInternal(err, "USER-vGlhy", "unable to unmarshal human added")
}
return humanAdded, nil
@@ -233,7 +233,7 @@ func HumanRegisteredEventMapper(event eventstore.Event) (eventstore.Event, error
}
err := event.Unmarshal(humanRegistered)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-3Vm9s", "unable to unmarshal human registered")
+ return nil, zerrors.ThrowInternal(err, "USER-3Vm9s", "unable to unmarshal human registered")
}
return humanRegistered, nil
@@ -282,7 +282,7 @@ func HumanInitialCodeAddedEventMapper(event eventstore.Event) (eventstore.Event,
}
err := event.Unmarshal(humanRegistered)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-bM9se", "unable to unmarshal human initial code added")
+ return nil, zerrors.ThrowInternal(err, "USER-bM9se", "unable to unmarshal human initial code added")
}
return humanRegistered, nil
@@ -407,7 +407,7 @@ func HumanSignedOutEventMapper(event eventstore.Event) (eventstore.Event, error)
}
err := event.Unmarshal(signedOut)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-WFS3g", "unable to unmarshal human signed out")
+ return nil, zerrors.ThrowInternal(err, "USER-WFS3g", "unable to unmarshal human signed out")
}
return signedOut, nil
diff --git a/internal/repository/user/human_address.go b/internal/repository/user/human_address.go
index 7681866f2a..586adcb8ae 100644
--- a/internal/repository/user/human_address.go
+++ b/internal/repository/user/human_address.go
@@ -3,8 +3,8 @@ package user
import (
"context"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -36,7 +36,7 @@ func NewAddressChangedEvent(
changes []AddressChanges,
) (*HumanAddressChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "USER-3n8fs", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "USER-3n8fs", "Errors.NoChangesFound")
}
changeEvent := &HumanAddressChangedEvent{
BaseEvent: *eventstore.NewBaseEventForPush(
@@ -89,7 +89,7 @@ func HumanAddressChangedEventMapper(event eventstore.Event) (eventstore.Event, e
}
err := event.Unmarshal(addressChanged)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-5M0pd", "unable to unmarshal human address changed")
+ return nil, zerrors.ThrowInternal(err, "USER-5M0pd", "unable to unmarshal human address changed")
}
return addressChanged, nil
diff --git a/internal/repository/user/human_email.go b/internal/repository/user/human_email.go
index 9706706c4a..b78017aed4 100644
--- a/internal/repository/user/human_email.go
+++ b/internal/repository/user/human_email.go
@@ -7,8 +7,8 @@ import (
"github.com/zitadel/zitadel/internal/api/http"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -52,7 +52,7 @@ func HumanEmailChangedEventMapper(event eventstore.Event) (eventstore.Event, err
}
err := event.Unmarshal(emailChangedEvent)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-4M0sd", "unable to unmarshal human password changed")
+ return nil, zerrors.ThrowInternal(err, "USER-4M0sd", "unable to unmarshal human password changed")
}
return emailChangedEvent, nil
@@ -177,7 +177,7 @@ func HumanEmailCodeAddedEventMapper(event eventstore.Event) (eventstore.Event, e
}
err := event.Unmarshal(codeAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-3M0sd", "unable to unmarshal human email code added")
+ return nil, zerrors.ThrowInternal(err, "USER-3M0sd", "unable to unmarshal human email code added")
}
return codeAdded, nil
diff --git a/internal/repository/user/human_external_idp.go b/internal/repository/user/human_external_idp.go
index cf698f4471..b5665ea4da 100644
--- a/internal/repository/user/human_external_idp.go
+++ b/internal/repository/user/human_external_idp.go
@@ -3,8 +3,8 @@ package user
import (
"context"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -12,10 +12,11 @@ const (
UserIDPLinkEventPrefix = humanEventPrefix + "externalidp."
idpLoginEventPrefix = humanEventPrefix + "externallogin."
- UserIDPLinkAddedType = UserIDPLinkEventPrefix + "added"
- UserIDPLinkRemovedType = UserIDPLinkEventPrefix + "removed"
- UserIDPLinkCascadeRemovedType = UserIDPLinkEventPrefix + "cascade.removed"
- UserIDPExternalIDMigratedType = UserIDPLinkEventPrefix + "id.migrated"
+ UserIDPLinkAddedType = UserIDPLinkEventPrefix + "added"
+ UserIDPLinkRemovedType = UserIDPLinkEventPrefix + "removed"
+ UserIDPLinkCascadeRemovedType = UserIDPLinkEventPrefix + "cascade.removed"
+ UserIDPExternalIDMigratedType = UserIDPLinkEventPrefix + "id.migrated"
+ UserIDPExternalUsernameChangedType = UserIDPLinkEventPrefix + "username.changed"
UserIDPLoginCheckSucceededType = idpLoginEventPrefix + "check.succeeded"
)
@@ -75,7 +76,7 @@ func UserIDPLinkAddedEventMapper(event eventstore.Event) (eventstore.Event, erro
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-6M9sd", "unable to unmarshal user external idp added")
+ return nil, zerrors.ThrowInternal(err, "USER-6M9sd", "unable to unmarshal user external idp added")
}
return e, nil
@@ -120,7 +121,7 @@ func UserIDPLinkRemovedEventMapper(event eventstore.Event) (eventstore.Event, er
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-eAWoT", "unable to unmarshal user external idp removed")
+ return nil, zerrors.ThrowInternal(err, "USER-eAWoT", "unable to unmarshal user external idp removed")
}
return e, nil
@@ -165,7 +166,7 @@ func UserIDPLinkCascadeRemovedEventMapper(event eventstore.Event) (eventstore.Ev
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-dKGqO", "unable to unmarshal user external idp cascade removed")
+ return nil, zerrors.ThrowInternal(err, "USER-dKGqO", "unable to unmarshal user external idp cascade removed")
}
return e, nil
@@ -205,7 +206,7 @@ func UserIDPCheckSucceededEventMapper(event eventstore.Event) (eventstore.Event,
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-oikSS", "unable to unmarshal user external idp check succeeded")
+ return nil, zerrors.ThrowInternal(err, "USER-oikSS", "unable to unmarshal user external idp check succeeded")
}
return e, nil
@@ -248,3 +249,41 @@ func NewUserIDPExternalIDMigratedEvent(
NewID: newID,
}
}
+
+type UserIDPExternalUsernameEvent struct {
+ eventstore.BaseEvent `json:"-"`
+ IDPConfigID string `json:"idpConfigId"`
+ ExternalUserID string `json:"userId"`
+ ExternalUsername string `json:"username"`
+}
+
+func (e *UserIDPExternalUsernameEvent) Payload() interface{} {
+ return e
+}
+
+func (e *UserIDPExternalUsernameEvent) UniqueConstraints() []*eventstore.UniqueConstraint {
+ return nil
+}
+
+func (e *UserIDPExternalUsernameEvent) SetBaseEvent(event *eventstore.BaseEvent) {
+ e.BaseEvent = *event
+}
+
+func NewUserIDPExternalUsernameEvent(
+ ctx context.Context,
+ aggregate *eventstore.Aggregate,
+ idpConfigID,
+ externalUserID,
+ externalUsername string,
+) *UserIDPExternalUsernameEvent {
+ return &UserIDPExternalUsernameEvent{
+ BaseEvent: *eventstore.NewBaseEventForPush(
+ ctx,
+ aggregate,
+ UserIDPExternalUsernameChangedType,
+ ),
+ IDPConfigID: idpConfigID,
+ ExternalUserID: externalUserID,
+ ExternalUsername: externalUsername,
+ }
+}
diff --git a/internal/repository/user/human_mfa_otp.go b/internal/repository/user/human_mfa_otp.go
index 95fd0c0bb0..1eb74f3403 100644
--- a/internal/repository/user/human_mfa_otp.go
+++ b/internal/repository/user/human_mfa_otp.go
@@ -6,8 +6,8 @@ import (
"github.com/zitadel/zitadel/internal/api/http"
"github.com/zitadel/zitadel/internal/crypto"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -68,7 +68,7 @@ func HumanOTPAddedEventMapper(event eventstore.Event) (eventstore.Event, error)
}
err := event.Unmarshal(otpAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-Ns9df", "unable to unmarshal human otp added")
+ return nil, zerrors.ThrowInternal(err, "USER-Ns9df", "unable to unmarshal human otp added")
}
return otpAdded, nil
}
@@ -172,7 +172,7 @@ func HumanOTPCheckSucceededEventMapper(event eventstore.Event) (eventstore.Event
}
err := event.Unmarshal(otpAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-Ns9df", "unable to unmarshal human otp check succeeded")
+ return nil, zerrors.ThrowInternal(err, "USER-Ns9df", "unable to unmarshal human otp check succeeded")
}
return otpAdded, nil
}
@@ -211,7 +211,7 @@ func HumanOTPCheckFailedEventMapper(event eventstore.Event) (eventstore.Event, e
}
err := event.Unmarshal(otpAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-Ns9df", "unable to unmarshal human otp check failed")
+ return nil, zerrors.ThrowInternal(err, "USER-Ns9df", "unable to unmarshal human otp check failed")
}
return otpAdded, nil
}
diff --git a/internal/repository/user/human_mfa_passwordless.go b/internal/repository/user/human_mfa_passwordless.go
index ec6342d2e7..603c657497 100644
--- a/internal/repository/user/human_mfa_passwordless.go
+++ b/internal/repository/user/human_mfa_passwordless.go
@@ -7,8 +7,8 @@ import (
"github.com/zitadel/zitadel/internal/api/http"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -308,7 +308,7 @@ func HumanPasswordlessInitCodeAddedEventMapper(event eventstore.Event) (eventsto
}
err := event.Unmarshal(webAuthNAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-BDf32", "unable to unmarshal human passwordless code added")
+ return nil, zerrors.ThrowInternal(err, "USER-BDf32", "unable to unmarshal human passwordless code added")
}
return webAuthNAdded, nil
}
@@ -366,7 +366,7 @@ func HumanPasswordlessInitCodeRequestedEventMapper(event eventstore.Event) (even
}
err := event.Unmarshal(webAuthNAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-VGfg3", "unable to unmarshal human passwordless code delivery added")
+ return nil, zerrors.ThrowInternal(err, "USER-VGfg3", "unable to unmarshal human passwordless code delivery added")
}
return webAuthNAdded, nil
}
@@ -406,7 +406,7 @@ func HumanPasswordlessInitCodeSentEventMapper(event eventstore.Event) (eventstor
}
err := event.Unmarshal(webAuthNAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-Gtg4j", "unable to unmarshal human passwordless code sent")
+ return nil, zerrors.ThrowInternal(err, "USER-Gtg4j", "unable to unmarshal human passwordless code sent")
}
return webAuthNAdded, nil
}
@@ -446,7 +446,7 @@ func HumanPasswordlessInitCodeCodeCheckFailedEventMapper(event eventstore.Event)
}
err := event.Unmarshal(webAuthNAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-Gtg4j", "unable to unmarshal human passwordless code check failed")
+ return nil, zerrors.ThrowInternal(err, "USER-Gtg4j", "unable to unmarshal human passwordless code check failed")
}
return webAuthNAdded, nil
}
@@ -486,7 +486,7 @@ func HumanPasswordlessInitCodeCodeCheckSucceededEventMapper(event eventstore.Eve
}
err := event.Unmarshal(webAuthNAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-Gtg4j", "unable to unmarshal human passwordless code check succeeded")
+ return nil, zerrors.ThrowInternal(err, "USER-Gtg4j", "unable to unmarshal human passwordless code check succeeded")
}
return webAuthNAdded, nil
}
diff --git a/internal/repository/user/human_mfa_web_auth_n.go b/internal/repository/user/human_mfa_web_auth_n.go
index 7425803626..113bc9e956 100644
--- a/internal/repository/user/human_mfa_web_auth_n.go
+++ b/internal/repository/user/human_mfa_web_auth_n.go
@@ -2,8 +2,8 @@ package user
import (
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type HumanWebAuthNAddedEvent struct {
@@ -42,7 +42,7 @@ func HumanWebAuthNAddedEventMapper(event eventstore.Event) (eventstore.Event, er
}
err := event.Unmarshal(webAuthNAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-tB8sf", "unable to unmarshal human webAuthN added")
+ return nil, zerrors.ThrowInternal(err, "USER-tB8sf", "unable to unmarshal human webAuthN added")
}
return webAuthNAdded, nil
}
@@ -98,7 +98,7 @@ func HumanWebAuthNVerifiedEventMapper(event eventstore.Event) (eventstore.Event,
}
err := event.Unmarshal(webauthNVerified)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-B0zDs", "unable to unmarshal human webAuthN verified")
+ return nil, zerrors.ThrowInternal(err, "USER-B0zDs", "unable to unmarshal human webAuthN verified")
}
return webauthNVerified, nil
}
@@ -136,7 +136,7 @@ func HumanWebAuthNSignCountChangedEventMapper(event eventstore.Event) (eventstor
}
err := event.Unmarshal(webauthNVerified)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-5Gm0s", "unable to unmarshal human webAuthN sign count")
+ return nil, zerrors.ThrowInternal(err, "USER-5Gm0s", "unable to unmarshal human webAuthN sign count")
}
return webauthNVerified, nil
}
@@ -172,7 +172,7 @@ func HumanWebAuthNRemovedEventMapper(event eventstore.Event) (eventstore.Event,
}
err := event.Unmarshal(webauthNVerified)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-gM9sd", "unable to unmarshal human webAuthN token removed")
+ return nil, zerrors.ThrowInternal(err, "USER-gM9sd", "unable to unmarshal human webAuthN token removed")
}
return webauthNVerified, nil
}
@@ -210,7 +210,7 @@ func HumanWebAuthNBeginLoginEventMapper(event eventstore.Event) (eventstore.Even
}
err := event.Unmarshal(webAuthNAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-rMb8x", "unable to unmarshal human webAuthN begin login")
+ return nil, zerrors.ThrowInternal(err, "USER-rMb8x", "unable to unmarshal human webAuthN begin login")
}
return webAuthNAdded, nil
}
@@ -243,7 +243,7 @@ func HumanWebAuthNCheckSucceededEventMapper(event eventstore.Event) (eventstore.
}
err := event.Unmarshal(webAuthNAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-2M0fg", "unable to unmarshal human webAuthN check succeeded")
+ return nil, zerrors.ThrowInternal(err, "USER-2M0fg", "unable to unmarshal human webAuthN check succeeded")
}
return webAuthNAdded, nil
}
@@ -276,7 +276,7 @@ func HumanWebAuthNCheckFailedEventMapper(event eventstore.Event) (eventstore.Eve
}
err := event.Unmarshal(webAuthNAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-O0dse", "unable to unmarshal human webAuthN check failed")
+ return nil, zerrors.ThrowInternal(err, "USER-O0dse", "unable to unmarshal human webAuthN check failed")
}
return webAuthNAdded, nil
}
diff --git a/internal/repository/user/human_password.go b/internal/repository/user/human_password.go
index aaca42dfe3..9df7e6c7fd 100644
--- a/internal/repository/user/human_password.go
+++ b/internal/repository/user/human_password.go
@@ -7,8 +7,8 @@ import (
"github.com/zitadel/zitadel/internal/api/http"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -72,7 +72,7 @@ func HumanPasswordChangedEventMapper(event eventstore.Event) (eventstore.Event,
}
err := event.Unmarshal(humanAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-4M0sd", "unable to unmarshal human password changed")
+ return nil, zerrors.ThrowInternal(err, "USER-4M0sd", "unable to unmarshal human password changed")
}
return humanAdded, nil
@@ -141,7 +141,7 @@ func HumanPasswordCodeAddedEventMapper(event eventstore.Event) (eventstore.Event
}
err := event.Unmarshal(humanAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-Ms90d", "unable to unmarshal human password code added")
+ return nil, zerrors.ThrowInternal(err, "USER-Ms90d", "unable to unmarshal human password code added")
}
return humanAdded, nil
@@ -237,7 +237,7 @@ func HumanPasswordCheckSucceededEventMapper(event eventstore.Event) (eventstore.
}
err := event.Unmarshal(humanAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-5M9sd", "unable to unmarshal human password check succeeded")
+ return nil, zerrors.ThrowInternal(err, "USER-5M9sd", "unable to unmarshal human password check succeeded")
}
return humanAdded, nil
@@ -277,7 +277,7 @@ func HumanPasswordCheckFailedEventMapper(event eventstore.Event) (eventstore.Eve
}
err := event.Unmarshal(humanAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-4m9fs", "unable to unmarshal human password check failed")
+ return nil, zerrors.ThrowInternal(err, "USER-4m9fs", "unable to unmarshal human password check failed")
}
return humanAdded, nil
diff --git a/internal/repository/user/human_phone.go b/internal/repository/user/human_phone.go
index 7c2302bb4d..2b3a1f24d3 100644
--- a/internal/repository/user/human_phone.go
+++ b/internal/repository/user/human_phone.go
@@ -7,8 +7,8 @@ import (
"github.com/zitadel/zitadel/internal/api/http"
"github.com/zitadel/zitadel/internal/crypto"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -52,7 +52,7 @@ func HumanPhoneChangedEventMapper(event eventstore.Event) (eventstore.Event, err
}
err := event.Unmarshal(phoneChangedEvent)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-5M0pd", "unable to unmarshal human phone changed")
+ return nil, zerrors.ThrowInternal(err, "USER-5M0pd", "unable to unmarshal human phone changed")
}
return phoneChangedEvent, nil
@@ -200,7 +200,7 @@ func HumanPhoneCodeAddedEventMapper(event eventstore.Event) (eventstore.Event, e
}
err := event.Unmarshal(codeAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-6Ms9d", "unable to unmarshal human phone code added")
+ return nil, zerrors.ThrowInternal(err, "USER-6Ms9d", "unable to unmarshal human phone code added")
}
return codeAdded, nil
diff --git a/internal/repository/user/human_profile.go b/internal/repository/user/human_profile.go
index 611591dbf8..1c73b2dce2 100644
--- a/internal/repository/user/human_profile.go
+++ b/internal/repository/user/human_profile.go
@@ -4,8 +4,8 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
"golang.org/x/text/language"
)
@@ -39,7 +39,7 @@ func NewHumanProfileChangedEvent(
changes []ProfileChanges,
) (*HumanProfileChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "USER-33n8F", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "USER-33n8F", "Errors.NoChangesFound")
}
changeEvent := &HumanProfileChangedEvent{
BaseEvent: *eventstore.NewBaseEventForPush(
@@ -98,7 +98,7 @@ func HumanProfileChangedEventMapper(event eventstore.Event) (eventstore.Event, e
}
err := event.Unmarshal(profileChanged)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-5M0pd", "unable to unmarshal human profile changed")
+ return nil, zerrors.ThrowInternal(err, "USER-5M0pd", "unable to unmarshal human profile changed")
}
return profileChanged, nil
diff --git a/internal/repository/user/human_refresh_token.go b/internal/repository/user/human_refresh_token.go
index f17d906f3e..2de3a2ca4f 100644
--- a/internal/repository/user/human_refresh_token.go
+++ b/internal/repository/user/human_refresh_token.go
@@ -4,8 +4,8 @@ import (
"context"
"time"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -81,7 +81,7 @@ func HumanRefreshTokenAddedEventMapper(event eventstore.Event) (eventstore.Event
}
err := event.Unmarshal(refreshTokenAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-DGr14", "unable to unmarshal refresh token added")
+ return nil, zerrors.ThrowInternal(err, "USER-DGr14", "unable to unmarshal refresh token added")
}
return refreshTokenAdded, nil
@@ -132,7 +132,7 @@ func HumanRefreshTokenRenewedEventEventMapper(event eventstore.Event) (eventstor
}
err := event.Unmarshal(tokenAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-GBt21", "unable to unmarshal refresh token renewed")
+ return nil, zerrors.ThrowInternal(err, "USER-GBt21", "unable to unmarshal refresh token renewed")
}
return tokenAdded, nil
@@ -177,7 +177,7 @@ func HumanRefreshTokenRemovedEventEventMapper(event eventstore.Event) (eventstor
}
err := event.Unmarshal(tokenAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-Dggs2", "unable to unmarshal refresh token removed")
+ return nil, zerrors.ThrowInternal(err, "USER-Dggs2", "unable to unmarshal refresh token removed")
}
return tokenAdded, nil
diff --git a/internal/repository/user/machine.go b/internal/repository/user/machine.go
index 7faea5ac95..d76290931a 100644
--- a/internal/repository/user/machine.go
+++ b/internal/repository/user/machine.go
@@ -4,8 +4,8 @@ import (
"context"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -62,7 +62,7 @@ func MachineAddedEventMapper(event eventstore.Event) (eventstore.Event, error) {
}
err := event.Unmarshal(machineAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-tMv9s", "unable to unmarshal machine added")
+ return nil, zerrors.ThrowInternal(err, "USER-tMv9s", "unable to unmarshal machine added")
}
return machineAdded, nil
@@ -90,7 +90,7 @@ func NewMachineChangedEvent(
changes []MachineChanges,
) (*MachineChangedEvent, error) {
if len(changes) == 0 {
- return nil, errors.ThrowPreconditionFailed(nil, "USER-3M9fs", "Errors.NoChangesFound")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "USER-3M9fs", "Errors.NoChangesFound")
}
changeEvent := &MachineChangedEvent{
BaseEvent: *eventstore.NewBaseEventForPush(
@@ -131,7 +131,7 @@ func MachineChangedEventMapper(event eventstore.Event) (eventstore.Event, error)
}
err := event.Unmarshal(machineChanged)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-4M9ds", "unable to unmarshal machine changed")
+ return nil, zerrors.ThrowInternal(err, "USER-4M9ds", "unable to unmarshal machine changed")
}
return machineChanged, nil
diff --git a/internal/repository/user/machine_key.go b/internal/repository/user/machine_key.go
index 283e8240ec..aff1c3750e 100644
--- a/internal/repository/user/machine_key.go
+++ b/internal/repository/user/machine_key.go
@@ -6,8 +6,8 @@ import (
"time"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -65,7 +65,7 @@ func MachineKeyAddedEventMapper(event eventstore.Event) (eventstore.Event, error
if unwrapErr, ok := err.(*json.UnmarshalTypeError); ok && unwrapErr.Field == "publicKey" {
return machineKeyAdded, nil
}
- return nil, errors.ThrowInternal(err, "USER-p0ovS", "unable to unmarshal machine key added")
+ return nil, zerrors.ThrowInternal(err, "USER-p0ovS", "unable to unmarshal machine key added")
}
return machineKeyAdded, nil
@@ -106,7 +106,7 @@ func MachineKeyRemovedEventMapper(event eventstore.Event) (eventstore.Event, err
}
err := event.Unmarshal(machineRemoved)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-5Gm9s", "unable to unmarshal machine key removed")
+ return nil, zerrors.ThrowInternal(err, "USER-5Gm9s", "unable to unmarshal machine key removed")
}
return machineRemoved, nil
diff --git a/internal/repository/user/machine_secret.go b/internal/repository/user/machine_secret.go
index 041d938f8e..9d2f9fa97f 100644
--- a/internal/repository/user/machine_secret.go
+++ b/internal/repository/user/machine_secret.go
@@ -4,8 +4,8 @@ import (
"context"
"github.com/zitadel/zitadel/internal/crypto"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -51,7 +51,7 @@ func MachineSecretSetEventMapper(event eventstore.Event) (eventstore.Event, erro
}
err := event.Unmarshal(credentialsSet)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-lopbqu", "unable to unmarshal machine secret set")
+ return nil, zerrors.ThrowInternal(err, "USER-lopbqu", "unable to unmarshal machine secret set")
}
return credentialsSet, nil
@@ -88,7 +88,7 @@ func MachineSecretRemovedEventMapper(event eventstore.Event) (eventstore.Event,
}
err := event.Unmarshal(credentialsRemoved)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-quox9j2", "unable to unmarshal machine secret removed")
+ return nil, zerrors.ThrowInternal(err, "USER-quox9j2", "unable to unmarshal machine secret removed")
}
return credentialsRemoved, nil
@@ -125,7 +125,7 @@ func MachineSecretCheckSucceededEventMapper(event eventstore.Event) (eventstore.
}
err := event.Unmarshal(check)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-x002n1p", "unable to unmarshal machine secret check succeeded")
+ return nil, zerrors.ThrowInternal(err, "USER-x002n1p", "unable to unmarshal machine secret check succeeded")
}
return check, nil
@@ -162,7 +162,7 @@ func MachineSecretCheckFailedEventMapper(event eventstore.Event) (eventstore.Eve
}
err := event.Unmarshal(check)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-x7901b1l", "unable to unmarshal machine secret check failed")
+ return nil, zerrors.ThrowInternal(err, "USER-x7901b1l", "unable to unmarshal machine secret check failed")
}
return check, nil
diff --git a/internal/repository/user/personal_access_token.go b/internal/repository/user/personal_access_token.go
index 10432fe22e..0528507a36 100644
--- a/internal/repository/user/personal_access_token.go
+++ b/internal/repository/user/personal_access_token.go
@@ -4,8 +4,8 @@ import (
"context"
"time"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -55,7 +55,7 @@ func PersonalAccessTokenAddedEventMapper(event eventstore.Event) (eventstore.Eve
}
err := event.Unmarshal(tokenAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-Dbges", "unable to unmarshal token added")
+ return nil, zerrors.ThrowInternal(err, "USER-Dbges", "unable to unmarshal token added")
}
return tokenAdded, nil
@@ -96,7 +96,7 @@ func PersonalAccessTokenRemovedEventMapper(event eventstore.Event) (eventstore.E
}
err := event.Unmarshal(tokenRemoved)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-Dbneg", "unable to unmarshal token removed")
+ return nil, zerrors.ThrowInternal(err, "USER-Dbneg", "unable to unmarshal token removed")
}
return tokenRemoved, nil
diff --git a/internal/repository/user/user.go b/internal/repository/user/user.go
index df99eb2e74..260dab135b 100644
--- a/internal/repository/user/user.go
+++ b/internal/repository/user/user.go
@@ -6,8 +6,8 @@ import (
"github.com/zitadel/zitadel/internal/api/http"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -262,7 +262,7 @@ func UserTokenAddedEventMapper(event eventstore.Event) (eventstore.Event, error)
}
err := event.Unmarshal(tokenAdded)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-7M9sd", "unable to unmarshal token added")
+ return nil, zerrors.ThrowInternal(err, "USER-7M9sd", "unable to unmarshal token added")
}
return tokenAdded, nil
@@ -303,7 +303,7 @@ func UserTokenRemovedEventMapper(event eventstore.Event) (eventstore.Event, erro
}
err := event.Unmarshal(tokenRemoved)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-7M9sd", "unable to unmarshal token added")
+ return nil, zerrors.ThrowInternal(err, "USER-7M9sd", "unable to unmarshal token added")
}
return tokenRemoved, nil
@@ -359,7 +359,7 @@ func DomainClaimedEventMapper(event eventstore.Event) (eventstore.Event, error)
}
err := event.Unmarshal(domainClaimed)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-aR8jc", "unable to unmarshal domain claimed")
+ return nil, zerrors.ThrowInternal(err, "USER-aR8jc", "unable to unmarshal domain claimed")
}
return domainClaimed, nil
@@ -457,7 +457,7 @@ func UsernameChangedEventMapper(event eventstore.Event) (eventstore.Event, error
}
err := event.Unmarshal(domainClaimed)
if err != nil {
- return nil, errors.ThrowInternal(err, "USER-4Bm9s", "unable to unmarshal username changed")
+ return nil, zerrors.ThrowInternal(err, "USER-4Bm9s", "unable to unmarshal username changed")
}
return domainClaimed, nil
diff --git a/internal/repository/usergrant/user_grant.go b/internal/repository/usergrant/user_grant.go
index 10d6cfcf1f..bd0908f60e 100644
--- a/internal/repository/usergrant/user_grant.go
+++ b/internal/repository/usergrant/user_grant.go
@@ -6,7 +6,7 @@ import (
"github.com/zitadel/zitadel/internal/eventstore"
- "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -78,7 +78,7 @@ func UserGrantAddedEventMapper(event eventstore.Event) (eventstore.Event, error)
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "UGRANT-0p9ol", "unable to unmarshal user grant")
+ return nil, zerrors.ThrowInternal(err, "UGRANT-0p9ol", "unable to unmarshal user grant")
}
return e, nil
@@ -118,7 +118,7 @@ func UserGrantChangedEventMapper(event eventstore.Event) (eventstore.Event, erro
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "UGRANT-4M0sd", "unable to unmarshal user grant")
+ return nil, zerrors.ThrowInternal(err, "UGRANT-4M0sd", "unable to unmarshal user grant")
}
return e, nil
@@ -158,7 +158,7 @@ func UserGrantCascadeChangedEventMapper(event eventstore.Event) (eventstore.Even
err := event.Unmarshal(e)
if err != nil {
- return nil, errors.ThrowInternal(err, "UGRANT-Gs9df", "unable to unmarshal user grant")
+ return nil, zerrors.ThrowInternal(err, "UGRANT-Gs9df", "unable to unmarshal user grant")
}
return e, nil
diff --git a/internal/static/config/config.go b/internal/static/config/config.go
index 2ace6a731e..5aa8a4e32d 100644
--- a/internal/static/config/config.go
+++ b/internal/static/config/config.go
@@ -4,10 +4,10 @@ import (
"database/sql"
"github.com/zitadel/zitadel/internal/api/http/middleware"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/static"
"github.com/zitadel/zitadel/internal/static/database"
"github.com/zitadel/zitadel/internal/static/s3"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type AssetStorageConfig struct {
@@ -19,7 +19,7 @@ type AssetStorageConfig struct {
func (a *AssetStorageConfig) NewStorage(client *sql.DB) (static.Storage, error) {
t, ok := storage[a.Type]
if !ok {
- return nil, errors.ThrowInternalf(nil, "STATIC-dsbjh", "config type %s not supported", a.Type)
+ return nil, zerrors.ThrowInternalf(nil, "STATIC-dsbjh", "config type %s not supported", a.Type)
}
return t(client, a.Config)
diff --git a/internal/static/database/crdb.go b/internal/static/database/crdb.go
index 5a012a591d..a031f7d17a 100644
--- a/internal/static/database/crdb.go
+++ b/internal/static/database/crdb.go
@@ -3,15 +3,15 @@ package database
import (
"context"
"database/sql"
- errs "errors"
+ "errors"
"fmt"
"io"
"time"
"github.com/Masterminds/squirrel"
- caos_errors "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/static"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var _ static.Storage = (*crdbStorage)(nil)
@@ -40,7 +40,7 @@ func NewStorage(client *sql.DB, _ map[string]interface{}) (static.Storage, error
func (c *crdbStorage) PutObject(ctx context.Context, instanceID, location, resourceOwner, name, contentType string, objectType static.ObjectType, object io.Reader, objectSize int64) (*static.Asset, error) {
data, err := io.ReadAll(object)
if err != nil {
- return nil, caos_errors.ThrowInternal(err, "DATAB-Dfwvq", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "DATAB-Dfwvq", "Errors.Internal")
}
stmt, args, err := squirrel.Insert(assetsTable).
Columns(AssetColInstanceID, AssetColResourceOwner, AssetColName, AssetColType, AssetColContentType, AssetColData, AssetColUpdatedAt).
@@ -52,13 +52,13 @@ func (c *crdbStorage) PutObject(ctx context.Context, instanceID, location, resou
PlaceholderFormat(squirrel.Dollar).
ToSql()
if err != nil {
- return nil, caos_errors.ThrowInternal(err, "DATAB-32DG1", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "DATAB-32DG1", "Errors.Internal")
}
var hash string
var updatedAt time.Time
err = c.client.QueryRowContext(ctx, stmt, args...).Scan(&hash, &updatedAt)
if err != nil {
- return nil, caos_errors.ThrowInternal(err, "DATAB-D2g2q", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "DATAB-D2g2q", "Errors.Internal")
}
return &static.Asset{
InstanceID: instanceID,
@@ -82,7 +82,7 @@ func (c *crdbStorage) GetObject(ctx context.Context, instanceID, resourceOwner,
PlaceholderFormat(squirrel.Dollar).
ToSql()
if err != nil {
- return nil, nil, caos_errors.ThrowInternal(err, "DATAB-GE3hz", "Errors.Internal")
+ return nil, nil, zerrors.ThrowInternal(err, "DATAB-GE3hz", "Errors.Internal")
}
var data []byte
asset := &static.Asset{
@@ -98,10 +98,10 @@ func (c *crdbStorage) GetObject(ctx context.Context, instanceID, resourceOwner,
&asset.LastModified,
)
if err != nil {
- if errs.Is(err, sql.ErrNoRows) {
- return nil, nil, caos_errors.ThrowNotFound(err, "DATAB-pCP8P", "Errors.Assets.Object.NotFound")
+ if errors.Is(err, sql.ErrNoRows) {
+ return nil, nil, zerrors.ThrowNotFound(err, "DATAB-pCP8P", "Errors.Assets.Object.NotFound")
}
- return nil, nil, caos_errors.ThrowInternal(err, "DATAB-Sfgb3", "Errors.Assets.Object.GetFailed")
+ return nil, nil, zerrors.ThrowInternal(err, "DATAB-Sfgb3", "Errors.Assets.Object.GetFailed")
}
asset.Size = int64(len(data))
return data,
@@ -122,7 +122,7 @@ func (c *crdbStorage) GetObjectInfo(ctx context.Context, instanceID, resourceOwn
PlaceholderFormat(squirrel.Dollar).
ToSql()
if err != nil {
- return nil, caos_errors.ThrowInternal(err, "DATAB-rggt2", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "DATAB-rggt2", "Errors.Internal")
}
asset := &static.Asset{
InstanceID: instanceID,
@@ -138,7 +138,7 @@ func (c *crdbStorage) GetObjectInfo(ctx context.Context, instanceID, resourceOwn
&asset.LastModified,
)
if err != nil {
- return nil, caos_errors.ThrowInternal(err, "DATAB-Dbh2s", "Errors.Internal")
+ return nil, zerrors.ThrowInternal(err, "DATAB-Dbh2s", "Errors.Internal")
}
return asset, nil
}
@@ -153,11 +153,11 @@ func (c *crdbStorage) RemoveObject(ctx context.Context, instanceID, resourceOwne
PlaceholderFormat(squirrel.Dollar).
ToSql()
if err != nil {
- return caos_errors.ThrowInternal(err, "DATAB-Sgvwq", "Errors.Internal")
+ return zerrors.ThrowInternal(err, "DATAB-Sgvwq", "Errors.Internal")
}
_, err = c.client.ExecContext(ctx, stmt, args...)
if err != nil {
- return caos_errors.ThrowInternal(err, "DATAB-RHNgf", "Errors.Assets.Object.RemoveFailed")
+ return zerrors.ThrowInternal(err, "DATAB-RHNgf", "Errors.Assets.Object.RemoveFailed")
}
return nil
}
@@ -172,11 +172,11 @@ func (c *crdbStorage) RemoveObjects(ctx context.Context, instanceID, resourceOwn
PlaceholderFormat(squirrel.Dollar).
ToSql()
if err != nil {
- return caos_errors.ThrowInternal(err, "DATAB-Sfgeq", "Errors.Internal")
+ return zerrors.ThrowInternal(err, "DATAB-Sfgeq", "Errors.Internal")
}
_, err = c.client.ExecContext(ctx, stmt, args...)
if err != nil {
- return caos_errors.ThrowInternal(err, "DATAB-Efgt2", "Errors.Assets.Object.RemoveFailed")
+ return zerrors.ThrowInternal(err, "DATAB-Efgt2", "Errors.Assets.Object.RemoveFailed")
}
return nil
}
@@ -189,11 +189,11 @@ func (c *crdbStorage) RemoveInstanceObjects(ctx context.Context, instanceID stri
PlaceholderFormat(squirrel.Dollar).
ToSql()
if err != nil {
- return caos_errors.ThrowInternal(err, "DATAB-Sfgeq", "Errors.Internal")
+ return zerrors.ThrowInternal(err, "DATAB-Sfgeq", "Errors.Internal")
}
_, err = c.client.ExecContext(ctx, stmt, args...)
if err != nil {
- return caos_errors.ThrowInternal(err, "DATAB-Efgt2", "Errors.Assets.Object.RemoveFailed")
+ return zerrors.ThrowInternal(err, "DATAB-Efgt2", "Errors.Assets.Object.RemoveFailed")
}
return nil
}
diff --git a/internal/static/i18n/bg.yaml b/internal/static/i18n/bg.yaml
index ff7f86601a..fbc61f74bd 100644
--- a/internal/static/i18n/bg.yaml
+++ b/internal/static/i18n/bg.yaml
@@ -33,8 +33,13 @@ Errors:
NoneSpecified: Не са посочени лимити
Restrictions:
NoneSpecified: Не са посочени ограничения
+ DefaultLanguageMustBeAllowed: Езикът по подразбиране трябва да бъде разрешен
Language:
NotParsed: Езикът не можа да бъде анализиран синтактично
+ NotSupported: Езикът не се поддържа
+ NotAllowed: Езикът не е разрешен
+ Undefined: Езикът е неопределен
+ Duplicate: Езиците имат дубликати
OIDCSettings:
NotFound: Конфигурацията на OIDC не е намерена
AlreadyExists: OIDC конфигурацията вече съществува
@@ -141,7 +146,7 @@ Errors:
ExternalIDP:
Invalid: Невалиден външен IDP
IDPConfigNotExisting: Невалиден доставчик на IDP за тази организация
- NotAllowed: Външен IDP не е разрешен в тази организация
+ NotAllowed: Външен IDP не е разрешен
MinimumExternalIDPNeeded: Трябва да се добави поне един IDP
AlreadyExists: Външен IDP вече е зает
NotFound: Външен IDP не е намерен
diff --git a/internal/static/i18n/cs.yaml b/internal/static/i18n/cs.yaml
index 4230dc7749..df607c6f0e 100644
--- a/internal/static/i18n/cs.yaml
+++ b/internal/static/i18n/cs.yaml
@@ -33,8 +33,13 @@ Errors:
NoneSpecified: Nebyly určeny žádné limity
Restrictions:
NoneSpecified: Nebyla určena žádná omezení
+ DefaultLanguageMustBeAllowed: Výchozí jazyk musí být povolen
Language:
NotParsed: Jazyk nelze určit
+ NotSupported: Jazyk není podporován
+ NotAllowed: Jazyk není povolen
+ Undefined: Jazyk není definován
+ Duplicate: Jazyky mají duplikáty
OIDCSettings:
NotFound: Konfigurace OIDC nebyla nalezena
AlreadyExists: Konfigurace OIDC již existuje
@@ -138,7 +143,7 @@ Errors:
ExternalIDP:
Invalid: Externí IDP je neplatné
IDPConfigNotExisting: Konfigurace poskytovatele IDP je pro tuto organizaci neplatná
- NotAllowed: Externí IDP není v této organizaci povoleno
+ NotAllowed: Externí IDP není povolen
MinimumExternalIDPNeeded: Musí být přidán alespoň jeden IDP
AlreadyExists: Externí IDP již obsazeno
NotFound: Externí IDP nenalezeno
diff --git a/internal/static/i18n/de.yaml b/internal/static/i18n/de.yaml
index 65cd5b1168..2215c60a0a 100644
--- a/internal/static/i18n/de.yaml
+++ b/internal/static/i18n/de.yaml
@@ -33,8 +33,13 @@ Errors:
NoneSpecified: Keine Limits angegeben
Restrictions:
NoneSpecified: Keine Restriktionen angegeben
+ DefaultLanguageMustBeAllowed: Default Sprache muss erlaubt sein
Language:
NotParsed: Sprache konnte nicht gemapped werden
+ NotSupported: Sprache wird nicht unterstützt
+ NotAllowed: Sprache ist nicht erlaubt
+ Undefined: Sprache ist nicht definiert
+ Duplicate: Sprachen haben Duplikate
OIDCSettings:
NotFound: OIDC Konfiguration konnte nicht gefunden werden
AlreadyExists: OIDC Konfiguration existiert bereits
@@ -139,7 +144,7 @@ Errors:
ExternalIDP:
Invalid: Externer IDP ungültig
IDPConfigNotExisting: IDP Provider ungültig für diese Organisation
- NotAllowed: Externer IDP ist auf dieser Organisation nicht erlaubt.
+ NotAllowed: Externer IDP nicht erlaubt
MinimumExternalIDPNeeded: Mindestens ein IDP muss hinzugefügt werden.
AlreadyExists: External IDP ist bereits vergeben
NotFound: Externer IDP nicht gefunden
diff --git a/internal/static/i18n/en.yaml b/internal/static/i18n/en.yaml
index e3cdbcf2e8..55cfdee3d1 100644
--- a/internal/static/i18n/en.yaml
+++ b/internal/static/i18n/en.yaml
@@ -33,8 +33,13 @@ Errors:
NoneSpecified: No limits specified
Restrictions:
NoneSpecified: No restrictions specified
+ DefaultLanguageMustBeAllowed: The default language must be allowed
Language:
NotParsed: Could not parse language
+ NotSupported: Language is not supported
+ NotAllowed: Language is not allowed
+ Undefined: Language is undefined
+ Duplicate: Languages have duplicates
OIDCSettings:
NotFound: OIDC Configuration not found
AlreadyExists: OIDC configuration already exists
@@ -139,7 +144,7 @@ Errors:
ExternalIDP:
Invalid: External IDP invalid
IDPConfigNotExisting: IDP provider invalid for this organization
- NotAllowed: External IDP not allowed on this organization
+ NotAllowed: External IDP not allowed
MinimumExternalIDPNeeded: At least one IDP must be added
AlreadyExists: External IDP already taken
NotFound: External IDP not found
diff --git a/internal/static/i18n/es.yaml b/internal/static/i18n/es.yaml
index 7a5d0ab297..1bea1ad05a 100644
--- a/internal/static/i18n/es.yaml
+++ b/internal/static/i18n/es.yaml
@@ -33,8 +33,13 @@ Errors:
NoneSpecified: No se especificaron límites
Restrictions:
NoneSpecified: No se especificaron restricciones
+ DefaultLanguageMustBeAllowed: El idioma por defecto debe estar permitido
Language:
NotParsed: No pude analizar el idioma
+ NotSupported: El idioma no está soportado
+ NotAllowed: El idioma no está permitido
+ Undefined: El idioma no está definido
+ Duplicate: Idiomas duplicados
OIDCSettings:
NotFound: Configuración OIDC no encontrada
AlreadyExists: La configuración OIDC ya existe
@@ -139,7 +144,7 @@ Errors:
ExternalIDP:
Invalid: IDP externo no válido
IDPConfigNotExisting: Proveedor IDP no válido para esta organización
- NotAllowed: IDP externo no permitido para esta organización
+ NotAllowed: IDP externo no permitido
MinimumExternalIDPNeeded: Al menos de añadirse un IDP
AlreadyExists: IDP externo ya cogido
NotFound: IDP no encontrado
diff --git a/internal/static/i18n/fr.yaml b/internal/static/i18n/fr.yaml
index 43f8b8453b..11720a473a 100644
--- a/internal/static/i18n/fr.yaml
+++ b/internal/static/i18n/fr.yaml
@@ -33,8 +33,13 @@ Errors:
NoneSpecified: Aucune limite spécifiée
Restrictions:
NoneSpecified: Aucune restriction spécifiée
+ DefaultLanguageMustBeAllowed: La langue par défaut doit être autorisée
Language:
NotParsed: Impossible d'analyser la langue
+ NotSupported: Langue non prise en charge
+ NotAllowed: Langue non autorisée
+ Undefined: Langue non définie
+ Duplicate: Langues en double
OIDCSettings:
NotFound: Configuration OIDC non trouvée
AlreadyExists: La configuration OIDC existe déjà
@@ -139,7 +144,7 @@ Errors:
ExternalIDP:
Invalid: IDP Externer invalide
IDPConfigNotExisting: Le fournisseur IDP n'est pas valide pour cette organisation
- NotAllowed: IDP externe non autorisé pour cette organisation
+ NotAllowed: IDP externe non autorisé
MinimumExternalIDPNeeded: Au moins un IDP doit être ajouté
AlreadyExists: External IDP déjà pris
NotFound: IDP externe non trouvé
diff --git a/internal/static/i18n/it.yaml b/internal/static/i18n/it.yaml
index 045a7b06bc..fa74723055 100644
--- a/internal/static/i18n/it.yaml
+++ b/internal/static/i18n/it.yaml
@@ -33,8 +33,13 @@ Errors:
NoneSpecified: Nessun limite specificato
Restrictions:
NoneSpecified: Nessuna restrizione specificata
+ DefaultLanguageMustBeAllowed: La lingua predefinita deve essere consentita
Language:
NotParsed: Impossibile analizzare la lingua
+ NotSupported: Lingua non supportata
+ NotAllowed: Lingua non consentita
+ Undefined: Lingua non definita
+ Duplicate: Lingue duplicate
OIDCSettings:
NotFound: Impossibile trovare la configurazione OIDC
AlreadyExists: La configurazione OIDC esiste già
@@ -139,7 +144,7 @@ Errors:
ExternalIDP:
Invalid: IDP esterno non valido
IDPConfigNotExisting: IDP non valido per questa organizzazione
- NotAllowed: IDP esterno non consentito su questa organizzazione
+ NotAllowed: IDP esterno non consentito
MinimumExternalIDPNeeded: Almeno un IDP deve essere aggiunto
AlreadyExists: IDP esterno già preso
NotFound: IDP esterno non trovato
diff --git a/internal/static/i18n/ja.yaml b/internal/static/i18n/ja.yaml
index aa6e591987..ff333884cd 100644
--- a/internal/static/i18n/ja.yaml
+++ b/internal/static/i18n/ja.yaml
@@ -33,8 +33,13 @@ Errors:
NoneSpecified: 制限が指定されていません
Restrictions:
NoneSpecified: 制限が指定されていません
+ DefaultLanguageMustBeAllowed: デフォルト言語は許可されている必要があります
Language:
NotParsed: 言語のパースに失敗しました
+ NotSupported: 言語はサポートされていません
+ NotAllowed: 言語は許可されていません
+ Undefined: 言語は未定義です
+ Duplicate: 言語に重複があります
OIDCSettings:
NotFound: OIDC構成が見つかりません
AlreadyExists: すでに存在するOIDC構成です
@@ -131,7 +136,7 @@ Errors:
ExternalIDP:
Invalid: 無効な外部IDPです
IDPConfigNotExisting: この組織はIDPプロバイダーが無効です
- NotAllowed: この組織では外部IDPが許可されていません
+ NotAllowed: 外部IDPは許可されていません
MinimumExternalIDPNeeded: 少なくとも1つのIDPを追加する必要があります
AlreadyExists: 外部IDPはすでに使用されています
NotFound: 外部IDPが見つかりません
diff --git a/internal/static/i18n/mk.yaml b/internal/static/i18n/mk.yaml
index a28190f645..1cef512502 100644
--- a/internal/static/i18n/mk.yaml
+++ b/internal/static/i18n/mk.yaml
@@ -33,8 +33,13 @@ Errors:
NoneSpecified: Не се наведени лимити
Restrictions:
NoneSpecified: Не се наведени ограничувања
+ DefaultLanguageMustBeAllowed: Стандардниот јазик мора да биде дозволен
Language:
NotParsed: Јазикот не може да се парсира
+ NotSupported: Јазикот не е поддржан
+ NotAllowed: Јазикот не е дозволен
+ Undefined: Јазикот е недефиниран
+ Duplicate: Јазиците имаат дупликати
OIDCSettings:
NotFound: OIDC конфигурацијата не е пронајдена
AlreadyExists: OIDC конфигурацијата веќе постои
@@ -139,7 +144,7 @@ Errors:
ExternalIDP:
Invalid: Невалиден надворешен IDP
IDPConfigNotExisting: IDP не е валиден за оваа организација
- NotAllowed: Надворешниоте IDP не е дозволен на оваа организација
+ NotAllowed: Надворешниот IDP не е дозволен
MinimumExternalIDPNeeded: Мора да се додаде најмалку еден надворешен IDP
AlreadyExists: Надворешниот IDP е веќе зафатен
NotFound: Надворешниот IDP не е пронајден
diff --git a/internal/static/i18n/nl.yaml b/internal/static/i18n/nl.yaml
index d9489dbb9e..059e6393be 100644
--- a/internal/static/i18n/nl.yaml
+++ b/internal/static/i18n/nl.yaml
@@ -33,8 +33,13 @@ Errors:
NoneSpecified: Geen limieten gespecificeerd
Restrictions:
NoneSpecified: Geen beperkingen gespecificeerd
+ DefaultLanguageMustBeAllowed: De standaardtaal moet worden toegestaan
Language:
NotParsed: Kon taal niet parsen
+ NotSupported: Taal wordt niet ondersteund
+ NotAllowed: Taal is niet toegestaan
+ Undefined: Taal is niet gedefinieerd
+ Duplicate: Talen hebben duplicaten
OIDCSettings:
NotFound: OIDC-configuratie niet gevonden
AlreadyExists: OIDC-configuratie bestaat al
@@ -139,7 +144,7 @@ Errors:
ExternalIDP:
Invalid: Externe IDP ongeldig
IDPConfigNotExisting: IDP provider ongeldig voor deze organisatie
- NotAllowed: Externe IDP niet toegestaan op deze organisatie
+ NotAllowed: Externe IDP niet toegestaan
MinimumExternalIDPNeeded: Er moet minstens één IDP worden toegevoegd
AlreadyExists: Externe IDP al ingenomen
NotFound: Externe IDP niet gevonden
diff --git a/internal/static/i18n/pl.yaml b/internal/static/i18n/pl.yaml
index 2359c4a6d3..41909826e0 100644
--- a/internal/static/i18n/pl.yaml
+++ b/internal/static/i18n/pl.yaml
@@ -33,8 +33,13 @@ Errors:
NoneSpecified: Nie określono limitów
Restrictions:
NoneSpecified: Nie określono ograniczeń
+ DefaultLanguageMustBeAllowed: Domyślny język musi być dozwolony
Language:
NotParsed: Nie można przeanalizować języka
+ NotSupported: Język nie jest obsługiwany
+ NotAllowed: Język nie jest dozwolony
+ Undefined: Język jest niezdefiniowany
+ Duplicate: Języki mają duplikaty
OIDCSettings:
NotFound: Konfiguracja OIDC nie znaleziona
AlreadyExists: Konfiguracja OIDC już istnieje
@@ -139,7 +144,7 @@ Errors:
ExternalIDP:
Invalid: Nieprawidłowy IDP zewnętrzny
IDPConfigNotExisting: Dostawca IDP jest nieprawidłowy dla tej organizacji
- NotAllowed: IDP zewnętrzne nie jest dozwolone w tej organizacji
+ NotAllowed: IDP zewnętrzne nie jest dozwolone
MinimumExternalIDPNeeded: Przynajmniej jeden IDP musi być dodany
AlreadyExists: IDP zewnętrzne już istnieje
NotFound: IDP zewnętrzne nie znaleziony
diff --git a/internal/static/i18n/pt.yaml b/internal/static/i18n/pt.yaml
index 1633181539..dc151ba3a6 100644
--- a/internal/static/i18n/pt.yaml
+++ b/internal/static/i18n/pt.yaml
@@ -33,8 +33,13 @@ Errors:
NoneSpecified: Nenhum limite especificado
Restrictions:
NoneSpecified: Nenhuma restrição especificada
+ DefaultLanguageMustBeAllowed: O idioma padrão deve ser permitido
Language:
NotParsed: Não foi possível analisar o idioma
+ NotSupported: Idioma não suportado
+ NotAllowed: Idioma não permitido
+ Undefined: Idioma indefinido
+ Duplicate: Idiomas têm duplicatas
OIDCSettings:
NotFound: Configuração OIDC não encontrada
AlreadyExists: Configuração OIDC já existe
@@ -138,7 +143,7 @@ Errors:
ExternalIDP:
Invalid: IDP externo inválido
IDPConfigNotExisting: Provedor de IDP inválido para esta organização
- NotAllowed: IDP externo não permitido nesta organização
+ NotAllowed: IDP externo não permitido
MinimumExternalIDPNeeded: Pelo menos um IDP deve ser adicionado
AlreadyExists: IDP externo já está em uso
NotFound: IDP externo não encontrado
diff --git a/internal/static/i18n/ru.yaml b/internal/static/i18n/ru.yaml
index 21d8dd9a60..ddb54240dc 100644
--- a/internal/static/i18n/ru.yaml
+++ b/internal/static/i18n/ru.yaml
@@ -33,8 +33,13 @@ Errors:
NoneSpecified: Не указаны лимиты
Restrictions:
NoneSpecified: Не указаны ограничения
+ DefaultLanguageMustBeAllowed: Язык по умолчанию должен быть разрешен
Language:
NotParsed: Не удалось разобрать язык
+ NotSupported: Язык не поддерживается
+ NotAllowed: Язык не разрешен
+ Undefined: Язык не определен
+ Duplicate: Языки имеют дубликаты
OIDCSettings:
NotFound: Конфигурация OIDC не найдена
AlreadyExists: Конфигурация OIDC уже существует
@@ -138,7 +143,7 @@ Errors:
ExternalIDP:
Invalid: Внешний идентификационный номер недействителен.
IDPConfigNotExisting: Поставщик МВУ недействителен для этой организации.
- NotAllowed: Внешний IDP не разрешен в этой организации.
+ NotAllowed: Внешний IDP не разрешен
MinimumExternalIDPNeeded: Необходимо добавить хотя бы одного ВПЛ.
AlreadyExists: Внешнее ВПЛ уже занято
NotFound: Внешний IDP не найден
diff --git a/internal/static/i18n/zh.yaml b/internal/static/i18n/zh.yaml
index 5b3ee8cab2..1c46962c3b 100644
--- a/internal/static/i18n/zh.yaml
+++ b/internal/static/i18n/zh.yaml
@@ -33,8 +33,13 @@ Errors:
NoneSpecified: 未指定限制
Restrictions:
NoneSpecified: 未指定限制
+ DefaultLanguageMustBeAllowed: 默认语言必须被允许
Language:
NotParsed: 无法解析语言
+ NotSupported: 语言不支持
+ NotAllowed: 语言不被允许
+ Undefined: 语言未定义
+ Duplicate: 语言有重复
OIDCSettings:
NotFound: OIDC 配置未找到
AlreadyExists: OIDC 配置已存在
@@ -139,7 +144,7 @@ Errors:
ExternalIDP:
Invalid: 外部 IDP 无效
IDPConfigNotExisting: IDP 提供者对此组织无效
- NotAllowed: 此组织不允许外部 IDP
+ NotAllowed: 外部 IDP 不允许
MinimumExternalIDPNeeded: 必须添加至少一个 IDP
AlreadyExists: 外部 IDP 已存在
NotFound: 未找到外部 IDP
diff --git a/internal/static/mock/storage_mock.impl.go b/internal/static/mock/storage_mock.impl.go
index 3cd497dcc2..aaa33aa8e2 100644
--- a/internal/static/mock/storage_mock.impl.go
+++ b/internal/static/mock/storage_mock.impl.go
@@ -8,8 +8,8 @@ import (
"go.uber.org/mock/gomock"
- caos_errors "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/static"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func NewStorage(t *testing.T) *MockStorage {
@@ -37,7 +37,7 @@ func (m *MockStorage) ExpectPutObject() *MockStorage {
func (m *MockStorage) ExpectPutObjectError() *MockStorage {
m.EXPECT().
PutObject(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).
- Return(nil, caos_errors.ThrowInternal(nil, "", ""))
+ Return(nil, zerrors.ThrowInternal(nil, "", ""))
return m
}
@@ -58,6 +58,6 @@ func (m *MockStorage) ExpectRemoveObjectsNoError() *MockStorage {
func (m *MockStorage) ExpectRemoveObjectError() *MockStorage {
m.EXPECT().
RemoveObject(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).
- Return(caos_errors.ThrowInternal(nil, "", ""))
+ Return(zerrors.ThrowInternal(nil, "", ""))
return m
}
diff --git a/internal/static/s3/config.go b/internal/static/s3/config.go
index 9a00cb97b1..986d74764c 100644
--- a/internal/static/s3/config.go
+++ b/internal/static/s3/config.go
@@ -7,9 +7,8 @@ import (
"github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials"
- "github.com/zitadel/zitadel/internal/errors"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/static"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Config struct {
@@ -29,7 +28,7 @@ func (c *Config) NewStorage() (static.Storage, error) {
Region: c.Location,
})
if err != nil {
- return nil, caos_errs.ThrowInternal(err, "MINIO-2n9fs", "Errors.Assets.Store.NotInitialized")
+ return nil, zerrors.ThrowInternal(err, "MINIO-2n9fs", "Errors.Assets.Store.NotInitialized")
}
return &Minio{
Client: minioClient,
@@ -42,11 +41,11 @@ func (c *Config) NewStorage() (static.Storage, error) {
func NewStorage(_ *sql.DB, rawConfig map[string]interface{}) (static.Storage, error) {
configData, err := json.Marshal(rawConfig)
if err != nil {
- return nil, errors.ThrowInternal(err, "MINIO-Ef2f2", "could not map config")
+ return nil, zerrors.ThrowInternal(err, "MINIO-Ef2f2", "could not map config")
}
c := new(Config)
if err := json.Unmarshal(configData, c); err != nil {
- return nil, errors.ThrowInternal(err, "MINIO-GB4nw", "could not map config")
+ return nil, zerrors.ThrowInternal(err, "MINIO-GB4nw", "could not map config")
}
return c.NewStorage()
}
diff --git a/internal/static/s3/minio.go b/internal/static/s3/minio.go
index e8506955e6..47d5112d39 100644
--- a/internal/static/s3/minio.go
+++ b/internal/static/s3/minio.go
@@ -12,8 +12,8 @@ import (
"golang.org/x/sync/errgroup"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/static"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
var _ static.Storage = (*Minio)(nil)
@@ -27,14 +27,14 @@ type Minio struct {
func (m *Minio) PutObject(ctx context.Context, instanceID, location, resourceOwner, name, contentType string, objectType static.ObjectType, object io.Reader, objectSize int64) (*static.Asset, error) {
err := m.createBucket(ctx, instanceID, location)
- if err != nil && !caos_errs.IsErrorAlreadyExists(err) {
+ if err != nil && !zerrors.IsErrorAlreadyExists(err) {
return nil, err
}
bucketName := m.prefixBucketName(instanceID)
objectName := fmt.Sprintf("%s/%s", resourceOwner, name)
info, err := m.Client.PutObject(ctx, bucketName, objectName, object, objectSize, minio.PutObjectOptions{ContentType: contentType})
if err != nil {
- return nil, caos_errs.ThrowInternal(err, "MINIO-590sw", "Errors.Assets.Object.PutFailed")
+ return nil, zerrors.ThrowInternal(err, "MINIO-590sw", "Errors.Assets.Object.PutFailed")
}
return &static.Asset{
InstanceID: info.Bucket,
@@ -53,18 +53,18 @@ func (m *Minio) GetObject(ctx context.Context, instanceID, resourceOwner, name s
objectName := fmt.Sprintf("%s/%s", resourceOwner, name)
object, err := m.Client.GetObject(ctx, bucketName, objectName, minio.GetObjectOptions{})
if err != nil {
- return nil, nil, caos_errs.ThrowInternal(err, "MINIO-VGDgv", "Errors.Assets.Object.GetFailed")
+ return nil, nil, zerrors.ThrowInternal(err, "MINIO-VGDgv", "Errors.Assets.Object.GetFailed")
}
info := func() (*static.Asset, error) {
info, err := object.Stat()
if err != nil {
- return nil, caos_errs.ThrowInternal(err, "MINIO-F96xF", "Errors.Assets.Object.GetFailed")
+ return nil, zerrors.ThrowInternal(err, "MINIO-F96xF", "Errors.Assets.Object.GetFailed")
}
return m.objectToAssetInfo(instanceID, resourceOwner, info), nil
}
asset, err := io.ReadAll(object)
if err != nil {
- return nil, nil, caos_errs.ThrowInternal(err, "MINIO-SFef1", "Errors.Assets.Object.GetFailed")
+ return nil, nil, zerrors.ThrowInternal(err, "MINIO-SFef1", "Errors.Assets.Object.GetFailed")
}
return asset, info, nil
}
@@ -75,9 +75,9 @@ func (m *Minio) GetObjectInfo(ctx context.Context, instanceID, resourceOwner, na
objectInfo, err := m.Client.StatObject(ctx, bucketName, objectName, minio.StatObjectOptions{})
if err != nil {
if errResp := minio.ToErrorResponse(err); errResp.StatusCode == http.StatusNotFound {
- return nil, caos_errs.ThrowNotFound(err, "MINIO-Gdfh4", "Errors.Assets.Object.GetFailed")
+ return nil, zerrors.ThrowNotFound(err, "MINIO-Gdfh4", "Errors.Assets.Object.GetFailed")
}
- return nil, caos_errs.ThrowInternal(err, "MINIO-1vySX", "Errors.Assets.Object.GetFailed")
+ return nil, zerrors.ThrowInternal(err, "MINIO-1vySX", "Errors.Assets.Object.GetFailed")
}
return m.objectToAssetInfo(instanceID, resourceOwner, objectInfo), nil
}
@@ -87,7 +87,7 @@ func (m *Minio) RemoveObject(ctx context.Context, instanceID, resourceOwner, nam
objectName := fmt.Sprintf("%s/%s", resourceOwner, name)
err := m.Client.RemoveObject(ctx, bucketName, objectName, minio.RemoveObjectOptions{})
if err != nil {
- return caos_errs.ThrowInternal(err, "MINIO-x85RT", "Errors.Assets.Object.RemoveFailed")
+ return zerrors.ThrowInternal(err, "MINIO-x85RT", "Errors.Assets.Object.RemoveFailed")
}
return nil
}
@@ -115,7 +115,7 @@ func (m *Minio) RemoveObjects(ctx context.Context, instanceID, resourceOwner str
logging.WithFields("bucketName", bucketName, "path", path).Warn("list objects for remove failed with not found")
continue
}
- return caos_errs.ThrowInternal(object.Err, "MINIO-WQF32", "Errors.Assets.Object.ListFailed")
+ return zerrors.ThrowInternal(object.Err, "MINIO-WQF32", "Errors.Assets.Object.ListFailed")
}
objectsCh <- object
}
@@ -124,13 +124,13 @@ func (m *Minio) RemoveObjects(ctx context.Context, instanceID, resourceOwner str
if m.MultiDelete {
for objError := range m.Client.RemoveObjects(ctx, bucketName, objectsCh, minio.RemoveObjectsOptions{GovernanceBypass: true}) {
- return caos_errs.ThrowInternal(objError.Err, "MINIO-Sfdgr", "Errors.Assets.Object.RemoveFailed")
+ return zerrors.ThrowInternal(objError.Err, "MINIO-Sfdgr", "Errors.Assets.Object.RemoveFailed")
}
return g.Wait()
}
for objectInfo := range objectsCh {
if err := m.Client.RemoveObject(ctx, bucketName, objectInfo.Key, minio.RemoveObjectOptions{GovernanceBypass: true}); err != nil {
- return caos_errs.ThrowInternal(err, "MINIO-GVgew", "Errors.Assets.Object.RemoveFailed")
+ return zerrors.ThrowInternal(err, "MINIO-GVgew", "Errors.Assets.Object.RemoveFailed")
}
}
return g.Wait()
@@ -149,14 +149,14 @@ func (m *Minio) createBucket(ctx context.Context, name, location string) error {
exists, err := m.Client.BucketExists(ctx, name)
if err != nil {
logging.WithFields("bucketname", name).WithError(err).Error("cannot check if bucket exists")
- return caos_errs.ThrowInternal(err, "MINIO-1b8fs", "Errors.Assets.Bucket.Internal")
+ return zerrors.ThrowInternal(err, "MINIO-1b8fs", "Errors.Assets.Bucket.Internal")
}
if exists {
- return caos_errs.ThrowAlreadyExists(nil, "MINIO-9n3MK", "Errors.Assets.Bucket.AlreadyExists")
+ return zerrors.ThrowAlreadyExists(nil, "MINIO-9n3MK", "Errors.Assets.Bucket.AlreadyExists")
}
err = m.Client.MakeBucket(ctx, name, minio.MakeBucketOptions{Region: location})
if err != nil {
- return caos_errs.ThrowInternal(err, "MINIO-4m90d", "Errors.Assets.Bucket.CreateFailed")
+ return zerrors.ThrowInternal(err, "MINIO-4m90d", "Errors.Assets.Bucket.CreateFailed")
}
return nil
}
diff --git a/internal/telemetry/metrics/config/config.go b/internal/telemetry/metrics/config/config.go
index 270cc77165..e9bcbe45c2 100644
--- a/internal/telemetry/metrics/config/config.go
+++ b/internal/telemetry/metrics/config/config.go
@@ -1,8 +1,8 @@
package config
import (
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/telemetry/metrics/otel"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Config struct {
@@ -19,7 +19,7 @@ var meter = map[string]func(map[string]interface{}) error{
func (c *Config) NewMeter() error {
t, ok := meter[c.Type]
if !ok {
- return errors.ThrowInternalf(nil, "METER-Dfqsx", "config type %s not supported", c.Type)
+ return zerrors.ThrowInternalf(nil, "METER-Dfqsx", "config type %s not supported", c.Type)
}
return t(c.Config)
diff --git a/internal/telemetry/metrics/otel/open_telemetry.go b/internal/telemetry/metrics/otel/open_telemetry.go
index 0afafad23e..ed1a94f840 100644
--- a/internal/telemetry/metrics/otel/open_telemetry.go
+++ b/internal/telemetry/metrics/otel/open_telemetry.go
@@ -11,9 +11,9 @@ import (
"go.opentelemetry.io/otel/metric"
sdk_metric "go.opentelemetry.io/otel/sdk/metric"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/telemetry/metrics"
otel_resource "github.com/zitadel/zitadel/internal/telemetry/otel"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Metrics struct {
@@ -66,7 +66,7 @@ func (m *Metrics) RegisterCounter(name, description string) error {
func (m *Metrics) AddCount(ctx context.Context, name string, value int64, labels map[string]attribute.Value) error {
counter, exists := m.Counters.Load(name)
if !exists {
- return caos_errs.ThrowNotFound(nil, "METER-4u8fs", "Errors.Metrics.Counter.NotFound")
+ return zerrors.ThrowNotFound(nil, "METER-4u8fs", "Errors.Metrics.Counter.NotFound")
}
counter.(metric.Int64Counter).Add(ctx, value, MapToAddOption(labels)...)
return nil
diff --git a/internal/telemetry/tracing/config/config.go b/internal/telemetry/tracing/config/config.go
index 4e1a415201..cb44c6b65f 100644
--- a/internal/telemetry/tracing/config/config.go
+++ b/internal/telemetry/tracing/config/config.go
@@ -1,10 +1,10 @@
package config
import (
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/telemetry/tracing/google"
"github.com/zitadel/zitadel/internal/telemetry/tracing/log"
"github.com/zitadel/zitadel/internal/telemetry/tracing/otel"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Config struct {
@@ -15,7 +15,7 @@ type Config struct {
func (c *Config) NewTracer() error {
t, ok := tracer[c.Type]
if !ok {
- return errors.ThrowInternalf(nil, "TRACE-dsbjh", "config type %s not supported", c.Type)
+ return zerrors.ThrowInternalf(nil, "TRACE-dsbjh", "config type %s not supported", c.Type)
}
return t(c.Config)
diff --git a/internal/telemetry/tracing/otel/config.go b/internal/telemetry/tracing/otel/config.go
index 81995a941c..a9f9168c1b 100644
--- a/internal/telemetry/tracing/otel/config.go
+++ b/internal/telemetry/tracing/otel/config.go
@@ -7,8 +7,8 @@ import (
otlpgrpc "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
sdk_trace "go.opentelemetry.io/otel/sdk/trace"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/telemetry/tracing"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Config struct {
@@ -38,11 +38,11 @@ func FractionFromConfig(i interface{}) (float64, error) {
case string:
f, err := strconv.ParseFloat(fraction, 64)
if err != nil {
- return 0, errors.ThrowInternal(err, "OTEL-SAfe1", "could not map fraction")
+ return 0, zerrors.ThrowInternal(err, "OTEL-SAfe1", "could not map fraction")
}
return f, nil
default:
- return 0, errors.ThrowInternal(nil, "OTEL-Dd2s", "could not map fraction, unknown type")
+ return 0, zerrors.ThrowInternal(nil, "OTEL-Dd2s", "could not map fraction, unknown type")
}
}
diff --git a/internal/telemetry/tracing/span.go b/internal/telemetry/tracing/span.go
index 9e6f3bc287..9a6b6385ee 100644
--- a/internal/telemetry/tracing/span.go
+++ b/internal/telemetry/tracing/span.go
@@ -4,7 +4,7 @@ import (
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/trace"
- grpc_errs "github.com/zitadel/zitadel/internal/api/grpc/errors"
+ "github.com/zitadel/zitadel/internal/api/grpc/gerrors"
)
type Span struct {
@@ -41,6 +41,6 @@ func (s *Span) SetStatusByError(err error) {
)
}
- code, msg, id, _ := grpc_errs.ExtractCaosError(err)
+ code, msg, id, _ := gerrors.ExtractZITADELError(err)
s.span.SetAttributes(attribute.Int("grpc_code", int(code)), attribute.String("grpc_msg", msg), attribute.String("error_id", id))
}
diff --git a/internal/user/model/external_idp_view.go b/internal/user/model/external_idp_view.go
index 2225f7676c..6dc8f53dc7 100644
--- a/internal/user/model/external_idp_view.go
+++ b/internal/user/model/external_idp_view.go
@@ -2,7 +2,7 @@ package model
import (
"github.com/zitadel/zitadel/internal/domain"
- caos_errors "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
"time"
)
@@ -56,7 +56,7 @@ type ExternalIDPSearchResponse struct {
func (r *ExternalIDPSearchRequest) EnsureLimit(limit uint64) error {
if r.Limit > limit {
- return caos_errors.ThrowInvalidArgument(nil, "SEARCH-3n8fM", "Errors.Limit.ExceedsDefault")
+ return zerrors.ThrowInvalidArgument(nil, "SEARCH-3n8fM", "Errors.Limit.ExceedsDefault")
}
if r.Limit == 0 {
r.Limit = limit
diff --git a/internal/user/model/refresh_token_view.go b/internal/user/model/refresh_token_view.go
index d3437a22cf..1e1da39997 100644
--- a/internal/user/model/refresh_token_view.go
+++ b/internal/user/model/refresh_token_view.go
@@ -2,7 +2,7 @@ package model
import (
"github.com/zitadel/zitadel/internal/domain"
- caos_errors "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
"time"
)
@@ -63,7 +63,7 @@ type RefreshTokenSearchResponse struct {
func (r *RefreshTokenSearchRequest) EnsureLimit(limit uint64) error {
if r.Limit > limit {
- return caos_errors.ThrowInvalidArgument(nil, "SEARCH-M0fse", "Errors.Limit.ExceedsDefault")
+ return zerrors.ThrowInvalidArgument(nil, "SEARCH-M0fse", "Errors.Limit.ExceedsDefault")
}
if r.Limit == 0 {
r.Limit = limit
diff --git a/internal/user/model/token_view.go b/internal/user/model/token_view.go
index de9b387b4f..c2f82afaa3 100644
--- a/internal/user/model/token_view.go
+++ b/internal/user/model/token_view.go
@@ -2,7 +2,7 @@ package model
import (
"github.com/zitadel/zitadel/internal/domain"
- caos_errors "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
"time"
)
@@ -61,7 +61,7 @@ type TokenSearchResponse struct {
func (r *TokenSearchRequest) EnsureLimit(limit uint64) error {
if r.Limit > limit {
- return caos_errors.ThrowInvalidArgument(nil, "SEARCH-M0fse", "Errors.Limit.ExceedsDefault")
+ return zerrors.ThrowInvalidArgument(nil, "SEARCH-M0fse", "Errors.Limit.ExceedsDefault")
}
if r.Limit == 0 {
r.Limit = limit
diff --git a/internal/user/model/user_membership_view.go b/internal/user/model/user_membership_view.go
index 08bc87f612..3c68ef2866 100644
--- a/internal/user/model/user_membership_view.go
+++ b/internal/user/model/user_membership_view.go
@@ -2,7 +2,7 @@ package model
import (
"github.com/zitadel/zitadel/internal/domain"
- caos_errors "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
"time"
)
@@ -70,7 +70,7 @@ type UserMembershipSearchResponse struct {
func (r *UserMembershipSearchRequest) EnsureLimit(limit uint64) error {
if r.Limit > limit {
- return caos_errors.ThrowInvalidArgument(nil, "SEARCH-288fJ", "Errors.Limit.ExceedsDefault")
+ return zerrors.ThrowInvalidArgument(nil, "SEARCH-288fJ", "Errors.Limit.ExceedsDefault")
}
if r.Limit == 0 {
r.Limit = limit
diff --git a/internal/user/model/user_session_view.go b/internal/user/model/user_session_view.go
index f610eaa03a..7a23fa2a68 100644
--- a/internal/user/model/user_session_view.go
+++ b/internal/user/model/user_session_view.go
@@ -4,7 +4,7 @@ import (
"time"
"github.com/zitadel/zitadel/internal/domain"
- caos_errors "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type UserSessionView struct {
@@ -64,7 +64,7 @@ type UserSessionSearchResponse struct {
func (r *UserSessionSearchRequest) EnsureLimit(limit uint64) error {
if r.Limit > limit {
- return caos_errors.ThrowInvalidArgument(nil, "SEARCH-27ifs", "Errors.Limit.ExceedsDefault")
+ return zerrors.ThrowInvalidArgument(nil, "SEARCH-27ifs", "Errors.Limit.ExceedsDefault")
}
if r.Limit == 0 {
r.Limit = limit
diff --git a/internal/user/model/user_view.go b/internal/user/model/user_view.go
index dac8b8a558..6806d78ebd 100644
--- a/internal/user/model/user_view.go
+++ b/internal/user/model/user_view.go
@@ -6,9 +6,8 @@ import (
"golang.org/x/text/language"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
- iam_model "github.com/zitadel/zitadel/internal/iam/model"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type UserView struct {
@@ -137,7 +136,7 @@ const (
func (r *UserSearchRequest) EnsureLimit(limit uint64) error {
if r.Limit > limit {
- return errors.ThrowInvalidArgument(nil, "SEARCH-zz62F", "Errors.Limit.ExceedsDefault")
+ return zerrors.ThrowInvalidArgument(nil, "SEARCH-zz62F", "Errors.Limit.ExceedsDefault")
}
if r.Limit == 0 {
r.Limit = limit
@@ -231,23 +230,9 @@ func (u *UserView) IsPasswordlessReady() bool {
return false
}
-func (u *UserView) HasRequiredOrgMFALevel(policy *iam_model.LoginPolicyView) bool {
- if !policy.ForceMFA {
- return true
- }
- switch u.MFAMaxSetUp {
- case domain.MFALevelSecondFactor:
- return policy.HasSecondFactors()
- case domain.MFALevelMultiFactor:
- return policy.HasMultiFactors()
- default:
- return false
- }
-}
-
func (u *UserView) GetProfile() (*Profile, error) {
if u.HumanView == nil {
- return nil, errors.ThrowPreconditionFailed(nil, "MODEL-WLTce", "Errors.User.NotHuman")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "MODEL-WLTce", "Errors.User.NotHuman")
}
return &Profile{
ObjectRoot: models.ObjectRoot{
@@ -271,7 +256,7 @@ func (u *UserView) GetProfile() (*Profile, error) {
func (u *UserView) GetPhone() (*Phone, error) {
if u.HumanView == nil {
- return nil, errors.ThrowPreconditionFailed(nil, "MODEL-him4a", "Errors.User.NotHuman")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "MODEL-him4a", "Errors.User.NotHuman")
}
return &Phone{
ObjectRoot: models.ObjectRoot{
@@ -288,7 +273,7 @@ func (u *UserView) GetPhone() (*Phone, error) {
func (u *UserView) GetEmail() (*Email, error) {
if u.HumanView == nil {
- return nil, errors.ThrowPreconditionFailed(nil, "MODEL-PWd6K", "Errors.User.NotHuman")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "MODEL-PWd6K", "Errors.User.NotHuman")
}
return &Email{
ObjectRoot: models.ObjectRoot{
@@ -305,7 +290,7 @@ func (u *UserView) GetEmail() (*Email, error) {
func (u *UserView) GetAddress() (*Address, error) {
if u.HumanView == nil {
- return nil, errors.ThrowPreconditionFailed(nil, "MODEL-DN61m", "Errors.User.NotHuman")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "MODEL-DN61m", "Errors.User.NotHuman")
}
return &Address{
ObjectRoot: models.ObjectRoot{
diff --git a/internal/user/repository/eventsourcing/model/address.go b/internal/user/repository/eventsourcing/model/address.go
index d3fa65f4ee..518216272c 100644
--- a/internal/user/repository/eventsourcing/model/address.go
+++ b/internal/user/repository/eventsourcing/model/address.go
@@ -5,8 +5,8 @@ import (
"github.com/zitadel/logging"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Address struct {
@@ -50,7 +50,7 @@ func (a *Address) setData(event *es_models.Event) error {
a.ObjectRoot.AppendEvent(event)
if err := json.Unmarshal(event.Data, a); err != nil {
logging.Log("EVEN-clos0").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-so92s", "could not unmarshal event")
+ return zerrors.ThrowInternal(err, "MODEL-so92s", "could not unmarshal event")
}
return nil
}
diff --git a/internal/user/repository/eventsourcing/model/auth_request.go b/internal/user/repository/eventsourcing/model/auth_request.go
index 62b5fe48c1..a523dded7e 100644
--- a/internal/user/repository/eventsourcing/model/auth_request.go
+++ b/internal/user/repository/eventsourcing/model/auth_request.go
@@ -5,8 +5,8 @@ import (
"github.com/zitadel/logging"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type AuthRequest struct {
@@ -25,7 +25,7 @@ type BrowserInfo struct {
func (a *AuthRequest) SetData(event eventstore.Event) error {
if err := event.Unmarshal(a); err != nil {
logging.Log("EVEN-T5df6").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-yGmhh", "could not unmarshal event")
+ return zerrors.ThrowInternal(err, "MODEL-yGmhh", "could not unmarshal event")
}
return nil
}
diff --git a/internal/user/repository/eventsourcing/model/email.go b/internal/user/repository/eventsourcing/model/email.go
index f4abf69edc..7e5c5b827c 100644
--- a/internal/user/repository/eventsourcing/model/email.go
+++ b/internal/user/repository/eventsourcing/model/email.go
@@ -7,8 +7,8 @@ import (
"github.com/zitadel/logging"
"github.com/zitadel/zitadel/internal/crypto"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Email struct {
@@ -51,7 +51,7 @@ func (a *Email) setData(event *es_models.Event) error {
a.ObjectRoot.AppendEvent(event)
if err := json.Unmarshal(event.Data, a); err != nil {
logging.Log("EVEN-dlo9s").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-sl9xw", "could not unmarshal event")
+ return zerrors.ThrowInternal(err, "MODEL-sl9xw", "could not unmarshal event")
}
return nil
}
@@ -61,7 +61,7 @@ func (a *EmailCode) SetData(event *es_models.Event) error {
a.CreationDate = event.CreationDate
if err := json.Unmarshal(event.Data, a); err != nil {
logging.Log("EVEN-lo9s").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-s8uws", "could not unmarshal event")
+ return zerrors.ThrowInternal(err, "MODEL-s8uws", "could not unmarshal event")
}
return nil
}
diff --git a/internal/user/repository/eventsourcing/model/external_idp.go b/internal/user/repository/eventsourcing/model/external_idp.go
index df3038ea50..5890db3808 100644
--- a/internal/user/repository/eventsourcing/model/external_idp.go
+++ b/internal/user/repository/eventsourcing/model/external_idp.go
@@ -5,8 +5,8 @@ import (
"github.com/zitadel/logging"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type ExternalIDP struct {
@@ -54,7 +54,7 @@ func (pw *ExternalIDP) setData(event *es_models.Event) error {
pw.ObjectRoot.AppendEvent(event)
if err := json.Unmarshal(event.Data, pw); err != nil {
logging.Log("EVEN-Msi9d").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-A9osf", "could not unmarshal event")
+ return zerrors.ThrowInternal(err, "MODEL-A9osf", "could not unmarshal event")
}
return nil
}
diff --git a/internal/user/repository/eventsourcing/model/otp.go b/internal/user/repository/eventsourcing/model/otp.go
index f5bf36592f..a40b5b2c93 100644
--- a/internal/user/repository/eventsourcing/model/otp.go
+++ b/internal/user/repository/eventsourcing/model/otp.go
@@ -4,10 +4,10 @@ import (
"github.com/zitadel/logging"
"github.com/zitadel/zitadel/internal/crypto"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/user/model"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type OTP struct {
@@ -40,7 +40,7 @@ func (o *OTP) setData(event eventstore.Event) error {
o.ObjectRoot.AppendEvent(event)
if err := event.Unmarshal(o); err != nil {
logging.Log("EVEN-d9soe").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-lo023", "could not unmarshal event")
+ return zerrors.ThrowInternal(err, "MODEL-lo023", "could not unmarshal event")
}
return nil
}
@@ -48,7 +48,7 @@ func (o *OTP) setData(event eventstore.Event) error {
func (o *OTPVerified) SetData(event eventstore.Event) error {
if err := event.Unmarshal(o); err != nil {
logging.Log("EVEN-BF421").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-GB6hj", "could not unmarshal event")
+ return zerrors.ThrowInternal(err, "MODEL-GB6hj", "could not unmarshal event")
}
return nil
}
diff --git a/internal/user/repository/eventsourcing/model/password.go b/internal/user/repository/eventsourcing/model/password.go
index e9d3e58f3a..8b40e45d9b 100644
--- a/internal/user/repository/eventsourcing/model/password.go
+++ b/internal/user/repository/eventsourcing/model/password.go
@@ -6,9 +6,9 @@ import (
"github.com/zitadel/logging"
"github.com/zitadel/zitadel/internal/crypto"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Password struct {
@@ -51,7 +51,7 @@ func (pw *Password) setData(event eventstore.Event) error {
pw.ObjectRoot.AppendEvent(event)
if err := event.Unmarshal(pw); err != nil {
logging.Log("EVEN-dks93").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-sl9xlo2rsw", "could not unmarshal event")
+ return zerrors.ThrowInternal(err, "MODEL-sl9xlo2rsw", "could not unmarshal event")
}
return nil
}
@@ -61,7 +61,7 @@ func (c *PasswordCode) SetData(event eventstore.Event) error {
c.CreationDate = event.CreatedAt()
if err := event.Unmarshal(c); err != nil {
logging.Log("EVEN-lo0y2").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-q21dr", "could not unmarshal event")
+ return zerrors.ThrowInternal(err, "MODEL-q21dr", "could not unmarshal event")
}
return nil
}
@@ -69,7 +69,7 @@ func (c *PasswordCode) SetData(event eventstore.Event) error {
func (pw *PasswordChange) SetData(event eventstore.Event) error {
if err := event.Unmarshal(pw); err != nil {
logging.Log("EVEN-ADs31").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-BDd32", "could not unmarshal event")
+ return zerrors.ThrowInternal(err, "MODEL-BDd32", "could not unmarshal event")
}
pw.ObjectRoot.AppendEvent(event)
return nil
diff --git a/internal/user/repository/eventsourcing/model/phone.go b/internal/user/repository/eventsourcing/model/phone.go
index 80e08fc164..26063769c6 100644
--- a/internal/user/repository/eventsourcing/model/phone.go
+++ b/internal/user/repository/eventsourcing/model/phone.go
@@ -7,8 +7,8 @@ import (
"github.com/zitadel/logging"
"github.com/zitadel/zitadel/internal/crypto"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Phone struct {
@@ -56,7 +56,7 @@ func (p *Phone) setData(event *es_models.Event) error {
p.ObjectRoot.AppendEvent(event)
if err := json.Unmarshal(event.Data, p); err != nil {
logging.Log("EVEN-lco9s").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-lre56", "could not unmarshal event")
+ return zerrors.ThrowInternal(err, "MODEL-lre56", "could not unmarshal event")
}
return nil
}
@@ -66,7 +66,7 @@ func (c *PhoneCode) SetData(event *es_models.Event) error {
c.CreationDate = event.CreationDate
if err := json.Unmarshal(event.Data, c); err != nil {
logging.Log("EVEN-sk8ws").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-7hdj3", "could not unmarshal event")
+ return zerrors.ThrowInternal(err, "MODEL-7hdj3", "could not unmarshal event")
}
return nil
}
diff --git a/internal/user/repository/eventsourcing/model/token.go b/internal/user/repository/eventsourcing/model/token.go
index 57718c8383..bb1e1945d6 100644
--- a/internal/user/repository/eventsourcing/model/token.go
+++ b/internal/user/repository/eventsourcing/model/token.go
@@ -7,9 +7,9 @@ import (
"github.com/zitadel/logging"
"github.com/zitadel/zitadel/internal/database"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
user_repo "github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Token struct {
@@ -49,7 +49,7 @@ func (t *Token) setData(event *es_models.Event) error {
t.ObjectRoot.AppendEvent(event)
if err := json.Unmarshal(event.Data, t); err != nil {
logging.Log("EVEN-4Fm9s").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-5Gms9", "could not unmarshal event")
+ return zerrors.ThrowInternal(err, "MODEL-5Gms9", "could not unmarshal event")
}
return nil
}
diff --git a/internal/user/repository/eventsourcing/model/user.go b/internal/user/repository/eventsourcing/model/user.go
index 36cba95eae..1f58208dd0 100644
--- a/internal/user/repository/eventsourcing/model/user.go
+++ b/internal/user/repository/eventsourcing/model/user.go
@@ -6,11 +6,10 @@ import (
"github.com/zitadel/logging"
- "github.com/zitadel/zitadel/internal/errors"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/user"
"github.com/zitadel/zitadel/internal/user/model"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -80,13 +79,13 @@ func (u *User) AppendEvent(event *es_models.Event) error {
return u.Machine.AppendEvent(event)
}
- return errors.ThrowNotFound(nil, "MODEL-x9TaX", "Errors.UserType.Undefined")
+ return zerrors.ThrowNotFound(nil, "MODEL-x9TaX", "Errors.UserType.Undefined")
}
func (u *User) setData(event *es_models.Event) error {
if err := json.Unmarshal(event.Data, u); err != nil {
logging.Log("EVEN-ZDzQy").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-yGmhh", "could not unmarshal event")
+ return zerrors.ThrowInternal(err, "MODEL-yGmhh", "could not unmarshal event")
}
return nil
}
diff --git a/internal/user/repository/eventsourcing/model/user_human.go b/internal/user/repository/eventsourcing/model/user_human.go
index 2df0d5bb72..5fbfb3ad41 100644
--- a/internal/user/repository/eventsourcing/model/user_human.go
+++ b/internal/user/repository/eventsourcing/model/user_human.go
@@ -7,10 +7,10 @@ import (
"github.com/zitadel/logging"
"github.com/zitadel/zitadel/internal/crypto"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/repository/user"
"github.com/zitadel/zitadel/internal/user/model"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Human struct {
@@ -159,7 +159,7 @@ func (h *Human) ComputeObject() {
func (u *Human) setData(event *es_models.Event) error {
if err := json.Unmarshal(event.Data, u); err != nil {
logging.Log("EVEN-8ujgd").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-sj4jd", "could not unmarshal event")
+ return zerrors.ThrowInternal(err, "MODEL-sj4jd", "could not unmarshal event")
}
return nil
}
@@ -179,7 +179,7 @@ func (c *InitUserCode) SetData(event *es_models.Event) error {
c.ObjectRoot.AppendEvent(event)
if err := json.Unmarshal(event.Data, c); err != nil {
logging.Log("EVEN-7duwe").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-lo34s", "could not unmarshal event")
+ return zerrors.ThrowInternal(err, "MODEL-lo34s", "could not unmarshal event")
}
return nil
}
diff --git a/internal/user/repository/eventsourcing/model/user_machine.go b/internal/user/repository/eventsourcing/model/user_machine.go
index 45d60b4848..a8d6602ced 100644
--- a/internal/user/repository/eventsourcing/model/user_machine.go
+++ b/internal/user/repository/eventsourcing/model/user_machine.go
@@ -6,9 +6,9 @@ import (
"github.com/zitadel/logging"
- "github.com/zitadel/zitadel/internal/errors"
es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
user_repo "github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Machine struct {
@@ -39,7 +39,7 @@ func (sa *Machine) AppendEvent(event *es_models.Event) (err error) {
func (sa *Machine) setData(event *es_models.Event) error {
if err := json.Unmarshal(event.Data, sa); err != nil {
logging.Log("EVEN-8ujgd").WithError(err).Error("could not unmarshal event data")
- return errors.ThrowInternal(err, "MODEL-GwjY9", "could not unmarshal event")
+ return zerrors.ThrowInternal(err, "MODEL-GwjY9", "could not unmarshal event")
}
return nil
}
@@ -69,7 +69,7 @@ func (key *MachineKey) AppendEvent(event *es_models.Event) (err error) {
case user_repo.MachineKeyAddedEventType:
err = json.Unmarshal(event.Data, key)
if err != nil {
- return errors.ThrowInternal(err, "MODEL-SjI4S", "Errors.Internal")
+ return zerrors.ThrowInternal(err, "MODEL-SjI4S", "Errors.Internal")
}
case user_repo.MachineKeyRemovedEventType:
key.ExpirationDate = event.CreationDate
diff --git a/internal/user/repository/eventsourcing/model/web_auth_n.go b/internal/user/repository/eventsourcing/model/web_auth_n.go
index 86bf5de063..5a5a133aff 100644
--- a/internal/user/repository/eventsourcing/model/web_auth_n.go
+++ b/internal/user/repository/eventsourcing/model/web_auth_n.go
@@ -3,10 +3,10 @@ package model
import (
"github.com/zitadel/logging"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
"github.com/zitadel/zitadel/internal/user/model"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type WebAuthNToken struct {
@@ -64,7 +64,7 @@ func GetWebauthn(webauthnTokens []*WebAuthNToken, id string) (int, *WebAuthNToke
func (w *WebAuthNVerify) SetData(event eventstore.Event) error {
if err := event.Unmarshal(w); err != nil {
logging.Log("EVEN-G342rf").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-B6641", "could not unmarshal event")
+ return zerrors.ThrowInternal(err, "MODEL-B6641", "could not unmarshal event")
}
return nil
}
@@ -101,7 +101,7 @@ func (u *Human) appendU2FVerifiedEvent(event eventstore.Event) error {
token.State = int32(model.MFAStateReady)
return nil
}
- return caos_errs.ThrowPreconditionFailed(nil, "MODEL-4hu9s", "Errors.Users.MFA.U2F.NotExisting")
+ return zerrors.ThrowPreconditionFailed(nil, "MODEL-4hu9s", "Errors.Users.MFA.U2F.NotExisting")
}
func (u *Human) appendU2FChangeSignCountEvent(event eventstore.Event) error {
@@ -114,7 +114,7 @@ func (u *Human) appendU2FChangeSignCountEvent(event eventstore.Event) error {
token.setData(event)
return nil
}
- return caos_errs.ThrowPreconditionFailed(nil, "MODEL-5Ms8h", "Errors.Users.MFA.U2F.NotExisting")
+ return zerrors.ThrowPreconditionFailed(nil, "MODEL-5Ms8h", "Errors.Users.MFA.U2F.NotExisting")
}
func (u *Human) appendU2FRemovedEvent(event eventstore.Event) error {
@@ -166,7 +166,7 @@ func (u *Human) appendPasswordlessVerifiedEvent(event eventstore.Event) error {
token.State = int32(model.MFAStateReady)
return nil
}
- return caos_errs.ThrowPreconditionFailed(nil, "MODEL-mKns8", "Errors.Users.MFA.Passwordless.NotExisting")
+ return zerrors.ThrowPreconditionFailed(nil, "MODEL-mKns8", "Errors.Users.MFA.Passwordless.NotExisting")
}
func (u *Human) appendPasswordlessChangeSignCountEvent(event eventstore.Event) error {
@@ -182,7 +182,7 @@ func (u *Human) appendPasswordlessChangeSignCountEvent(event eventstore.Event) e
}
return nil
}
- return caos_errs.ThrowPreconditionFailed(nil, "MODEL-2Mv9s", "Errors.Users.MFA.Passwordless.NotExisting")
+ return zerrors.ThrowPreconditionFailed(nil, "MODEL-2Mv9s", "Errors.Users.MFA.Passwordless.NotExisting")
}
func (u *Human) appendPasswordlessRemovedEvent(event eventstore.Event) error {
@@ -206,7 +206,7 @@ func (w *WebAuthNToken) setData(event eventstore.Event) error {
w.ObjectRoot.AppendEvent(event)
if err := event.Unmarshal(w); err != nil {
logging.Log("EVEN-4M9is").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-lo023", "could not unmarshal event")
+ return zerrors.ThrowInternal(err, "MODEL-lo023", "could not unmarshal event")
}
return nil
}
@@ -251,7 +251,7 @@ func (w *WebAuthNLogin) setData(event eventstore.Event) error {
w.ObjectRoot.AppendEvent(event)
if err := event.Unmarshal(w); err != nil {
logging.Log("EVEN-hmSlo").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-lo023", "could not unmarshal event")
+ return zerrors.ThrowInternal(err, "MODEL-lo023", "could not unmarshal event")
}
return nil
}
diff --git a/internal/user/repository/view/external_idp_view.go b/internal/user/repository/view/external_idp_view.go
deleted file mode 100644
index 4a64557f80..0000000000
--- a/internal/user/repository/view/external_idp_view.go
+++ /dev/null
@@ -1,147 +0,0 @@
-package view
-
-import (
- "github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/view/repository"
-
- "github.com/jinzhu/gorm"
-
- caos_errs "github.com/zitadel/zitadel/internal/errors"
- usr_model "github.com/zitadel/zitadel/internal/user/model"
- "github.com/zitadel/zitadel/internal/user/repository/view/model"
-)
-
-func ExternalIDPByExternalUserIDAndIDPConfigID(db *gorm.DB, table, externalUserID, idpConfigID, instanceID string) (*model.ExternalIDPView, error) {
- user := new(model.ExternalIDPView)
- userIDQuery := &model.ExternalIDPSearchQuery{
- Key: usr_model.ExternalIDPSearchKeyExternalUserID,
- Method: domain.SearchMethodEquals,
- Value: externalUserID,
- }
- idpConfigIDQuery := &model.ExternalIDPSearchQuery{
- Key: usr_model.ExternalIDPSearchKeyIdpConfigID,
- Method: domain.SearchMethodEquals,
- Value: idpConfigID,
- }
- instanceIDQuery := &model.ExternalIDPSearchQuery{
- Key: usr_model.ExternalIDPSearchKeyInstanceID,
- Method: domain.SearchMethodEquals,
- Value: instanceID,
- }
- ownerRemovedQuery := &model.ExternalIDPSearchQuery{
- Key: usr_model.ExternalIDPSearchKeyOwnerRemoved,
- Method: domain.SearchMethodEquals,
- Value: false,
- }
- query := repository.PrepareGetByQuery(table, userIDQuery, idpConfigIDQuery, instanceIDQuery, ownerRemovedQuery)
- err := query(db, user)
- if caos_errs.IsNotFound(err) {
- return nil, caos_errs.ThrowNotFound(nil, "VIEW-Mso9f", "Errors.ExternalIDP.NotFound")
- }
- return user, err
-}
-
-func ExternalIDPByExternalUserIDAndIDPConfigIDAndResourceOwner(db *gorm.DB, table, externalUserID, idpConfigID, resourceOwner, instanceID string) (*model.ExternalIDPView, error) {
- user := new(model.ExternalIDPView)
- userIDQuery := &model.ExternalIDPSearchQuery{
- Key: usr_model.ExternalIDPSearchKeyExternalUserID,
- Method: domain.SearchMethodEquals,
- Value: externalUserID,
- }
- idpConfigIDQuery := &model.ExternalIDPSearchQuery{
- Key: usr_model.ExternalIDPSearchKeyIdpConfigID,
- Method: domain.SearchMethodEquals,
- Value: idpConfigID,
- }
- resourceOwnerQuery := &model.ExternalIDPSearchQuery{
- Key: usr_model.ExternalIDPSearchKeyResourceOwner,
- Method: domain.SearchMethodEquals,
- Value: resourceOwner,
- }
- instanceIDQuery := &model.ExternalIDPSearchQuery{
- Key: usr_model.ExternalIDPSearchKeyInstanceID,
- Method: domain.SearchMethodEquals,
- Value: instanceID,
- }
- ownerRemovedQuery := &model.ExternalIDPSearchQuery{
- Key: usr_model.ExternalIDPSearchKeyOwnerRemoved,
- Method: domain.SearchMethodEquals,
- Value: false,
- }
- query := repository.PrepareGetByQuery(table, userIDQuery, idpConfigIDQuery, resourceOwnerQuery, instanceIDQuery, ownerRemovedQuery)
- err := query(db, user)
- if caos_errs.IsNotFound(err) {
- return nil, caos_errs.ThrowNotFound(nil, "VIEW-Sf8sd", "Errors.ExternalIDP.NotFound")
- }
- return user, err
-}
-
-func ExternalIDPsByIDPConfigID(db *gorm.DB, table, idpConfigID, instanceID string) ([]*model.ExternalIDPView, error) {
- externalIDPs := make([]*model.ExternalIDPView, 0)
- orgIDQuery := &usr_model.ExternalIDPSearchQuery{
- Key: usr_model.ExternalIDPSearchKeyIdpConfigID,
- Method: domain.SearchMethodEquals,
- Value: idpConfigID,
- }
- instanceIDQuery := &usr_model.ExternalIDPSearchQuery{
- Key: usr_model.ExternalIDPSearchKeyInstanceID,
- Method: domain.SearchMethodEquals,
- Value: instanceID,
- }
- ownerRemovedQuery := &usr_model.ExternalIDPSearchQuery{
- Key: usr_model.ExternalIDPSearchKeyOwnerRemoved,
- Method: domain.SearchMethodEquals,
- Value: false,
- }
- query := repository.PrepareSearchQuery(table, model.ExternalIDPSearchRequest{
- Queries: []*usr_model.ExternalIDPSearchQuery{orgIDQuery, instanceIDQuery, ownerRemovedQuery},
- })
- _, err := query(db, &externalIDPs)
- return externalIDPs, err
-}
-
-func PutExternalIDPs(db *gorm.DB, table string, externalIDPs ...*model.ExternalIDPView) error {
- save := repository.PrepareBulkSave(table)
- u := make([]interface{}, len(externalIDPs))
- for i, idp := range externalIDPs {
- u[i] = idp
- }
- return save(db, u...)
-}
-
-func PutExternalIDP(db *gorm.DB, table string, idp *model.ExternalIDPView) error {
- save := repository.PrepareSave(table)
- return save(db, idp)
-}
-
-func DeleteExternalIDP(db *gorm.DB, table, externalUserID, idpConfigID, instanceID string) error {
- delete := repository.PrepareDeleteByKeys(table,
- repository.Key{Key: model.ExternalIDPSearchKey(usr_model.ExternalIDPSearchKeyExternalUserID), Value: externalUserID},
- repository.Key{Key: model.ExternalIDPSearchKey(usr_model.ExternalIDPSearchKeyIdpConfigID), Value: idpConfigID},
- repository.Key{Key: model.ExternalIDPSearchKey(usr_model.ExternalIDPSearchKeyInstanceID), Value: instanceID},
- )
- return delete(db)
-}
-
-func DeleteExternalIDPsByUserID(db *gorm.DB, table, userID, instanceID string) error {
- delete := repository.PrepareDeleteByKeys(table,
- repository.Key{model.ExternalIDPSearchKey(usr_model.ExternalIDPSearchKeyUserID), userID},
- repository.Key{model.ExternalIDPSearchKey(usr_model.ExternalIDPSearchKeyInstanceID), instanceID},
- )
- return delete(db)
-}
-
-func DeleteInstanceExternalIDPs(db *gorm.DB, table, instanceID string) error {
- delete := repository.PrepareDeleteByKey(table, model.ExternalIDPSearchKey(usr_model.ExternalIDPSearchKeyInstanceID), instanceID)
- return delete(db)
-}
-
-func UpdateOrgOwnerRemovedExternalIDPs(db *gorm.DB, table, instanceID, aggID string) error {
- update := repository.PrepareUpdateByKeys(table,
- model.ExternalIDPSearchKey(usr_model.ExternalIDPSearchKeyOwnerRemoved),
- true,
- repository.Key{Key: model.ExternalIDPSearchKey(usr_model.ExternalIDPSearchKeyInstanceID), Value: instanceID},
- repository.Key{Key: model.ExternalIDPSearchKey(usr_model.ExternalIDPSearchKeyResourceOwner), Value: aggID},
- )
- return update(db)
-}
diff --git a/internal/user/repository/view/model/external_idp_query.go b/internal/user/repository/view/model/external_idp_query.go
deleted file mode 100644
index d6f193cb7d..0000000000
--- a/internal/user/repository/view/model/external_idp_query.go
+++ /dev/null
@@ -1,69 +0,0 @@
-package model
-
-import (
- "github.com/zitadel/zitadel/internal/domain"
- usr_model "github.com/zitadel/zitadel/internal/user/model"
- "github.com/zitadel/zitadel/internal/view/repository"
-)
-
-type ExternalIDPSearchRequest usr_model.ExternalIDPSearchRequest
-type ExternalIDPSearchQuery usr_model.ExternalIDPSearchQuery
-type ExternalIDPSearchKey usr_model.ExternalIDPSearchKey
-
-func (req ExternalIDPSearchRequest) GetLimit() uint64 {
- return req.Limit
-}
-
-func (req ExternalIDPSearchRequest) GetOffset() uint64 {
- return req.Offset
-}
-
-func (req ExternalIDPSearchRequest) GetSortingColumn() repository.ColumnKey {
- if req.SortingColumn == usr_model.ExternalIDPSearchKeyUnspecified {
- return nil
- }
- return ExternalIDPSearchKey(req.SortingColumn)
-}
-
-func (req ExternalIDPSearchRequest) GetAsc() bool {
- return req.Asc
-}
-
-func (req ExternalIDPSearchRequest) GetQueries() []repository.SearchQuery {
- result := make([]repository.SearchQuery, len(req.Queries))
- for i, q := range req.Queries {
- result[i] = ExternalIDPSearchQuery{Key: q.Key, Value: q.Value, Method: q.Method}
- }
- return result
-}
-
-func (req ExternalIDPSearchQuery) GetKey() repository.ColumnKey {
- return ExternalIDPSearchKey(req.Key)
-}
-
-func (req ExternalIDPSearchQuery) GetMethod() domain.SearchMethod {
- return req.Method
-}
-
-func (req ExternalIDPSearchQuery) GetValue() interface{} {
- return req.Value
-}
-
-func (key ExternalIDPSearchKey) ToColumnName() string {
- switch usr_model.ExternalIDPSearchKey(key) {
- case usr_model.ExternalIDPSearchKeyExternalUserID:
- return ExternalIDPKeyExternalUserID
- case usr_model.ExternalIDPSearchKeyUserID:
- return ExternalIDPKeyUserID
- case usr_model.ExternalIDPSearchKeyIdpConfigID:
- return ExternalIDPKeyIDPConfigID
- case usr_model.ExternalIDPSearchKeyResourceOwner:
- return ExternalIDPKeyResourceOwner
- case usr_model.ExternalIDPSearchKeyInstanceID:
- return ExternalIDPKeyInstanceID
- case usr_model.ExternalIDPSearchKeyOwnerRemoved:
- return ExternalIDPKeyOwnerRemoved
- default:
- return ""
- }
-}
diff --git a/internal/user/repository/view/model/external_idps.go b/internal/user/repository/view/model/external_idps.go
deleted file mode 100644
index 4b03c7dc49..0000000000
--- a/internal/user/repository/view/model/external_idps.go
+++ /dev/null
@@ -1,59 +0,0 @@
-package model
-
-import (
- "encoding/json"
- "time"
-
- "github.com/zitadel/logging"
-
- caos_errs "github.com/zitadel/zitadel/internal/errors"
- "github.com/zitadel/zitadel/internal/eventstore/v1/models"
- user_repo "github.com/zitadel/zitadel/internal/repository/user"
-)
-
-const (
- ExternalIDPKeyExternalUserID = "external_user_id"
- ExternalIDPKeyUserID = "user_id"
- ExternalIDPKeyIDPConfigID = "idp_config_id"
- ExternalIDPKeyResourceOwner = "resource_owner"
- ExternalIDPKeyInstanceID = "instance_id"
- ExternalIDPKeyOwnerRemoved = "owner_removed"
-)
-
-type ExternalIDPView struct {
- ExternalUserID string `json:"userID" gorm:"column:external_user_id;primary_key"`
- IDPConfigID string `json:"idpConfigID" gorm:"column:idp_config_id;primary_key"`
- UserID string `json:"-" gorm:"column:user_id"`
- IDPName string `json:"-" gorm:"column:idp_name"`
- UserDisplayName string `json:"displayName" gorm:"column:user_display_name"`
- CreationDate time.Time `json:"-" gorm:"column:creation_date"`
- ChangeDate time.Time `json:"-" gorm:"column:change_date"`
- ResourceOwner string `json:"-" gorm:"column:resource_owner"`
- Sequence uint64 `json:"-" gorm:"column:sequence"`
- InstanceID string `json:"instanceID" gorm:"column:instance_id;primary_key"`
-}
-
-func (i *ExternalIDPView) AppendEvent(event *models.Event) (err error) {
- i.Sequence = event.Seq
- i.ChangeDate = event.CreationDate
- if event.Typ == user_repo.UserIDPLinkAddedType {
- i.setRootData(event)
- i.CreationDate = event.CreationDate
- err = i.SetData(event)
- }
- return err
-}
-
-func (r *ExternalIDPView) setRootData(event *models.Event) {
- r.UserID = event.AggregateID
- r.ResourceOwner = event.ResourceOwner
- r.InstanceID = event.InstanceID
-}
-
-func (r *ExternalIDPView) SetData(event *models.Event) error {
- if err := json.Unmarshal(event.Data, r); err != nil {
- logging.Log("EVEN-48sfs").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-Hs8uf", "Could not unmarshal data")
- }
- return nil
-}
diff --git a/internal/user/repository/view/model/notify_user.go b/internal/user/repository/view/model/notify_user.go
deleted file mode 100644
index 371d7a9cdb..0000000000
--- a/internal/user/repository/view/model/notify_user.go
+++ /dev/null
@@ -1,132 +0,0 @@
-package model
-
-import (
- "encoding/json"
- "time"
-
- "github.com/zitadel/logging"
-
- "github.com/zitadel/zitadel/internal/database"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
- "github.com/zitadel/zitadel/internal/eventstore/v1/models"
- org_model "github.com/zitadel/zitadel/internal/org/model"
- "github.com/zitadel/zitadel/internal/repository/user"
- es_model "github.com/zitadel/zitadel/internal/user/repository/eventsourcing/model"
-)
-
-const (
- NotifyUserKeyUserID = "id"
- NotifyUserKeyResourceOwner = "resource_owner"
- NotifyUserKeyInstanceID = "instance_id"
-)
-
-type NotifyUser struct {
- ID string `json:"-" gorm:"column:id;primary_key"`
- CreationDate time.Time `json:"-" gorm:"column:creation_date"`
- ChangeDate time.Time `json:"-" gorm:"column:change_date"`
- ResourceOwner string `json:"-" gorm:"column:resource_owner"`
- UserName string `json:"userName" gorm:"column:user_name"`
- LoginNames database.TextArray[string] `json:"-" gorm:"column:login_names"`
- PreferredLoginName string `json:"-" gorm:"column:preferred_login_name"`
- FirstName string `json:"firstName" gorm:"column:first_name"`
- LastName string `json:"lastName" gorm:"column:last_name"`
- NickName string `json:"nickName" gorm:"column:nick_name"`
- DisplayName string `json:"displayName" gorm:"column:display_name"`
- PreferredLanguage string `json:"preferredLanguage" gorm:"column:preferred_language"`
- Gender int32 `json:"gender" gorm:"column:gender"`
- LastEmail string `json:"email" gorm:"column:last_email"`
- VerifiedEmail string `json:"-" gorm:"column:verified_email"`
- LastPhone string `json:"phone" gorm:"column:last_phone"`
- VerifiedPhone string `json:"-" gorm:"column:verified_phone"`
- PasswordSet bool `json:"-" gorm:"column:password_set"`
- Sequence uint64 `json:"-" gorm:"column:sequence"`
- State int32 `json:"-" gorm:"-"`
- InstanceID string `json:"instanceID" gorm:"column:instance_id;primary_key"`
-}
-
-func (u *NotifyUser) GenerateLoginName(domain string, appendDomain bool) string {
- if !appendDomain {
- return u.UserName
- }
- return u.UserName + "@" + domain
-}
-
-func (u *NotifyUser) SetLoginNames(userLoginMustBeDomain bool, domains []*org_model.OrgDomain) {
- loginNames := make([]string, 0)
- for _, d := range domains {
- if d.Verified {
- loginNames = append(loginNames, u.GenerateLoginName(d.Domain, true))
- }
- }
- if !userLoginMustBeDomain {
- loginNames = append(loginNames, u.UserName)
- }
- u.LoginNames = loginNames
-}
-
-func (u *NotifyUser) AppendEvent(event *models.Event) (err error) {
- u.ChangeDate = event.CreationDate
- u.Sequence = event.Seq
- switch event.Type() {
- case user.UserV1AddedType,
- user.UserV1RegisteredType,
- user.HumanRegisteredType,
- user.HumanAddedType,
- user.MachineAddedEventType:
- u.CreationDate = event.CreationDate
- u.setRootData(event)
- err = u.setData(event)
- if err != nil {
- return err
- }
- err = u.setPasswordData(event)
- case user.UserV1ProfileChangedType,
- user.UserV1EmailChangedType,
- user.UserV1PhoneChangedType,
- user.HumanProfileChangedType,
- user.HumanEmailChangedType,
- user.HumanPhoneChangedType,
- user.UserUserNameChangedType:
- err = u.setData(event)
- case user.UserV1EmailVerifiedType,
- user.HumanEmailVerifiedType:
- u.VerifiedEmail = u.LastEmail
- case user.UserV1PhoneRemovedType,
- user.HumanPhoneRemovedType:
- u.VerifiedPhone = ""
- u.LastPhone = ""
- case user.UserV1PhoneVerifiedType,
- user.HumanPhoneVerifiedType:
- u.VerifiedPhone = u.LastPhone
- case user.UserV1PasswordChangedType,
- user.HumanPasswordChangedType:
- err = u.setPasswordData(event)
- case user.UserRemovedType:
- u.State = int32(UserStateDeleted)
- }
- return err
-}
-
-func (u *NotifyUser) setRootData(event *models.Event) {
- u.ID = event.AggregateID
- u.ResourceOwner = event.ResourceOwner
- u.InstanceID = event.InstanceID
-}
-
-func (u *NotifyUser) setData(event *models.Event) error {
- if err := json.Unmarshal(event.Data, u); err != nil {
- logging.Log("MODEL-lso9e").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(nil, "MODEL-8iows", "could not unmarshal data")
- }
- return nil
-}
-
-func (u *NotifyUser) setPasswordData(event *models.Event) error {
- password := new(es_model.Password)
- if err := json.Unmarshal(event.Data, password); err != nil {
- logging.Log("MODEL-dfhw6").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(nil, "MODEL-BHFD2", "could not unmarshal data")
- }
- u.PasswordSet = password.Secret != nil || password.EncodedHash != ""
- return nil
-}
diff --git a/internal/user/repository/view/model/notify_user_query.go b/internal/user/repository/view/model/notify_user_query.go
deleted file mode 100644
index e91299f386..0000000000
--- a/internal/user/repository/view/model/notify_user_query.go
+++ /dev/null
@@ -1,63 +0,0 @@
-package model
-
-import (
- "github.com/zitadel/zitadel/internal/domain"
- usr_model "github.com/zitadel/zitadel/internal/user/model"
- "github.com/zitadel/zitadel/internal/view/repository"
-)
-
-type NotifyUserSearchRequest usr_model.NotifyUserSearchRequest
-type NotifyUserSearchQuery usr_model.NotifyUserSearchQuery
-type NotifyUserSearchKey usr_model.NotifyUserSearchKey
-
-func (req NotifyUserSearchRequest) GetLimit() uint64 {
- return req.Limit
-}
-
-func (req NotifyUserSearchRequest) GetOffset() uint64 {
- return req.Offset
-}
-
-func (req NotifyUserSearchRequest) GetSortingColumn() repository.ColumnKey {
- if req.SortingColumn == usr_model.NotifyUserSearchKeyUnspecified {
- return nil
- }
- return NotifyUserSearchKey(req.SortingColumn)
-}
-
-func (req NotifyUserSearchRequest) GetAsc() bool {
- return req.Asc
-}
-
-func (req NotifyUserSearchRequest) GetQueries() []repository.SearchQuery {
- result := make([]repository.SearchQuery, len(req.Queries))
- for i, q := range req.Queries {
- result[i] = NotifyUserSearchQuery{Key: q.Key, Value: q.Value, Method: q.Method}
- }
- return result
-}
-
-func (req NotifyUserSearchQuery) GetKey() repository.ColumnKey {
- return NotifyUserSearchKey(req.Key)
-}
-
-func (req NotifyUserSearchQuery) GetMethod() domain.SearchMethod {
- return req.Method
-}
-
-func (req NotifyUserSearchQuery) GetValue() interface{} {
- return req.Value
-}
-
-func (key NotifyUserSearchKey) ToColumnName() string {
- switch usr_model.NotifyUserSearchKey(key) {
- case usr_model.NotifyUserSearchKeyUserID:
- return NotifyUserKeyUserID
- case usr_model.NotifyUserSearchKeyResourceOwner:
- return NotifyUserKeyResourceOwner
- case usr_model.NotifyUserSearchKeyInstanceID:
- return NotifyUserKeyInstanceID
- default:
- return ""
- }
-}
diff --git a/internal/user/repository/view/model/notify_user_test.go b/internal/user/repository/view/model/notify_user_test.go
deleted file mode 100644
index 7644ba03ab..0000000000
--- a/internal/user/repository/view/model/notify_user_test.go
+++ /dev/null
@@ -1,123 +0,0 @@
-package model
-
-import (
- "testing"
-
- es_models "github.com/zitadel/zitadel/internal/eventstore/v1/models"
- "github.com/zitadel/zitadel/internal/repository/user"
- es_model "github.com/zitadel/zitadel/internal/user/repository/eventsourcing/model"
-)
-
-func TestNotifyUserAppendEvent(t *testing.T) {
- type args struct {
- event *es_models.Event
- user *NotifyUser
- }
- tests := []struct {
- name string
- args args
- result *NotifyUser
- }{
- {
- name: "append added user event",
- args: args{
- event: &es_models.Event{AggregateID: "AggregateID", Seq: 1, Typ: user.UserV1AddedType, ResourceOwner: "GrantedOrgID", Data: mockUserData(getFullHuman(nil))},
- user: &NotifyUser{},
- },
- result: &NotifyUser{ID: "AggregateID", ResourceOwner: "GrantedOrgID", UserName: "UserName", FirstName: "FirstName", LastName: "LastName", LastEmail: "Email", LastPhone: "Phone"},
- },
- {
- name: "append added human event",
- args: args{
- event: &es_models.Event{AggregateID: "AggregateID", Seq: 1, Typ: user.HumanAddedType, ResourceOwner: "GrantedOrgID", Data: mockUserData(getFullHuman(nil))},
- user: &NotifyUser{},
- },
- result: &NotifyUser{ID: "AggregateID", ResourceOwner: "GrantedOrgID", UserName: "UserName", FirstName: "FirstName", LastName: "LastName", LastEmail: "Email", LastPhone: "Phone"},
- },
- {
- name: "append change user profile event",
- args: args{
- event: &es_models.Event{AggregateID: "AggregateID", Seq: 1, Typ: user.UserV1ProfileChangedType, ResourceOwner: "GrantedOrgID", Data: mockProfileData(&es_model.Profile{FirstName: "FirstNameChanged"})},
- user: &NotifyUser{ID: "AggregateID", ResourceOwner: "GrantedOrgID", UserName: "UserName", FirstName: "FirstName", LastName: "LastName", LastEmail: "Email", LastPhone: "Phone"},
- },
- result: &NotifyUser{ID: "AggregateID", ResourceOwner: "GrantedOrgID", UserName: "UserName", FirstName: "FirstNameChanged", LastName: "LastName", LastEmail: "Email", LastPhone: "Phone"},
- },
- {
- name: "append change user email event",
- args: args{
- event: &es_models.Event{AggregateID: "AggregateID", Seq: 1, Typ: user.UserV1EmailChangedType, ResourceOwner: "GrantedOrgID", Data: mockEmailData(&es_model.Email{EmailAddress: "EmailChanged"})},
- user: &NotifyUser{ID: "AggregateID", ResourceOwner: "GrantedOrgID", UserName: "UserName", FirstName: "FirstName", LastName: "LastName", LastEmail: "Email", LastPhone: "Phone"},
- },
- result: &NotifyUser{ID: "AggregateID", ResourceOwner: "GrantedOrgID", UserName: "UserName", FirstName: "FirstName", LastName: "LastName", LastEmail: "EmailChanged", LastPhone: "Phone"},
- },
- {
- name: "append change user email event, existing email",
- args: args{
- event: &es_models.Event{AggregateID: "AggregateID", Seq: 1, Typ: user.UserV1EmailChangedType, ResourceOwner: "GrantedOrgID", Data: mockEmailData(&es_model.Email{EmailAddress: "EmailChanged"})},
- user: &NotifyUser{ID: "AggregateID", ResourceOwner: "GrantedOrgID", UserName: "UserName", FirstName: "FirstName", LastName: "LastName", LastEmail: "Email", VerifiedEmail: "Email", LastPhone: "Phone"},
- },
- result: &NotifyUser{ID: "AggregateID", ResourceOwner: "GrantedOrgID", UserName: "UserName", FirstName: "FirstName", LastName: "LastName", LastEmail: "EmailChanged", VerifiedEmail: "Email", LastPhone: "Phone"},
- },
- {
- name: "append verify user email event",
- args: args{
- event: &es_models.Event{AggregateID: "AggregateID", Seq: 1, Typ: user.UserV1EmailVerifiedType, ResourceOwner: "GrantedOrgID"},
- user: &NotifyUser{ID: "AggregateID", ResourceOwner: "GrantedOrgID", UserName: "UserName", FirstName: "FirstName", LastName: "LastName", LastEmail: "Email", LastPhone: "Phone"},
- },
- result: &NotifyUser{ID: "AggregateID", ResourceOwner: "GrantedOrgID", UserName: "UserName", FirstName: "FirstName", LastName: "LastName", LastEmail: "Email", VerifiedEmail: "Email", LastPhone: "Phone"},
- },
- {
- name: "append change user phone event",
- args: args{
- event: &es_models.Event{AggregateID: "AggregateID", Seq: 1, Typ: user.UserV1PhoneChangedType, ResourceOwner: "GrantedOrgID", Data: mockPhoneData(&es_model.Phone{PhoneNumber: "PhoneChanged"})},
- user: &NotifyUser{ID: "AggregateID", ResourceOwner: "GrantedOrgID", UserName: "UserName", FirstName: "FirstName", LastName: "LastName", LastEmail: "Email", LastPhone: "Phone"},
- },
- result: &NotifyUser{ID: "AggregateID", ResourceOwner: "GrantedOrgID", UserName: "UserName", FirstName: "FirstName", LastName: "LastName", LastEmail: "Email", LastPhone: "PhoneChanged"},
- },
- {
- name: "append change user phone event, existing phone",
- args: args{
- event: &es_models.Event{AggregateID: "AggregateID", Seq: 1, Typ: user.UserV1PhoneChangedType, ResourceOwner: "GrantedOrgID", Data: mockPhoneData(&es_model.Phone{PhoneNumber: "PhoneChanged"})},
- user: &NotifyUser{ID: "AggregateID", ResourceOwner: "GrantedOrgID", UserName: "UserName", FirstName: "FirstName", LastName: "LastName", LastEmail: "Email", LastPhone: "Phone", VerifiedPhone: "Phone"},
- },
- result: &NotifyUser{ID: "AggregateID", ResourceOwner: "GrantedOrgID", UserName: "UserName", FirstName: "FirstName", LastName: "LastName", LastEmail: "Email", LastPhone: "PhoneChanged", VerifiedPhone: "Phone"},
- },
- {
- name: "append verify user phone event",
- args: args{
- event: &es_models.Event{AggregateID: "AggregateID", Seq: 1, Typ: user.UserV1PhoneVerifiedType, ResourceOwner: "GrantedOrgID"},
- user: &NotifyUser{ID: "AggregateID", ResourceOwner: "GrantedOrgID", UserName: "UserName", FirstName: "FirstName", LastName: "LastName", LastEmail: "Email", LastPhone: "Phone"},
- },
- result: &NotifyUser{ID: "AggregateID", ResourceOwner: "GrantedOrgID", UserName: "UserName", FirstName: "FirstName", LastName: "LastName", LastEmail: "Email", LastPhone: "Phone", VerifiedPhone: "Phone"},
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- tt.args.user.AppendEvent(tt.args.event)
- if tt.args.user.ID != tt.result.ID {
- t.Errorf("got wrong result ID: expected: %v, actual: %v ", tt.result.ID, tt.args.user.ID)
- }
- if tt.args.user.FirstName != tt.result.FirstName {
- t.Errorf("got wrong result FirstName: expected: %v, actual: %v ", tt.result.FirstName, tt.args.user.FirstName)
- }
- if tt.args.user.LastName != tt.result.LastName {
- t.Errorf("got wrong result FirstName: expected: %v, actual: %v ", tt.result.FirstName, tt.args.user.FirstName)
- }
- if tt.args.user.ResourceOwner != tt.result.ResourceOwner {
- t.Errorf("got wrong result ResourceOwner: expected: %v, actual: %v ", tt.result.ResourceOwner, tt.args.user.ResourceOwner)
- }
- if tt.args.user.LastEmail != tt.result.LastEmail {
- t.Errorf("got wrong result LastEmail: expected: %v, actual: %v ", tt.result.LastEmail, tt.args.user.LastEmail)
- }
- if tt.args.user.VerifiedEmail != tt.result.VerifiedEmail {
- t.Errorf("got wrong result VerifiedEmail: expected: %v, actual: %v ", tt.result.VerifiedEmail, tt.args.user.VerifiedEmail)
- }
- if tt.args.user.LastPhone != tt.result.LastPhone {
- t.Errorf("got wrong result LastPhone: expected: %v, actual: %v ", tt.result.LastPhone, tt.args.user.LastPhone)
- }
- if tt.args.user.VerifiedPhone != tt.result.VerifiedPhone {
- t.Errorf("got wrong result VerifiedPhone: expected: %v, actual: %v ", tt.result.VerifiedPhone, tt.args.user.VerifiedPhone)
- }
- })
- }
-}
diff --git a/internal/user/repository/view/model/refresh_token.go b/internal/user/repository/view/model/refresh_token.go
index d62b3e1410..a45300ca81 100644
--- a/internal/user/repository/view/model/refresh_token.go
+++ b/internal/user/repository/view/model/refresh_token.go
@@ -6,10 +6,10 @@ import (
"github.com/zitadel/logging"
"github.com/zitadel/zitadel/internal/database"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
user_repo "github.com/zitadel/zitadel/internal/repository/user"
usr_model "github.com/zitadel/zitadel/internal/user/model"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -122,7 +122,7 @@ func (t *RefreshTokenView) appendAddedEvent(event eventstore.Event) error {
e := new(user_repo.HumanRefreshTokenAddedEvent)
if err := event.Unmarshal(e); err != nil {
logging.Log("EVEN-Dbb31").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-Bbr42", "could not unmarshal event")
+ return zerrors.ThrowInternal(err, "MODEL-Bbr42", "could not unmarshal event")
}
t.ID = e.TokenID
t.CreationDate = event.CreatedAt()
@@ -142,7 +142,7 @@ func (t *RefreshTokenView) appendRenewedEvent(event eventstore.Event) error {
e := new(user_repo.HumanRefreshTokenRenewedEvent)
if err := event.Unmarshal(e); err != nil {
logging.Log("EVEN-Vbbn2").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-Bbrn4", "could not unmarshal event")
+ return zerrors.ThrowInternal(err, "MODEL-Bbrn4", "could not unmarshal event")
}
t.ID = e.TokenID
t.IdleExpiration = event.CreatedAt().Add(e.IdleExpiration)
diff --git a/internal/user/repository/view/model/token.go b/internal/user/repository/view/model/token.go
index 4e11eec94e..5b01ecd5be 100644
--- a/internal/user/repository/view/model/token.go
+++ b/internal/user/repository/view/model/token.go
@@ -6,10 +6,10 @@ import (
"github.com/zitadel/logging"
"github.com/zitadel/zitadel/internal/database"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
user_repo "github.com/zitadel/zitadel/internal/repository/user"
usr_model "github.com/zitadel/zitadel/internal/user/model"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -133,7 +133,7 @@ func (t *TokenView) setRootData(event eventstore.Event) {
func (t *TokenView) setData(event eventstore.Event) error {
if err := event.Unmarshal(t); err != nil {
logging.Log("EVEN-3Gm9s").WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(err, "MODEL-5Gms9", "could not unmarshal event")
+ return zerrors.ThrowInternal(err, "MODEL-5Gms9", "could not unmarshal event")
}
return nil
}
@@ -142,7 +142,7 @@ func agentIDFromSession(event eventstore.Event) (string, error) {
session := make(map[string]interface{})
if err := event.Unmarshal(&session); err != nil {
logging.Log("EVEN-Ghgt3").WithError(err).Error("could not unmarshal event data")
- return "", caos_errs.ThrowInternal(nil, "MODEL-GBf32", "could not unmarshal data")
+ return "", zerrors.ThrowInternal(nil, "MODEL-GBf32", "could not unmarshal data")
}
return session["userAgentID"].(string), nil
}
@@ -201,7 +201,7 @@ func eventToMap(event eventstore.Event) (map[string]interface{}, error) {
m := make(map[string]interface{})
if err := event.Unmarshal(&m); err != nil {
logging.Log("EVEN-Dbffe").WithError(err).Error("could not unmarshal event data")
- return nil, caos_errs.ThrowInternal(nil, "MODEL-SDAfw", "could not unmarshal data")
+ return nil, zerrors.ThrowInternal(nil, "MODEL-SDAfw", "could not unmarshal data")
}
return m, nil
}
diff --git a/internal/user/repository/view/model/user.go b/internal/user/repository/view/model/user.go
index 65fd329933..1beb4b323d 100644
--- a/internal/user/repository/view/model/user.go
+++ b/internal/user/repository/view/model/user.go
@@ -9,12 +9,12 @@ import (
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
org_model "github.com/zitadel/zitadel/internal/org/model"
"github.com/zitadel/zitadel/internal/repository/user"
"github.com/zitadel/zitadel/internal/user/model"
es_model "github.com/zitadel/zitadel/internal/user/repository/eventsourcing/model"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -317,14 +317,14 @@ func (u *UserView) AppendEvent(event eventstore.Event) (err error) {
user.HumanMFAOTPAddedType:
if u.HumanView == nil {
logging.WithFields("event_sequence", event.Sequence, "aggregate_id", event.Aggregate().ID, "instance", event.Aggregate().InstanceID).Warn("event is ignored because human not exists")
- return errors.ThrowInvalidArgument(nil, "MODEL-p2BXx", "event ignored: human not exists")
+ return zerrors.ThrowInvalidArgument(nil, "MODEL-p2BXx", "event ignored: human not exists")
}
u.OTPState = int32(model.MFAStateNotReady)
case user.UserV1MFAOTPVerifiedType,
user.HumanMFAOTPVerifiedType:
if u.HumanView == nil {
logging.WithFields("event_sequence", event.Sequence, "aggregate_id", event.Aggregate().ID, "instance", event.Aggregate().InstanceID).Warn("event is ignored because human not exists")
- return errors.ThrowInvalidArgument(nil, "MODEL-o6Lcq", "event ignored: human not exists")
+ return zerrors.ThrowInvalidArgument(nil, "MODEL-o6Lcq", "event ignored: human not exists")
}
u.OTPState = int32(model.MFAStateReady)
u.MFAInitSkipped = time.Time{}
@@ -368,7 +368,7 @@ func (u *UserView) AppendEvent(event eventstore.Event) (err error) {
user.HumanPasswordlessInitCodeRequestedType:
if u.HumanView == nil {
logging.WithFields("event_sequence", event.Sequence, "aggregate_id", event.Aggregate().ID, "instance", event.Aggregate().InstanceID).Warn("event is ignored because human not exists")
- return errors.ThrowInvalidArgument(nil, "MODEL-MbyC0", "event ignored: human not exists")
+ return zerrors.ThrowInvalidArgument(nil, "MODEL-MbyC0", "event ignored: human not exists")
}
if !u.PasswordSet {
u.PasswordlessInitRequired = true
@@ -388,7 +388,7 @@ func (u *UserView) setRootData(event eventstore.Event) {
func (u *UserView) setData(event eventstore.Event) error {
if err := event.Unmarshal(u); err != nil {
logging.Log("MODEL-lso9e").WithError(err).Error("could not unmarshal event data")
- return errors.ThrowInternal(nil, "MODEL-8iows", "could not unmarshal data")
+ return zerrors.ThrowInternal(nil, "MODEL-8iows", "could not unmarshal data")
}
return nil
}
@@ -397,7 +397,7 @@ func (u *UserView) setPasswordData(event eventstore.Event) error {
password := new(es_model.Password)
if err := event.Unmarshal(password); err != nil {
logging.Log("MODEL-sdw4r").WithError(err).Error("could not unmarshal event data")
- return errors.ThrowInternal(nil, "MODEL-6jhsw", "could not unmarshal data")
+ return zerrors.ThrowInternal(nil, "MODEL-6jhsw", "could not unmarshal data")
}
u.PasswordSet = password.Secret != nil || password.EncodedHash != ""
u.PasswordInitRequired = !u.PasswordSet
@@ -503,7 +503,7 @@ func webAuthNViewFromEvent(event eventstore.Event) (*WebAuthNView, error) {
token := new(WebAuthNView)
err := event.Unmarshal(token)
if err != nil {
- return nil, errors.ThrowInternal(err, "MODEL-FSaq1", "could not unmarshal data")
+ return nil, zerrors.ThrowInternal(err, "MODEL-FSaq1", "could not unmarshal data")
}
return token, err
}
diff --git a/internal/user/repository/view/model/user_membership.go b/internal/user/repository/view/model/user_membership.go
deleted file mode 100644
index 7562c1e846..0000000000
--- a/internal/user/repository/view/model/user_membership.go
+++ /dev/null
@@ -1,135 +0,0 @@
-package model
-
-import (
- "encoding/json"
- "time"
-
- "github.com/zitadel/logging"
-
- "github.com/zitadel/zitadel/internal/database"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
- "github.com/zitadel/zitadel/internal/eventstore/v1/models"
- iam_es_model "github.com/zitadel/zitadel/internal/iam/repository/eventsourcing/model"
- org_es_model "github.com/zitadel/zitadel/internal/org/repository/eventsourcing/model"
- proj_es_model "github.com/zitadel/zitadel/internal/project/repository/eventsourcing/model"
- "github.com/zitadel/zitadel/internal/repository/instance"
- "github.com/zitadel/zitadel/internal/repository/org"
- "github.com/zitadel/zitadel/internal/repository/project"
- "github.com/zitadel/zitadel/internal/user/model"
-)
-
-const (
- UserMembershipKeyUserID = "user_id"
- UserMembershipKeyAggregateID = "aggregate_id"
- UserMembershipKeyObjectID = "object_id"
- UserMembershipKeyResourceOwner = "resource_owner"
- UserMembershipKeyMemberType = "member_type"
- UserMembershipKeyInstanceID = "instance_id"
-)
-
-type UserMembershipView struct {
- UserID string `json:"-" gorm:"column:user_id;primary_key"`
- MemberType int32 `json:"-" gorm:"column:member_type;primary_key"`
- AggregateID string `json:"-" gorm:"column:aggregate_id;primary_key"`
- ObjectID string `json:"-" gorm:"column:object_id;primary_key"`
-
- Roles database.TextArray[string] `json:"-" gorm:"column:roles"`
- DisplayName string `json:"-" gorm:"column:display_name"`
- CreationDate time.Time `json:"-" gorm:"column:creation_date"`
- ChangeDate time.Time `json:"-" gorm:"column:change_date"`
- ResourceOwner string `json:"-" gorm:"column:resource_owner"`
- ResourceOwnerName string `json:"-" gorm:"column:resource_owner_name"`
- Sequence uint64 `json:"-" gorm:"column:sequence"`
- InstanceID string `json:"instanceID" gorm:"column:instance_id;primary_key"`
-}
-
-func (u *UserMembershipView) AppendEvent(event *models.Event) (err error) {
- u.ChangeDate = event.CreationDate
- u.Sequence = event.Seq
-
- switch event.Type() {
- case instance.MemberAddedEventType:
- u.setRootData(event, model.MemberTypeIam)
- err = u.setIamMemberData(event)
- case instance.MemberChangedEventType,
- instance.MemberRemovedEventType,
- instance.MemberCascadeRemovedEventType:
- err = u.setIamMemberData(event)
- case org.MemberAddedEventType:
- u.setRootData(event, model.MemberTypeOrganisation)
- err = u.setOrgMemberData(event)
- case org.MemberChangedEventType,
- org.MemberRemovedEventType,
- org.MemberCascadeRemovedEventType:
- err = u.setOrgMemberData(event)
- case project.MemberAddedType:
- u.setRootData(event, model.MemberTypeProject)
- err = u.setProjectMemberData(event)
- case project.MemberChangedType,
- project.MemberRemovedType,
- project.MemberCascadeRemovedType:
- err = u.setProjectMemberData(event)
- case project.GrantMemberAddedType:
- u.setRootData(event, model.MemberTypeProjectGrant)
- err = u.setProjectGrantMemberData(event)
- case project.GrantMemberChangedType,
- project.GrantMemberRemovedType,
- project.GrantMemberCascadeRemovedType:
- err = u.setProjectGrantMemberData(event)
- }
- return err
-}
-
-func (u *UserMembershipView) setRootData(event *models.Event, memberType model.MemberType) {
- u.CreationDate = event.CreationDate
- u.AggregateID = event.AggregateID
- u.ObjectID = event.AggregateID
- u.ResourceOwner = event.ResourceOwner
- u.MemberType = int32(memberType)
- u.InstanceID = event.InstanceID
-}
-
-func (u *UserMembershipView) setIamMemberData(event *models.Event) error {
- member := new(iam_es_model.IAMMember)
- if err := json.Unmarshal(event.Data, member); err != nil {
- logging.New().WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(nil, "MODEL-6jhsw", "could not unmarshal data")
- }
- u.UserID = member.UserID
- u.Roles = member.Roles
- return nil
-}
-
-func (u *UserMembershipView) setOrgMemberData(event *models.Event) error {
- member := new(org_es_model.OrgMember)
- if err := json.Unmarshal(event.Data, member); err != nil {
- logging.New().WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(nil, "MODEL-6jhsw", "could not unmarshal data")
- }
- u.UserID = member.UserID
- u.Roles = member.Roles
- return nil
-}
-
-func (u *UserMembershipView) setProjectMemberData(event *models.Event) error {
- member := new(proj_es_model.ProjectMember)
- if err := json.Unmarshal(event.Data, member); err != nil {
- logging.New().WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(nil, "MODEL-6jhsw", "could not unmarshal data")
- }
- u.UserID = member.UserID
- u.Roles = member.Roles
- return nil
-}
-
-func (u *UserMembershipView) setProjectGrantMemberData(event *models.Event) error {
- member := new(proj_es_model.ProjectGrantMember)
- if err := json.Unmarshal(event.Data, member); err != nil {
- logging.New().WithError(err).Error("could not unmarshal event data")
- return caos_errs.ThrowInternal(nil, "MODEL-6jhsw", "could not unmarshal data")
- }
- u.UserID = member.UserID
- u.ObjectID = member.GrantID
- u.Roles = member.Roles
- return nil
-}
diff --git a/internal/user/repository/view/model/user_membership_query.go b/internal/user/repository/view/model/user_membership_query.go
deleted file mode 100644
index 37d68792b6..0000000000
--- a/internal/user/repository/view/model/user_membership_query.go
+++ /dev/null
@@ -1,70 +0,0 @@
-package model
-
-import (
- "github.com/zitadel/zitadel/internal/domain"
- usr_model "github.com/zitadel/zitadel/internal/user/model"
- "github.com/zitadel/zitadel/internal/view/repository"
-)
-
-type UserMembershipSearchRequest usr_model.UserMembershipSearchRequest
-type UserMembershipSearchQuery usr_model.UserMembershipSearchQuery
-type UserMembershipSearchKey usr_model.UserMembershipSearchKey
-
-func (req UserMembershipSearchRequest) GetLimit() uint64 {
- return req.Limit
-}
-
-func (req UserMembershipSearchRequest) GetOffset() uint64 {
- return req.Offset
-}
-
-func (req UserMembershipSearchRequest) GetSortingColumn() repository.ColumnKey {
- if req.SortingColumn == usr_model.UserMembershipSearchKeyUnspecified {
- return nil
- }
- return UserMembershipSearchKey(req.SortingColumn)
-}
-
-func (req UserMembershipSearchRequest) GetAsc() bool {
- return req.Asc
-}
-
-func (req UserMembershipSearchRequest) GetQueries() []repository.SearchQuery {
- result := make([]repository.SearchQuery, len(req.Queries))
- for i, q := range req.Queries {
- result[i] = UserMembershipSearchQuery{Key: q.Key, Value: q.Value, Method: q.Method}
- }
- return result
-}
-
-func (req UserMembershipSearchQuery) GetKey() repository.ColumnKey {
- return UserMembershipSearchKey(req.Key)
-}
-
-func (req UserMembershipSearchQuery) GetMethod() domain.SearchMethod {
- return req.Method
-}
-
-func (req UserMembershipSearchQuery) GetValue() interface{} {
- return req.Value
-}
-
-func (key UserMembershipSearchKey) ToColumnName() string {
- switch usr_model.UserMembershipSearchKey(key) {
- case usr_model.UserMembershipSearchKeyUserID:
- return UserMembershipKeyUserID
- case usr_model.UserMembershipSearchKeyResourceOwner:
- return UserMembershipKeyResourceOwner
- case usr_model.UserMembershipSearchKeyMemberType:
- return UserMembershipKeyMemberType
- case usr_model.UserMembershipSearchKeyAggregateID:
- return UserMembershipKeyAggregateID
- case usr_model.UserMembershipSearchKeyObjectID:
- return UserMembershipKeyObjectID
- case usr_model.UserMembershipSearchKeyInstanceID:
- return UserMembershipKeyInstanceID
-
- default:
- return ""
- }
-}
diff --git a/internal/user/repository/view/model/user_session.go b/internal/user/repository/view/model/user_session.go
index d660b38a25..3b21e877f2 100644
--- a/internal/user/repository/view/model/user_session.go
+++ b/internal/user/repository/view/model/user_session.go
@@ -6,11 +6,11 @@ import (
"github.com/zitadel/logging"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/user"
"github.com/zitadel/zitadel/internal/user/model"
es_model "github.com/zitadel/zitadel/internal/user/repository/eventsourcing/model"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
const (
@@ -49,7 +49,7 @@ func UserSessionFromEvent(event eventstore.Event) (*UserSessionView, error) {
v := new(UserSessionView)
if err := event.Unmarshal(v); err != nil {
logging.Log("EVEN-lso9e").WithError(err).Error("could not unmarshal event data")
- return nil, caos_errs.ThrowInternal(nil, "MODEL-sd325", "could not unmarshal data")
+ return nil, zerrors.ThrowInternal(nil, "MODEL-sd325", "could not unmarshal data")
}
return v, nil
}
@@ -212,7 +212,7 @@ func avatarKeyFromEvent(event eventstore.Event) (string, error) {
data := make(map[string]string)
if err := event.Unmarshal(&data); err != nil {
logging.Log("EVEN-Sfew2").WithError(err).Error("could not unmarshal event data")
- return "", caos_errs.ThrowInternal(err, "MODEL-SFw2q", "could not unmarshal event")
+ return "", zerrors.ThrowInternal(err, "MODEL-SFw2q", "could not unmarshal event")
}
return data["storeKey"], nil
}
diff --git a/internal/user/repository/view/notify_user.go b/internal/user/repository/view/notify_user.go
deleted file mode 100644
index 031ca3209d..0000000000
--- a/internal/user/repository/view/notify_user.go
+++ /dev/null
@@ -1,56 +0,0 @@
-package view
-
-import (
- "github.com/jinzhu/gorm"
-
- "github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
- usr_model "github.com/zitadel/zitadel/internal/user/model"
- "github.com/zitadel/zitadel/internal/user/repository/view/model"
- "github.com/zitadel/zitadel/internal/view/repository"
-)
-
-func NotifyUserByID(db *gorm.DB, table, userID, instanceID string) (*model.NotifyUser, error) {
- user := new(model.NotifyUser)
- query := repository.PrepareGetByQuery(table,
- model.NotifyUserSearchQuery{Key: usr_model.NotifyUserSearchKeyUserID, Method: domain.SearchMethodEquals, Value: userID},
- model.NotifyUserSearchQuery{Key: usr_model.NotifyUserSearchKeyInstanceID, Method: domain.SearchMethodEquals, Value: instanceID},
- )
- err := query(db, user)
- if caos_errs.IsNotFound(err) {
- return nil, caos_errs.ThrowNotFound(nil, "VIEW-Gad31", "Errors.User.NotFound")
- }
- return user, err
-}
-
-func NotifyUsersByOrgID(db *gorm.DB, table, orgID, instanceID string) ([]*model.NotifyUser, error) {
- users := make([]*model.NotifyUser, 0)
- orgIDQuery := &usr_model.NotifyUserSearchQuery{
- Key: usr_model.NotifyUserSearchKeyResourceOwner,
- Method: domain.SearchMethodEquals,
- Value: orgID,
- }
- instanceIDQuery := &usr_model.NotifyUserSearchQuery{
- Key: usr_model.NotifyUserSearchKeyInstanceID,
- Method: domain.SearchMethodEquals,
- Value: instanceID,
- }
- query := repository.PrepareSearchQuery(table, model.NotifyUserSearchRequest{
- Queries: []*usr_model.NotifyUserSearchQuery{orgIDQuery, instanceIDQuery},
- })
- _, err := query(db, &users)
- return users, err
-}
-
-func PutNotifyUser(db *gorm.DB, table string, project *model.NotifyUser) error {
- save := repository.PrepareSave(table)
- return save(db, project)
-}
-
-func DeleteNotifyUser(db *gorm.DB, table, userID, instanceID string) error {
- delete := repository.PrepareDeleteByKeys(table,
- repository.Key{model.UserSearchKey(usr_model.NotifyUserSearchKeyUserID), userID},
- repository.Key{model.UserSearchKey(usr_model.NotifyUserSearchKeyInstanceID), instanceID},
- )
- return delete(db)
-}
diff --git a/internal/user/repository/view/query.go b/internal/user/repository/view/query.go
index def8e6397d..3285c11234 100644
--- a/internal/user/repository/view/query.go
+++ b/internal/user/repository/view/query.go
@@ -3,14 +3,14 @@ package view
import (
"time"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/user"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func UserByIDQuery(id, instanceID string, changeDate time.Time, eventTypes []eventstore.EventType) (*eventstore.SearchQueryBuilder, error) {
if id == "" {
- return nil, errors.ThrowPreconditionFailed(nil, "EVENT-d8isw", "Errors.User.UserIDMissing")
+ return nil, zerrors.ThrowPreconditionFailed(nil, "EVENT-d8isw", "Errors.User.UserIDMissing")
}
return eventstore.NewSearchQueryBuilder(eventstore.ColumnsEvent).
AwaitOpenTransactions().
diff --git a/internal/user/repository/view/refresh_token_view.go b/internal/user/repository/view/refresh_token_view.go
index 98715cab6c..642dfc1016 100644
--- a/internal/user/repository/view/refresh_token_view.go
+++ b/internal/user/repository/view/refresh_token_view.go
@@ -4,10 +4,10 @@ import (
"github.com/jinzhu/gorm"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/user/model"
usr_model "github.com/zitadel/zitadel/internal/user/repository/view/model"
"github.com/zitadel/zitadel/internal/view/repository"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func RefreshTokenByID(db *gorm.DB, table, tokenID, instanceID string) (*usr_model.RefreshTokenView, error) {
@@ -17,8 +17,8 @@ func RefreshTokenByID(db *gorm.DB, table, tokenID, instanceID string) (*usr_mode
&usr_model.RefreshTokenSearchQuery{Key: model.RefreshTokenSearchKeyInstanceID, Method: domain.SearchMethodEquals, Value: instanceID},
)
err := query(db, token)
- if errors.IsNotFound(err) {
- return nil, errors.ThrowNotFound(nil, "VIEW-6ub3p", "Errors.RefreshToken.NotFound")
+ if zerrors.IsNotFound(err) {
+ return nil, zerrors.ThrowNotFound(nil, "VIEW-6ub3p", "Errors.RefreshToken.NotFound")
}
return token, err
}
diff --git a/internal/user/repository/view/token_view.go b/internal/user/repository/view/token_view.go
index 6aaed26e33..72a0d164a4 100644
--- a/internal/user/repository/view/token_view.go
+++ b/internal/user/repository/view/token_view.go
@@ -4,10 +4,10 @@ import (
"github.com/jinzhu/gorm"
"github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/errors"
"github.com/zitadel/zitadel/internal/user/model"
usr_model "github.com/zitadel/zitadel/internal/user/repository/view/model"
"github.com/zitadel/zitadel/internal/view/repository"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TokenByIDs(db *gorm.DB, table, tokenID, userID, instanceID string) (*usr_model.TokenView, error) {
@@ -18,8 +18,8 @@ func TokenByIDs(db *gorm.DB, table, tokenID, userID, instanceID string) (*usr_mo
&usr_model.TokenSearchQuery{Key: model.TokenSearchKeyInstanceID, Method: domain.SearchMethodEquals, Value: instanceID},
)
err := query(db, token)
- if errors.IsNotFound(err) {
- return nil, errors.ThrowNotFound(nil, "VIEW-6ub3p", "Errors.Token.NotFound")
+ if zerrors.IsNotFound(err) {
+ return nil, zerrors.ThrowNotFound(nil, "VIEW-6ub3p", "Errors.Token.NotFound")
}
return token, err
}
diff --git a/internal/user/repository/view/user_session_view.go b/internal/user/repository/view/user_session_view.go
index 7b75c31d3c..487857c1ba 100644
--- a/internal/user/repository/view/user_session_view.go
+++ b/internal/user/repository/view/user_session_view.go
@@ -4,10 +4,10 @@ import (
"github.com/jinzhu/gorm"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
usr_model "github.com/zitadel/zitadel/internal/user/model"
"github.com/zitadel/zitadel/internal/user/repository/view/model"
"github.com/zitadel/zitadel/internal/view/repository"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func UserSessionByIDs(db *gorm.DB, table, agentID, userID, instanceID string) (*model.UserSessionView, error) {
@@ -29,8 +29,8 @@ func UserSessionByIDs(db *gorm.DB, table, agentID, userID, instanceID string) (*
}
query := repository.PrepareGetByQuery(table, userAgentQuery, userQuery, instanceIDQuery)
err := query(db, userSession)
- if caos_errs.IsNotFound(err) {
- return nil, caos_errs.ThrowNotFound(nil, "VIEW-NGBs1", "Errors.UserSession.NotFound")
+ if zerrors.IsNotFound(err) {
+ return nil, zerrors.ThrowNotFound(nil, "VIEW-NGBs1", "Errors.UserSession.NotFound")
}
return userSession, err
}
diff --git a/internal/user/repository/view/user_view.go b/internal/user/repository/view/user_view.go
index c0b5d2af7c..0b0aeba47d 100644
--- a/internal/user/repository/view/user_view.go
+++ b/internal/user/repository/view/user_view.go
@@ -1,14 +1,13 @@
package view
import (
- "github.com/zitadel/zitadel/internal/domain"
- "github.com/zitadel/zitadel/internal/view/repository"
-
"github.com/jinzhu/gorm"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/domain"
usr_model "github.com/zitadel/zitadel/internal/user/model"
"github.com/zitadel/zitadel/internal/user/repository/view/model"
+ "github.com/zitadel/zitadel/internal/view/repository"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func UserByID(db *gorm.DB, table, userID, instanceID string) (*model.UserView, error) {
@@ -30,91 +29,8 @@ func UserByID(db *gorm.DB, table, userID, instanceID string) (*model.UserView, e
}
query := repository.PrepareGetByQuery(table, userIDQuery, instanceIDQuery, ownerRemovedQuery)
err := query(db, user)
- if caos_errs.IsNotFound(err) {
- return nil, caos_errs.ThrowNotFound(nil, "VIEW-sj8Sw", "Errors.User.NotFound")
- }
- user.SetEmptyUserType()
- return user, err
-}
-
-func UserByUserName(db *gorm.DB, table, userName, instanceID string) (*model.UserView, error) {
- user := new(model.UserView)
- userNameQuery := &model.UserSearchQuery{
- Key: usr_model.UserSearchKeyUserName,
- Method: domain.SearchMethodEquals,
- Value: userName,
- }
- instanceIDQuery := &model.UserSearchQuery{
- Key: usr_model.UserSearchKeyInstanceID,
- Method: domain.SearchMethodEquals,
- Value: instanceID,
- }
- ownerRemovedQuery := &model.UserSearchQuery{
- Key: usr_model.UserSearchOwnerRemoved,
- Method: domain.SearchMethodEquals,
- Value: false,
- }
- query := repository.PrepareGetByQuery(table, userNameQuery, instanceIDQuery, ownerRemovedQuery)
- err := query(db, user)
- if caos_errs.IsNotFound(err) {
- return nil, caos_errs.ThrowNotFound(nil, "VIEW-Lso9s", "Errors.User.NotFound")
- }
- user.SetEmptyUserType()
- return user, err
-}
-
-func UserByLoginName(db *gorm.DB, table, loginName, instanceID string) (*model.UserView, error) {
- user := new(model.UserView)
- loginNameQuery := &model.UserSearchQuery{
- Key: usr_model.UserSearchKeyLoginNames,
- Method: domain.SearchMethodListContains,
- Value: loginName,
- }
- instanceIDQuery := &model.UserSearchQuery{
- Key: usr_model.UserSearchKeyInstanceID,
- Method: domain.SearchMethodEquals,
- Value: instanceID,
- }
- ownerRemovedQuery := &model.UserSearchQuery{
- Key: usr_model.UserSearchOwnerRemoved,
- Method: domain.SearchMethodEquals,
- Value: false,
- }
- query := repository.PrepareGetByQuery(table, loginNameQuery, instanceIDQuery, ownerRemovedQuery)
- err := query(db, user)
- if caos_errs.IsNotFound(err) {
- return nil, caos_errs.ThrowNotFound(nil, "VIEW-AD4qs", "Errors.User.NotFound")
- }
- user.SetEmptyUserType()
- return user, err
-}
-
-func UserByLoginNameAndResourceOwner(db *gorm.DB, table, loginName, resourceOwner, instanceID string) (*model.UserView, error) {
- user := new(model.UserView)
- loginNameQuery := &model.UserSearchQuery{
- Key: usr_model.UserSearchKeyLoginNames,
- Method: domain.SearchMethodListContains,
- Value: loginName,
- }
- resourceOwnerQuery := &model.UserSearchQuery{
- Key: usr_model.UserSearchKeyResourceOwner,
- Method: domain.SearchMethodEquals,
- Value: resourceOwner,
- }
- instanceIDQuery := &model.UserSearchQuery{
- Key: usr_model.UserSearchKeyInstanceID,
- Method: domain.SearchMethodEquals,
- Value: instanceID,
- }
- ownerRemovedQuery := &model.UserSearchQuery{
- Key: usr_model.UserSearchOwnerRemoved,
- Method: domain.SearchMethodEquals,
- Value: false,
- }
- query := repository.PrepareGetByQuery(table, loginNameQuery, resourceOwnerQuery, instanceIDQuery, ownerRemovedQuery)
- err := query(db, user)
- if caos_errs.IsNotFound(err) {
- return nil, caos_errs.ThrowNotFound(nil, "VIEW-AD4qs", "Errors.User.NotFoundOnOrg")
+ if zerrors.IsNotFound(err) {
+ return nil, zerrors.ThrowNotFound(nil, "VIEW-sj8Sw", "Errors.User.NotFound")
}
user.SetEmptyUserType()
return user, err
diff --git a/internal/view/repository/query.go b/internal/view/repository/query.go
index ba18c71ba3..4b931b7d5e 100644
--- a/internal/view/repository/query.go
+++ b/internal/view/repository/query.go
@@ -11,7 +11,7 @@ import (
"github.com/zitadel/zitadel/internal/database"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type SearchRequest interface {
@@ -48,7 +48,7 @@ func PrepareSearchQuery(table string, request SearchRequest) func(db *gorm.DB, r
var err error
query, err = SetQuery(query, q.GetKey(), q.GetValue(), q.GetMethod())
if err != nil {
- return count, caos_errs.ThrowInvalidArgument(err, "VIEW-KaGue", "query is invalid")
+ return count, zerrors.ThrowInvalidArgument(err, "VIEW-KaGue", "query is invalid")
}
}
@@ -69,7 +69,7 @@ func PrepareSearchQuery(table string, request SearchRequest) func(db *gorm.DB, r
query = query.Offset(request.GetOffset())
err := query.Find(res).Error
if err != nil {
- return count, caos_errs.ThrowInternal(err, "VIEW-muSDK", "unable to find result")
+ return count, zerrors.ThrowInternal(err, "VIEW-muSDK", "unable to find result")
}
return count, nil
}
@@ -78,7 +78,7 @@ func PrepareSearchQuery(table string, request SearchRequest) func(db *gorm.DB, r
func SetQuery(query *gorm.DB, key ColumnKey, value interface{}, method domain.SearchMethod) (*gorm.DB, error) {
column := key.ToColumnName()
if column == "" {
- return nil, caos_errs.ThrowInvalidArgument(nil, "VIEW-7dz3w", "Column name missing")
+ return nil, zerrors.ThrowInvalidArgument(nil, "VIEW-7dz3w", "Column name missing")
}
switch method {
@@ -87,44 +87,50 @@ func SetQuery(query *gorm.DB, key ColumnKey, value interface{}, method domain.Se
case domain.SearchMethodEqualsIgnoreCase:
valueText, ok := value.(string)
if !ok {
- return nil, caos_errs.ThrowInvalidArgument(nil, "VIEW-idu8e", "Equal ignore case only possible for strings")
+ return nil, zerrors.ThrowInvalidArgument(nil, "VIEW-idu8e", "Equal ignore case only possible for strings")
}
query = query.Where("LOWER("+column+") = LOWER(?)", valueText)
case domain.SearchMethodStartsWith:
valueText, ok := value.(string)
if !ok {
- return nil, caos_errs.ThrowInvalidArgument(nil, "VIEW-SLj7s", "Starts with only possible for strings")
+ return nil, zerrors.ThrowInvalidArgument(nil, "VIEW-SLj7s", "Starts with only possible for strings")
}
+ valueText = database.EscapeLikeWildcards(valueText)
query = query.Where(column+" LIKE ?", valueText+"%")
case domain.SearchMethodStartsWithIgnoreCase:
valueText, ok := value.(string)
if !ok {
- return nil, caos_errs.ThrowInvalidArgument(nil, "VIEW-eidus", "Starts with ignore case only possible for strings")
+ return nil, zerrors.ThrowInvalidArgument(nil, "VIEW-eidus", "Starts with ignore case only possible for strings")
}
+ valueText = database.EscapeLikeWildcards(valueText)
query = query.Where("LOWER("+column+") LIKE LOWER(?)", valueText+"%")
case domain.SearchMethodEndsWith:
valueText, ok := value.(string)
if !ok {
- return nil, caos_errs.ThrowInvalidArgument(nil, "VIEW-Hswd3", "Ends with only possible for strings")
+ return nil, zerrors.ThrowInvalidArgument(nil, "VIEW-Hswd3", "Ends with only possible for strings")
}
+ valueText = database.EscapeLikeWildcards(valueText)
query = query.Where(column+" LIKE ?", "%"+valueText)
case domain.SearchMethodEndsWithIgnoreCase:
valueText, ok := value.(string)
if !ok {
- return nil, caos_errs.ThrowInvalidArgument(nil, "VIEW-dAG31", "Ends with ignore case only possible for strings")
+ return nil, zerrors.ThrowInvalidArgument(nil, "VIEW-dAG31", "Ends with ignore case only possible for strings")
}
+ valueText = database.EscapeLikeWildcards(valueText)
query = query.Where("LOWER("+column+") LIKE LOWER(?)", "%"+valueText)
case domain.SearchMethodContains:
valueText, ok := value.(string)
if !ok {
- return nil, caos_errs.ThrowInvalidArgument(nil, "VIEW-3ids", "Contains with only possible for strings")
+ return nil, zerrors.ThrowInvalidArgument(nil, "VIEW-3ids", "Contains with only possible for strings")
}
+ valueText = database.EscapeLikeWildcards(valueText)
query = query.Where(column+" LIKE ?", "%"+valueText+"%")
case domain.SearchMethodContainsIgnoreCase:
valueText, ok := value.(string)
if !ok {
- return nil, caos_errs.ThrowInvalidArgument(nil, "VIEW-eid73", "Contains with ignore case only possible for strings")
+ return nil, zerrors.ThrowInvalidArgument(nil, "VIEW-eid73", "Contains with ignore case only possible for strings")
}
+ valueText = database.EscapeLikeWildcards(valueText)
query = query.Where("LOWER("+column+") LIKE LOWER(?)", "%"+valueText+"%")
case domain.SearchMethodNotEquals:
query = query.Where(""+column+" <> ?", value)
@@ -137,7 +143,7 @@ func SetQuery(query *gorm.DB, key ColumnKey, value interface{}, method domain.Se
case domain.SearchMethodListContains:
valueText, ok := value.(string)
if !ok {
- return nil, caos_errs.ThrowInvalidArgument(nil, "VIEW-Psois", "list contains only possible for strings")
+ return nil, zerrors.ThrowInvalidArgument(nil, "VIEW-Psois", "list contains only possible for strings")
}
query = query.Where("? <@ "+column, database.TextArray[string]{valueText})
default:
diff --git a/internal/view/repository/query_test.go b/internal/view/repository/query_test.go
index c85660e995..49cd961b1a 100644
--- a/internal/view/repository/query_test.go
+++ b/internal/view/repository/query_test.go
@@ -1,11 +1,12 @@
package repository
import (
+ "reflect"
"testing"
"github.com/jinzhu/gorm"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestPrepareSearchQuery(t *testing.T) {
@@ -126,7 +127,7 @@ func TestPrepareSearchQuery(t *testing.T) {
res{
count: 1,
wantErr: true,
- errFunc: caos_errs.IsInternal,
+ errFunc: zerrors.IsInternal,
},
},
}
@@ -155,3 +156,304 @@ func TestPrepareSearchQuery(t *testing.T) {
})
}
}
+
+func TestSetQuery(t *testing.T) {
+ query := mockDB(t).db.Select("test_field").Table("test_table")
+ exprPrefix := `(SELECT test_field FROM "test_table" WHERE `
+ type args struct {
+ key ColumnKey
+ value interface{}
+ method domain.SearchMethod
+ }
+ type want struct {
+ isErr func(t *testing.T, got error)
+ query *gorm.SqlExpr
+ }
+ tests := []struct {
+ name string
+ args args
+ want want
+ }{
+ {
+ name: "contains",
+ args: args{
+ key: TestSearchKey_TEST,
+ value: "asdf",
+ method: domain.SearchMethodContains,
+ },
+ want: want{
+ query: gorm.Expr(exprPrefix+"(test LIKE ?))", "%asdf%"),
+ },
+ },
+ {
+ name: "contains _ wildcard",
+ args: args{
+ key: TestSearchKey_TEST,
+ value: "as_df",
+ method: domain.SearchMethodContains,
+ },
+ want: want{
+ query: gorm.Expr(exprPrefix+"(test LIKE ?))", "%as\\_df%"),
+ },
+ },
+ {
+ name: "contains % wildcard",
+ args: args{
+ key: TestSearchKey_TEST,
+ value: "as%df",
+ method: domain.SearchMethodContains,
+ },
+ want: want{
+ query: gorm.Expr(exprPrefix+"(test LIKE ?))", "%as\\%df%"),
+ },
+ },
+ {
+ name: "contains % wildcard",
+ args: args{
+ key: TestSearchKey_TEST,
+ value: "a_s%d_f",
+ method: domain.SearchMethodContains,
+ },
+ want: want{
+ query: gorm.Expr(exprPrefix+"(test LIKE ?))", "%a\\_s\\%d\\_f%"),
+ },
+ },
+ {
+ name: "starts with",
+ args: args{
+ key: TestSearchKey_TEST,
+ value: "asdf",
+ method: domain.SearchMethodStartsWith,
+ },
+ want: want{
+ query: gorm.Expr(exprPrefix+"(test LIKE ?))", "asdf%"),
+ },
+ },
+ {
+ name: "starts with _ wildcard",
+ args: args{
+ key: TestSearchKey_TEST,
+ value: "as_df",
+ method: domain.SearchMethodStartsWith,
+ },
+ want: want{
+ query: gorm.Expr(exprPrefix+"(test LIKE ?))", "as\\_df%"),
+ },
+ },
+ {
+ name: "starts with % wildcard",
+ args: args{
+ key: TestSearchKey_TEST,
+ value: "as%df",
+ method: domain.SearchMethodStartsWith,
+ },
+ want: want{
+ query: gorm.Expr(exprPrefix+"(test LIKE ?))", "as\\%df%"),
+ },
+ },
+ {
+ name: "starts with % wildcard",
+ args: args{
+ key: TestSearchKey_TEST,
+ value: "a_s%d_f",
+ method: domain.SearchMethodStartsWith,
+ },
+ want: want{
+ query: gorm.Expr(exprPrefix+"(test LIKE ?))", "a\\_s\\%d\\_f%"),
+ },
+ },
+ {
+ name: "ends with",
+ args: args{
+ key: TestSearchKey_TEST,
+ value: "asdf",
+ method: domain.SearchMethodEndsWith,
+ },
+ want: want{
+ query: gorm.Expr(exprPrefix+"(test LIKE ?))", "%asdf"),
+ },
+ },
+ {
+ name: "ends with _ wildcard",
+ args: args{
+ key: TestSearchKey_TEST,
+ value: "as_df",
+ method: domain.SearchMethodEndsWith,
+ },
+ want: want{
+ query: gorm.Expr(exprPrefix+"(test LIKE ?))", "%as\\_df"),
+ },
+ },
+ {
+ name: "ends with % wildcard",
+ args: args{
+ key: TestSearchKey_TEST,
+ value: "as%df",
+ method: domain.SearchMethodEndsWith,
+ },
+ want: want{
+ query: gorm.Expr(exprPrefix+"(test LIKE ?))", "%as\\%df"),
+ },
+ },
+ {
+ name: "ends with % wildcard",
+ args: args{
+ key: TestSearchKey_TEST,
+ value: "a_s%d_f",
+ method: domain.SearchMethodEndsWith,
+ },
+ want: want{
+ query: gorm.Expr(exprPrefix+"(test LIKE ?))", "%a\\_s\\%d\\_f"),
+ },
+ },
+ {
+ name: "starts with ignore case",
+ args: args{
+ key: TestSearchKey_TEST,
+ value: "asdf",
+ method: domain.SearchMethodStartsWithIgnoreCase,
+ },
+ want: want{
+ query: gorm.Expr(exprPrefix+"(LOWER(test) LIKE LOWER(?)))", "asdf%"),
+ },
+ },
+ {
+ name: "starts with ignore case _ wildcard",
+ args: args{
+ key: TestSearchKey_TEST,
+ value: "as_df",
+ method: domain.SearchMethodStartsWithIgnoreCase,
+ },
+ want: want{
+ query: gorm.Expr(exprPrefix+"(LOWER(test) LIKE LOWER(?)))", "as\\_df%"),
+ },
+ },
+ {
+ name: "starts with ignore case % wildcard",
+ args: args{
+ key: TestSearchKey_TEST,
+ value: "as%df",
+ method: domain.SearchMethodStartsWithIgnoreCase,
+ },
+ want: want{
+ query: gorm.Expr(exprPrefix+"(LOWER(test) LIKE LOWER(?)))", "as\\%df%"),
+ },
+ },
+ {
+ name: "starts with ignore case % wildcard",
+ args: args{
+ key: TestSearchKey_TEST,
+ value: "a_s%d_f",
+ method: domain.SearchMethodStartsWithIgnoreCase,
+ },
+ want: want{
+ query: gorm.Expr(exprPrefix+"(LOWER(test) LIKE LOWER(?)))", "a\\_s\\%d\\_f%"),
+ },
+ },
+ {
+ name: "ends with ignore case",
+ args: args{
+ key: TestSearchKey_TEST,
+ value: "asdf",
+ method: domain.SearchMethodEndsWithIgnoreCase,
+ },
+ want: want{
+ query: gorm.Expr(exprPrefix+"(LOWER(test) LIKE LOWER(?)))", "%asdf"),
+ },
+ },
+ {
+ name: "ends with ignore case _ wildcard",
+ args: args{
+ key: TestSearchKey_TEST,
+ value: "as_df",
+ method: domain.SearchMethodEndsWithIgnoreCase,
+ },
+ want: want{
+ query: gorm.Expr(exprPrefix+"(LOWER(test) LIKE LOWER(?)))", "%as\\_df"),
+ },
+ },
+ {
+ name: "ends with ignore case % wildcard",
+ args: args{
+ key: TestSearchKey_TEST,
+ value: "as%df",
+ method: domain.SearchMethodEndsWithIgnoreCase,
+ },
+ want: want{
+ query: gorm.Expr(exprPrefix+"(LOWER(test) LIKE LOWER(?)))", "%as\\%df"),
+ },
+ },
+ {
+ name: "ends with ignore case % wildcard",
+ args: args{
+ key: TestSearchKey_TEST,
+ value: "a_s%d_f",
+ method: domain.SearchMethodEndsWithIgnoreCase,
+ },
+ want: want{
+ query: gorm.Expr(exprPrefix+"(LOWER(test) LIKE LOWER(?)))", "%a\\_s\\%d\\_f"),
+ },
+ },
+ {
+ name: "contains ignore case",
+ args: args{
+ key: TestSearchKey_TEST,
+ value: "asdf",
+ method: domain.SearchMethodContainsIgnoreCase,
+ },
+ want: want{
+ query: gorm.Expr(exprPrefix+"(LOWER(test) LIKE LOWER(?)))", "%asdf%"),
+ },
+ },
+ {
+ name: "contains ignore case _ wildcard",
+ args: args{
+ key: TestSearchKey_TEST,
+ value: "as_df",
+ method: domain.SearchMethodContainsIgnoreCase,
+ },
+ want: want{
+ query: gorm.Expr(exprPrefix+"(LOWER(test) LIKE LOWER(?)))", "%as\\_df%"),
+ },
+ },
+ {
+ name: "contains ignore case % wildcard",
+ args: args{
+ key: TestSearchKey_TEST,
+ value: "as%df",
+ method: domain.SearchMethodContainsIgnoreCase,
+ },
+ want: want{
+ query: gorm.Expr(exprPrefix+"(LOWER(test) LIKE LOWER(?)))", "%as\\%df%"),
+ },
+ },
+ {
+ name: "contains ignore case % wildcard",
+ args: args{
+ key: TestSearchKey_TEST,
+ value: "a_s%d_f",
+ method: domain.SearchMethodContainsIgnoreCase,
+ },
+ want: want{
+ query: gorm.Expr(exprPrefix+"(LOWER(test) LIKE LOWER(?)))", "%a\\_s\\%d\\_f%"),
+ },
+ },
+ }
+ for _, tt := range tests {
+ if tt.want.isErr == nil {
+ tt.want.isErr = func(t *testing.T, got error) {
+ if got == nil {
+ return
+ }
+ t.Errorf("no error expected got: %v", got)
+ }
+ }
+ t.Run(tt.name, func(t *testing.T) {
+ got, err := SetQuery(query, tt.args.key, tt.args.value, tt.args.method)
+ tt.want.isErr(t, err)
+ if !reflect.DeepEqual(got.SubQuery(), tt.want.query) {
+ t.Errorf("unexpected query: \nwant: %v\n got: %v", *tt.want.query, *got.SubQuery())
+ }
+ })
+ }
+}
diff --git a/internal/view/repository/requests.go b/internal/view/repository/requests.go
index 9de4f9fcdd..b1d98af34f 100644
--- a/internal/view/repository/requests.go
+++ b/internal/view/repository/requests.go
@@ -9,8 +9,7 @@ import (
"github.com/jinzhu/gorm"
"github.com/zitadel/logging"
-
- caos_errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func PrepareGetByQuery(table string, queries ...SearchQuery) func(db *gorm.DB, res interface{}) error {
@@ -20,7 +19,7 @@ func PrepareGetByQuery(table string, queries ...SearchQuery) func(db *gorm.DB, r
var err error
query, err = SetQuery(query, q.GetKey(), q.GetValue(), q.GetMethod())
if err != nil {
- return caos_errs.ThrowInvalidArgument(err, "VIEW-KaGue", "query is invalid")
+ return zerrors.ThrowInvalidArgument(err, "VIEW-KaGue", "query is invalid")
}
}
@@ -36,10 +35,10 @@ func PrepareGetByQuery(table string, queries ...SearchQuery) func(db *gorm.DB, r
return nil
}
if errors.Is(err, gorm.ErrRecordNotFound) {
- return caos_errs.ThrowNotFound(err, "VIEW-hodc6", "object not found")
+ return zerrors.ThrowNotFound(err, "VIEW-hodc6", "object not found")
}
logging.LogWithFields("VIEW-Mg6la", "table ", table).WithError(err).Warn("get from cache error")
- return caos_errs.ThrowInternal(err, "VIEW-qJBg9", "cache error")
+ return zerrors.ThrowInternal(err, "VIEW-qJBg9", "cache error")
}
}
@@ -48,16 +47,16 @@ func PrepareBulkSave(table string) func(db *gorm.DB, objects ...interface{}) err
db = db.Table(table)
db = db.Begin()
if err := db.Error; err != nil {
- return caos_errs.ThrowInternal(err, "REPOS-Fl0Is", "unable to begin")
+ return zerrors.ThrowInternal(err, "REPOS-Fl0Is", "unable to begin")
}
for _, object := range objects {
err := db.Save(object).Error
if err != nil {
- return caos_errs.ThrowInternal(err, "VIEW-oJJSm", "unable to put object to view")
+ return zerrors.ThrowInternal(err, "VIEW-oJJSm", "unable to put object to view")
}
}
if err := db.Commit().Error; err != nil {
- return caos_errs.ThrowInternal(err, "REPOS-IfhUE", "unable to commit")
+ return zerrors.ThrowInternal(err, "REPOS-IfhUE", "unable to commit")
}
return nil
}
@@ -67,7 +66,7 @@ func PrepareSave(table string) func(db *gorm.DB, object interface{}) error {
return func(db *gorm.DB, object interface{}) error {
err := db.Table(table).Save(object).Error
if err != nil {
- return caos_errs.ThrowInternal(err, "VIEW-2m9fs", "unable to put object to view")
+ return zerrors.ThrowInternal(err, "VIEW-2m9fs", "unable to put object to view")
}
return nil
}
@@ -82,7 +81,7 @@ func PrepareSaveOnConflict(table string, conflictColumns, updateColumns []string
return func(db *gorm.DB, object interface{}) error {
err := db.Table(table).Set("gorm:insert_option", onConflict).Save(object).Error
if err != nil {
- return caos_errs.ThrowInternal(err, "VIEW-AfC7G", "unable to put object to view")
+ return zerrors.ThrowInternal(err, "VIEW-AfC7G", "unable to put object to view")
}
return nil
}
@@ -95,7 +94,7 @@ func PrepareDeleteByKey(table string, key ColumnKey, id interface{}) func(db *go
Delete(nil).
Error
if err != nil {
- return caos_errs.ThrowInternal(err, "VIEW-die73", "could not delete object")
+ return zerrors.ThrowInternal(err, "VIEW-die73", "could not delete object")
}
return nil
}
@@ -111,7 +110,7 @@ func PrepareUpdateByKeys(table string, column ColumnKey, value interface{}, keys
Update(column.ToColumnName(), value).
Error
if err != nil {
- return caos_errs.ThrowInternal(err, "VIEW-ps099xj", "could not update object")
+ return zerrors.ThrowInternal(err, "VIEW-ps099xj", "could not update object")
}
return nil
}
@@ -132,7 +131,7 @@ func PrepareDeleteByKeys(table string, keys ...Key) func(db *gorm.DB) error {
Delete(nil).
Error
if err != nil {
- return caos_errs.ThrowInternal(err, "VIEW-die73", "could not delete object")
+ return zerrors.ThrowInternal(err, "VIEW-die73", "could not delete object")
}
return nil
}
diff --git a/internal/view/repository/requests_test.go b/internal/view/repository/requests_test.go
index c852d15a7f..36982827f4 100644
--- a/internal/view/repository/requests_test.go
+++ b/internal/view/repository/requests_test.go
@@ -6,7 +6,7 @@ import (
"github.com/jinzhu/gorm"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestPrepareGetByQuery(t *testing.T) {
@@ -114,7 +114,7 @@ func TestPrepareGetByQuery(t *testing.T) {
res{
result: Test{ID: "VALUE"},
wantErr: true,
- errFunc: caos_errs.IsNotFound,
+ errFunc: zerrors.IsNotFound,
},
},
{
@@ -128,7 +128,7 @@ func TestPrepareGetByQuery(t *testing.T) {
res{
result: Test{ID: "VALUE"},
wantErr: true,
- errFunc: caos_errs.IsInternal,
+ errFunc: zerrors.IsInternal,
},
},
{
@@ -142,7 +142,7 @@ func TestPrepareGetByQuery(t *testing.T) {
res{
result: Test{ID: "VALUE"},
wantErr: true,
- errFunc: caos_errs.IsErrorInvalidArgument,
+ errFunc: zerrors.IsErrorInvalidArgument,
},
},
}
@@ -212,7 +212,7 @@ func TestPreparePut(t *testing.T) {
res{
result: Test{ID: "VALUE"},
wantErr: true,
- errFunc: caos_errs.IsInternal,
+ errFunc: zerrors.IsInternal,
},
},
}
@@ -284,7 +284,7 @@ func TestPrepareDelete(t *testing.T) {
res{
result: Test{ID: "VALUE"},
wantErr: true,
- errFunc: caos_errs.IsInternal,
+ errFunc: zerrors.IsInternal,
},
},
}
@@ -375,7 +375,7 @@ func TestPrepareDeleteByKeys(t *testing.T) {
res{
result: Test{ID: "VALUE"},
wantErr: true,
- errFunc: caos_errs.IsInternal,
+ errFunc: zerrors.IsInternal,
},
},
}
diff --git a/internal/webauthn/webauthn.go b/internal/webauthn/webauthn.go
index 8a9709ec86..329d533631 100644
--- a/internal/webauthn/webauthn.go
+++ b/internal/webauthn/webauthn.go
@@ -13,7 +13,7 @@ import (
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/api/http"
"github.com/zitadel/zitadel/internal/domain"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
type Config struct {
@@ -80,11 +80,11 @@ func (w *Config) BeginRegistration(ctx context.Context, user *domain.Human, acco
webauthn.WithExclusions(existing),
)
if err != nil {
- return nil, caos_errs.ThrowInternal(err, "WEBAU-bM8sd", "Errors.User.WebAuthN.BeginRegisterFailed")
+ return nil, zerrors.ThrowInternal(err, "WEBAU-bM8sd", "Errors.User.WebAuthN.BeginRegisterFailed")
}
cred, err := json.Marshal(credentialOptions)
if err != nil {
- return nil, caos_errs.ThrowInternal(err, "WEBAU-D7cus", "Errors.User.WebAuthN.MarshalError")
+ return nil, zerrors.ThrowInternal(err, "WEBAU-D7cus", "Errors.User.WebAuthN.MarshalError")
}
return &domain.WebAuthNToken{
Challenge: sessionData.Challenge,
@@ -97,12 +97,12 @@ func (w *Config) BeginRegistration(ctx context.Context, user *domain.Human, acco
func (w *Config) FinishRegistration(ctx context.Context, user *domain.Human, webAuthN *domain.WebAuthNToken, tokenName string, credData []byte, isLoginUI bool) (*domain.WebAuthNToken, error) {
if webAuthN == nil {
- return nil, caos_errs.ThrowInternal(nil, "WEBAU-5M9so", "Errors.User.WebAuthN.NotFound")
+ return nil, zerrors.ThrowInternal(nil, "WEBAU-5M9so", "Errors.User.WebAuthN.NotFound")
}
credentialData, err := protocol.ParseCredentialCreationResponseBody(bytes.NewReader(credData))
if err != nil {
logging.WithFields("error", tryExtractProtocolErrMsg(err)).Debug("webauthn credential could not be parsed")
- return nil, caos_errs.ThrowInternal(err, "WEBAU-sEr8c", "Errors.User.WebAuthN.ErrorOnParseCredential")
+ return nil, zerrors.ThrowInternal(err, "WEBAU-sEr8c", "Errors.User.WebAuthN.ErrorOnParseCredential")
}
sessionData := WebAuthNToSessionData(webAuthN)
webAuthNServer, err := w.serverFromContext(ctx, webAuthN.RPID, credentialData.Response.CollectedClientData.Origin)
@@ -117,7 +117,7 @@ func (w *Config) FinishRegistration(ctx context.Context, user *domain.Human, web
credentialData)
if err != nil {
logging.WithFields("error", tryExtractProtocolErrMsg(err)).Debug("webauthn credential could not be created")
- return nil, caos_errs.ThrowInternal(err, "WEBAU-3Vb9s", "Errors.User.WebAuthN.CreateCredentialFailed")
+ return nil, zerrors.ThrowInternal(err, "WEBAU-3Vb9s", "Errors.User.WebAuthN.CreateCredentialFailed")
}
webAuthN.KeyID = credential.ID
@@ -141,11 +141,11 @@ func (w *Config) BeginLogin(ctx context.Context, user *domain.Human, userVerific
}, webauthn.WithUserVerification(UserVerificationFromDomain(userVerification)))
if err != nil {
logging.WithFields("error", tryExtractProtocolErrMsg(err)).Debug("webauthn login could not be started")
- return nil, caos_errs.ThrowInternal(err, "WEBAU-4G8sw", "Errors.User.WebAuthN.BeginLoginFailed")
+ return nil, zerrors.ThrowInternal(err, "WEBAU-4G8sw", "Errors.User.WebAuthN.BeginLoginFailed")
}
cred, err := json.Marshal(assertion)
if err != nil {
- return nil, caos_errs.ThrowInternal(err, "WEBAU-2M0s9", "Errors.User.WebAuthN.MarshalError")
+ return nil, zerrors.ThrowInternal(err, "WEBAU-2M0s9", "Errors.User.WebAuthN.MarshalError")
}
return &domain.WebAuthNLogin{
Challenge: sessionData.Challenge,
@@ -160,7 +160,7 @@ func (w *Config) FinishLogin(ctx context.Context, user *domain.Human, webAuthN *
assertionData, err := protocol.ParseCredentialRequestResponseBody(bytes.NewReader(credData))
if err != nil {
logging.WithFields("error", tryExtractProtocolErrMsg(err)).Debug("webauthn assertion could not be parsed")
- return nil, caos_errs.ThrowInternal(err, "WEBAU-ADgv4", "Errors.User.WebAuthN.ValidateLoginFailed")
+ return nil, zerrors.ThrowInternal(err, "WEBAU-ADgv4", "Errors.User.WebAuthN.ValidateLoginFailed")
}
webUser := &webUser{
Human: user,
@@ -173,11 +173,11 @@ func (w *Config) FinishLogin(ctx context.Context, user *domain.Human, webAuthN *
credential, err := webAuthNServer.ValidateLogin(webUser, WebAuthNLoginToSessionData(webAuthN), assertionData)
if err != nil {
logging.WithFields("error", tryExtractProtocolErrMsg(err)).Debug("webauthn assertion failed")
- return nil, caos_errs.ThrowInternal(err, "WEBAU-3M9si", "Errors.User.WebAuthN.ValidateLoginFailed")
+ return nil, zerrors.ThrowInternal(err, "WEBAU-3M9si", "Errors.User.WebAuthN.ValidateLoginFailed")
}
if credential.Authenticator.CloneWarning {
- return credential, caos_errs.ThrowInternal(nil, "WEBAU-4M90s", "Errors.User.WebAuthN.CloneWarning")
+ return credential, zerrors.ThrowInternal(nil, "WEBAU-4M90s", "Errors.User.WebAuthN.CloneWarning")
}
return credential, nil
}
@@ -189,7 +189,7 @@ func (w *Config) serverFromContext(ctx context.Context, id, origin string) (*web
}
webAuthn, err := webauthn.New(config)
if err != nil {
- return nil, caos_errs.ThrowInternal(err, "WEBAU-UX9ta", "Errors.User.WebAuthN.ServerConfig")
+ return nil, zerrors.ThrowInternal(err, "WEBAU-UX9ta", "Errors.User.WebAuthN.ServerConfig")
}
return webAuthn, nil
}
diff --git a/internal/webauthn/webauthn_test.go b/internal/webauthn/webauthn_test.go
index 7d8052048a..b7c4276aec 100644
--- a/internal/webauthn/webauthn_test.go
+++ b/internal/webauthn/webauthn_test.go
@@ -9,7 +9,7 @@ import (
"github.com/stretchr/testify/require"
"github.com/zitadel/zitadel/internal/api/authz"
- caos_errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestConfig_serverFromContext(t *testing.T) {
@@ -27,7 +27,7 @@ func TestConfig_serverFromContext(t *testing.T) {
{
name: "webauthn error",
args: args{context.Background(), "", ""},
- wantErr: caos_errs.ThrowInternal(nil, "WEBAU-UX9ta", "Errors.User.WebAuthN.ServerConfig"),
+ wantErr: zerrors.ThrowInternal(nil, "WEBAU-UX9ta", "Errors.User.WebAuthN.ServerConfig"),
},
{
name: "success from ctx",
diff --git a/internal/errors/already_exists.go b/internal/zerrors/already_exists.go
similarity index 72%
rename from internal/errors/already_exists.go
rename to internal/zerrors/already_exists.go
index 83f95a2be3..bdc544979a 100644
--- a/internal/errors/already_exists.go
+++ b/internal/zerrors/already_exists.go
@@ -1,4 +1,4 @@
-package errors
+package zerrors
import "fmt"
@@ -13,15 +13,15 @@ type AlreadyExists interface {
}
type AlreadyExistsError struct {
- *CaosError
+ *ZitadelError
}
func ThrowAlreadyExists(parent error, id, message string) error {
- return &AlreadyExistsError{CreateCaosError(parent, id, message)}
+ return &AlreadyExistsError{CreateZitadelError(parent, id, message)}
}
func ThrowAlreadyExistsf(parent error, id, format string, a ...interface{}) error {
- return &AlreadyExistsError{CreateCaosError(parent, id, fmt.Sprintf(format, a...))}
+ return &AlreadyExistsError{CreateZitadelError(parent, id, fmt.Sprintf(format, a...))}
}
func (err *AlreadyExistsError) IsAlreadyExists() {}
@@ -31,7 +31,7 @@ func (err *AlreadyExistsError) Is(target error) bool {
if !ok {
return false
}
- return err.CaosError.Is(t.CaosError)
+ return err.ZitadelError.Is(t.ZitadelError)
}
func IsErrorAlreadyExists(err error) bool {
@@ -40,5 +40,5 @@ func IsErrorAlreadyExists(err error) bool {
}
func (err *AlreadyExistsError) Unwrap() error {
- return err.CaosError
+ return err.ZitadelError
}
diff --git a/internal/zerrors/already_exists_test.go b/internal/zerrors/already_exists_test.go
new file mode 100644
index 0000000000..6039c37887
--- /dev/null
+++ b/internal/zerrors/already_exists_test.go
@@ -0,0 +1,33 @@
+package zerrors_test
+
+import (
+ "errors"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+
+ "github.com/zitadel/zitadel/internal/zerrors"
+)
+
+func TestAlreadyExistsError(t *testing.T) {
+ var alreadyExistsError interface{} = new(zerrors.AlreadyExistsError)
+ _, ok := alreadyExistsError.(zerrors.AlreadyExists)
+ assert.True(t, ok)
+}
+
+func TestThrowAlreadyExistsf(t *testing.T) {
+ err := zerrors.ThrowAlreadyExistsf(nil, "id", "msg")
+ //nolint:errorlint
+ _, ok := err.(*zerrors.AlreadyExistsError)
+ assert.True(t, ok)
+}
+
+func TestIsErrorAlreadyExists(t *testing.T) {
+ err := zerrors.ThrowAlreadyExists(nil, "id", "msg")
+ ok := zerrors.IsErrorAlreadyExists(err)
+ assert.True(t, ok)
+
+ err = errors.New("Already Exists!")
+ ok = zerrors.IsErrorAlreadyExists(err)
+ assert.False(t, ok)
+}
diff --git a/internal/errors/deadline_exceeded.go b/internal/zerrors/deadline_exceeded.go
similarity index 82%
rename from internal/errors/deadline_exceeded.go
rename to internal/zerrors/deadline_exceeded.go
index 9efe842c73..b19aac733d 100644
--- a/internal/errors/deadline_exceeded.go
+++ b/internal/zerrors/deadline_exceeded.go
@@ -1,4 +1,4 @@
-package errors
+package zerrors
import (
"fmt"
@@ -15,11 +15,11 @@ type DeadlineExceeded interface {
}
type DeadlineExceededError struct {
- *CaosError
+ *ZitadelError
}
func ThrowDeadlineExceeded(parent error, id, message string) error {
- return &DeadlineExceededError{CreateCaosError(parent, id, message)}
+ return &DeadlineExceededError{CreateZitadelError(parent, id, message)}
}
func ThrowDeadlineExceededf(parent error, id, format string, a ...interface{}) error {
@@ -38,9 +38,9 @@ func (err *DeadlineExceededError) Is(target error) bool {
if !ok {
return false
}
- return err.CaosError.Is(t.CaosError)
+ return err.ZitadelError.Is(t.ZitadelError)
}
func (err *DeadlineExceededError) Unwrap() error {
- return err.CaosError
+ return err.ZitadelError
}
diff --git a/internal/zerrors/deadline_exceeded_test.go b/internal/zerrors/deadline_exceeded_test.go
new file mode 100644
index 0000000000..743add7162
--- /dev/null
+++ b/internal/zerrors/deadline_exceeded_test.go
@@ -0,0 +1,33 @@
+package zerrors_test
+
+import (
+ "errors"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+
+ "github.com/zitadel/zitadel/internal/zerrors"
+)
+
+func TestDeadlineExceededError(t *testing.T) {
+ var err interface{} = new(zerrors.DeadlineExceededError)
+ _, ok := err.(zerrors.DeadlineExceeded)
+ assert.True(t, ok)
+}
+
+func TestThrowDeadlineExceededf(t *testing.T) {
+ err := zerrors.ThrowDeadlineExceededf(nil, "id", "msg")
+ //nolint:errorlint
+ _, ok := err.(*zerrors.DeadlineExceededError)
+ assert.True(t, ok)
+}
+
+func TestIsDeadlineExceeded(t *testing.T) {
+ err := zerrors.ThrowDeadlineExceeded(nil, "id", "msg")
+ ok := zerrors.IsDeadlineExceeded(err)
+ assert.True(t, ok)
+
+ err = errors.New("I am found!")
+ ok = zerrors.IsDeadlineExceeded(err)
+ assert.False(t, ok)
+}
diff --git a/internal/errors/error.go b/internal/zerrors/error.go
similarity index 96%
rename from internal/errors/error.go
rename to internal/zerrors/error.go
index 31d1fc6843..a2840063cc 100644
--- a/internal/errors/error.go
+++ b/internal/zerrors/error.go
@@ -1,4 +1,4 @@
-package errors
+package zerrors
import (
"strings"
diff --git a/internal/errors/error_test.go b/internal/zerrors/error_test.go
similarity index 53%
rename from internal/errors/error_test.go
rename to internal/zerrors/error_test.go
index 8078bca55b..23ef370305 100644
--- a/internal/errors/error_test.go
+++ b/internal/zerrors/error_test.go
@@ -1,4 +1,4 @@
-package errors_test
+package zerrors_test
import (
"errors"
@@ -6,14 +6,14 @@ import (
"github.com/stretchr/testify/assert"
- caos_errors "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestContains(t *testing.T) {
err := errors.New("hello world")
- world := caos_errors.Contains(err, "hello")
+ world := zerrors.Contains(err, "hello")
assert.True(t, world)
- mars := caos_errors.Contains(err, "mars")
+ mars := zerrors.Contains(err, "mars")
assert.False(t, mars)
}
diff --git a/internal/errors/generate/error.go.tmpl b/internal/zerrors/generate/error.go.tmpl
similarity index 100%
rename from internal/errors/generate/error.go.tmpl
rename to internal/zerrors/generate/error.go.tmpl
diff --git a/internal/errors/generate/error_creator.go b/internal/zerrors/generate/error_creator.go
similarity index 95%
rename from internal/errors/generate/error_creator.go
rename to internal/zerrors/generate/error_creator.go
index 2062161c77..8e16ad3342 100644
--- a/internal/errors/generate/error_creator.go
+++ b/internal/zerrors/generate/error_creator.go
@@ -1,4 +1,4 @@
-//go generate
+// go generate
package main
import (
@@ -32,7 +32,7 @@ func main() {
fmt.Print(`
!!!!!
- Add status mapping in internal/api/grpc/caos_errors.go
+ Add status mapping in internal/api/grpc/zerrors.go
!!!!!`)
}
diff --git a/internal/errors/generate/error_interface.go.tmpl b/internal/zerrors/generate/error_interface.go.tmpl
similarity index 100%
rename from internal/errors/generate/error_interface.go.tmpl
rename to internal/zerrors/generate/error_interface.go.tmpl
diff --git a/internal/zerrors/generate/error_test.go.tmpl b/internal/zerrors/generate/error_test.go.tmpl
new file mode 100644
index 0000000000..6d967e1afc
--- /dev/null
+++ b/internal/zerrors/generate/error_test.go.tmpl
@@ -0,0 +1,33 @@
+package errors_test
+
+import (
+ "errors"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+
+ "github.com/zitadel/zitadel/internal/zerrors"
+)
+
+func Test{{.ErrorName}}Error(t *testing.T) {
+ var err interface{}
+ err = new(zerrors.{{.ErrorName}}Error)
+ _, ok := err.(*zerrors.{{.ErrorName}})
+ assert.True(t, ok)
+}
+
+func TestThrow{{.ErrorName}}f(t *testing.T) {
+ err := zerrors.Throw{{.ErrorName}}f(nil, "id", "msg")
+ _, ok := err.(*zerrors.{{.ErrorName}}Error)
+ assert.True(t, ok)
+}
+
+func TestIs{{.ErrorName}}(t *testing.T) {
+ err := zerrors.Throw{{.ErrorName}}(nil, "id", "msg")
+ ok := zerrors.Is{{.ErrorName}}(err)
+ assert.True(t, ok)
+
+ err = errors.New("I am found!")
+ ok = zerrors.Is{{.ErrorName}}(err)
+ assert.False(t, ok)
+}
diff --git a/internal/errors/internal.go b/internal/zerrors/internal.go
similarity index 80%
rename from internal/errors/internal.go
rename to internal/zerrors/internal.go
index 0b0a4272af..97c164f3eb 100644
--- a/internal/errors/internal.go
+++ b/internal/zerrors/internal.go
@@ -1,4 +1,4 @@
-package errors
+package zerrors
import (
"fmt"
@@ -15,11 +15,11 @@ type Internal interface {
}
type InternalError struct {
- *CaosError
+ *ZitadelError
}
func ThrowInternal(parent error, id, message string) error {
- return &InternalError{CreateCaosError(parent, id, message)}
+ return &InternalError{CreateZitadelError(parent, id, message)}
}
func ThrowInternalf(parent error, id, format string, a ...interface{}) error {
@@ -38,9 +38,9 @@ func (err *InternalError) Is(target error) bool {
if !ok {
return false
}
- return err.CaosError.Is(t.CaosError)
+ return err.ZitadelError.Is(t.ZitadelError)
}
func (err *InternalError) Unwrap() error {
- return err.CaosError
+ return err.ZitadelError
}
diff --git a/internal/zerrors/internal_test.go b/internal/zerrors/internal_test.go
new file mode 100644
index 0000000000..3448afbafa
--- /dev/null
+++ b/internal/zerrors/internal_test.go
@@ -0,0 +1,33 @@
+package zerrors_test
+
+import (
+ "errors"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+
+ "github.com/zitadel/zitadel/internal/zerrors"
+)
+
+func TestInternalError(t *testing.T) {
+ var err interface{} = new(zerrors.InternalError)
+ _, ok := err.(zerrors.Internal)
+ assert.True(t, ok)
+}
+
+func TestThrowInternalf(t *testing.T) {
+ err := zerrors.ThrowInternalf(nil, "id", "msg")
+ //nolint:errorlint
+ _, ok := err.(*zerrors.InternalError)
+ assert.True(t, ok)
+}
+
+func TestIsInternal(t *testing.T) {
+ err := zerrors.ThrowInternal(nil, "id", "msg")
+ ok := zerrors.IsInternal(err)
+ assert.True(t, ok)
+
+ err = errors.New("I am found!")
+ ok = zerrors.IsInternal(err)
+ assert.False(t, ok)
+}
diff --git a/internal/errors/invalid_argument.go b/internal/zerrors/invalid_argument.go
similarity index 82%
rename from internal/errors/invalid_argument.go
rename to internal/zerrors/invalid_argument.go
index 431885dca4..b2a33fc860 100644
--- a/internal/errors/invalid_argument.go
+++ b/internal/zerrors/invalid_argument.go
@@ -1,4 +1,4 @@
-package errors
+package zerrors
import "fmt"
@@ -13,11 +13,11 @@ type InvalidArgument interface {
}
type InvalidArgumentError struct {
- *CaosError
+ *ZitadelError
}
func ThrowInvalidArgument(parent error, id, message string) error {
- return &InvalidArgumentError{CreateCaosError(parent, id, message)}
+ return &InvalidArgumentError{CreateZitadelError(parent, id, message)}
}
func ThrowInvalidArgumentf(parent error, id, format string, a ...interface{}) error {
@@ -36,9 +36,9 @@ func (err *InvalidArgumentError) Is(target error) bool {
if !ok {
return false
}
- return err.CaosError.Is(t.CaosError)
+ return err.ZitadelError.Is(t.ZitadelError)
}
func (err *InvalidArgumentError) Unwrap() error {
- return err.CaosError
+ return err.ZitadelError
}
diff --git a/internal/zerrors/invalid_argument_test.go b/internal/zerrors/invalid_argument_test.go
new file mode 100644
index 0000000000..7c1bd75aeb
--- /dev/null
+++ b/internal/zerrors/invalid_argument_test.go
@@ -0,0 +1,33 @@
+package zerrors_test
+
+import (
+ "errors"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+
+ "github.com/zitadel/zitadel/internal/zerrors"
+)
+
+func TestInvalidArgumentError(t *testing.T) {
+ var invalidArgumentError interface{} = new(zerrors.InvalidArgumentError)
+ _, ok := invalidArgumentError.(zerrors.InvalidArgument)
+ assert.True(t, ok)
+}
+
+func TestThrowInvalidArgumentf(t *testing.T) {
+ err := zerrors.ThrowInvalidArgumentf(nil, "id", "msg")
+ //nolint:errorlint
+ _, ok := err.(*zerrors.InvalidArgumentError)
+ assert.True(t, ok)
+}
+
+func TestIsErrorInvalidArgument(t *testing.T) {
+ err := zerrors.ThrowInvalidArgument(nil, "id", "msg")
+ ok := zerrors.IsErrorInvalidArgument(err)
+ assert.True(t, ok)
+
+ err = errors.New("I am invalid!")
+ ok = zerrors.IsErrorInvalidArgument(err)
+ assert.False(t, ok)
+}
diff --git a/internal/errors/not_found.go b/internal/zerrors/not_found.go
similarity index 77%
rename from internal/errors/not_found.go
rename to internal/zerrors/not_found.go
index c53edeeeec..450cc1aa6e 100644
--- a/internal/errors/not_found.go
+++ b/internal/zerrors/not_found.go
@@ -1,4 +1,4 @@
-package errors
+package zerrors
import "fmt"
@@ -8,11 +8,11 @@ type NotFound interface {
}
type NotFoundError struct {
- *CaosError
+ *ZitadelError
}
func ThrowNotFound(parent error, id, message string) error {
- return &NotFoundError{CreateCaosError(parent, id, message)}
+ return &NotFoundError{CreateZitadelError(parent, id, message)}
}
func ThrowNotFoundf(parent error, id, format string, a ...interface{}) error {
@@ -31,9 +31,9 @@ func (err *NotFoundError) Is(target error) bool {
if !ok {
return false
}
- return err.CaosError.Is(t.CaosError)
+ return err.ZitadelError.Is(t.ZitadelError)
}
func (err *NotFoundError) Unwrap() error {
- return err.CaosError
+ return err.ZitadelError
}
diff --git a/internal/zerrors/not_found_test.go b/internal/zerrors/not_found_test.go
new file mode 100644
index 0000000000..b54c550b25
--- /dev/null
+++ b/internal/zerrors/not_found_test.go
@@ -0,0 +1,33 @@
+package zerrors_test
+
+import (
+ "errors"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+
+ "github.com/zitadel/zitadel/internal/zerrors"
+)
+
+func TestNotFoundError(t *testing.T) {
+ var notFoundError interface{} = new(zerrors.NotFoundError)
+ _, ok := notFoundError.(zerrors.NotFound)
+ assert.True(t, ok)
+}
+
+func TestThrowNotFoundf(t *testing.T) {
+ err := zerrors.ThrowNotFoundf(nil, "id", "msg")
+ //nolint:errorlint
+ _, ok := err.(*zerrors.NotFoundError)
+ assert.True(t, ok)
+}
+
+func TestIsNotFound(t *testing.T) {
+ err := zerrors.ThrowNotFound(nil, "id", "msg")
+ ok := zerrors.IsNotFound(err)
+ assert.True(t, ok)
+
+ err = errors.New("I am found!")
+ ok = zerrors.IsNotFound(err)
+ assert.False(t, ok)
+}
diff --git a/internal/errors/permission_denied.go b/internal/zerrors/permission_denied.go
similarity index 82%
rename from internal/errors/permission_denied.go
rename to internal/zerrors/permission_denied.go
index 4665308844..62bff08ed6 100644
--- a/internal/errors/permission_denied.go
+++ b/internal/zerrors/permission_denied.go
@@ -1,4 +1,4 @@
-package errors
+package zerrors
import (
"fmt"
@@ -15,11 +15,11 @@ type PermissionDenied interface {
}
type PermissionDeniedError struct {
- *CaosError
+ *ZitadelError
}
func ThrowPermissionDenied(parent error, id, message string) error {
- return &PermissionDeniedError{CreateCaosError(parent, id, message)}
+ return &PermissionDeniedError{CreateZitadelError(parent, id, message)}
}
func ThrowPermissionDeniedf(parent error, id, format string, a ...interface{}) error {
@@ -38,9 +38,9 @@ func (err *PermissionDeniedError) Is(target error) bool {
if !ok {
return false
}
- return err.CaosError.Is(t.CaosError)
+ return err.ZitadelError.Is(t.ZitadelError)
}
func (err *PermissionDeniedError) Unwrap() error {
- return err.CaosError
+ return err.ZitadelError
}
diff --git a/internal/zerrors/permission_denied_test.go b/internal/zerrors/permission_denied_test.go
new file mode 100644
index 0000000000..e60177055a
--- /dev/null
+++ b/internal/zerrors/permission_denied_test.go
@@ -0,0 +1,33 @@
+package zerrors_test
+
+import (
+ "errors"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+
+ "github.com/zitadel/zitadel/internal/zerrors"
+)
+
+func TestPermissionDeniedError(t *testing.T) {
+ var err interface{} = new(zerrors.PermissionDeniedError)
+ _, ok := err.(zerrors.PermissionDenied)
+ assert.True(t, ok)
+}
+
+func TestThrowPermissionDeniedf(t *testing.T) {
+ err := zerrors.ThrowPermissionDeniedf(nil, "id", "msg")
+ //nolint:errorlint
+ _, ok := err.(*zerrors.PermissionDeniedError)
+ assert.True(t, ok)
+}
+
+func TestIsPermissionDenied(t *testing.T) {
+ err := zerrors.ThrowPermissionDenied(nil, "id", "msg")
+ ok := zerrors.IsPermissionDenied(err)
+ assert.True(t, ok)
+
+ err = errors.New("I am found!")
+ ok = zerrors.IsPermissionDenied(err)
+ assert.False(t, ok)
+}
diff --git a/internal/errors/precondition_failed.go b/internal/zerrors/precondition_failed.go
similarity index 82%
rename from internal/errors/precondition_failed.go
rename to internal/zerrors/precondition_failed.go
index 2deee47aa8..ebacb4aa81 100644
--- a/internal/errors/precondition_failed.go
+++ b/internal/zerrors/precondition_failed.go
@@ -1,4 +1,4 @@
-package errors
+package zerrors
import (
"fmt"
@@ -15,11 +15,11 @@ type PreconditionFailed interface {
}
type PreconditionFailedError struct {
- *CaosError
+ *ZitadelError
}
func ThrowPreconditionFailed(parent error, id, message string) error {
- return &PreconditionFailedError{CreateCaosError(parent, id, message)}
+ return &PreconditionFailedError{CreateZitadelError(parent, id, message)}
}
func ThrowPreconditionFailedf(parent error, id, format string, a ...interface{}) error {
@@ -38,9 +38,9 @@ func (err *PreconditionFailedError) Is(target error) bool {
if !ok {
return false
}
- return err.CaosError.Is(t.CaosError)
+ return err.ZitadelError.Is(t.ZitadelError)
}
func (err *PreconditionFailedError) Unwrap() error {
- return err.CaosError
+ return err.ZitadelError
}
diff --git a/internal/zerrors/precondition_failed_test.go b/internal/zerrors/precondition_failed_test.go
new file mode 100644
index 0000000000..33e45dc487
--- /dev/null
+++ b/internal/zerrors/precondition_failed_test.go
@@ -0,0 +1,33 @@
+package zerrors_test
+
+import (
+ "errors"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+
+ "github.com/zitadel/zitadel/internal/zerrors"
+)
+
+func TestPreconditionFailedError(t *testing.T) {
+ var err interface{} = new(zerrors.PreconditionFailedError)
+ _, ok := err.(zerrors.PreconditionFailed)
+ assert.True(t, ok)
+}
+
+func TestThrowPreconditionFailedf(t *testing.T) {
+ err := zerrors.ThrowPreconditionFailedf(nil, "id", "msg")
+ //nolint:errorlint
+ _, ok := err.(*zerrors.PreconditionFailedError)
+ assert.True(t, ok)
+}
+
+func TestIsPreconditionFailed(t *testing.T) {
+ err := zerrors.ThrowPreconditionFailed(nil, "id", "msg")
+ ok := zerrors.IsPreconditionFailed(err)
+ assert.True(t, ok)
+
+ err = errors.New("Precondition failed!")
+ ok = zerrors.IsPreconditionFailed(err)
+ assert.False(t, ok)
+}
diff --git a/internal/errors/resource_exhausted.go b/internal/zerrors/resource_exhausted.go
similarity index 83%
rename from internal/errors/resource_exhausted.go
rename to internal/zerrors/resource_exhausted.go
index 1485fa361f..1beac0857f 100644
--- a/internal/errors/resource_exhausted.go
+++ b/internal/zerrors/resource_exhausted.go
@@ -1,4 +1,4 @@
-package errors
+package zerrors
import (
"fmt"
@@ -15,11 +15,11 @@ type ResourceExhausted interface {
}
type ResourceExhaustedError struct {
- *CaosError
+ *ZitadelError
}
func ThrowResourceExhausted(parent error, id, message string) error {
- return &ResourceExhaustedError{CreateCaosError(parent, id, message)}
+ return &ResourceExhaustedError{CreateZitadelError(parent, id, message)}
}
func ThrowResourceExhaustedf(parent error, id, format string, a ...interface{}) error {
@@ -40,9 +40,9 @@ func (err *ResourceExhaustedError) Is(target error) bool {
if !ok {
return false
}
- return err.CaosError.Is(t.CaosError)
+ return err.ZitadelError.Is(t.ZitadelError)
}
func (err *ResourceExhaustedError) Unwrap() error {
- return err.CaosError
+ return err.ZitadelError
}
diff --git a/internal/zerrors/resource_exhausted_test.go b/internal/zerrors/resource_exhausted_test.go
new file mode 100644
index 0000000000..680cf487f3
--- /dev/null
+++ b/internal/zerrors/resource_exhausted_test.go
@@ -0,0 +1,33 @@
+package zerrors_test
+
+import (
+ "errors"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+
+ "github.com/zitadel/zitadel/internal/zerrors"
+)
+
+func TestResourceExhaustedError(t *testing.T) {
+ var err interface{} = new(zerrors.ResourceExhaustedError)
+ _, ok := err.(zerrors.ResourceExhausted)
+ assert.True(t, ok)
+}
+
+func TestThrowResourceExhaustedf(t *testing.T) {
+ err := zerrors.ThrowResourceExhaustedf(nil, "id", "msg")
+ //nolint:errorlint
+ _, ok := err.(*zerrors.ResourceExhaustedError)
+ assert.True(t, ok)
+}
+
+func TestIsResourceExhausted(t *testing.T) {
+ err := zerrors.ThrowResourceExhausted(nil, "id", "msg")
+ ok := zerrors.IsResourceExhausted(err)
+ assert.True(t, ok)
+
+ err = errors.New("I am found!")
+ ok = zerrors.IsResourceExhausted(err)
+ assert.False(t, ok)
+}
diff --git a/internal/errors/unauthenticated.go b/internal/zerrors/unauthenticated.go
similarity index 82%
rename from internal/errors/unauthenticated.go
rename to internal/zerrors/unauthenticated.go
index 29237657ea..16a6a98852 100644
--- a/internal/errors/unauthenticated.go
+++ b/internal/zerrors/unauthenticated.go
@@ -1,4 +1,4 @@
-package errors
+package zerrors
import (
"fmt"
@@ -15,11 +15,11 @@ type Unauthenticated interface {
}
type UnauthenticatedError struct {
- *CaosError
+ *ZitadelError
}
func ThrowUnauthenticated(parent error, id, message string) error {
- return &UnauthenticatedError{CreateCaosError(parent, id, message)}
+ return &UnauthenticatedError{CreateZitadelError(parent, id, message)}
}
func ThrowUnauthenticatedf(parent error, id, format string, a ...interface{}) error {
@@ -38,9 +38,9 @@ func (err *UnauthenticatedError) Is(target error) bool {
if !ok {
return false
}
- return err.CaosError.Is(t.CaosError)
+ return err.ZitadelError.Is(t.ZitadelError)
}
func (err *UnauthenticatedError) Unwrap() error {
- return err.CaosError
+ return err.ZitadelError
}
diff --git a/internal/zerrors/unauthenticated_test.go b/internal/zerrors/unauthenticated_test.go
new file mode 100644
index 0000000000..9fa9c0a184
--- /dev/null
+++ b/internal/zerrors/unauthenticated_test.go
@@ -0,0 +1,33 @@
+package zerrors_test
+
+import (
+ "errors"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+
+ "github.com/zitadel/zitadel/internal/zerrors"
+)
+
+func TestUnauthenticatedError(t *testing.T) {
+ var err interface{} = new(zerrors.UnauthenticatedError)
+ _, ok := err.(zerrors.Unauthenticated)
+ assert.True(t, ok)
+}
+
+func TestThrowUnauthenticatedf(t *testing.T) {
+ err := zerrors.ThrowUnauthenticatedf(nil, "id", "msg")
+ //nolint:errorlint
+ _, ok := err.(*zerrors.UnauthenticatedError)
+ assert.True(t, ok)
+}
+
+func TestIsUnauthenticated(t *testing.T) {
+ err := zerrors.ThrowUnauthenticated(nil, "id", "msg")
+ ok := zerrors.IsUnauthenticated(err)
+ assert.True(t, ok)
+
+ err = errors.New("I am found!")
+ ok = zerrors.IsUnauthenticated(err)
+ assert.False(t, ok)
+}
diff --git a/internal/errors/unavailable.go b/internal/zerrors/unavailable.go
similarity index 81%
rename from internal/errors/unavailable.go
rename to internal/zerrors/unavailable.go
index b4b30ab7fb..65572881e2 100644
--- a/internal/errors/unavailable.go
+++ b/internal/zerrors/unavailable.go
@@ -1,4 +1,4 @@
-package errors
+package zerrors
import (
"fmt"
@@ -15,11 +15,11 @@ type Unavailable interface {
}
type UnavailableError struct {
- *CaosError
+ *ZitadelError
}
func ThrowUnavailable(parent error, id, message string) error {
- return &UnavailableError{CreateCaosError(parent, id, message)}
+ return &UnavailableError{CreateZitadelError(parent, id, message)}
}
func ThrowUnavailablef(parent error, id, format string, a ...interface{}) error {
@@ -38,9 +38,9 @@ func (err *UnavailableError) Is(target error) bool {
if !ok {
return false
}
- return err.CaosError.Is(t.CaosError)
+ return err.ZitadelError.Is(t.ZitadelError)
}
func (err *UnavailableError) Unwrap() error {
- return err.CaosError
+ return err.ZitadelError
}
diff --git a/internal/zerrors/unavailable_test.go b/internal/zerrors/unavailable_test.go
new file mode 100644
index 0000000000..f36d25e2cf
--- /dev/null
+++ b/internal/zerrors/unavailable_test.go
@@ -0,0 +1,33 @@
+package zerrors_test
+
+import (
+ "errors"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+
+ "github.com/zitadel/zitadel/internal/zerrors"
+)
+
+func TestUnavailableError(t *testing.T) {
+ var err interface{} = new(zerrors.UnavailableError)
+ _, ok := err.(zerrors.Unavailable)
+ assert.True(t, ok)
+}
+
+func TestThrowUnavailablef(t *testing.T) {
+ err := zerrors.ThrowUnavailablef(nil, "id", "msg")
+ //nolint:errorlint
+ _, ok := err.(*zerrors.UnavailableError)
+ assert.True(t, ok)
+}
+
+func TestIsUnavailable(t *testing.T) {
+ err := zerrors.ThrowUnavailable(nil, "id", "msg")
+ ok := zerrors.IsUnavailable(err)
+ assert.True(t, ok)
+
+ err = errors.New("I am found!")
+ ok = zerrors.IsUnavailable(err)
+ assert.False(t, ok)
+}
diff --git a/internal/errors/unimplemented.go b/internal/zerrors/unimplemented.go
similarity index 81%
rename from internal/errors/unimplemented.go
rename to internal/zerrors/unimplemented.go
index 1d0b77ed2a..544f05ee26 100644
--- a/internal/errors/unimplemented.go
+++ b/internal/zerrors/unimplemented.go
@@ -1,4 +1,4 @@
-package errors
+package zerrors
import (
"fmt"
@@ -15,11 +15,11 @@ type Unimplemented interface {
}
type UnimplementedError struct {
- *CaosError
+ *ZitadelError
}
func ThrowUnimplemented(parent error, id, message string) error {
- return &UnimplementedError{CreateCaosError(parent, id, message)}
+ return &UnimplementedError{CreateZitadelError(parent, id, message)}
}
func ThrowUnimplementedf(parent error, id, format string, a ...interface{}) error {
@@ -38,9 +38,9 @@ func (err *UnimplementedError) Is(target error) bool {
if !ok {
return false
}
- return err.CaosError.Is(t.CaosError)
+ return err.ZitadelError.Is(t.ZitadelError)
}
func (err *UnimplementedError) Unwrap() error {
- return err.CaosError
+ return err.ZitadelError
}
diff --git a/internal/zerrors/unimplemented_test.go b/internal/zerrors/unimplemented_test.go
new file mode 100644
index 0000000000..3786ed2f45
--- /dev/null
+++ b/internal/zerrors/unimplemented_test.go
@@ -0,0 +1,33 @@
+package zerrors_test
+
+import (
+ "errors"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+
+ "github.com/zitadel/zitadel/internal/zerrors"
+)
+
+func TestUnimplementedError(t *testing.T) {
+ var unimplementedError interface{} = new(zerrors.UnimplementedError)
+ _, ok := unimplementedError.(zerrors.Unimplemented)
+ assert.True(t, ok)
+}
+
+func TestThrowUnimplementedf(t *testing.T) {
+ err := zerrors.ThrowUnimplementedf(nil, "id", "msg")
+ //nolint:errorlint
+ _, ok := err.(*zerrors.UnimplementedError)
+ assert.True(t, ok)
+}
+
+func TestIsUnimplemented(t *testing.T) {
+ err := zerrors.ThrowUnimplemented(nil, "id", "msg")
+ ok := zerrors.IsUnimplemented(err)
+ assert.True(t, ok)
+
+ err = errors.New("I am found!")
+ ok = zerrors.IsUnimplemented(err)
+ assert.False(t, ok)
+}
diff --git a/internal/errors/unknown.go b/internal/zerrors/unknown.go
similarity index 79%
rename from internal/errors/unknown.go
rename to internal/zerrors/unknown.go
index 78eda816ab..cba44de8a3 100644
--- a/internal/errors/unknown.go
+++ b/internal/zerrors/unknown.go
@@ -1,4 +1,4 @@
-package errors
+package zerrors
import (
"fmt"
@@ -15,11 +15,11 @@ type Unknown interface {
}
type UnknownError struct {
- *CaosError
+ *ZitadelError
}
func ThrowUnknown(parent error, id, message string) error {
- return &UnknownError{CreateCaosError(parent, id, message)}
+ return &UnknownError{CreateZitadelError(parent, id, message)}
}
func ThrowUnknownf(parent error, id, format string, a ...interface{}) error {
@@ -38,9 +38,9 @@ func (err *UnknownError) Is(target error) bool {
if !ok {
return false
}
- return err.CaosError.Is(t.CaosError)
+ return err.ZitadelError.Is(t.ZitadelError)
}
func (err *UnknownError) Unwrap() error {
- return err.CaosError
+ return err.ZitadelError
}
diff --git a/internal/zerrors/unknown_test.go b/internal/zerrors/unknown_test.go
new file mode 100644
index 0000000000..973966ce71
--- /dev/null
+++ b/internal/zerrors/unknown_test.go
@@ -0,0 +1,33 @@
+package zerrors_test
+
+import (
+ "errors"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+
+ "github.com/zitadel/zitadel/internal/zerrors"
+)
+
+func TestUnknownError(t *testing.T) {
+ var err interface{} = new(zerrors.UnknownError)
+ _, ok := err.(zerrors.Unknown)
+ assert.True(t, ok)
+}
+
+func TestThrowUnknownf(t *testing.T) {
+ err := zerrors.ThrowUnknownf(nil, "id", "msg")
+ //nolint:errorlint
+ _, ok := err.(*zerrors.UnknownError)
+ assert.True(t, ok)
+}
+
+func TestIsUnknown(t *testing.T) {
+ err := zerrors.ThrowUnknown(nil, "id", "msg")
+ ok := zerrors.IsUnknown(err)
+ assert.True(t, ok)
+
+ err = errors.New("I am found!")
+ ok = zerrors.IsUnknown(err)
+ assert.False(t, ok)
+}
diff --git a/internal/errors/caos_error.go b/internal/zerrors/zerror.go
similarity index 56%
rename from internal/errors/caos_error.go
rename to internal/zerrors/zerror.go
index 83d5a7ce4a..d7b85b84a7 100644
--- a/internal/errors/caos_error.go
+++ b/internal/zerrors/zerror.go
@@ -1,4 +1,4 @@
-package errors
+package zerrors
import (
"errors"
@@ -6,55 +6,55 @@ import (
"reflect"
)
-var _ Error = (*CaosError)(nil)
+var _ Error = (*ZitadelError)(nil)
-type CaosError struct {
+type ZitadelError struct {
Parent error
Message string
ID string
}
func ThrowError(parent error, id, message string) error {
- return CreateCaosError(parent, id, message)
+ return CreateZitadelError(parent, id, message)
}
-func CreateCaosError(parent error, id, message string) *CaosError {
- return &CaosError{
+func CreateZitadelError(parent error, id, message string) *ZitadelError {
+ return &ZitadelError{
Parent: parent,
ID: id,
Message: message,
}
}
-func (err *CaosError) Error() string {
+func (err *ZitadelError) Error() string {
if err.Parent != nil {
return fmt.Sprintf("ID=%s Message=%s Parent=(%v)", err.ID, err.Message, err.Parent)
}
return fmt.Sprintf("ID=%s Message=%s", err.ID, err.Message)
}
-func (err *CaosError) Unwrap() error {
+func (err *ZitadelError) Unwrap() error {
return err.GetParent()
}
-func (err *CaosError) GetParent() error {
+func (err *ZitadelError) GetParent() error {
return err.Parent
}
-func (err *CaosError) GetMessage() string {
+func (err *ZitadelError) GetMessage() string {
return err.Message
}
-func (err *CaosError) SetMessage(msg string) {
+func (err *ZitadelError) SetMessage(msg string) {
err.Message = msg
}
-func (err *CaosError) GetID() string {
+func (err *ZitadelError) GetID() string {
return err.ID
}
-func (err *CaosError) Is(target error) bool {
- t, ok := target.(*CaosError)
+func (err *ZitadelError) Is(target error) bool {
+ t, ok := target.(*ZitadelError)
if !ok {
return false
}
@@ -71,8 +71,8 @@ func (err *CaosError) Is(target error) bool {
return true
}
-func (err *CaosError) As(target interface{}) bool {
- _, ok := target.(**CaosError)
+func (err *ZitadelError) As(target interface{}) bool {
+ _, ok := target.(**ZitadelError)
if !ok {
return false
}
diff --git a/internal/errors/caos_error_test.go b/internal/zerrors/zerror_test.go
similarity index 62%
rename from internal/errors/caos_error_test.go
rename to internal/zerrors/zerror_test.go
index 4ce9fc7b33..dcd0d8bcf0 100644
--- a/internal/errors/caos_error_test.go
+++ b/internal/zerrors/zerror_test.go
@@ -1,19 +1,18 @@
-package errors_test
+package zerrors_test
import (
"testing"
"github.com/stretchr/testify/assert"
-
- caos_errs "github.com/zitadel/zitadel/internal/errors"
+ "github.com/zitadel/zitadel/internal/zerrors"
)
func TestErrorMethod(t *testing.T) {
- err := caos_errs.ThrowError(nil, "id", "msg")
+ err := zerrors.ThrowError(nil, "id", "msg")
expected := "ID=id Message=msg"
assert.Equal(t, expected, err.Error())
- err = caos_errs.ThrowError(err, "subID", "subMsg")
+ err = zerrors.ThrowError(err, "subID", "subMsg")
subExptected := "ID=subID Message=subMsg Parent=(ID=id Message=msg)"
assert.Equal(t, subExptected, err.Error())
}
diff --git a/proto/zitadel/admin.proto b/proto/zitadel/admin.proto
index 448fcca303..e85ccea8a0 100644
--- a/proto/zitadel/admin.proto
+++ b/proto/zitadel/admin.proto
@@ -230,7 +230,7 @@ service AdminService {
};
option (zitadel.v1.auth_option) = {
- permission: "iam.read";
+ permission: "authenticated";
};
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
@@ -240,6 +240,22 @@ service AdminService {
};
}
+ rpc GetAllowedLanguages(GetAllowedLanguagesRequest) returns (GetAllowedLanguagesResponse) {
+ option (google.api.http) = {
+ get: "/languages/allowed";
+ };
+
+ option (zitadel.v1.auth_option) = {
+ permission: "authenticated";
+ };
+
+ option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
+ summary: "Allowed Languages";
+ description: "If the languages are restricted, only those are returned. Else, all supported languages are returned."
+ tags: "Restrictions";
+ };
+ }
+
rpc SetDefaultLanguage(SetDefaultLanguageRequest) returns (SetDefaultLanguageResponse) {
option (google.api.http) = {
put: "/languages/default/{language}";
@@ -3843,7 +3859,7 @@ service AdminService {
responses: {
key: "200";
value: {
- description: "The status 200 is also returned if no restrictions were ever set. In this case, all feature restrictions have zero values.";
+ description: "The status 200 is also returned if no restrictions were ever set. In this case, all feature restrictions are undefined.";
};
};
};
@@ -3868,6 +3884,17 @@ message GetSupportedLanguagesResponse {
];
}
+//This is an empty request
+message GetAllowedLanguagesRequest {}
+
+message GetAllowedLanguagesResponse {
+ repeated string languages = 1 [
+ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
+ example: "[\"en\", \"de\", \"it\"]"
+ }
+ ];
+}
+
message SetDefaultLanguageRequest {
string language = 1 [
(validate.rules).string = {min_len: 1, max_len: 10},
@@ -7945,11 +7972,35 @@ message ListEventsRequest {
}
];
google.protobuf.Timestamp creation_date = 9 [
+ deprecated = true,
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
example: "\"2019-04-01T08:45:00.000000Z\"";
- description: "If asc is false, the events returned are older than creation_date. If asc is true, the events returned are younger than creation_date. If creation_date is not set the field is ignored.";
+ description: "Use from instead.";
}
];
+ message creation_date_range {
+ google.protobuf.Timestamp since = 1 [
+ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
+ example: "\"2019-04-01T08:45:00.000000Z\"";
+ description: "The events returned are younger than the UTC since date";
+ }
+ ];
+ google.protobuf.Timestamp until = 2 [
+ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
+ example: "\"2019-04-01T08:45:00.000000Z\"";
+ description: "The events returned are older than the UTC until date.";
+ }
+ ];
+ }
+ oneof creation_date_filter {
+ creation_date_range range = 10;
+ google.protobuf.Timestamp from = 11 [
+ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
+ example: "\"2019-04-01T08:45:00.000000Z\"";
+ description: "If asc is false, the events returned are older than the UTC from date. If asc is true, the events returned are younger than from.";
+ }
+ ];
+ }
}
message ListEventsResponse {
@@ -7994,6 +8045,20 @@ message SetRestrictionsRequest {
description: "defines if ZITADEL should expose the endpoint /ui/login/register/org. If it is true, the org registration endpoint returns the HTTP status 404 on GET requests, and 409 on POST requests.";
}
];
+ optional SelectLanguages allowed_languages = 2 [
+ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
+ description: "restricts the allowed languages. If allowed_languages is undefined, the allowed languages are not changed.";
+ }
+ ];
+}
+
+// We have to wrap the languages list into a message so we can serialize empty lists.
+message SelectLanguages {
+ repeated string list = 1 [
+ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
+ description: "defines which languages to select. An empty list means all languages are selected.";
+ }
+ ];
}
message SetRestrictionsResponse {
@@ -8009,5 +8074,10 @@ message GetRestrictionsResponse {
description: "defines if ZITADEL should expose the endpoint /ui/login/register/org. If it is true, the org registration endpoint returns the HTTP status 404 on GET requests, and 409 on POST requests.";
}
];
+ repeated string allowed_languages = 3 [
+ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
+ description: "defines the allowed languages. If allowed_languages has one or more entries, only these languages are allowed. If it has no entries, all supported languages are allowed";
+ }
+ ];
}
diff --git a/proto/zitadel/auth.proto b/proto/zitadel/auth.proto
index 5fd8772edc..58767f9fe9 100644
--- a/proto/zitadel/auth.proto
+++ b/proto/zitadel/auth.proto
@@ -143,10 +143,10 @@ service AuthService {
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
summary: "Supported Languages";
- description: "The supported/default languages of the system will be returned by the language abbreviation."
+ description: "Use GetSupportedLanguages on the admin service instead."
+ deprecated: true;
tags: "General";
};
-
}
rpc GetMyUser(GetMyUserRequest) returns (GetMyUserResponse) {
@@ -996,7 +996,6 @@ message HealthzResponse {}
//This is an empty request
message GetSupportedLanguagesRequest {}
-//This is an empty response
message GetSupportedLanguagesResponse {
repeated string languages = 1 [
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
diff --git a/proto/zitadel/management.proto b/proto/zitadel/management.proto
index 37f7c12b20..9bb2e1efb3 100644
--- a/proto/zitadel/management.proto
+++ b/proto/zitadel/management.proto
@@ -268,7 +268,8 @@ service ManagementService {
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
summary: "Supported Languages";
- description: "The supported/default languages of the system will be returned by the language abbreviation."
+ description: "Use GetSupportedLanguages on the admin service instead."
+ deprecated: true;
tags: "General";
responses: {
key: "200"
diff --git a/proto/zitadel/session/v2beta/session_service.proto b/proto/zitadel/session/v2beta/session_service.proto
index ef1108e2c7..3461772c9a 100644
--- a/proto/zitadel/session/v2beta/session_service.proto
+++ b/proto/zitadel/session/v2beta/session_service.proto
@@ -280,7 +280,8 @@ message CreateSessionRequest{
optional google.protobuf.Duration lifetime = 5 [
(validate.rules).duration = {gt: {seconds: 0}},
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
- description: "\"duration after which the session will be automatically invalidated\"";
+ description: "\"duration (in seconds) after which the session will be automatically invalidated\"";
+ example:"\"18000s\""
}
];
}
@@ -333,7 +334,8 @@ message SetSessionRequest{
optional google.protobuf.Duration lifetime = 6 [
(validate.rules).duration = {gt: {seconds: 0}},
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
- description: "\"duration after which the session will be automatically invalidated\"";
+ description: "\"duration (in seconds) after which the session will be automatically invalidated\"";
+ example:"\"18000s\""
}
];
}
diff --git a/proto/zitadel/user/v2beta/email.proto b/proto/zitadel/user/v2beta/email.proto
index 6e0c3ada0b..8a76a2eb0d 100644
--- a/proto/zitadel/user/v2beta/email.proto
+++ b/proto/zitadel/user/v2beta/email.proto
@@ -27,6 +27,18 @@ message SetHumanEmail {
}
}
+message HumanEmail {
+ string email = 1 [
+ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
+ min_length: 1;
+ max_length: 200;
+ example: "\"mini@mouse.com\"";
+ }
+ ];
+ bool is_verified = 2;
+}
+
+
message SendEmailVerificationCode {
optional string url_template = 1 [
(validate.rules).string = {min_len: 1, max_len: 200},
diff --git a/proto/zitadel/user/v2beta/password.proto b/proto/zitadel/user/v2beta/password.proto
index 8a615657ed..69fe5fc303 100644
--- a/proto/zitadel/user/v2beta/password.proto
+++ b/proto/zitadel/user/v2beta/password.proto
@@ -55,3 +55,31 @@ enum NotificationType {
NOTIFICATION_TYPE_Email = 1;
NOTIFICATION_TYPE_SMS = 2;
}
+
+message SetPassword {
+ oneof password_type {
+ Password password = 1;
+ HashedPassword hashed_password = 2;
+ }
+ oneof verification {
+ string current_password = 3 [
+ (validate.rules).string = {min_len: 1, max_len: 200},
+ (google.api.field_behavior) = REQUIRED,
+ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
+ min_length: 1;
+ max_length: 200;
+ example: "\"Secr3tP4ssw0rd!\"";
+ }
+ ];
+ string verification_code = 4 [
+ (validate.rules).string = {min_len: 1, max_len: 20},
+ (google.api.field_behavior) = REQUIRED,
+ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
+ min_length: 1;
+ max_length: 20;
+ example: "\"SKJd342k\"";
+ description: "\"the verification code generated during password reset request\"";
+ }
+ ];
+ }
+}
\ No newline at end of file
diff --git a/proto/zitadel/user/v2beta/phone.proto b/proto/zitadel/user/v2beta/phone.proto
index 75bb80c4b2..c71a725b29 100644
--- a/proto/zitadel/user/v2beta/phone.proto
+++ b/proto/zitadel/user/v2beta/phone.proto
@@ -24,6 +24,16 @@ message SetHumanPhone {
}
}
+message HumanPhone {
+ string phone = 1 [
+ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
+ max_length: 200;
+ example: "\"+41791234567\"";
+ }
+ ];
+ bool is_verified = 2;
+}
+
message SendPhoneVerificationCode {}
message ReturnPhoneVerificationCode {}
diff --git a/proto/zitadel/user/v2beta/user.proto b/proto/zitadel/user/v2beta/user.proto
index ab1b5c5241..57482a23dd 100644
--- a/proto/zitadel/user/v2beta/user.proto
+++ b/proto/zitadel/user/v2beta/user.proto
@@ -7,10 +7,9 @@ option go_package = "github.com/zitadel/zitadel/pkg/grpc/user/v2beta;user";
import "google/api/field_behavior.proto";
import "protoc-gen-openapiv2/options/annotations.proto";
import "validate/validate.proto";
-
-message User {
- string id = 1;
-}
+import "zitadel/object/v2beta/object.proto";
+import "zitadel/user/v2beta/email.proto";
+import "zitadel/user/v2beta/phone.proto";
enum Gender {
GENDER_UNSPECIFIED = 0;
@@ -66,6 +65,45 @@ message SetHumanProfile {
];
}
+message HumanProfile {
+ string given_name = 1 [
+ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
+ min_length: 1;
+ max_length: 200;
+ example: "\"Minnie\"";
+ }
+ ];
+ string family_name = 2 [
+ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
+ min_length: 1;
+ max_length: 200;
+ example: "\"Mouse\"";
+ }
+ ];
+ optional string nick_name = 3 [
+ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
+ max_length: 200;
+ example: "\"Mini\"";
+ }
+ ];
+ optional string display_name = 4 [
+ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
+ max_length: 200;
+ example: "\"Minnie Mouse\"";
+ }
+ ];
+ optional string preferred_language = 5 [
+ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
+ max_length: 10;
+ example: "\"en\"";
+ }
+ ];
+ optional zitadel.user.v2beta.Gender gender = 6 [
+ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
+ example: "\"GENDER_FEMALE\"";
+ }
+ ];
+}
message SetMetadataEntry {
string key = 1 [
@@ -88,3 +126,44 @@ message SetMetadataEntry {
}
];
}
+
+message HumanUser {
+ string user_id = 1 [
+ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
+ example: "\"d654e6ba-70a3-48ef-a95d-37c8d8a7901a\"";
+ }
+ ];
+ UserState state = 2 [
+ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
+ description: "current state of the user";
+ }
+ ];
+ string username = 3 [
+ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
+ example: "\"minnie-mouse\"";
+ }
+ ];
+ repeated string login_names = 4 [
+ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
+ example: "[\"gigi@zitadel.com\", \"gigi@zitadel.zitadel.ch\"]";
+ }
+ ];
+ string preferred_login_name = 5 [
+ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
+ example: "\"gigi@zitadel.com\"";
+ }
+ ];
+ HumanProfile profile = 6;
+ HumanEmail email = 7;
+ HumanPhone phone = 8;
+}
+
+enum UserState {
+ USER_STATE_UNSPECIFIED = 0;
+ USER_STATE_ACTIVE = 1;
+ USER_STATE_INACTIVE = 2;
+ USER_STATE_DELETED = 3;
+ USER_STATE_LOCKED = 4;
+ USER_STATE_SUSPEND = 5;
+ USER_STATE_INITIAL = 6;
+}
\ No newline at end of file
diff --git a/proto/zitadel/user/v2beta/user_service.proto b/proto/zitadel/user/v2beta/user_service.proto
index 36517dc4c5..0a34f7c558 100644
--- a/proto/zitadel/user/v2beta/user_service.proto
+++ b/proto/zitadel/user/v2beta/user_service.proto
@@ -238,6 +238,149 @@ service UserService {
};
}
+ rpc UpdateHumanUser(UpdateHumanUserRequest) returns (UpdateHumanUserResponse) {
+ option (google.api.http) = {
+ put: "/v2beta/users/{user_id}"
+ };
+
+ option (zitadel.protoc_gen_zitadel.v2.options) = {
+ auth_option: {
+ permission: "authenticated"
+ }
+ };
+
+ option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
+ summary: "Update User";
+ description: "Update all information from a user."
+ responses: {
+ key: "200"
+ value: {
+ description: "OK";
+ }
+ };
+ };
+ }
+
+ rpc DeactivateUser(DeactivateUserRequest) returns (DeactivateUserResponse) {
+ option (google.api.http) = {
+ post: "/v2beta/users/{user_id}/deactivate"
+ body: "*"
+ };
+
+ option (zitadel.protoc_gen_zitadel.v2.options) = {
+ auth_option: {
+ permission: "authenticated"
+ }
+ };
+
+ option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
+ summary: "Deactivate user";
+ description: "The state of the user will be changed to 'deactivated'. The user will not be able to log in anymore. The endpoint returns an error if the user is already in the state 'deactivated'. Use deactivate user when the user should not be able to use the account anymore, but you still need access to the user data."
+ responses: {
+ key: "200"
+ value: {
+ description: "OK";
+ }
+ };
+ };
+ }
+
+ rpc ReactivateUser(ReactivateUserRequest) returns (ReactivateUserResponse) {
+ option (google.api.http) = {
+ post: "/v2beta/users/{user_id}/reactivate"
+ body: "*"
+ };
+
+ option (zitadel.protoc_gen_zitadel.v2.options) = {
+ auth_option: {
+ permission: "authenticated"
+ }
+ };
+
+ option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
+ summary: "Reactivate user";
+ description: "Reactivate a user with the state 'deactivated'. The user will be able to log in again afterward. The endpoint returns an error if the user is not in the state 'deactivated'."
+ responses: {
+ key: "200"
+ value: {
+ description: "OK";
+ }
+ };
+ };
+ }
+
+ rpc LockUser(LockUserRequest) returns (LockUserResponse) {
+ option (google.api.http) = {
+ post: "/v2beta/users/{user_id}/lock"
+ body: "*"
+ };
+
+ option (zitadel.protoc_gen_zitadel.v2.options) = {
+ auth_option: {
+ permission: "authenticated"
+ }
+ };
+
+ option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
+ summary: "Lock user";
+ description: "The state of the user will be changed to 'locked'. The user will not be able to log in anymore. The endpoint returns an error if the user is already in the state 'locked'. Use this endpoint if the user should not be able to log in temporarily because of an event that happened (wrong password, etc.)"
+ responses: {
+ key: "200"
+ value: {
+ description: "OK";
+ }
+ };
+ };
+ }
+
+ rpc UnlockUser(UnlockUserRequest) returns (UnlockUserResponse) {
+ option (google.api.http) = {
+ post: "/v2beta/users/{user_id}/unlock"
+ body: "*"
+ };
+
+ option (zitadel.protoc_gen_zitadel.v2.options) = {
+ auth_option: {
+ permission: "authenticated"
+ }
+ };
+
+ option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
+ summary: "Unlock user";
+ description: "Unlock a user with the state 'locked'. The user will be able to log in again afterward. The endpoint returns an error if the user is not in the state 'locked'."
+ responses: {
+ key: "200"
+ value: {
+ description: "OK";
+ }
+ };
+ };
+ }
+
+ rpc DeleteUser(DeleteUserRequest) returns (DeleteUserResponse) {
+ option (google.api.http) = {
+ delete: "/v2beta/users/{user_id}"
+ };
+
+ option (zitadel.protoc_gen_zitadel.v2.options) = {
+ auth_option: {
+ permission: "user.delete"
+ }
+ };
+
+
+ option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
+ summary: "Delete user";
+ description: "The state of the user will be changed to 'deleted'. The user will not be able to log in anymore. Endpoints requesting this user will return an error 'User not found"
+ responses: {
+ key: "200"
+ value: {
+ description: "OK";
+ }
+ };
+ };
+ }
+
rpc RegisterPasskey (RegisterPasskeyRequest) returns (RegisterPasskeyResponse) {
option (google.api.http) = {
post: "/v2beta/users/{user_id}/passkeys"
@@ -804,6 +947,133 @@ message VerifyPhoneResponse{
zitadel.object.v2beta.Details details = 1;
}
+message DeleteUserRequest {
+ string user_id = 1 [
+ (validate.rules).string = {min_len: 1, max_len: 200},
+ (google.api.field_behavior) = REQUIRED,
+ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
+ min_length: 1;
+ max_length: 200;
+ example: "\"69629012906488334\"";
+ }];
+}
+
+message DeleteUserResponse {
+ zitadel.object.v2beta.Details details = 1;
+}
+
+message GetUserByIDRequest {
+ string user_id = 1 [
+ (validate.rules).string = {min_len: 1, max_len: 200},
+ (google.api.field_behavior) = REQUIRED,
+ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
+ min_length: 1;
+ max_length: 200;
+ example: "\"69629012906488334\"";
+ description: "User ID of the user you like to get."
+ }
+ ];
+}
+
+message GetUserByIDResponse {
+ zitadel.object.v2beta.Details details = 1;
+ HumanUser user = 2;
+}
+
+message UpdateHumanUserRequest{
+ string user_id = 1 [
+ (validate.rules).string = {min_len: 1, max_len: 200},
+ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
+ min_length: 1;
+ max_length: 200;
+ example: "\"d654e6ba-70a3-48ef-a95d-37c8d8a7901a\"";
+ }
+ ];
+ optional string username = 2 [
+ (validate.rules).string = {min_len: 1, max_len: 200},
+ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
+ min_length: 1;
+ max_length: 200;
+ example: "\"minnie-mouse\"";
+ }
+ ];
+ optional SetHumanProfile profile = 3;
+ optional SetHumanEmail email = 4;
+ optional SetHumanPhone phone = 5;
+ optional SetPassword password = 6;
+}
+
+message UpdateHumanUserResponse {
+ zitadel.object.v2beta.Details details = 1;
+ optional string email_code = 2;
+ optional string phone_code = 3;
+}
+
+message DeactivateUserRequest {
+ string user_id = 1 [
+ (validate.rules).string = {min_len: 1, max_len: 200},
+ (google.api.field_behavior) = REQUIRED,
+ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
+ min_length: 1;
+ max_length: 200;
+ example: "\"69629012906488334\"";
+ }
+ ];
+}
+
+message DeactivateUserResponse {
+ zitadel.object.v2beta.Details details = 1;
+}
+
+
+message ReactivateUserRequest {
+ string user_id = 1 [
+ (validate.rules).string = {min_len: 1, max_len: 200},
+ (google.api.field_behavior) = REQUIRED,
+ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
+ min_length: 1;
+ max_length: 200;
+ example: "\"69629012906488334\"";
+ }
+ ];
+}
+
+message ReactivateUserResponse {
+ zitadel.object.v2beta.Details details = 1;
+}
+
+message LockUserRequest {
+ string user_id = 1 [
+ (validate.rules).string = {min_len: 1, max_len: 200},
+ (google.api.field_behavior) = REQUIRED,
+ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
+ min_length: 1;
+ max_length: 200;
+ example: "\"69629012906488334\"";
+ }
+ ];
+}
+
+message LockUserResponse {
+ zitadel.object.v2beta.Details details = 1;
+}
+
+message UnlockUserRequest {
+ string user_id = 1 [
+ (validate.rules).string = {min_len: 1, max_len: 200},
+ (google.api.field_behavior) = REQUIRED,
+ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
+ min_length: 1;
+ max_length: 200;
+ example: "\"69629012906488334\"";
+ }
+ ];
+}
+
+message UnlockUserResponse {
+ zitadel.object.v2beta.Details details = 1;
+}
+
message RegisterPasskeyRequest{
string user_id = 1 [
(validate.rules).string = {min_len: 1, max_len: 200},