mirror of
https://github.com/zitadel/zitadel.git
synced 2025-12-01 17:37:32 +00:00
idp
This commit is contained in:
@@ -8,8 +8,6 @@ import (
|
||||
type ConfigReadModel struct {
|
||||
eventstore.ReadModel
|
||||
|
||||
Type ConfigType
|
||||
|
||||
State ConfigState
|
||||
ConfigID string
|
||||
Name string
|
||||
@@ -26,13 +24,24 @@ func NewConfigReadModel(configID string) *ConfigReadModel {
|
||||
}
|
||||
|
||||
func (rm *ConfigReadModel) AppendEvents(events ...eventstore.EventReader) {
|
||||
rm.ReadModel.AppendEvents(events...)
|
||||
for _, event := range events {
|
||||
switch event.(type) {
|
||||
switch e := event.(type) {
|
||||
case *ConfigAddedEvent:
|
||||
rm.ReadModel.AppendEvents(e)
|
||||
case *ConfigChangedEvent:
|
||||
rm.ReadModel.AppendEvents(e)
|
||||
case *ConfigDeactivatedEvent:
|
||||
rm.ReadModel.AppendEvents(e)
|
||||
case *ConfigReactivatedEvent:
|
||||
rm.ReadModel.AppendEvents(e)
|
||||
case *ConfigRemovedEvent:
|
||||
rm.ReadModel.AppendEvents(e)
|
||||
case *oidc.ConfigAddedEvent:
|
||||
rm.OIDCConfig = &oidc.ConfigReadModel{}
|
||||
rm.ReadModel.AppendEvents(e)
|
||||
rm.OIDCConfig.AppendEvents(event)
|
||||
case *oidc.ConfigChangedEvent:
|
||||
rm.ReadModel.AppendEvents(e)
|
||||
rm.OIDCConfig.AppendEvents(event)
|
||||
}
|
||||
}
|
||||
@@ -42,30 +51,42 @@ func (rm *ConfigReadModel) Reduce() error {
|
||||
for _, event := range rm.Events {
|
||||
switch e := event.(type) {
|
||||
case *ConfigAddedEvent:
|
||||
rm.ConfigID = e.ConfigID
|
||||
rm.Name = e.Name
|
||||
rm.StylingType = e.StylingType
|
||||
rm.State = ConfigStateActive
|
||||
rm.reduceConfigAddedEvent(e)
|
||||
case *ConfigChangedEvent:
|
||||
if e.Name != "" {
|
||||
rm.Name = e.Name
|
||||
}
|
||||
if e.StylingType.Valid() {
|
||||
rm.StylingType = e.StylingType
|
||||
}
|
||||
rm.reduceConfigChangedEvent(e)
|
||||
case *ConfigDeactivatedEvent:
|
||||
rm.State = ConfigStateInactive
|
||||
rm.reduceConfigStateChanged(e.ConfigID, ConfigStateInactive)
|
||||
case *ConfigReactivatedEvent:
|
||||
rm.State = ConfigStateActive
|
||||
rm.reduceConfigStateChanged(e.ConfigID, ConfigStateActive)
|
||||
case *ConfigRemovedEvent:
|
||||
rm.State = ConfigStateRemoved
|
||||
case *oidc.ConfigAddedEvent:
|
||||
rm.Type = ConfigTypeOIDC
|
||||
rm.reduceConfigStateChanged(e.ConfigID, ConfigStateRemoved)
|
||||
}
|
||||
}
|
||||
|
||||
if err := rm.OIDCConfig.Reduce(); err != nil {
|
||||
return err
|
||||
if rm.OIDCConfig != nil {
|
||||
if err := rm.OIDCConfig.Reduce(); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return rm.ReadModel.Reduce()
|
||||
}
|
||||
|
||||
func (rm *ConfigReadModel) reduceConfigAddedEvent(e *ConfigAddedEvent) {
|
||||
rm.ConfigID = e.ConfigID
|
||||
rm.Name = e.Name
|
||||
rm.StylingType = e.StylingType
|
||||
rm.State = ConfigStateActive
|
||||
}
|
||||
|
||||
func (rm *ConfigReadModel) reduceConfigChangedEvent(e *ConfigChangedEvent) {
|
||||
if e.Name != "" {
|
||||
rm.Name = e.Name
|
||||
}
|
||||
if e.StylingType.Valid() {
|
||||
rm.StylingType = e.StylingType
|
||||
}
|
||||
}
|
||||
|
||||
func (rm *ConfigReadModel) reduceConfigStateChanged(configID string, state ConfigState) {
|
||||
rm.State = state
|
||||
}
|
||||
|
||||
@@ -8,10 +8,13 @@ import (
|
||||
type ConfigWriteModel struct {
|
||||
eventstore.WriteModel
|
||||
|
||||
State ConfigState
|
||||
|
||||
ConfigID string
|
||||
Name string
|
||||
StylingType StylingType
|
||||
OIDCConfig *oidc.ConfigWriteModel
|
||||
|
||||
OIDCConfig *oidc.ConfigWriteModel
|
||||
}
|
||||
|
||||
func (rm *ConfigWriteModel) AppendEvents(events ...eventstore.EventReader) {
|
||||
@@ -19,7 +22,7 @@ func (rm *ConfigWriteModel) AppendEvents(events ...eventstore.EventReader) {
|
||||
for _, event := range events {
|
||||
switch event.(type) {
|
||||
case *oidc.ConfigAddedEvent:
|
||||
rm.OIDCConfig = &oidc.ConfigWriteModel{}
|
||||
rm.OIDCConfig = new(oidc.ConfigWriteModel)
|
||||
rm.OIDCConfig.AppendEvents(event)
|
||||
case *oidc.ConfigChangedEvent:
|
||||
rm.OIDCConfig.AppendEvents(event)
|
||||
@@ -31,20 +34,41 @@ func (rm *ConfigWriteModel) Reduce() error {
|
||||
for _, event := range rm.Events {
|
||||
switch e := event.(type) {
|
||||
case *ConfigAddedEvent:
|
||||
rm.ConfigID = e.ConfigID
|
||||
rm.Name = e.Name
|
||||
rm.StylingType = e.StylingType
|
||||
rm.reduceConfigAddedEvent(e)
|
||||
case *ConfigChangedEvent:
|
||||
if e.Name != "" {
|
||||
rm.Name = e.Name
|
||||
}
|
||||
if e.StylingType.Valid() {
|
||||
rm.StylingType = e.StylingType
|
||||
}
|
||||
rm.reduceConfigChangedEvent(e)
|
||||
case *ConfigDeactivatedEvent:
|
||||
rm.reduceConfigStateChanged(e.ConfigID, ConfigStateInactive)
|
||||
case *ConfigReactivatedEvent:
|
||||
rm.reduceConfigStateChanged(e.ConfigID, ConfigStateActive)
|
||||
case *ConfigRemovedEvent:
|
||||
rm.reduceConfigStateChanged(e.ConfigID, ConfigStateRemoved)
|
||||
}
|
||||
}
|
||||
if err := rm.OIDCConfig.Reduce(); err != nil {
|
||||
return err
|
||||
if rm.OIDCConfig != nil {
|
||||
if err := rm.OIDCConfig.Reduce(); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return rm.WriteModel.Reduce()
|
||||
}
|
||||
|
||||
func (rm *ConfigWriteModel) reduceConfigAddedEvent(e *ConfigAddedEvent) {
|
||||
rm.ConfigID = e.ConfigID
|
||||
rm.Name = e.Name
|
||||
rm.StylingType = e.StylingType
|
||||
rm.State = ConfigStateActive
|
||||
}
|
||||
|
||||
func (rm *ConfigWriteModel) reduceConfigChangedEvent(e *ConfigChangedEvent) {
|
||||
if e.Name != "" {
|
||||
rm.Name = e.Name
|
||||
}
|
||||
if e.StylingType.Valid() {
|
||||
rm.StylingType = e.StylingType
|
||||
}
|
||||
}
|
||||
|
||||
func (rm *ConfigWriteModel) reduceConfigStateChanged(configID string, state ConfigState) {
|
||||
rm.State = state
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ type ConfigAddedEvent struct {
|
||||
eventstore.BaseEvent `json:"-"`
|
||||
|
||||
ConfigID string `json:"idpConfigId"`
|
||||
Name string `json:"name"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Typ ConfigType `json:"idpType,omitempty"`
|
||||
StylingType StylingType `json:"stylingType,omitempty"`
|
||||
}
|
||||
|
||||
@@ -21,31 +21,39 @@ func (rm *ConfigReadModel) Reduce() error {
|
||||
for _, event := range rm.Events {
|
||||
switch e := event.(type) {
|
||||
case *ConfigAddedEvent:
|
||||
rm.IDPConfigID = e.IDPConfigID
|
||||
rm.ClientID = e.ClientID
|
||||
rm.ClientSecret = e.ClientSecret
|
||||
rm.Issuer = e.Issuer
|
||||
rm.Scopes = e.Scopes
|
||||
rm.IDPDisplayNameMapping = e.IDPDisplayNameMapping
|
||||
rm.UserNameMapping = e.UserNameMapping
|
||||
rm.reduceConfigAddedEvent(e)
|
||||
case *ConfigChangedEvent:
|
||||
if e.ClientID != "" {
|
||||
rm.ClientID = e.ClientID
|
||||
}
|
||||
if e.Issuer != "" {
|
||||
rm.Issuer = e.Issuer
|
||||
}
|
||||
if len(e.Scopes) > 0 {
|
||||
rm.Scopes = e.Scopes
|
||||
}
|
||||
if e.IDPDisplayNameMapping.Valid() {
|
||||
rm.IDPDisplayNameMapping = e.IDPDisplayNameMapping
|
||||
}
|
||||
if e.UserNameMapping.Valid() {
|
||||
rm.UserNameMapping = e.UserNameMapping
|
||||
}
|
||||
rm.reduceConfigChangedEvent(e)
|
||||
}
|
||||
}
|
||||
|
||||
return rm.ReadModel.Reduce()
|
||||
}
|
||||
|
||||
func (rm *ConfigReadModel) reduceConfigAddedEvent(e *ConfigAddedEvent) {
|
||||
rm.IDPConfigID = e.IDPConfigID
|
||||
rm.ClientID = e.ClientID
|
||||
rm.ClientSecret = e.ClientSecret
|
||||
rm.Issuer = e.Issuer
|
||||
rm.Scopes = e.Scopes
|
||||
rm.IDPDisplayNameMapping = e.IDPDisplayNameMapping
|
||||
rm.UserNameMapping = e.UserNameMapping
|
||||
}
|
||||
|
||||
func (rm *ConfigReadModel) reduceConfigChangedEvent(e *ConfigChangedEvent) {
|
||||
if e.ClientID != "" {
|
||||
rm.ClientID = e.ClientID
|
||||
}
|
||||
if e.Issuer != "" {
|
||||
rm.Issuer = e.Issuer
|
||||
}
|
||||
if len(e.Scopes) > 0 {
|
||||
rm.Scopes = e.Scopes
|
||||
}
|
||||
if e.IDPDisplayNameMapping.Valid() {
|
||||
rm.IDPDisplayNameMapping = e.IDPDisplayNameMapping
|
||||
}
|
||||
if e.UserNameMapping.Valid() {
|
||||
rm.UserNameMapping = e.UserNameMapping
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,31 +22,39 @@ func (wm *ConfigWriteModel) Reduce() error {
|
||||
for _, event := range wm.Events {
|
||||
switch e := event.(type) {
|
||||
case *ConfigAddedEvent:
|
||||
wm.IDPConfigID = e.IDPConfigID
|
||||
wm.ClientID = e.ClientID
|
||||
wm.ClientSecret = e.ClientSecret
|
||||
wm.Issuer = e.Issuer
|
||||
wm.Scopes = e.Scopes
|
||||
wm.IDPDisplayNameMapping = e.IDPDisplayNameMapping
|
||||
wm.UserNameMapping = e.UserNameMapping
|
||||
wm.reduceConfigAddedEvent(e)
|
||||
case *ConfigChangedEvent:
|
||||
if e.ClientID != "" {
|
||||
wm.ClientID = e.ClientID
|
||||
}
|
||||
if e.Issuer != "" {
|
||||
wm.Issuer = e.Issuer
|
||||
}
|
||||
if len(e.Scopes) > 0 {
|
||||
wm.Scopes = e.Scopes
|
||||
}
|
||||
if e.IDPDisplayNameMapping.Valid() {
|
||||
wm.IDPDisplayNameMapping = e.IDPDisplayNameMapping
|
||||
}
|
||||
if e.UserNameMapping.Valid() {
|
||||
wm.UserNameMapping = e.UserNameMapping
|
||||
}
|
||||
wm.reduceConfigChangedEvent(e)
|
||||
}
|
||||
}
|
||||
|
||||
return wm.WriteModel.Reduce()
|
||||
}
|
||||
|
||||
func (wm *ConfigWriteModel) reduceConfigAddedEvent(e *ConfigAddedEvent) {
|
||||
wm.IDPConfigID = e.IDPConfigID
|
||||
wm.ClientID = e.ClientID
|
||||
wm.ClientSecret = e.ClientSecret
|
||||
wm.Issuer = e.Issuer
|
||||
wm.Scopes = e.Scopes
|
||||
wm.IDPDisplayNameMapping = e.IDPDisplayNameMapping
|
||||
wm.UserNameMapping = e.UserNameMapping
|
||||
}
|
||||
|
||||
func (wm *ConfigWriteModel) reduceConfigChangedEvent(e *ConfigChangedEvent) {
|
||||
if e.ClientID != "" {
|
||||
wm.ClientID = e.ClientID
|
||||
}
|
||||
if e.Issuer != "" {
|
||||
wm.Issuer = e.Issuer
|
||||
}
|
||||
if len(e.Scopes) > 0 {
|
||||
wm.Scopes = e.Scopes
|
||||
}
|
||||
if e.IDPDisplayNameMapping.Valid() {
|
||||
wm.IDPDisplayNameMapping = e.IDPDisplayNameMapping
|
||||
}
|
||||
if e.UserNameMapping.Valid() {
|
||||
wm.UserNameMapping = e.UserNameMapping
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,13 +13,13 @@ type ConfigAddedEvent struct {
|
||||
eventstore.BaseEvent
|
||||
|
||||
IDPConfigID string `json:"idpConfigId"`
|
||||
ClientID string `json:"clientId"`
|
||||
ClientSecret *crypto.CryptoValue `json:"clientSecret"`
|
||||
Issuer string `json:"issuer"`
|
||||
Scopes []string `json:"scpoes"`
|
||||
ClientID string `json:"clientId,omitempty"`
|
||||
ClientSecret *crypto.CryptoValue `json:"clientSecret,omitempty"`
|
||||
Issuer string `json:"issuer,omitempty"`
|
||||
Scopes []string `json:"scpoes,omitempty"`
|
||||
|
||||
IDPDisplayNameMapping MappingField `json:"idpDisplayNameMapping"`
|
||||
UserNameMapping MappingField `json:"usernameMapping"`
|
||||
IDPDisplayNameMapping MappingField `json:"idpDisplayNameMapping,omitempty"`
|
||||
UserNameMapping MappingField `json:"usernameMapping,omitempty"`
|
||||
}
|
||||
|
||||
func (e *ConfigAddedEvent) CheckPrevious() bool {
|
||||
|
||||
@@ -16,13 +16,13 @@ type ConfigChangedEvent struct {
|
||||
|
||||
IDPConfigID string `json:"idpConfigId"`
|
||||
|
||||
ClientID string `json:"clientId"`
|
||||
ClientSecret *crypto.CryptoValue `json:"clientSecret"`
|
||||
Issuer string `json:"issuer"`
|
||||
Scopes []string `json:"scpoes"`
|
||||
ClientID string `json:"clientId,omitempty"`
|
||||
ClientSecret *crypto.CryptoValue `json:"clientSecret,omitempty"`
|
||||
Issuer string `json:"issuer,omitempty"`
|
||||
Scopes []string `json:"scpoes,omitempty"`
|
||||
|
||||
IDPDisplayNameMapping MappingField `json:"idpDisplayNameMapping"`
|
||||
UserNameMapping MappingField `json:"usernameMapping"`
|
||||
IDPDisplayNameMapping MappingField `json:"idpDisplayNameMapping,omitempty"`
|
||||
UserNameMapping MappingField `json:"usernameMapping,omitempty"`
|
||||
}
|
||||
|
||||
func (e *ConfigChangedEvent) CheckPrevious() bool {
|
||||
@@ -60,7 +60,7 @@ func NewConfigChangedEvent(
|
||||
hasChanged = true
|
||||
}
|
||||
|
||||
if clientSecret != nil && clientSecret != current.ClientSecret {
|
||||
if clientSecret != nil {
|
||||
event.ClientSecret = clientSecret
|
||||
hasChanged = true
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user