policy, idp, member.

member not working atm
This commit is contained in:
adlerhurst
2020-11-30 06:40:56 +01:00
parent fc861ea544
commit ebeedd1346
45 changed files with 795 additions and 316 deletions

View File

@@ -7,6 +7,7 @@ import (
"github.com/caos/zitadel/internal/eventstore/v2"
"github.com/caos/zitadel/internal/v2/repository/idp"
"github.com/caos/zitadel/internal/v2/repository/idp/oidc"
"github.com/caos/zitadel/internal/v2/repository/idp/provider"
)
const (
@@ -62,11 +63,6 @@ func (a *Aggregate) PushMemberAdded(ctx context.Context, userID string, roles ..
return a
}
func (a *Aggregate) PushMemberChanged(ctx context.Context, changed *MemberWriteModel) *Aggregate {
a.Aggregate = *a.PushEvents(NewMemberChangedEvent(ctx, changed.UserID, changed.Roles...))
return a
}
func (a *Aggregate) PushMemberChangedFromExisting(ctx context.Context, current *MemberWriteModel, roles ...string) *Aggregate {
e, err := MemberChangedEventFromExisting(ctx, current, roles...)
if err != nil {
@@ -167,3 +163,21 @@ func (a *Aggregate) PushIDPOIDCConfigChanged(
a.Aggregate = *a.PushEvents(event)
return a
}
func (a *Aggregate) PushLoginPolicyIDPProviderAddedEvent(
ctx context.Context,
idpConfigID string,
providerType provider.Type,
) *Aggregate {
a.Aggregate = *a.PushEvents(NewLoginPolicyIDPProviderAddedEvent(ctx, idpConfigID, providerType))
return a
}
func (a *Aggregate) PushLoginPolicyIDPProviderRemovedEvent(
ctx context.Context,
idpConfigID string,
providerType provider.Type,
) *Aggregate {
a.Aggregate = *a.PushEvents(NewLoginPolicyIDPProviderRemovedEvent(ctx, idpConfigID))
return a
}

View File

@@ -0,0 +1,26 @@
package iam
import (
"github.com/caos/zitadel/internal/eventstore/v2"
)
func RegisterEventMappers(es *eventstore.Eventstore) {
es.RegisterFilterEventMapper(SetupStartedEventType, SetupStepMapper).
RegisterFilterEventMapper(SetupDoneEventType, SetupStepMapper).
RegisterFilterEventMapper(GlobalOrgSetEventType, GlobalOrgSetMapper).
RegisterFilterEventMapper(ProjectSetEventType, ProjectSetMapper).
RegisterFilterEventMapper(LabelPolicyAddedEventType, LabelPolicyAddedEventMapper).
RegisterFilterEventMapper(LabelPolicyChangedEventType, LabelPolicyChangedEventMapper).
RegisterFilterEventMapper(LoginPolicyAddedEventType, LoginPolicyAddedEventMapper).
RegisterFilterEventMapper(LoginPolicyChangedEventType, LoginPolicyChangedEventMapper).
RegisterFilterEventMapper(OrgIAMPolicyAddedEventType, OrgIAMPolicyAddedEventMapper).
RegisterFilterEventMapper(PasswordAgePolicyAddedEventType, PasswordAgePolicyAddedEventMapper).
RegisterFilterEventMapper(PasswordAgePolicyChangedEventType, PasswordAgePolicyChangedEventMapper).
RegisterFilterEventMapper(PasswordComplexityPolicyAddedEventType, PasswordComplexityPolicyAddedEventMapper).
RegisterFilterEventMapper(PasswordComplexityPolicyChangedEventType, PasswordComplexityPolicyChangedEventMapper).
RegisterFilterEventMapper(PasswordLockoutPolicyAddedEventType, PasswordLockoutPolicyAddedEventMapper).
RegisterFilterEventMapper(PasswordLockoutPolicyChangedEventType, PasswordLockoutPolicyChangedEventMapper).
RegisterFilterEventMapper(MemberAddedEventType, MemberAddedEventMapper).
RegisterFilterEventMapper(MemberChangedEventType, MemberChangedEventMapper).
RegisterFilterEventMapper(MemberRemovedEventType, MemberRemovedEventMapper)
}

View File

@@ -166,7 +166,7 @@ func IDPConfigAddedEventMapper(event *repository.Event) (eventstore.EventReader,
return nil, err
}
return &IDPConfigAddedEvent{ConfigAddedEvent: *e}, nil
return &IDPConfigAddedEvent{ConfigAddedEvent: *e.(*idp.ConfigAddedEvent)}, nil
}
type IDPConfigChangedEvent struct {
@@ -206,7 +206,7 @@ func IDPConfigChangedEventMapper(event *repository.Event) (eventstore.EventReade
return nil, err
}
return &IDPConfigChangedEvent{ConfigChangedEvent: *e}, nil
return &IDPConfigChangedEvent{ConfigChangedEvent: *e.(*idp.ConfigChangedEvent)}, nil
}
type IDPConfigRemovedEvent struct {
@@ -235,7 +235,7 @@ func IDPConfigRemovedEventMapper(event *repository.Event) (eventstore.EventReade
return nil, err
}
return &IDPConfigRemovedEvent{ConfigRemovedEvent: *e}, nil
return &IDPConfigRemovedEvent{ConfigRemovedEvent: *e.(*idp.ConfigRemovedEvent)}, nil
}
type IDPConfigDeactivatedEvent struct {
@@ -264,7 +264,7 @@ func IDPConfigDeactivatedEventMapper(event *repository.Event) (eventstore.EventR
return nil, err
}
return &IDPConfigDeactivatedEvent{ConfigDeactivatedEvent: *e}, nil
return &IDPConfigDeactivatedEvent{ConfigDeactivatedEvent: *e.(*idp.ConfigDeactivatedEvent)}, nil
}
type IDPConfigReactivatedEvent struct {
@@ -293,5 +293,5 @@ func IDPConfigReactivatedEventMapper(event *repository.Event) (eventstore.EventR
return nil, err
}
return &IDPConfigReactivatedEvent{ConfigReactivatedEvent: *e}, nil
return &IDPConfigReactivatedEvent{ConfigReactivatedEvent: *e.(*idp.ConfigReactivatedEvent)}, nil
}

View File

@@ -99,7 +99,7 @@ func IDPOIDCConfigAddedEventMapper(event *repository.Event) (eventstore.EventRea
return nil, err
}
return &IDPOIDCConfigAddedEvent{ConfigAddedEvent: *e}, nil
return &IDPOIDCConfigAddedEvent{ConfigAddedEvent: *e.(*oidc.ConfigAddedEvent)}, nil
}
type IDPOIDCConfigChangedEvent struct {
@@ -146,5 +146,5 @@ func IDPOIDCConfigChangedEventMapper(event *repository.Event) (eventstore.EventR
return nil, err
}
return &IDPOIDCConfigChangedEvent{ConfigChangedEvent: *e}, nil
return &IDPOIDCConfigChangedEvent{ConfigChangedEvent: *e.(*oidc.ConfigChangedEvent)}, nil
}

View File

@@ -4,6 +4,7 @@ import (
"context"
"github.com/caos/zitadel/internal/eventstore/v2"
"github.com/caos/zitadel/internal/eventstore/v2/repository"
"github.com/caos/zitadel/internal/v2/repository/member"
)
@@ -31,30 +32,48 @@ func (rm *MemberReadModel) AppendEvents(events ...eventstore.EventReader) {
}
type MemberWriteModel struct {
member.WriteModel
eventstore.WriteModel
Member member.WriteModel
userID string
iamID string
}
func NewMemberReadModel(iamID, userID string) *MemberWriteModel {
return &MemberWriteModel{
WriteModel: *member.NewWriteModel(userID, AggregateType, iamID),
userID: userID,
iamID: iamID,
}
}
func (wm *MemberWriteModel) AppendEvents(events ...eventstore.EventReader) {
wm.WriteModel.AppendEvents(events...)
for _, event := range events {
switch e := event.(type) {
case *MemberAddedEvent:
wm.WriteModel.AppendEvents(&e.AddedEvent)
if e.UserID != wm.userID {
continue
}
wm.Member.AppendEvents(&e.AddedEvent)
case *MemberChangedEvent:
wm.WriteModel.AppendEvents(&e.ChangedEvent)
if e.UserID != wm.userID {
continue
}
wm.Member.AppendEvents(&e.ChangedEvent)
case *MemberRemovedEvent:
wm.WriteModel.AppendEvents(&e.RemovedEvent)
default:
wm.WriteModel.AppendEvents(e)
if e.UserID != wm.userID {
continue
}
wm.Member.AppendEvents(&e.RemovedEvent)
}
}
}
func (wm *MemberWriteModel) Query() *eventstore.SearchQueryFactory {
return eventstore.NewSearchQueryFactory(eventstore.ColumnsEvent, AggregateType).
AggregateIDs(wm.iamID)
}
type MemberAddedEvent struct {
member.AddedEvent
}
@@ -77,6 +96,15 @@ func NewMemberAddedEvent(
}
}
func MemberAddedEventMapper(event *repository.Event) (eventstore.EventReader, error) {
e, err := member.AddedEventMapper(event)
if err != nil {
return nil, err
}
return &MemberAddedEvent{AddedEvent: *e.(*member.AddedEvent)}, nil
}
type MemberChangedEvent struct {
member.ChangedEvent
}
@@ -92,7 +120,7 @@ func MemberChangedEventFromExisting(
ctx,
MemberChangedEventType,
),
&current.WriteModel,
&current.Member,
roles...,
)
if err != nil {
@@ -104,22 +132,13 @@ func MemberChangedEventFromExisting(
}, nil
}
func NewMemberChangedEvent(
ctx context.Context,
userID string,
roles ...string,
) *MemberChangedEvent {
return &MemberChangedEvent{
ChangedEvent: *member.NewChangedEvent(
eventstore.NewBaseEventForPush(
ctx,
MemberChangedEventType,
),
userID,
roles...,
),
func MemberChangedEventMapper(event *repository.Event) (eventstore.EventReader, error) {
e, err := member.ChangedEventMapper(event)
if err != nil {
return nil, err
}
return &MemberChangedEvent{ChangedEvent: *e.(*member.ChangedEvent)}, nil
}
type MemberRemovedEvent struct {
@@ -141,3 +160,12 @@ func NewMemberRemovedEvent(
),
}
}
func MemberRemovedEventMapper(event *repository.Event) (eventstore.EventReader, error) {
e, err := member.RemovedEventMapper(event)
if err != nil {
return nil, err
}
return &MemberRemovedEvent{RemovedEvent: *e.(*member.RemovedEvent)}, nil
}

View File

@@ -2,7 +2,6 @@ package iam
import (
"github.com/caos/zitadel/internal/eventstore/v2"
"github.com/caos/zitadel/internal/v2/repository/member"
"github.com/caos/zitadel/internal/v2/repository/members"
)
@@ -19,11 +18,6 @@ func (rm *MembersReadModel) AppendEvents(events ...eventstore.EventReader) {
rm.ReadModel.AppendEvents(&e.ChangedEvent)
case *MemberRemovedEvent:
rm.ReadModel.AppendEvents(&e.RemovedEvent)
case *member.AddedEvent,
*member.ChangedEvent,
*member.RemovedEvent:
rm.ReadModel.AppendEvents(e)
}
}
}

