feat: reset custom texts on IAM (#3160)

* fix: only show factors with state ready

* fix: get iam by id and clean up code

* fix: get iam by id and clean up code

* fix: remove unused code

* feat: add message template remove func to admin api

* fix: proto texts

* fix: proto texts
This commit is contained in:
Fabi
2022-02-04 10:25:25 +01:00
committed by GitHub
parent 9b1e0730d7
commit 31bdd3f431
7 changed files with 454 additions and 2 deletions

View File

@@ -79,6 +79,16 @@ func (wm *CustomMessageTextReadModel) Reduce() error {
wm.FooterText = ""
}
case *policy.CustomTextTemplateRemovedEvent:
if wm.Language != e.Language {
continue
}
wm.Subject = ""
wm.Title = ""
wm.PreHeader = ""
wm.Text = ""
wm.Greeting = ""
wm.ButtonText = ""
wm.FooterText = ""
wm.State = domain.PolicyStateRemoved
}
}

View File

@@ -36,6 +36,7 @@ func (c *Commands) setDefaultMessageText(ctx context.Context, iamAgg *eventstore
if err != nil {
return nil, nil, err
}
events := make([]eventstore.Command, 0)
if existingMessageText.Greeting != msg.Greeting {
if msg.Greeting != "" {
@@ -89,6 +90,29 @@ func (c *Commands) setDefaultMessageText(ctx context.Context, iamAgg *eventstore
return events, existingMessageText, nil
}
func (c *Commands) RemoveIAMMessageTexts(ctx context.Context, messageTextType string, lang language.Tag) (*domain.ObjectDetails, error) {
if messageTextType == "" || lang == language.Und {
return nil, caos_errs.ThrowInvalidArgument(nil, "IAM-fjw9b", "Errors.CustomMessageText.Invalid")
}
customText, err := c.defaultCustomMessageTextWriteModelByID(ctx, messageTextType, lang)
if err != nil {
return nil, err
}
if customText.State == domain.PolicyStateUnspecified || customText.State == domain.PolicyStateRemoved {
return nil, caos_errs.ThrowNotFound(nil, "Org-fju90", "Errors.CustomMessageText.NotFound")
}
iamAgg := IAMAggregateFromWriteModel(&customText.WriteModel)
pushedEvents, err := c.eventstore.Push(ctx, iam.NewCustomTextTemplateRemovedEvent(ctx, iamAgg, messageTextType, lang))
if err != nil {
return nil, err
}
err = AppendAndReduce(customText, pushedEvents...)
if err != nil {
return nil, err
}
return writeModelToObjectDetails(&customText.WriteModel), nil
}
func (c *Commands) defaultCustomMessageTextWriteModelByID(ctx context.Context, messageType string, lang language.Tag) (*IAMCustomMessageTextReadModel, error) {
writeModel := NewIAMCustomMessageTextWriteModel(messageType, lang)
err := c.eventstore.FilterToQueryReducer(ctx, writeModel)

View File

@@ -30,6 +30,10 @@ func (wm *IAMCustomMessageTextReadModel) AppendEvents(events ...eventstore.Event
switch e := event.(type) {
case *iam.CustomTextSetEvent:
wm.CustomMessageTextReadModel.AppendEvents(&e.CustomTextSetEvent)
case *iam.CustomTextRemovedEvent:
wm.CustomMessageTextReadModel.AppendEvents(&e.CustomTextRemovedEvent)
case *iam.CustomTextTemplateRemovedEvent:
wm.CustomMessageTextReadModel.AppendEvents(&e.CustomTextTemplateRemovedEvent)
}
}
}
@@ -44,6 +48,6 @@ func (wm *IAMCustomMessageTextReadModel) Query() *eventstore.SearchQueryBuilder
AddQuery().
AggregateTypes(iam.AggregateType).
AggregateIDs(wm.CustomMessageTextReadModel.AggregateID).
EventTypes(iam.CustomTextSetEventType).
EventTypes(iam.CustomTextSetEventType, iam.CustomTextRemovedEventType, iam.CustomTextTemplateRemovedEventType).
Builder()
}