mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 19:17:32 +00:00
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:
@@ -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")
|
||||
|
@@ -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
|
||||
}
|
||||
|
Reference in New Issue
Block a user