mirror of
https://github.com/zitadel/zitadel.git
synced 2025-10-29 12:09:05 +00:00
fix: multiple setup steps (#773)
* fix: multiple setup steps * fix: test set up started * fix: possible nil pointers in setup * fix: validate executed step
This commit is contained in:
@@ -60,32 +60,37 @@ func (es *IAMEventstore) IAMByID(ctx context.Context, id string) (*iam_model.IAM
|
||||
return model.IAMToModel(iam), nil
|
||||
}
|
||||
|
||||
func (es *IAMEventstore) StartSetup(ctx context.Context, iamID string) (*iam_model.IAM, error) {
|
||||
func (es *IAMEventstore) StartSetup(ctx context.Context, iamID string, step iam_model.Step) (*iam_model.IAM, error) {
|
||||
iam, err := es.IAMByID(ctx, iamID)
|
||||
if err != nil && !caos_errs.IsNotFound(err) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if iam != nil && iam.SetUpStarted {
|
||||
if iam != nil && (iam.SetUpStarted >= step || iam.SetUpStarted != iam.SetUpDone) {
|
||||
return nil, caos_errs.ThrowPreconditionFailed(nil, "EVENT-9so34", "Setup already started")
|
||||
}
|
||||
|
||||
repoIam := &model.IAM{ObjectRoot: models.ObjectRoot{AggregateID: iamID}}
|
||||
createAggregate := IAMSetupStartedAggregate(es.AggregateCreator(), repoIam)
|
||||
err = es_sdk.Push(ctx, es.PushAggregates, repoIam.AppendEvents, createAggregate)
|
||||
repoIAM := &model.IAM{ObjectRoot: models.ObjectRoot{AggregateID: iamID}, SetUpStarted: model.Step(step)}
|
||||
if iam != nil {
|
||||
repoIAM.ObjectRoot = iam.ObjectRoot
|
||||
}
|
||||
createAggregate := IAMSetupStartedAggregate(es.AggregateCreator(), repoIAM)
|
||||
err = es_sdk.Push(ctx, es.PushAggregates, repoIAM.AppendEvents, createAggregate)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
es.iamCache.cacheIAM(repoIam)
|
||||
return model.IAMToModel(repoIam), nil
|
||||
es.iamCache.cacheIAM(repoIAM)
|
||||
return model.IAMToModel(repoIAM), nil
|
||||
}
|
||||
|
||||
func (es *IAMEventstore) SetupDone(ctx context.Context, iamID string) (*iam_model.IAM, error) {
|
||||
func (es *IAMEventstore) SetupDone(ctx context.Context, iamID string, step iam_model.Step) (*iam_model.IAM, error) {
|
||||
iam, err := es.IAMByID(ctx, iamID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
iam.SetUpDone = step
|
||||
|
||||
repoIam := model.IAMFromModel(iam)
|
||||
createAggregate := IAMSetupDoneAggregate(es.AggregateCreator(), repoIam)
|
||||
err = es_sdk.Push(ctx, es.PushAggregates, repoIam.AppendEvents, createAggregate)
|
||||
|
||||
Reference in New Issue
Block a user