View File

@@ -2,6 +2,7 @@ package iam
import (
"github.com/caos/zitadel/internal/eventstore/v2"
"github.com/caos/zitadel/internal/eventstore/v2/repository"
"github.com/caos/zitadel/internal/v2/repository/policy"
)
@@ -29,10 +30,28 @@ type LabelPolicyAddedEvent struct {
policy.LabelPolicyAddedEvent
}
func LabelPolicyAddedEventMapper(event *repository.Event) (eventstore.EventReader, error) {
e, err := policy.LabelPolicyAddedEventMapper(event)
if err != nil {
return nil, err
}
return &LabelPolicyAddedEvent{LabelPolicyAddedEvent: *e.(*policy.LabelPolicyAddedEvent)}, nil
}
type LabelPolicyChangedEvent struct {
policy.LabelPolicyChangedEvent
}
func LabelPolicyChangedEventMapper(event *repository.Event) (eventstore.EventReader, error) {
e, err := policy.LabelPolicyChangedEventMapper(event)
if err != nil {
return nil, err
}
return &LabelPolicyChangedEvent{LabelPolicyChangedEvent: *e.(*policy.LabelPolicyChangedEvent)}, nil
}
// func NewLabelPolicyAddedEvent(
// ctx context.Context,
// primaryColor,

