zitadel/internal/command/user_v3_username.go

74 lines
2.0 KiB
Go
Raw Normal View History

package command
import (
"context"
"github.com/zitadel/zitadel/internal/domain"
"github.com/zitadel/zitadel/internal/zerrors"
)
type AddUsername struct {
ResourceOwner string
UserID string
Username string
IsOrgSpecific bool
}
func (c *Commands) AddUsername(ctx context.Context, username *AddUsername) (*domain.ObjectDetails, error) {
2024-09-25 19:58:26 +02:00
if username.UserID == "" {
return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-aS3Vz5t6BS", "Errors.IDMissing")
}
schemauser, err := existingSchemaUser(ctx, c, username.ResourceOwner, username.UserID)
if err != nil {
return nil, err
}
2024-09-25 19:58:26 +02:00
_, err = existingSchema(ctx, c, "", schemauser.SchemaID)
if err != nil {
return nil, err
}
2024-09-25 19:58:26 +02:00
// TODO check for possible authenticators
id, err := c.idGenerator.Next()
if err != nil {
return nil, err
}
2024-09-25 19:58:26 +02:00
writeModel, err := c.getSchemaUsernameWM(ctx, schemauser.ResourceOwner, schemauser.AggregateID, id)
if err != nil {
return nil, err
}
2024-09-25 19:58:26 +02:00
events, err := writeModel.NewCreate(ctx, username.IsOrgSpecific, username.Username)
if err != nil {
return nil, err
}
2024-09-25 19:58:26 +02:00
return c.pushAppendAndReduceDetails(ctx, writeModel, events...)
}
2024-09-26 19:15:03 +02:00
func (c *Commands) DeleteUsername(ctx context.Context, resourceOwner, userID, id string) (*domain.ObjectDetails, error) {
2024-09-24 20:42:20 +02:00
if userID == "" {
return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-J6ybG5WZiy", "Errors.IDMissing")
}
if id == "" {
return nil, zerrors.ThrowInvalidArgument(nil, "COMMAND-PoSU5BOZCi", "Errors.IDMissing")
}
2024-09-25 19:58:26 +02:00
writeModel, err := c.getSchemaUsernameWM(ctx, resourceOwner, userID, id)
if err != nil {
return nil, err
}
2024-09-25 19:58:26 +02:00
events, err := writeModel.NewDelete(ctx)
if err != nil {
return nil, err
}
2024-09-25 19:58:26 +02:00
return c.pushAppendAndReduceDetails(ctx, writeModel, events...)
}
2024-09-25 19:58:26 +02:00
func (c *Commands) getSchemaUsernameWM(ctx context.Context, resourceOwner, userID, id string) (*UsernameV3WriteModel, error) {
writeModel := NewUsernameV3WriteModel(resourceOwner, userID, id, c.checkPermission)
if err := c.eventstore.FilterToQueryReducer(ctx, writeModel); err != nil {
return nil, err
}
2024-09-25 19:58:26 +02:00
return writeModel, nil
}