fix: use current sequence for refetching of events (#5772)

* fix: use current sequence for refetching of events

* fix: use client ids
This commit is contained in:
Livio Spring
2023-04-28 16:28:13 +02:00
committed by GitHub
parent c8c5cf3c5f
commit 458a383de2
28 changed files with 273 additions and 107 deletions

View File

@@ -18,15 +18,26 @@ type Project struct {
ProjectRoleCheck bool `json:"projectRoleCheck,omitempty"`
HasProjectCheck bool `json:"hasProjectCheck,omitempty"`
State int32 `json:"-"`
OIDCApplications []*oidcApp
}
type oidcApp struct {
AppID string `json:"appId"`
ClientID string `json:"clientId,omitempty"`
}
func ProjectToModel(project *Project) *model.Project {
apps := make([]*model.Application, len(project.OIDCApplications))
for i, application := range project.OIDCApplications {
apps[i] = &model.Application{OIDCConfig: &model.OIDCConfig{ClientID: application.ClientID}}
}
return &model.Project{
ObjectRoot: project.ObjectRoot,
Name: project.Name,
ProjectRoleAssertion: project.ProjectRoleAssertion,
ProjectRoleCheck: project.ProjectRoleCheck,
State: model.ProjectState(project.State),
Applications: apps,
}
}
@@ -59,6 +70,10 @@ func (p *Project) AppendEvent(event *es_models.Event) error {
return p.appendReactivatedEvent()
case project.ProjectRemovedType:
return p.appendRemovedEvent()
case project.OIDCConfigAddedType:
return p.appendOIDCConfig(event)
case project.ApplicationRemovedType:
return p.appendApplicationRemoved(event)
}
return nil
}
@@ -84,6 +99,31 @@ func (p *Project) appendRemovedEvent() error {
return nil
}
func (p *Project) appendOIDCConfig(event *es_models.Event) error {
appEvent := new(oidcApp)
if err := json.Unmarshal(event.Data, appEvent); err != nil {
return err
}
p.OIDCApplications = append(p.OIDCApplications, appEvent)
return nil
}
func (p *Project) appendApplicationRemoved(event *es_models.Event) error {
appEvent := new(oidcApp)
if err := json.Unmarshal(event.Data, appEvent); err != nil {
return err
}
for i := len(p.OIDCApplications) - 1; i >= 0; i-- {
if p.OIDCApplications[i].AppID == appEvent.AppID {
p.OIDCApplications[i] = p.OIDCApplications[len(p.OIDCApplications)-1]
p.OIDCApplications[len(p.OIDCApplications)-1] = nil
p.OIDCApplications = p.OIDCApplications[:len(p.OIDCApplications)-1]
return nil
}
}
return nil
}
func (p *Project) SetData(event *es_models.Event) error {
if err := json.Unmarshal(event.Data, p); err != nil {
logging.Log("EVEN-lo9sr").WithError(err).Error("could not unmarshal event data")

View File

@@ -16,5 +16,14 @@ func ProjectByIDQuery(id, instanceID string, latestSequence uint64) (*es_models.
AggregateTypeFilter(project.AggregateType).
LatestSequenceFilter(latestSequence).
InstanceIDFilter(instanceID).
EventTypesFilter(
es_models.EventType(project.ProjectAddedType),
es_models.EventType(project.ProjectChangedType),
es_models.EventType(project.ProjectDeactivatedType),
es_models.EventType(project.ProjectReactivatedType),
es_models.EventType(project.ProjectRemovedType),
es_models.EventType(project.OIDCConfigAddedType),
es_models.EventType(project.ApplicationRemovedType),
).
SearchQuery(), nil
}