View File

@@ -1,13 +1,20 @@
package iam
import (
"context"
"github.com/caos/zitadel/internal/eventstore/v2"
"github.com/caos/zitadel/internal/eventstore/v2/repository"
"github.com/caos/zitadel/internal/v2/repository/idp/provider"
"github.com/caos/zitadel/internal/v2/repository/policy"
)
var (
LoginPolicyAddedEventType = iamEventTypePrefix + policy.LoginPolicyAddedEventType
LoginPolicyChangedEventType = iamEventTypePrefix + policy.LoginPolicyChangedEventType
LoginPolicyIDPProviderAddedEventType = iamEventTypePrefix + policy.LoginPolicyIDPProviderAddedEventType
LoginPolicyIDPProviderRemovedEventType = iamEventTypePrefix + policy.LoginPolicyIDPProviderRemovedEventType
)
type LoginPolicyReadModel struct{ policy.LoginPolicyReadModel }
@@ -29,6 +36,136 @@ type LoginPolicyAddedEvent struct {
policy.LoginPolicyAddedEvent
}
func LoginPolicyAddedEventMapper(event *repository.Event) (eventstore.EventReader, error) {
e, err := policy.LoginPolicyAddedEventMapper(event)
if err != nil {
return nil, err
}
return &LoginPolicyAddedEvent{LoginPolicyAddedEvent: *e.(*policy.LoginPolicyAddedEvent)}, nil
}
type LoginPolicyChangedEvent struct {
policy.LoginPolicyChangedEvent
}
func LoginPolicyChangedEventMapper(event *repository.Event) (eventstore.EventReader, error) {
e, err := policy.LoginPolicyChangedEventMapper(event)
if err != nil {
return nil, err
}
return &LoginPolicyChangedEvent{LoginPolicyChangedEvent: *e.(*policy.LoginPolicyChangedEvent)}, nil
}
type LoginPolicyIDPProviderWriteModel struct {
eventstore.WriteModel
policy.IDPProviderWriteModel
idpConfigID string
iamID string
IsRemoved bool
}
func NewLoginPolicyIDPProviderWriteModel(iamID, idpConfigID string) *LoginPolicyIDPProviderWriteModel {
return &LoginPolicyIDPProviderWriteModel{
iamID: iamID,
idpConfigID: idpConfigID,
}
}
func (wm *LoginPolicyIDPProviderWriteModel) AppendEvents(events ...eventstore.EventReader) {
wm.WriteModel.AppendEvents(events...)
for _, event := range events {
switch e := event.(type) {
case *LoginPolicyIDPProviderAddedEvent:
if e.IDPConfigID != wm.idpConfigID {
continue
}
wm.IDPProviderWriteModel.AppendEvents(&e.IDPProviderAddedEvent)
}
}
}
func (wm *LoginPolicyIDPProviderWriteModel) Reduce() error {
for _, event := range wm.Events {
switch e := event.(type) {
case *LoginPolicyIDPProviderAddedEvent:
if e.IDPConfigID != wm.idpConfigID {
continue
}
wm.IsRemoved = false
case *LoginPolicyIDPProviderRemovedEvent:
if e.IDPConfigID != wm.idpConfigID {
continue
}
wm.IsRemoved = true
}
}
if err := wm.IDPProviderWriteModel.Reduce(); err != nil {
return err
}
return wm.WriteModel.Reduce()
}
func (wm *LoginPolicyIDPProviderWriteModel) Query() *eventstore.SearchQueryFactory {
return eventstore.NewSearchQueryFactory(eventstore.ColumnsEvent, AggregateType).
AggregateIDs(wm.iamID)
}
type LoginPolicyIDPProviderAddedEvent struct {
policy.IDPProviderAddedEvent
}
func NewLoginPolicyIDPProviderAddedEvent(
ctx context.Context,
idpConfigID string,
idpProviderType provider.Type,
) *LoginPolicyIDPProviderAddedEvent {
return &LoginPolicyIDPProviderAddedEvent{
IDPProviderAddedEvent: *policy.NewIDPProviderAddedEvent(
eventstore.NewBaseEventForPush(ctx, LoginPolicyIDPProviderAddedEventType),
idpConfigID,
provider.TypeSystem),
}
}
func IDPProviderAddedEventEventMapper(event *repository.Event) (eventstore.EventReader, error) {
e, err := policy.IDPProviderAddedEventEventMapper(event)
if err != nil {
return nil, err
}
return &LoginPolicyIDPProviderAddedEvent{
IDPProviderAddedEvent: *e.(*policy.IDPProviderAddedEvent),
}, nil
}
type LoginPolicyIDPProviderRemovedEvent struct {
policy.IDPProviderRemovedEvent
}
func NewLoginPolicyIDPProviderRemovedEvent(
ctx context.Context,
idpConfigID string,
) *LoginPolicyIDPProviderRemovedEvent {
return &LoginPolicyIDPProviderRemovedEvent{
IDPProviderRemovedEvent: *policy.NewIDPProviderRemovedEvent(
eventstore.NewBaseEventForPush(ctx, LoginPolicyIDPProviderRemovedEventType),
idpConfigID),
}
}
func IDPProviderRemovedEventEventMapper(event *repository.Event) (eventstore.EventReader, error) {
e, err := policy.IDPProviderRemovedEventEventMapper(event)
if err != nil {
return nil, err
}
return &LoginPolicyIDPProviderRemovedEvent{
IDPProviderRemovedEvent: *e.(*policy.IDPProviderRemovedEvent),
}, nil
}

