mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 21:17:32 +00:00
feat: add delete phone endpoint to v2 api (#8321)
# Which Problems Are Solved - Adds delete phone endpoint to v2 api # How the Problems Are Solved - Adds new endpoint with DELETE method to /v2beta/users/:userId/phone which removes currently set phone number # Additional Changes - Added integration test for new endpoint. # Additional Context - Solves https://discord.com/channels/927474939156643850/1255557862286032996
This commit is contained in:
@@ -140,6 +140,29 @@ func (c *Commands) verifyUserPhoneWithGenerator(ctx context.Context, userID, cod
|
||||
return writeModelToObjectDetails(&cmd.model.WriteModel), nil
|
||||
}
|
||||
|
||||
func (c *Commands) RemoveUserPhone(ctx context.Context, userID string) (*domain.ObjectDetails, error) {
|
||||
return c.removeUserPhone(ctx, userID)
|
||||
}
|
||||
|
||||
func (c *Commands) removeUserPhone(ctx context.Context, userID string) (*domain.ObjectDetails, error) {
|
||||
cmd, err := c.NewUserPhoneEvents(ctx, userID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if authz.GetCtxData(ctx).UserID != userID {
|
||||
if err = c.checkPermission(ctx, domain.PermissionUserWrite, cmd.aggregate.ResourceOwner, userID); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
if err = cmd.Remove(ctx); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if _, err = cmd.Push(ctx); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return writeModelToObjectDetails(&cmd.model.WriteModel), nil
|
||||
}
|
||||
|
||||
// UserPhoneEvents allows step-by-step additions of events,
|
||||
// operating on the Human Phone Model.
|
||||
type UserPhoneEvents struct {
|
||||
@@ -191,6 +214,14 @@ func (c *UserPhoneEvents) Change(ctx context.Context, phone domain.PhoneNumber)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *UserPhoneEvents) Remove(ctx context.Context) error {
|
||||
if c.model.State == domain.PhoneStateRemoved || c.model.State == domain.PhoneStateUnspecified {
|
||||
return zerrors.ThrowPreconditionFailed(nil, "COMMAND-ieJ2e", "Errors.User.Phone.NotFound")
|
||||
}
|
||||
c.events = append(c.events, user.NewHumanPhoneRemovedEvent(ctx, c.aggregate))
|
||||
return nil
|
||||
}
|
||||
|
||||
// SetVerified sets the phone number to verified.
|
||||
func (c *UserPhoneEvents) SetVerified(ctx context.Context) {
|
||||
c.events = append(c.events, user.NewHumanPhoneVerifiedEvent(ctx, c.aggregate))
|
||||
|
Reference in New Issue
Block a user