mirror of
https://github.com/zitadel/zitadel.git
synced 2025-10-15 06:51:18 +00:00
idp config
This commit is contained in:
@@ -3,7 +3,10 @@ package iam
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/caos/zitadel/internal/crypto"
|
||||
"github.com/caos/zitadel/internal/eventstore/v2"
|
||||
"github.com/caos/zitadel/internal/v2/repository/idp"
|
||||
"github.com/caos/zitadel/internal/v2/repository/idp/oidc"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -87,3 +90,81 @@ func (a *Aggregate) PushStepDone(ctx context.Context, step Step) *Aggregate {
|
||||
a.Aggregate = *a.PushEvents(NewSetupStepDoneEvent(ctx, step))
|
||||
return a
|
||||
}
|
||||
|
||||
func (a *Aggregate) PushIDPConfigAdded(
|
||||
ctx context.Context,
|
||||
configID,
|
||||
name string,
|
||||
configType idp.ConfigType,
|
||||
stylingType idp.StylingType,
|
||||
) *Aggregate {
|
||||
|
||||
a.Aggregate = *a.PushEvents(NewIDPConfigAddedEvent(ctx, configID, name, configType, stylingType))
|
||||
return a
|
||||
}
|
||||
|
||||
func (a *Aggregate) PushIDPConfigChanged(
|
||||
ctx context.Context,
|
||||
current *IDPConfigWriteModel,
|
||||
configID,
|
||||
name string,
|
||||
configType idp.ConfigType,
|
||||
stylingType idp.StylingType,
|
||||
) *Aggregate {
|
||||
event, err := NewIDPConfigChangedEvent(ctx, current, configID, name, configType, stylingType)
|
||||
if err != nil {
|
||||
return a
|
||||
}
|
||||
a.Aggregate = *a.PushEvents(event)
|
||||
return a
|
||||
}
|
||||
|
||||
func (a *Aggregate) PushIDPConfigDeactivated(ctx context.Context, configID string) *Aggregate {
|
||||
a.Aggregate = *a.PushEvents(NewIDPConfigDeactivatedEvent(ctx, configID))
|
||||
return a
|
||||
}
|
||||
|
||||
func (a *Aggregate) PushIDPConfigReactivated(ctx context.Context, configID string) *Aggregate {
|
||||
a.Aggregate = *a.PushEvents(NewIDPConfigReactivatedEvent(ctx, configID))
|
||||
return a
|
||||
}
|
||||
|
||||
func (a *Aggregate) PushIDPConfigRemoved(ctx context.Context, configID string) *Aggregate {
|
||||
a.Aggregate = *a.PushEvents(NewIDPConfigRemovedEvent(ctx, configID))
|
||||
return a
|
||||
}
|
||||
|
||||
func (a *Aggregate) PushIDPOIDCConfigAdded(
|
||||
ctx context.Context,
|
||||
clientID,
|
||||
idpConfigID,
|
||||
issuer string,
|
||||
clientSecret *crypto.CryptoValue,
|
||||
idpDisplayNameMapping,
|
||||
userNameMapping oidc.MappingField,
|
||||
scopes ...string,
|
||||
) *Aggregate {
|
||||
|
||||
a.Aggregate = *a.PushEvents(NewIDPOIDCConfigAddedEvent(ctx, clientID, idpConfigID, issuer, clientSecret, idpDisplayNameMapping, userNameMapping, scopes...))
|
||||
return a
|
||||
}
|
||||
|
||||
func (a *Aggregate) PushIDPOIDCConfigChanged(
|
||||
ctx context.Context,
|
||||
current *IDPOIDCConfigWriteModel,
|
||||
clientID,
|
||||
idpConfigID,
|
||||
issuer string,
|
||||
clientSecret *crypto.CryptoValue,
|
||||
idpDisplayNameMapping,
|
||||
userNameMapping oidc.MappingField,
|
||||
scopes ...string,
|
||||
) *Aggregate {
|
||||
event, err := NewIDPOIDCConfigChangedEvent(ctx, current, clientID, idpConfigID, issuer, clientSecret, idpDisplayNameMapping, userNameMapping, scopes...)
|
||||
if err != nil {
|
||||
return a
|
||||
}
|
||||
|
||||
a.Aggregate = *a.PushEvents(event)
|
||||
return a
|
||||
}
|
||||
|
@@ -4,8 +4,8 @@ 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"
|
||||
"github.com/caos/zitadel/internal/v2/repository/idp/oidc"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -33,15 +33,10 @@ func (rm *IDPConfigReadModel) AppendEvents(events ...eventstore.EventReader) {
|
||||
rm.ConfigReadModel.AppendEvents(&e.ConfigReactivatedEvent)
|
||||
case *IDPConfigRemovedEvent:
|
||||
rm.ConfigReadModel.AppendEvents(&e.ConfigRemovedEvent)
|
||||
case *idp.ConfigAddedEvent,
|
||||
*idp.ConfigChangedEvent,
|
||||
*idp.ConfigDeactivatedEvent,
|
||||
*idp.ConfigReactivatedEvent,
|
||||
*idp.ConfigRemovedEvent,
|
||||
*oidc.ConfigAddedEvent,
|
||||
*oidc.ConfigChangedEvent:
|
||||
|
||||
rm.ConfigReadModel.AppendEvents(e)
|
||||
case *IDPOIDCConfigAddedEvent:
|
||||
rm.ConfigReadModel.AppendEvents(&e.ConfigAddedEvent)
|
||||
case *IDPOIDCConfigChangedEvent:
|
||||
rm.ConfigReadModel.AppendEvents(&e.ConfigChangedEvent)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -100,6 +95,15 @@ func NewIDPConfigAddedEvent(
|
||||
}
|
||||
}
|
||||
|
||||
func IDPConfigAddedEventMapper(event *repository.Event) (eventstore.EventReader, error) {
|
||||
e, err := idp.ConfigAddedEventMapper(event)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &IDPConfigAddedEvent{ConfigAddedEvent: *e}, nil
|
||||
}
|
||||
|
||||
type IDPConfigChangedEvent struct {
|
||||
idp.ConfigChangedEvent
|
||||
}
|
||||
@@ -131,6 +135,15 @@ func NewIDPConfigChangedEvent(
|
||||
}, nil
|
||||
}
|
||||
|
||||
func IDPConfigChangedEventMapper(event *repository.Event) (eventstore.EventReader, error) {
|
||||
e, err := idp.ConfigChangedEventMapper(event)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &IDPConfigChangedEvent{ConfigChangedEvent: *e}, nil
|
||||
}
|
||||
|
||||
type IDPConfigRemovedEvent struct {
|
||||
idp.ConfigRemovedEvent
|
||||
}
|
||||
@@ -151,6 +164,15 @@ func NewIDPConfigRemovedEvent(
|
||||
}
|
||||
}
|
||||
|
||||
func IDPConfigRemovedEventMapper(event *repository.Event) (eventstore.EventReader, error) {
|
||||
e, err := idp.ConfigRemovedEventMapper(event)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &IDPConfigRemovedEvent{ConfigRemovedEvent: *e}, nil
|
||||
}
|
||||
|
||||
type IDPConfigDeactivatedEvent struct {
|
||||
idp.ConfigDeactivatedEvent
|
||||
}
|
||||
@@ -171,6 +193,15 @@ func NewIDPConfigDeactivatedEvent(
|
||||
}
|
||||
}
|
||||
|
||||
func IDPConfigDeactivatedEventMapper(event *repository.Event) (eventstore.EventReader, error) {
|
||||
e, err := idp.ConfigDeactivatedEventMapper(event)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &IDPConfigDeactivatedEvent{ConfigDeactivatedEvent: *e}, nil
|
||||
}
|
||||
|
||||
type IDPConfigReactivatedEvent struct {
|
||||
idp.ConfigReactivatedEvent
|
||||
}
|
||||
@@ -190,3 +221,12 @@ func NewIDPConfigReactivatedEvent(
|
||||
),
|
||||
}
|
||||
}
|
||||
|
||||
func IDPConfigReactivatedEventMapper(event *repository.Event) (eventstore.EventReader, error) {
|
||||
e, err := idp.ConfigReactivatedEventMapper(event)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &IDPConfigReactivatedEvent{ConfigReactivatedEvent: *e}, nil
|
||||
}
|
||||
|
31
internal/v2/repository/iam/idp_configs.go
Normal file
31
internal/v2/repository/iam/idp_configs.go
Normal file
@@ -0,0 +1,31 @@
|
||||
package iam
|
||||
|
||||
import (
|
||||
"github.com/caos/zitadel/internal/eventstore/v2"
|
||||
"github.com/caos/zitadel/internal/v2/repository/idp"
|
||||
)
|
||||
|
||||
type IDPConfigsReadModel struct {
|
||||
idp.ConfigsReadModel
|
||||
}
|
||||
|
||||
func (rm *IDPConfigsReadModel) AppendEvents(events ...eventstore.EventReader) {
|
||||
for _, event := range events {
|
||||
switch e := event.(type) {
|
||||
case *IDPConfigAddedEvent:
|
||||
rm.ConfigsReadModel.AppendEvents(&e.ConfigAddedEvent)
|
||||
case *IDPConfigChangedEvent:
|
||||
rm.ConfigsReadModel.AppendEvents(&e.ConfigChangedEvent)
|
||||
case *IDPConfigDeactivatedEvent:
|
||||
rm.ConfigsReadModel.AppendEvents(&e.ConfigDeactivatedEvent)
|
||||
case *IDPConfigReactivatedEvent:
|
||||
rm.ConfigsReadModel.AppendEvents(&e.ConfigReactivatedEvent)
|
||||
case *IDPConfigRemovedEvent:
|
||||
rm.ConfigsReadModel.AppendEvents(&e.ConfigRemovedEvent)
|
||||
case *IDPOIDCConfigAddedEvent:
|
||||
rm.ConfigsReadModel.AppendEvents(&e.ConfigAddedEvent)
|
||||
case *IDPOIDCConfigChangedEvent:
|
||||
rm.ConfigsReadModel.AppendEvents(&e.ConfigChangedEvent)
|
||||
}
|
||||
}
|
||||
}
|
@@ -5,6 +5,7 @@ import (
|
||||
|
||||
"github.com/caos/zitadel/internal/crypto"
|
||||
"github.com/caos/zitadel/internal/eventstore/v2"
|
||||
"github.com/caos/zitadel/internal/eventstore/v2/repository"
|
||||
"github.com/caos/zitadel/internal/v2/repository/idp/oidc"
|
||||
)
|
||||
|
||||
@@ -64,6 +65,15 @@ func NewIDPOIDCConfigAddedEvent(
|
||||
}
|
||||
}
|
||||
|
||||
func IDPOIDCConfigAddedEventMapper(event *repository.Event) (eventstore.EventReader, error) {
|
||||
e, err := oidc.ConfigAddedEventMapper(event)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &IDPOIDCConfigAddedEvent{ConfigAddedEvent: *e}, nil
|
||||
}
|
||||
|
||||
type IDPOIDCConfigChangedEvent struct {
|
||||
oidc.ConfigChangedEvent
|
||||
}
|
||||
@@ -102,3 +112,12 @@ func NewIDPOIDCConfigChangedEvent(
|
||||
ConfigChangedEvent: *event,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func IDPOIDCConfigChangedEventMapper(event *repository.Event) (eventstore.EventReader, error) {
|
||||
e, err := oidc.ConfigChangedEventMapper(event)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &IDPOIDCConfigChangedEvent{ConfigChangedEvent: *e}, nil
|
||||
}
|
||||
|
@@ -19,7 +19,10 @@ 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:
|
||||
case *member.AddedEvent,
|
||||
*member.ChangedEvent,
|
||||
*member.RemovedEvent:
|
||||
|
||||
rm.ReadModel.AppendEvents(e)
|
||||
}
|
||||
}
|
||||
|
@@ -21,7 +21,9 @@ func (rm *PasswordAgePolicyReadModel) AppendEvents(events ...eventstore.EventRea
|
||||
rm.ReadModel.AppendEvents(&e.PasswordAgePolicyAddedEvent)
|
||||
case *PasswordAgePolicyChangedEvent:
|
||||
rm.ReadModel.AppendEvents(&e.PasswordAgePolicyChangedEvent)
|
||||
case *policy.PasswordAgePolicyAddedEvent, *policy.PasswordAgePolicyChangedEvent:
|
||||
case *policy.PasswordAgePolicyAddedEvent,
|
||||
*policy.PasswordAgePolicyChangedEvent:
|
||||
|
||||
rm.ReadModel.AppendEvents(e)
|
||||
}
|
||||
}
|
||||
|
@@ -21,7 +21,9 @@ func (rm *PasswordComplexityPolicyReadModel) AppendEvents(events ...eventstore.E
|
||||
rm.ReadModel.AppendEvents(&e.PasswordComplexityPolicyAddedEvent)
|
||||
case *PasswordComplexityPolicyChangedEvent:
|
||||
rm.ReadModel.AppendEvents(&e.PasswordComplexityPolicyChangedEvent)
|
||||
case *policy.PasswordComplexityPolicyAddedEvent, *policy.PasswordComplexityPolicyChangedEvent:
|
||||
case *policy.PasswordComplexityPolicyAddedEvent,
|
||||
*policy.PasswordComplexityPolicyChangedEvent:
|
||||
|
||||
rm.ReadModel.AppendEvents(e)
|
||||
}
|
||||
}
|
||||
|
@@ -13,6 +13,7 @@ type ReadModel struct {
|
||||
SetUpDone Step
|
||||
|
||||
Members MembersReadModel
|
||||
IDPs IDPConfigsReadModel
|
||||
|
||||
GlobalOrgID string
|
||||
ProjectID string
|
||||
@@ -33,23 +34,53 @@ func NewReadModel(id string) *ReadModel {
|
||||
}
|
||||
}
|
||||
|
||||
func (rm *ReadModel) IDPByID(idpID string) *IDPConfigReadModel {
|
||||
_, config := rm.IDPs.ConfigByID(idpID)
|
||||
if config == nil {
|
||||
return nil
|
||||
}
|
||||
return &IDPConfigReadModel{ConfigReadModel: *config}
|
||||
}
|
||||
|
||||
func (rm *ReadModel) AppendEvents(events ...eventstore.EventReader) {
|
||||
rm.ReadModel.AppendEvents(events...)
|
||||
for _, event := range events {
|
||||
switch event.(type) {
|
||||
case *member.AddedEvent, *member.ChangedEvent, *member.RemovedEvent:
|
||||
case *member.AddedEvent,
|
||||
*member.ChangedEvent,
|
||||
*member.RemovedEvent:
|
||||
|
||||
rm.Members.AppendEvents(event)
|
||||
case *policy.LabelPolicyAddedEvent, *policy.LabelPolicyChangedEvent:
|
||||
case *IDPConfigAddedEvent,
|
||||
*IDPConfigChangedEvent,
|
||||
*IDPConfigDeactivatedEvent,
|
||||
*IDPConfigReactivatedEvent,
|
||||
*IDPConfigRemovedEvent,
|
||||
*IDPOIDCConfigAddedEvent,
|
||||
*IDPOIDCConfigChangedEvent:
|
||||
|
||||
rm.IDPs.AppendEvents(event)
|
||||
case *policy.LabelPolicyAddedEvent,
|
||||
*policy.LabelPolicyChangedEvent:
|
||||
|
||||
rm.DefaultLabelPolicy.AppendEvents(event)
|
||||
case *policy.LoginPolicyAddedEvent, *policy.LoginPolicyChangedEvent:
|
||||
case *policy.LoginPolicyAddedEvent,
|
||||
*policy.LoginPolicyChangedEvent:
|
||||
|
||||
rm.DefaultLoginPolicy.AppendEvents(event)
|
||||
case *policy.OrgIAMPolicyAddedEvent:
|
||||
rm.DefaultOrgIAMPolicy.AppendEvents(event)
|
||||
case *policy.PasswordComplexityPolicyAddedEvent, *policy.PasswordComplexityPolicyChangedEvent:
|
||||
case *policy.PasswordComplexityPolicyAddedEvent,
|
||||
*policy.PasswordComplexityPolicyChangedEvent:
|
||||
|
||||
rm.DefaultPasswordComplexityPolicy.AppendEvents(event)
|
||||
case *policy.PasswordAgePolicyAddedEvent, *policy.PasswordAgePolicyChangedEvent:
|
||||
case *policy.PasswordAgePolicyAddedEvent,
|
||||
*policy.PasswordAgePolicyChangedEvent:
|
||||
|
||||
rm.DefaultPasswordAgePolicy.AppendEvents(event)
|
||||
case *policy.PasswordLockoutPolicyAddedEvent, *policy.PasswordLockoutPolicyChangedEvent:
|
||||
case *policy.PasswordLockoutPolicyAddedEvent,
|
||||
*policy.PasswordLockoutPolicyChangedEvent:
|
||||
|
||||
rm.DefaultPasswordLockoutPolicy.AppendEvents(event)
|
||||
}
|
||||
}
|
||||
@@ -72,6 +103,7 @@ func (rm *ReadModel) Reduce() (err error) {
|
||||
}
|
||||
for _, reduce := range []func() error{
|
||||
rm.Members.Reduce,
|
||||
rm.IDPs.Reduce,
|
||||
rm.DefaultLoginPolicy.Reduce,
|
||||
rm.DefaultLabelPolicy.Reduce,
|
||||
rm.DefaultOrgIAMPolicy.Reduce,
|
||||
|
Reference in New Issue
Block a user