View File

@@ -2,6 +2,7 @@ package iam
import (
"github.com/caos/zitadel/internal/eventstore/v2"
"github.com/caos/zitadel/internal/eventstore/v2/repository"
"github.com/caos/zitadel/internal/v2/repository/policy"
)
@@ -25,3 +26,12 @@ func (rm *OrgIAMPolicyReadModel) AppendEvents(events ...eventstore.EventReader)
type OrgIAMPolicyAddedEvent struct {
policy.OrgIAMPolicyAddedEvent
}
func OrgIAMPolicyAddedEventMapper(event *repository.Event) (eventstore.EventReader, error) {
e, err := policy.OrgIAMPolicyAddedEventMapper(event)
if err != nil {
return nil, err
}
return &OrgIAMPolicyAddedEvent{OrgIAMPolicyAddedEvent: *e.(*policy.OrgIAMPolicyAddedEvent)}, nil
}

View File

@@ -2,6 +2,7 @@ package iam
import (
"github.com/caos/zitadel/internal/eventstore/v2"
"github.com/caos/zitadel/internal/eventstore/v2/repository"
"github.com/caos/zitadel/internal/v2/repository/policy"
)
@@ -33,6 +34,24 @@ type PasswordAgePolicyAddedEvent struct {
policy.PasswordAgePolicyAddedEvent
}
func PasswordAgePolicyAddedEventMapper(event *repository.Event) (eventstore.EventReader, error) {
e, err := policy.PasswordAgePolicyAddedEventMapper(event)
if err != nil {
return nil, err
}
return &PasswordAgePolicyAddedEvent{PasswordAgePolicyAddedEvent: *e.(*policy.PasswordAgePolicyAddedEvent)}, nil
}
type PasswordAgePolicyChangedEvent struct {
policy.PasswordAgePolicyChangedEvent
}
func PasswordAgePolicyChangedEventMapper(event *repository.Event) (eventstore.EventReader, error) {
e, err := policy.PasswordAgePolicyChangedEventMapper(event)
if err != nil {
return nil, err
}
return &PasswordAgePolicyChangedEvent{PasswordAgePolicyChangedEvent: *e.(*policy.PasswordAgePolicyChangedEvent)}, nil
}

