fix: org member in setup (#213)

This commit is contained in:
Fabi 2020-06-11 16:43:22 +02:00 committed by GitHub
parent e57d4b1ed4
commit c4eaeee7af
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 15 additions and 11 deletions

View File

@ -16,6 +16,7 @@ import (
const ( const (
DEFAULT_POLICY = "0" DEFAULT_POLICY = "0"
orgOwnerRole = "ORG_OWNER"
) )
type OrgRepo struct { type OrgRepo struct {
@ -47,8 +48,8 @@ func (repo *OrgRepo) SetUpOrg(ctx context.Context, setUp *admin_model.SetupOrg)
aggregates = append(aggregates, userAggregates...) aggregates = append(aggregates, userAggregates...)
setupModel := &Setup{Org: org, User: user} setupModel := &Setup{Org: org, User: user}
member := org_model.NewOrgMemberWithRoles(org.AggregateID, user.AggregateID, "ORG_ADMIN") //TODO: role as const member := org_model.NewOrgMemberWithRoles(org.AggregateID, user.AggregateID, orgOwnerRole)
_, memberAggregate, err := repo.OrgEventstore.PrepareAddOrgMember(ctx, member) _, memberAggregate, err := repo.OrgEventstore.PrepareAddOrgMember(ctx, member, org.AggregateID)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@ -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") 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() { if member == nil || !member.IsValid() {
return nil, nil, errors.ThrowPreconditionFailed(nil, "EVENT-9dk45", "UserID and Roles are required") return nil, nil, errors.ThrowPreconditionFailed(nil, "EVENT-9dk45", "UserID and Roles are required")
} }
repoMember := model.OrgMemberFromModel(member) 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 return repoMember, addAggregate, err
} }
func (es *OrgEventstore) AddOrgMember(ctx context.Context, member *org_model.OrgMember) (*org_model.OrgMember, error) { 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 { if err != nil {
return nil, err return nil, err
} }

View File

@ -9,12 +9,16 @@ import (
usr_model "github.com/caos/zitadel/internal/user/repository/eventsourcing/model" 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 { if member == nil {
return nil, errors.ThrowInvalidArgument(nil, "EVENT-c63Ap", "member must not be 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 { if err != nil {
return nil, err return nil, err
} }
@ -23,9 +27,8 @@ func orgMemberAddedAggregate(ctx context.Context, aggCreator *es_models.Aggregat
AggregateTypeFilter(model.OrgAggregate, usr_model.UserAggregate). AggregateTypeFilter(model.OrgAggregate, usr_model.UserAggregate).
AggregateIDsFilter(member.AggregateID, member.UserID) AggregateIDsFilter(member.AggregateID, member.UserID)
validation := addMemberValidation(aggregate, member) validation := addMemberValidation(agg, member)
return agg.SetPrecondition(validationQuery, validation).AppendEvent(model.OrgMemberAdded, member)
return aggregate.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) { func orgMemberChangedAggregate(aggCreator *es_models.AggregateCreator, existingMember *model.OrgMember, member *model.OrgMember) func(ctx context.Context) (*es_models.Aggregate, error) {

View File

@ -54,7 +54,7 @@ func TestOrgMemberAddedAggregate(t *testing.T) {
} }
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { 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 { if tt.res.isErr == nil && err != nil {
t.Errorf("no error expected got: %v", err) t.Errorf("no error expected got: %v", err)
} }