diff --git a/internal/command/user_idp_link.go b/internal/command/user_idp_link.go index fe0047623..ea0a3381c 100644 --- a/internal/command/user_idp_link.go +++ b/internal/command/user_idp_link.go @@ -15,6 +15,9 @@ func (c *Commands) AddUserIDPLink(ctx context.Context, userID, resourceOwner str if userID == "" { return caos_errs.ThrowInvalidArgument(nil, "COMMAND-03j8f", "Errors.IDMissing") } + if err := c.checkUserExists(ctx, userID, resourceOwner); err != nil { + return err + } linkWriteModel := NewUserIDPLinkWriteModel(userID, link.IDPConfigID, link.ExternalUserID, resourceOwner) userAgg := UserAggregateFromWriteModel(&linkWriteModel.WriteModel) @@ -36,6 +39,10 @@ func (c *Commands) BulkAddedUserIDPLinks(ctx context.Context, userID, resourceOw return caos_errs.ThrowInvalidArgument(nil, "COMMAND-Ek9s", "Errors.User.ExternalIDP.MinimumExternalIDPNeeded") } + if err := c.checkUserExists(ctx, userID, resourceOwner); err != nil { + return err + } + events := make([]eventstore.Command, len(links)) for i, link := range links { linkWriteModel := NewUserIDPLinkWriteModel(userID, link.IDPConfigID, link.ExternalUserID, resourceOwner) @@ -58,9 +65,6 @@ func (c *Commands) addUserIDPLink(ctx context.Context, human *eventstore.Aggrega if !link.IsValid() { return nil, caos_errs.ThrowInvalidArgument(nil, "COMMAND-6m9Kd", "Errors.User.ExternalIDP.Invalid") } - if err := c.checkUserExists(ctx, human.ID, human.ResourceOwner); err != nil { - return nil, err - } _, err := c.getOrgIDPConfigByID(ctx, link.IDPConfigID, human.ResourceOwner) if caos_errs.IsNotFound(err) { diff --git a/internal/command/user_idp_link_test.go b/internal/command/user_idp_link_test.go index 27229a1ef..af6499785 100644 --- a/internal/command/user_idp_link_test.go +++ b/internal/command/user_idp_link_test.go @@ -79,6 +79,23 @@ func TestCommandSide_BulkAddUserIDPLinks(t *testing.T) { fields: fields{ eventstore: eventstoreExpect( t, + expectFilter( + eventFromEventPusher( + user.NewHumanAddedEvent( + context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + "userName", + "firstName", + "lastName", + "nickName", + "displayName", + language.German, + domain.GenderFemale, + "email@Address.ch", + false, + ), + ), + ), ), }, args: args{ @@ -104,6 +121,23 @@ func TestCommandSide_BulkAddUserIDPLinks(t *testing.T) { fields: fields{ eventstore: eventstoreExpect( t, + expectFilter( + eventFromEventPusher( + user.NewHumanAddedEvent( + context.Background(), + &user.NewAggregate("user1", "org1").Aggregate, + "userName", + "firstName", + "lastName", + "nickName", + "displayName", + language.German, + domain.GenderFemale, + "email@Address.ch", + false, + ), + ), + ), ), }, args: args{