Skip to content

Commit

Permalink
fix: org member in setup (#213)
Browse files Browse the repository at this point in the history
  • Loading branch information
hifabienne committed Jun 11, 2020
1 parent e57d4b1 commit c4eaeee
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 11 deletions.
5 changes: 3 additions & 2 deletions internal/admin/repository/eventsourcing/eventstore/org.go
Expand Up @@ -16,6 +16,7 @@ import (

const (
DEFAULT_POLICY = "0"
orgOwnerRole = "ORG_OWNER"
)

type OrgRepo struct {
Expand Down Expand Up @@ -47,8 +48,8 @@ func (repo *OrgRepo) SetUpOrg(ctx context.Context, setUp *admin_model.SetupOrg)
aggregates = append(aggregates, userAggregates...)
setupModel := &Setup{Org: org, User: user}

member := org_model.NewOrgMemberWithRoles(org.AggregateID, user.AggregateID, "ORG_ADMIN") //TODO: role as const
_, memberAggregate, err := repo.OrgEventstore.PrepareAddOrgMember(ctx, member)
member := org_model.NewOrgMemberWithRoles(org.AggregateID, user.AggregateID, orgOwnerRole)
_, memberAggregate, err := repo.OrgEventstore.PrepareAddOrgMember(ctx, member, org.AggregateID)
if err != nil {
return nil, err
}
Expand Down
6 changes: 3 additions & 3 deletions internal/org/repository/eventsourcing/eventstore.go
Expand Up @@ -151,19 +151,19 @@ func (es *OrgEventstore) OrgMemberByIDs(ctx context.Context, member *org_model.O
return nil, errors.ThrowNotFound(nil, "EVENT-SXji6", "member not found")
}

func (es *OrgEventstore) PrepareAddOrgMember(ctx context.Context, member *org_model.OrgMember) (*model.OrgMember, *es_models.Aggregate, error) {
func (es *OrgEventstore) PrepareAddOrgMember(ctx context.Context, member *org_model.OrgMember, resourceOwner string) (*model.OrgMember, *es_models.Aggregate, error) {
if member == nil || !member.IsValid() {
return nil, nil, errors.ThrowPreconditionFailed(nil, "EVENT-9dk45", "UserID and Roles are required")
}

repoMember := model.OrgMemberFromModel(member)
addAggregate, err := orgMemberAddedAggregate(ctx, es.Eventstore.AggregateCreator(), repoMember)
addAggregate, err := orgMemberAddedAggregate(ctx, es.Eventstore.AggregateCreator(), repoMember, resourceOwner)

return repoMember, addAggregate, err
}

func (es *OrgEventstore) AddOrgMember(ctx context.Context, member *org_model.OrgMember) (*org_model.OrgMember, error) {
repoMember, addAggregate, err := es.PrepareAddOrgMember(ctx, member)
repoMember, addAggregate, err := es.PrepareAddOrgMember(ctx, member, "")
if err != nil {
return nil, err
}
Expand Down
13 changes: 8 additions & 5 deletions internal/org/repository/eventsourcing/org_member.go
Expand Up @@ -9,12 +9,16 @@ import (
usr_model "github.com/caos/zitadel/internal/user/repository/eventsourcing/model"
)

func orgMemberAddedAggregate(ctx context.Context, aggCreator *es_models.AggregateCreator, member *model.OrgMember) (*es_models.Aggregate, error) {
func orgMemberAddedAggregate(ctx context.Context, aggCreator *es_models.AggregateCreator, member *model.OrgMember, resourceOwner string) (agg *es_models.Aggregate, err error) {
if member == nil {
return nil, errors.ThrowInvalidArgument(nil, "EVENT-c63Ap", "member must not be nil")
}

aggregate, err := aggCreator.NewAggregate(ctx, member.AggregateID, model.OrgAggregate, model.OrgVersion, member.Sequence)
if resourceOwner != "" {
agg, err = aggCreator.NewAggregate(ctx, member.AggregateID, model.OrgAggregate, model.OrgVersion, member.Sequence, es_models.OverwriteResourceOwner(resourceOwner))
} else {
agg, err = aggCreator.NewAggregate(ctx, member.AggregateID, model.OrgAggregate, model.OrgVersion, member.Sequence)
}
if err != nil {
return nil, err
}
Expand All @@ -23,9 +27,8 @@ func orgMemberAddedAggregate(ctx context.Context, aggCreator *es_models.Aggregat
AggregateTypeFilter(model.OrgAggregate, usr_model.UserAggregate).
AggregateIDsFilter(member.AggregateID, member.UserID)

validation := addMemberValidation(aggregate, member)

return aggregate.SetPrecondition(validationQuery, validation).AppendEvent(model.OrgMemberAdded, member)
validation := addMemberValidation(agg, member)
return agg.SetPrecondition(validationQuery, validation).AppendEvent(model.OrgMemberAdded, member)
}

func orgMemberChangedAggregate(aggCreator *es_models.AggregateCreator, existingMember *model.OrgMember, member *model.OrgMember) func(ctx context.Context) (*es_models.Aggregate, error) {
Expand Down
2 changes: 1 addition & 1 deletion internal/org/repository/eventsourcing/org_member_test.go
Expand Up @@ -54,7 +54,7 @@ func TestOrgMemberAddedAggregate(t *testing.T) {
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
aggregate, err := orgMemberAddedAggregate(tt.args.ctx, tt.args.aggCreator, tt.args.member)
aggregate, err := orgMemberAddedAggregate(tt.args.ctx, tt.args.aggCreator, tt.args.member, "")
if tt.res.isErr == nil && err != nil {
t.Errorf("no error expected got: %v", err)
}
Expand Down

0 comments on commit c4eaeee

Please sign in to comment.