View File

@@ -2,6 +2,7 @@ package iam
import (
"github.com/caos/zitadel/internal/eventstore/v2"
"github.com/caos/zitadel/internal/eventstore/v2/repository"
"github.com/caos/zitadel/internal/v2/repository/policy"
)
@@ -33,6 +34,24 @@ type PasswordComplexityPolicyAddedEvent struct {
policy.PasswordComplexityPolicyAddedEvent
}
func PasswordComplexityPolicyAddedEventMapper(event *repository.Event) (eventstore.EventReader, error) {
e, err := policy.PasswordComplexityPolicyAddedEventMapper(event)
if err != nil {
return nil, err
}
return &PasswordComplexityPolicyAddedEvent{PasswordComplexityPolicyAddedEvent: *e.(*policy.PasswordComplexityPolicyAddedEvent)}, nil
}
type PasswordComplexityPolicyChangedEvent struct {
policy.PasswordComplexityPolicyChangedEvent
}
func PasswordComplexityPolicyChangedEventMapper(event *repository.Event) (eventstore.EventReader, error) {
e, err := policy.PasswordComplexityPolicyChangedEventMapper(event)
if err != nil {
return nil, err
}
return &PasswordComplexityPolicyChangedEvent{PasswordComplexityPolicyChangedEvent: *e.(*policy.PasswordComplexityPolicyChangedEvent)}, nil
}

