Fix delete user membership instead of profile
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
This commit is contained in:
@@ -557,28 +557,36 @@ func (s *Service) updateUser(
|
|||||||
func (s *Service) DeleteUser(
|
func (s *Service) DeleteUser(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
config *coredata.SCIMConfiguration,
|
config *coredata.SCIMConfiguration,
|
||||||
membershipID gid.GID,
|
profileID gid.GID,
|
||||||
) error {
|
) error {
|
||||||
scope := coredata.NewScopeFromObjectID(config.OrganizationID)
|
scope := coredata.NewScopeFromObjectID(config.OrganizationID)
|
||||||
|
|
||||||
return s.pg.WithTx(
|
return s.pg.WithTx(
|
||||||
ctx,
|
ctx,
|
||||||
func(tx pg.Conn) error {
|
func(tx pg.Conn) error {
|
||||||
|
profile := &coredata.MembershipProfile{}
|
||||||
|
if err := profile.LoadByID(ctx, tx, scope, profileID); err != nil {
|
||||||
|
if errors.Is(err, coredata.ErrResourceNotFound) {
|
||||||
|
return scimerrors.ScimErrorResourceNotFound(profileID.String())
|
||||||
|
}
|
||||||
|
return fmt.Errorf("cannot load profile: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if profile.OrganizationID != config.OrganizationID {
|
||||||
|
return scimerrors.ScimErrorResourceNotFound(profileID.String())
|
||||||
|
}
|
||||||
|
|
||||||
membership := &coredata.Membership{}
|
membership := &coredata.Membership{}
|
||||||
err := membership.LoadByID(ctx, tx, scope, membershipID)
|
if err := membership.LoadByIdentityIDAndOrganizationID(
|
||||||
if err != nil {
|
ctx, tx, scope, profile.IdentityID, config.OrganizationID,
|
||||||
if err == coredata.ErrResourceNotFound {
|
); err != nil {
|
||||||
return scimerrors.ScimErrorResourceNotFound(membershipID.String())
|
if errors.Is(err, coredata.ErrResourceNotFound) {
|
||||||
|
return scimerrors.ScimErrorResourceNotFound(profileID.String())
|
||||||
}
|
}
|
||||||
return fmt.Errorf("cannot load membership: %w", err)
|
return fmt.Errorf("cannot load membership: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if membership.OrganizationID != config.OrganizationID {
|
if err := membership.Delete(ctx, tx, scope, membership.ID); err != nil {
|
||||||
return scimerrors.ScimErrorResourceNotFound(membershipID.String())
|
|
||||||
}
|
|
||||||
|
|
||||||
err = membership.Delete(ctx, tx, scope, membershipID)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("cannot delete membership: %w", err)
|
return fmt.Errorf("cannot delete membership: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user