mirror of
https://github.com/zitadel/zitadel.git
synced 2025-11-06 17:11:10 +00:00
fix: idp provider
This commit is contained in:
@@ -5,7 +5,7 @@ import (
|
||||
"github.com/caos/zitadel/internal/errors"
|
||||
"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/login/idpprovider"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -13,8 +13,8 @@ const (
|
||||
LoginPolicyAddedEventType = loginPolicyPrefix + "added"
|
||||
LoginPolicyChangedEventType = loginPolicyPrefix + "changed"
|
||||
LoginPolicyRemovedEventType = loginPolicyPrefix + "removed"
|
||||
LoginPolicyIDPProviderAddedEventType = loginPolicyPrefix + provider.AddedEventType
|
||||
LoginPolicyIDPProviderRemovedEventType = loginPolicyPrefix + provider.RemovedEventType
|
||||
LoginPolicyIDPProviderAddedEventType = loginPolicyPrefix + idpprovider.AddedEventType
|
||||
LoginPolicyIDPProviderRemovedEventType = loginPolicyPrefix + idpprovider.RemovedEventType
|
||||
)
|
||||
|
||||
type AddedEvent struct {
|
||||
|
||||
@@ -1,42 +1,62 @@
|
||||
package idpprovider
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"github.com/caos/zitadel/internal/errors"
|
||||
"github.com/caos/zitadel/internal/eventstore/v2"
|
||||
"github.com/caos/zitadel/internal/eventstore/v2/repository"
|
||||
"github.com/caos/zitadel/internal/v2/repository/idp/provider"
|
||||
)
|
||||
|
||||
const (
|
||||
AddedEventType = "idpprovider.added"
|
||||
RemovedEventType = "idpprovider.removed"
|
||||
)
|
||||
|
||||
type AddedEvent struct {
|
||||
provider.AddedEvent
|
||||
eventstore.BaseEvent
|
||||
|
||||
IDPConfigID string `json:"idpConfigId"`
|
||||
IDPProviderType Type `json:"idpProviderType"`
|
||||
}
|
||||
|
||||
func (e *AddedEvent) Data() interface{} {
|
||||
return e
|
||||
}
|
||||
|
||||
func NewAddedEvent(
|
||||
base *eventstore.BaseEvent,
|
||||
idpConfigID string,
|
||||
idpProviderType provider.Type,
|
||||
idpProviderType Type,
|
||||
) *AddedEvent {
|
||||
|
||||
return &AddedEvent{
|
||||
AddedEvent: *provider.NewAddedEvent(
|
||||
base,
|
||||
idpConfigID,
|
||||
idpProviderType),
|
||||
*base,
|
||||
idpConfigID,
|
||||
idpProviderType,
|
||||
}
|
||||
}
|
||||
|
||||
func AddedEventMapper(event *repository.Event) (eventstore.EventReader, error) {
|
||||
e, err := provider.AddedEventEventMapper(event)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
e := &AddedEvent{
|
||||
BaseEvent: *eventstore.BaseEventFromRepo(event),
|
||||
}
|
||||
|
||||
return &AddedEvent{
|
||||
AddedEvent: *e.(*provider.AddedEvent),
|
||||
}, nil
|
||||
err := json.Unmarshal(event.Data, e)
|
||||
if err != nil {
|
||||
return nil, errors.ThrowInternal(err, "PROVI-bfNnp", "Errors.Internal")
|
||||
}
|
||||
|
||||
return e, nil
|
||||
}
|
||||
|
||||
type RemovedEvent struct {
|
||||
provider.RemovedEvent
|
||||
eventstore.BaseEvent
|
||||
|
||||
IDPConfigID string `json:"idpConfigId"`
|
||||
}
|
||||
|
||||
func (e *RemovedEvent) Data() interface{} {
|
||||
return e
|
||||
}
|
||||
|
||||
func NewRemovedEvent(
|
||||
@@ -44,17 +64,20 @@ func NewRemovedEvent(
|
||||
idpConfigID string,
|
||||
) *RemovedEvent {
|
||||
return &RemovedEvent{
|
||||
RemovedEvent: *provider.NewRemovedEvent(base, idpConfigID),
|
||||
BaseEvent: *base,
|
||||
IDPConfigID: idpConfigID,
|
||||
}
|
||||
}
|
||||
|
||||
func RemovedEventMapper(event *repository.Event) (eventstore.EventReader, error) {
|
||||
e, err := provider.RemovedEventEventMapper(event)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
e := &RemovedEvent{
|
||||
BaseEvent: *eventstore.BaseEventFromRepo(event),
|
||||
}
|
||||
|
||||
return &RemovedEvent{
|
||||
RemovedEvent: *e.(*provider.RemovedEvent),
|
||||
}, nil
|
||||
err := json.Unmarshal(event.Data, e)
|
||||
if err != nil {
|
||||
return nil, errors.ThrowInternal(err, "PROVI-6H0KQ", "Errors.Internal")
|
||||
}
|
||||
|
||||
return e, nil
|
||||
}
|
||||
|
||||
14
internal/v2/repository/policy/login/idpprovider/provider.go
Normal file
14
internal/v2/repository/policy/login/idpprovider/provider.go
Normal file
@@ -0,0 +1,14 @@
|
||||
package idpprovider
|
||||
|
||||
type Type int8
|
||||
|
||||
const (
|
||||
TypeSystem Type = iota
|
||||
TypeOrg
|
||||
|
||||
typeCount
|
||||
)
|
||||
|
||||
func (f Type) Valid() bool {
|
||||
return f >= 0 && f < typeCount
|
||||
}
|
||||
@@ -2,18 +2,22 @@ package idpprovider
|
||||
|
||||
import (
|
||||
"github.com/caos/zitadel/internal/eventstore/v2"
|
||||
"github.com/caos/zitadel/internal/v2/repository/idp/provider"
|
||||
)
|
||||
|
||||
type WriteModel struct {
|
||||
provider.WriteModel
|
||||
eventstore.WriteModel
|
||||
|
||||
IDPConfigID string
|
||||
IDPProviderType Type
|
||||
}
|
||||
|
||||
func (wm *WriteModel) AppendEvents(events ...eventstore.EventReader) {
|
||||
for _, event := range events {
|
||||
func (wm *WriteModel) Reduce() error {
|
||||
for _, event := range wm.Events {
|
||||
switch e := event.(type) {
|
||||
case *AddedEvent:
|
||||
wm.WriteModel.AppendEvents(&e.AddedEvent)
|
||||
wm.IDPConfigID = e.IDPConfigID
|
||||
wm.IDPProviderType = e.IDPProviderType
|
||||
}
|
||||
}
|
||||
return wm.WriteModel.Reduce()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user