View File

@@ -2,6 +2,7 @@ package iam
import (
"github.com/caos/zitadel/internal/eventstore/v2"
"github.com/caos/zitadel/internal/eventstore/v2/repository"
"github.com/caos/zitadel/internal/v2/repository/policy"
)
@@ -31,6 +32,24 @@ type PasswordLockoutPolicyAddedEvent struct {
policy.PasswordLockoutPolicyAddedEvent
}
func PasswordLockoutPolicyAddedEventMapper(event *repository.Event) (eventstore.EventReader, error) {
e, err := policy.PasswordLockoutPolicyAddedEventMapper(event)
if err != nil {
return nil, err
}
return &PasswordLockoutPolicyAddedEvent{PasswordLockoutPolicyAddedEvent: *e.(*policy.PasswordLockoutPolicyAddedEvent)}, nil
}
type PasswordLockoutPolicyChangedEvent struct {
policy.PasswordLockoutPolicyChangedEvent
}
func PasswordLockoutPolicyChangedEventMapper(event *repository.Event) (eventstore.EventReader, error) {
e, err := policy.PasswordLockoutPolicyChangedEventMapper(event)
if err != nil {
return nil, err
}
return &PasswordLockoutPolicyChangedEvent{PasswordLockoutPolicyChangedEvent: *e.(*policy.PasswordLockoutPolicyChangedEvent)}, nil
}