mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 21:17:32 +00:00
v4 without errors
This commit is contained in:
@@ -15,7 +15,7 @@ var (
|
||||
userCodeAlgorithm crypto.EncryptionAlgorithm
|
||||
tracer tracing.Tracer
|
||||
|
||||
// userRepo func(database.QueryExecutor) UserRepository
|
||||
userRepo func(database.QueryExecutor) UserRepository
|
||||
instanceRepo func(database.QueryExecutor) InstanceRepository
|
||||
cryptoRepo func(database.QueryExecutor) CryptoRepository
|
||||
orgRepo func(database.QueryExecutor) OrgRepository
|
||||
@@ -39,9 +39,9 @@ func SetTracer(t tracing.Tracer) {
|
||||
tracer = t
|
||||
}
|
||||
|
||||
// func SetUserRepository(repo func(database.QueryExecutor) UserRepository) {
|
||||
// userRepo = repo
|
||||
// }
|
||||
func SetUserRepository(repo func(database.QueryExecutor) UserRepository) {
|
||||
userRepo = repo
|
||||
}
|
||||
|
||||
func SetInstanceRepository(repo func(database.QueryExecutor) InstanceRepository) {
|
||||
instanceRepo = repo
|
||||
|
@@ -2,8 +2,7 @@ package domain
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
v4 "github.com/zitadel/zitadel/backend/v3/storage/database/repository/stmt/v4"
|
||||
"time"
|
||||
)
|
||||
|
||||
type EmailVerifiedCommand struct {
|
||||
@@ -27,7 +26,8 @@ var (
|
||||
|
||||
// Execute implements [Commander]
|
||||
func (cmd *EmailVerifiedCommand) Execute(ctx context.Context, opts *CommandOpts) error {
|
||||
return userRepo(opts.DB).Human().ByID(cmd.UserID).Exec().SetEmailVerified(ctx, cmd.Email.Address)
|
||||
repo := userRepo(opts.DB).Human()
|
||||
return repo.Update(ctx, repo.IDCondition(cmd.UserID), repo.SetEmailVerifiedAt(time.Time{}))
|
||||
}
|
||||
|
||||
// applyOnSetEmail implements [SetEmailOpt]
|
||||
@@ -78,8 +78,9 @@ func (cmd *SendCodeCommand) ensureEmail(ctx context.Context, opts *CommandOpts)
|
||||
if cmd.Email != "" {
|
||||
return nil
|
||||
}
|
||||
email, err := userRepo(opts.DB).Human().ByID(cmd.UserID).Exec().GetEmail(ctx)
|
||||
if err != nil || email.IsVerified {
|
||||
repo := userRepo(opts.DB).Human()
|
||||
email, err := repo.GetEmail(ctx, repo.IDCondition(cmd.UserID))
|
||||
if err != nil || !email.VerifiedAt.IsZero() {
|
||||
return err
|
||||
}
|
||||
cmd.Email = email.Address
|
||||
@@ -137,10 +138,9 @@ func (cmd *ReturnCodeCommand) ensureEmail(ctx context.Context, opts *CommandOpts
|
||||
if cmd.Email != "" {
|
||||
return nil
|
||||
}
|
||||
user := v4.UserRepository(opts.DB)
|
||||
user.WithCondition(user.IDCondition(cmd.UserID))
|
||||
email, err := user.he.GetEmail(ctx)
|
||||
if err != nil || email.IsVerified {
|
||||
repo := userRepo(opts.DB).Human()
|
||||
email, err := repo.GetEmail(ctx, repo.IDCondition(cmd.UserID))
|
||||
if err != nil || !email.VerifiedAt.IsZero() {
|
||||
return err
|
||||
}
|
||||
cmd.Email = email.Address
|
||||
|
@@ -38,7 +38,8 @@ func (cmd *SetEmailCommand) Execute(ctx context.Context, opts *CommandOpts) erro
|
||||
}
|
||||
defer func() { err = close(ctx, err) }()
|
||||
// userStatement(opts.DB).Human().ByID(cmd.UserID).SetEmail(ctx, cmd.Email)
|
||||
err = userRepo(opts.DB).Human().ByID(cmd.UserID).Exec().SetEmail(ctx, cmd.Email)
|
||||
repo := userRepo(opts.DB).Human()
|
||||
err = repo.Update(ctx, repo.IDCondition(cmd.UserID), repo.SetEmailAddress(cmd.Email))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -59,6 +60,6 @@ func (cmd *SetEmailCommand) Events() []*eventstore.Event {
|
||||
}
|
||||
|
||||
// applyOnCreateHuman implements [CreateHumanOpt].
|
||||
func (cmd *SetEmailCommand) applyOnCreateHuman(createUserCmd *CreateUserCommand[Human]) {
|
||||
func (cmd *SetEmailCommand) applyOnCreateHuman(createUserCmd *CreateUserCommand) {
|
||||
createUserCmd.email = cmd
|
||||
}
|
||||
|
@@ -9,13 +9,13 @@ import (
|
||||
|
||||
type userColumns interface {
|
||||
// TODO: move v4.columns to domain
|
||||
InstanceIDColumn() column
|
||||
OrgIDColumn() column
|
||||
IDColumn() column
|
||||
usernameColumn() column
|
||||
CreatedAtColumn() column
|
||||
UpdatedAtColumn() column
|
||||
DeletedAtColumn() column
|
||||
InstanceIDColumn() v4.Column
|
||||
OrgIDColumn() v4.Column
|
||||
IDColumn() v4.Column
|
||||
usernameColumn() v4.Column
|
||||
CreatedAtColumn() v4.Column
|
||||
UpdatedAtColumn() v4.Column
|
||||
DeletedAtColumn() v4.Column
|
||||
}
|
||||
|
||||
type userConditions interface {
|
||||
@@ -29,30 +29,35 @@ type userConditions interface {
|
||||
DeletedAtCondition(op v4.NumberOperator, deletedAt time.Time) v4.Condition
|
||||
}
|
||||
|
||||
type userChanges interface {
|
||||
SetUsername(username string) v4.Change
|
||||
}
|
||||
|
||||
type UserRepository interface {
|
||||
userColumns
|
||||
userConditions
|
||||
userChanges
|
||||
// TODO: move condition to domain
|
||||
WithCondition(condition v4.Condition) UserRepository
|
||||
Get(ctx context.Context) (*User, error)
|
||||
List(ctx context.Context) ([]*User, error)
|
||||
Create(ctx context.Context, user *User) error
|
||||
Delete(ctx context.Context) error
|
||||
Get(ctx context.Context, opts v4.QueryOption) (*User, error)
|
||||
List(ctx context.Context, opts v4.QueryOption) ([]*User, error)
|
||||
Delete(ctx context.Context, condition v4.Condition) error
|
||||
|
||||
Human() HumanRepository
|
||||
Machine() MachineRepository
|
||||
}
|
||||
|
||||
type humanColumns interface {
|
||||
FirstNameColumn() column
|
||||
LastNameColumn() column
|
||||
EmailAddressColumn() column
|
||||
EmailVerifiedAtColumn() column
|
||||
PhoneNumberColumn() column
|
||||
PhoneVerifiedAtColumn() column
|
||||
userColumns
|
||||
FirstNameColumn() v4.Column
|
||||
LastNameColumn() v4.Column
|
||||
EmailAddressColumn() v4.Column
|
||||
EmailVerifiedAtColumn() v4.Column
|
||||
PhoneNumberColumn() v4.Column
|
||||
PhoneVerifiedAtColumn() v4.Column
|
||||
}
|
||||
|
||||
type humanConditions interface {
|
||||
userConditions
|
||||
FirstNameCondition(op v4.TextOperator, firstName string) v4.Condition
|
||||
LastNameCondition(op v4.TextOperator, lastName string) v4.Condition
|
||||
EmailAddressCondition(op v4.TextOperator, email string) v4.Condition
|
||||
@@ -63,26 +68,53 @@ type humanConditions interface {
|
||||
PhoneVerifiedAtCondition(op v4.TextOperator, phoneVerifiedAt string) v4.Condition
|
||||
}
|
||||
|
||||
type humanChanges interface {
|
||||
userChanges
|
||||
SetFirstName(firstName string) v4.Change
|
||||
SetLastName(lastName string) v4.Change
|
||||
|
||||
SetEmail(address string, verified *time.Time) v4.Change
|
||||
SetEmailAddress(email string) v4.Change
|
||||
SetEmailVerifiedAt(emailVerifiedAt time.Time) v4.Change
|
||||
|
||||
SetPhone(number string, verifiedAt *time.Time) v4.Change
|
||||
SetPhoneNumber(phoneNumber string) v4.Change
|
||||
SetPhoneVerifiedAt(phoneVerifiedAt time.Time) v4.Change
|
||||
}
|
||||
|
||||
type HumanRepository interface {
|
||||
humanColumns
|
||||
humanConditions
|
||||
humanChanges
|
||||
|
||||
GetEmail(ctx context.Context) (*Email, error)
|
||||
GetEmail(ctx context.Context, condition v4.Condition) (*Email, error)
|
||||
// TODO: replace any with add email update columns
|
||||
SetEmail(ctx context.Context, columns ...any) error
|
||||
Create(ctx context.Context, user *User) error
|
||||
Update(ctx context.Context, condition v4.Condition, changes ...v4.Change) error
|
||||
}
|
||||
|
||||
type machineColumns interface {
|
||||
DescriptionColumn() column
|
||||
userColumns
|
||||
DescriptionColumn() v4.Column
|
||||
}
|
||||
|
||||
type machineConditions interface {
|
||||
userConditions
|
||||
DescriptionCondition(op v4.TextOperator, description string) v4.Condition
|
||||
}
|
||||
|
||||
type machineChanges interface {
|
||||
userChanges
|
||||
SetDescription(description string) v4.Change
|
||||
}
|
||||
|
||||
type MachineRepository interface {
|
||||
machineColumns
|
||||
machineConditions
|
||||
machineChanges
|
||||
|
||||
Create(ctx context.Context, user *User) error
|
||||
Update(ctx context.Context, condition v4.Condition, changes ...v4.Change) error
|
||||
}
|
||||
|
||||
// type UserRepository interface {
|
||||
@@ -171,6 +203,11 @@ type User struct {
|
||||
v4.User
|
||||
}
|
||||
|
||||
type Email struct {
|
||||
v4.Email
|
||||
IsVerified bool
|
||||
}
|
||||
|
||||
// type userTraits interface {
|
||||
// isUserTraits()
|
||||
// }
|
||||
|
Reference in New Issue
Block a user