feat: new projects (#1207)

* fix: project events

* fix: project events

* fix: project events

* fix: eventmapper

* fix: project commands

* fix: project role commands

* fix: project command side

* fix: oidc application

* fix: oidc application

* fix: reduce

* fix: reduce

* fix: project member

* fix: project grant command side

* fix: application command side

* fix: project grant member remove

* Update internal/v2/command/project.go

Co-authored-by: Livio Amstutz <[email protected]>

* Update internal/v2/command/project.go

Co-authored-by: Livio Amstutz <[email protected]>

* Update internal/v2/command/project_application.go

Co-authored-by: Livio Amstutz <[email protected]>

* Update internal/v2/command/project_application.go

Co-authored-by: Livio Amstutz <[email protected]>

* Update internal/v2/command/project_application.go

Co-authored-by: Livio Amstutz <[email protected]>

* fix: oidc application string pw

* fix: project events

* fix: project grant member

* feat: change application to interface

Co-authored-by: Livio Amstutz <[email protected]>
This commit is contained in:
Fabi
2021-01-28 06:35:26 +01:00
committed by GitHub
co-authored by Livio Amstutz
parent dfcb96d6a3
commit c65331df1a
58 changed files with 3745 additions and 964 deletions
+54 -3
View File
@@ -1,6 +1,7 @@
package command
import (
"context"
"github.com/caos/zitadel/internal/eventstore/v2"
"github.com/caos/zitadel/internal/v2/domain"
"github.com/caos/zitadel/internal/v2/repository/project"
@@ -33,12 +34,34 @@ func (wm *ProjectWriteModel) Reduce() error {
switch e := event.(type) {
case *project.ProjectAddedEvent:
wm.Name = e.Name
wm.ProjectRoleAssertion = e.ProjectRoleAssertion
wm.ProjectRoleCheck = e.ProjectRoleCheck
wm.State = domain.ProjectStateActive
//case *project.ProjectChangedEvent:
// wm.Name = e.Name
case *project.ProjectChangeEvent:
if e.Name != nil {
wm.Name = *e.Name
}
if e.ProjectRoleAssertion != nil {
wm.ProjectRoleAssertion = *e.ProjectRoleAssertion
}
if e.ProjectRoleCheck != nil {
wm.ProjectRoleCheck = *e.ProjectRoleCheck
}
case *project.ProjectDeactivatedEvent:
if wm.State == domain.ProjectStateRemoved {
continue
}
wm.State = domain.ProjectStateInactive
case *project.ProjectReactivatedEvent:
if wm.State == domain.ProjectStateRemoved {
continue
}
wm.State = domain.ProjectStateActive
case *project.ProjectRemovedEvent:
wm.State = domain.ProjectStateRemoved
}
}
return nil
return wm.WriteModel.Reduce()
}
func (wm *ProjectWriteModel) Query() *eventstore.SearchQueryBuilder {
@@ -47,6 +70,34 @@ func (wm *ProjectWriteModel) Query() *eventstore.SearchQueryBuilder {
ResourceOwner(wm.ResourceOwner)
}
func (wm *ProjectWriteModel) NewChangedEvent(
ctx context.Context,
name string,
projectRoleAssertion,
projectRoleCheck bool,
) (*project.ProjectChangeEvent, bool, error) {
changes := make([]project.ProjectChanges, 0)
var err error
if wm.Name != name {
changes = append(changes, project.ChangeName(name))
}
if wm.ProjectRoleAssertion != projectRoleAssertion {
changes = append(changes, project.ChangeProjectRoleAssertion(projectRoleAssertion))
}
if wm.ProjectRoleCheck != projectRoleCheck {
changes = append(changes, project.ChangeProjectRoleCheck(projectRoleCheck))
}
if len(changes) == 0 {
return nil, false, nil
}
changeEvent, err := project.NewProjectChangeEvent(ctx, changes)
if err != nil {
return nil, false, err
}
return changeEvent, true, nil
}
func ProjectAggregateFromWriteModel(wm *eventstore.WriteModel) *project.Aggregate {
return &project.Aggregate{
Aggregate: *eventstore.AggregateFromWriteModel(wm, project.AggregateType, project.AggregateVersion),