Files
zitadel/internal/command/instance_policy_password_complexity_model.go
T

89 lines
2.8 KiB
Go
Raw Normal View History

2021-01-04 14:52:13 +01:00
package command
import (
"context"
2021-07-06 13:55:57 +02:00
2022-04-27 01:01:45 +02:00
"github.com/zitadel/zitadel/internal/api/authz"
"github.com/zitadel/zitadel/internal/eventstore"
"github.com/zitadel/zitadel/internal/repository/instance"
"github.com/zitadel/zitadel/internal/repository/policy"
2021-01-04 14:52:13 +01:00
)
2022-03-24 17:21:34 +01:00
type InstancePasswordComplexityPolicyWriteModel struct {
2021-01-04 14:52:13 +01:00
PasswordComplexityPolicyWriteModel
}
2022-04-05 07:58:09 +02:00
func NewInstancePasswordComplexityPolicyWriteModel(ctx context.Context) *InstancePasswordComplexityPolicyWriteModel {
2022-03-24 17:21:34 +01:00
return &InstancePasswordComplexityPolicyWriteModel{
2021-01-04 14:52:13 +01:00
PasswordComplexityPolicyWriteModel{
WriteModel: eventstore.WriteModel{
2022-04-05 07:58:09 +02:00
AggregateID: authz.GetInstance(ctx).InstanceID(),
ResourceOwner: authz.GetInstance(ctx).InstanceID(),
2021-01-04 14:52:13 +01:00
},
},
}
}
2022-03-24 17:21:34 +01:00
func (wm *InstancePasswordComplexityPolicyWriteModel) AppendEvents(events ...eventstore.Event) {
2021-01-04 14:52:13 +01:00
for _, event := range events {
switch e := event.(type) {
2022-03-24 17:21:34 +01:00
case *instance.PasswordComplexityPolicyAddedEvent:
2021-01-04 14:52:13 +01:00
wm.PasswordComplexityPolicyWriteModel.AppendEvents(&e.PasswordComplexityPolicyAddedEvent)
2022-03-24 17:21:34 +01:00
case *instance.PasswordComplexityPolicyChangedEvent:
2021-01-04 14:52:13 +01:00
wm.PasswordComplexityPolicyWriteModel.AppendEvents(&e.PasswordComplexityPolicyChangedEvent)
}
}
}
2022-03-24 17:21:34 +01:00
func (wm *InstancePasswordComplexityPolicyWriteModel) Reduce() error {
2021-01-04 14:52:13 +01:00
return wm.PasswordComplexityPolicyWriteModel.Reduce()
}
2022-03-24 17:21:34 +01:00
func (wm *InstancePasswordComplexityPolicyWriteModel) Query() *eventstore.SearchQueryBuilder {
2021-07-06 13:55:57 +02:00
return eventstore.NewSearchQueryBuilder(eventstore.ColumnsEvent).
2021-02-18 14:48:27 +01:00
ResourceOwner(wm.ResourceOwner).
2021-07-06 13:55:57 +02:00
AddQuery().
2022-03-24 17:21:34 +01:00
AggregateTypes(instance.AggregateType).
2021-07-06 13:55:57 +02:00
AggregateIDs(wm.PasswordComplexityPolicyWriteModel.AggregateID).
2021-02-18 14:48:27 +01:00
EventTypes(
2022-03-24 17:21:34 +01:00
instance.PasswordComplexityPolicyAddedEventType,
instance.PasswordComplexityPolicyChangedEventType).
2021-07-06 13:55:57 +02:00
Builder()
2021-01-04 14:52:13 +01:00
}
2022-03-24 17:21:34 +01:00
func (wm *InstancePasswordComplexityPolicyWriteModel) NewChangedEvent(
2021-01-04 14:52:13 +01:00
ctx context.Context,
2021-02-18 14:48:27 +01:00
aggregate *eventstore.Aggregate,
2021-01-04 14:52:13 +01:00
minLength uint64,
hasLowercase,
hasUppercase,
hasNumber,
hasSymbol bool,
2022-03-24 17:21:34 +01:00
) (*instance.PasswordComplexityPolicyChangedEvent, bool) {
2021-01-04 14:52:13 +01:00
2021-01-18 11:24:15 +01:00
changes := make([]policy.PasswordComplexityPolicyChanges, 0)
2021-01-04 14:52:13 +01:00
if wm.MinLength != minLength {
2021-01-18 11:24:15 +01:00
changes = append(changes, policy.ChangeMinLength(minLength))
2021-01-04 14:52:13 +01:00
}
if wm.HasLowercase != hasLowercase {
2021-01-18 11:24:15 +01:00
changes = append(changes, policy.ChangeHasLowercase(hasLowercase))
2021-01-04 14:52:13 +01:00
}
2021-01-18 11:24:15 +01:00
if wm.HasUppercase != hasUppercase {
changes = append(changes, policy.ChangeHasUppercase(hasUppercase))
2021-01-04 14:52:13 +01:00
}
if wm.HasNumber != hasNumber {
2021-01-18 11:24:15 +01:00
changes = append(changes, policy.ChangeHasNumber(hasNumber))
2021-01-04 14:52:13 +01:00
}
if wm.HasSymbol != hasSymbol {
2021-01-18 11:24:15 +01:00
changes = append(changes, policy.ChangeHasSymbol(hasSymbol))
2021-01-04 14:52:13 +01:00
}
2021-01-18 11:24:15 +01:00
if len(changes) == 0 {
return nil, false
}
2022-03-24 17:21:34 +01:00
changedEvent, err := instance.NewPasswordComplexityPolicyChangedEvent(ctx, aggregate, changes)
2021-01-18 11:24:15 +01:00
if err != nil {
return nil, false
}
return changedEvent, true
2021-01-04 14:52:13 +01:00
}