From 31bdd3f43173d6da4b9522236b44691544f6d462 Mon Sep 17 00:00:00 2001 From: Fabi <38692350+fgerschwiler@users.noreply.github.com> Date: Fri, 4 Feb 2022 10:25:25 +0100 Subject: [PATCH] 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 --- docs/docs/apis/proto/admin.md | 210 ++++++++++++++++++ internal/api/grpc/admin/custom_text.go | 84 +++++++ internal/api/grpc/text/custom_text.go | 2 +- internal/command/custom_message_text_model.go | 10 + internal/command/iam_custom_message_text.go | 24 ++ .../command/iam_custom_message_text_model.go | 6 +- proto/zitadel/admin.proto | 120 ++++++++++ 7 files changed, 454 insertions(+), 2 deletions(-) diff --git a/docs/docs/apis/proto/admin.md b/docs/docs/apis/proto/admin.md index 8d680af7dd..2c95815ed1 100644 --- a/docs/docs/apis/proto/admin.md +++ b/docs/docs/apis/proto/admin.md @@ -729,6 +729,19 @@ The Following Variables can be used: PUT: /text/message/init/{language} +### ResetCustomInitMessageTextToDefault + +> **rpc** ResetCustomInitMessageTextToDefault([ResetCustomInitMessageTextToDefaultRequest](#resetcustominitmessagetexttodefaultrequest)) +[ResetCustomInitMessageTextToDefaultResponse](#resetcustominitmessagetexttodefaultresponse) + +Removes the custom init message text of the system +The default text from the translation file will trigger after + + + + DELETE: /text/message/init/{language} + + ### GetDefaultPasswordResetMessageText > **rpc** GetDefaultPasswordResetMessageText([GetDefaultPasswordResetMessageTextRequest](#getdefaultpasswordresetmessagetextrequest)) @@ -768,6 +781,19 @@ The Following Variables can be used: PUT: /text/message/passwordreset/{language} +### ResetCustomPasswordResetMessageTextToDefault + +> **rpc** ResetCustomPasswordResetMessageTextToDefault([ResetCustomPasswordResetMessageTextToDefaultRequest](#resetcustompasswordresetmessagetexttodefaultrequest)) +[ResetCustomPasswordResetMessageTextToDefaultResponse](#resetcustompasswordresetmessagetexttodefaultresponse) + +Removes the custom password reset message text of the system +The default text from the translation file will trigger after + + + + DELETE: /text/message/verifyemail/{language} + + ### GetDefaultVerifyEmailMessageText > **rpc** GetDefaultVerifyEmailMessageText([GetDefaultVerifyEmailMessageTextRequest](#getdefaultverifyemailmessagetextrequest)) @@ -807,6 +833,19 @@ The Following Variables can be used: PUT: /text/message/verifyemail/{language} +### ResetCustomVerifyEmailMessageTextToDefault + +> **rpc** ResetCustomVerifyEmailMessageTextToDefault([ResetCustomVerifyEmailMessageTextToDefaultRequest](#resetcustomverifyemailmessagetexttodefaultrequest)) +[ResetCustomVerifyEmailMessageTextToDefaultResponse](#resetcustomverifyemailmessagetexttodefaultresponse) + +Removes the custom verify email message text of the system +The default text from the translation file will trigger after + + + + DELETE: /text/message/verifyemail/{language} + + ### GetDefaultVerifyPhoneMessageText > **rpc** GetDefaultVerifyPhoneMessageText([GetDefaultVerifyPhoneMessageTextRequest](#getdefaultverifyphonemessagetextrequest)) @@ -846,6 +885,19 @@ The Following Variables can be used: PUT: /text/message/verifyphone/{language} +### ResetCustomVerifyPhoneMessageTextToDefault + +> **rpc** ResetCustomVerifyPhoneMessageTextToDefault([ResetCustomVerifyPhoneMessageTextToDefaultRequest](#resetcustomverifyphonemessagetexttodefaultrequest)) +[ResetCustomVerifyPhoneMessageTextToDefaultResponse](#resetcustomverifyphonemessagetexttodefaultresponse) + +Removes the custom verify phone text of the system +The default text from the translation file will trigger after + + + + DELETE: /text/message/verifyphone/{language} + + ### GetDefaultDomainClaimedMessageText > **rpc** GetDefaultDomainClaimedMessageText([GetDefaultDomainClaimedMessageTextRequest](#getdefaultdomainclaimedmessagetextrequest)) @@ -885,6 +937,19 @@ The Following Variables can be used: PUT: /text/message/domainclaimed/{language} +### ResetCustomDomainClaimedMessageTextToDefault + +> **rpc** ResetCustomDomainClaimedMessageTextToDefault([ResetCustomDomainClaimedMessageTextToDefaultRequest](#resetcustomdomainclaimedmessagetexttodefaultrequest)) +[ResetCustomDomainClaimedMessageTextToDefaultResponse](#resetcustomdomainclaimedmessagetexttodefaultresponse) + +Removes the custom domain claimed message text of the system +The default text from the translation file will trigger after + + + + DELETE: /text/message/domainclaimed/{language} + + ### GetDefaultPasswordlessRegistrationMessageText > **rpc** GetDefaultPasswordlessRegistrationMessageText([GetDefaultPasswordlessRegistrationMessageTextRequest](#getdefaultpasswordlessregistrationmessagetextrequest)) @@ -924,6 +989,19 @@ The Following Variables can be used: PUT: /text/message/passwordless_registration/{language} +### ResetCustomPasswordlessRegistrationMessageTextToDefault + +> **rpc** ResetCustomPasswordlessRegistrationMessageTextToDefault([ResetCustomPasswordlessRegistrationMessageTextToDefaultRequest](#resetcustompasswordlessregistrationmessagetexttodefaultrequest)) +[ResetCustomPasswordlessRegistrationMessageTextToDefaultResponse](#resetcustompasswordlessregistrationmessagetexttodefaultresponse) + +Removes the custom passwordless link message text of the system +The default text from the translation file will trigger after + + + + DELETE: /text/message/passwordless_registration/{language} + + ### GetDefaultLoginTexts > **rpc** GetDefaultLoginTexts([GetDefaultLoginTextsRequest](#getdefaultlogintextsrequest)) @@ -2386,6 +2464,50 @@ This is an empty request +### ResetCustomDomainClaimedMessageTextToDefaultRequest + + + +| Field | Type | Description | Validation | +| ----- | ---- | ----------- | ----------- | +| language | string | - | string.min_len: 1
string.max_len: 200
| + + + + +### ResetCustomDomainClaimedMessageTextToDefaultResponse + + + +| Field | Type | Description | Validation | +| ----- | ---- | ----------- | ----------- | +| details | zitadel.v1.ObjectDetails | - | | + + + + +### ResetCustomInitMessageTextToDefaultRequest + + + +| Field | Type | Description | Validation | +| ----- | ---- | ----------- | ----------- | +| language | string | - | string.min_len: 1
string.max_len: 200
| + + + + +### ResetCustomInitMessageTextToDefaultResponse + + + +| Field | Type | Description | Validation | +| ----- | ---- | ----------- | ----------- | +| details | zitadel.v1.ObjectDetails | - | | + + + + ### ResetCustomLoginTextsToDefaultRequest @@ -2430,6 +2552,94 @@ This is an empty request +### ResetCustomPasswordResetMessageTextToDefaultRequest + + + +| Field | Type | Description | Validation | +| ----- | ---- | ----------- | ----------- | +| language | string | - | string.min_len: 1
string.max_len: 200
| + + + + +### ResetCustomPasswordResetMessageTextToDefaultResponse + + + +| Field | Type | Description | Validation | +| ----- | ---- | ----------- | ----------- | +| details | zitadel.v1.ObjectDetails | - | | + + + + +### ResetCustomPasswordlessRegistrationMessageTextToDefaultRequest + + + +| Field | Type | Description | Validation | +| ----- | ---- | ----------- | ----------- | +| language | string | - | string.min_len: 1
string.max_len: 200
| + + + + +### ResetCustomPasswordlessRegistrationMessageTextToDefaultResponse + + + +| Field | Type | Description | Validation | +| ----- | ---- | ----------- | ----------- | +| details | zitadel.v1.ObjectDetails | - | | + + + + +### ResetCustomVerifyEmailMessageTextToDefaultRequest + + + +| Field | Type | Description | Validation | +| ----- | ---- | ----------- | ----------- | +| language | string | - | string.min_len: 1
string.max_len: 200
| + + + + +### ResetCustomVerifyEmailMessageTextToDefaultResponse + + + +| Field | Type | Description | Validation | +| ----- | ---- | ----------- | ----------- | +| details | zitadel.v1.ObjectDetails | - | | + + + + +### ResetCustomVerifyPhoneMessageTextToDefaultRequest + + + +| Field | Type | Description | Validation | +| ----- | ---- | ----------- | ----------- | +| language | string | - | string.min_len: 1
string.max_len: 200
| + + + + +### ResetCustomVerifyPhoneMessageTextToDefaultResponse + + + +| Field | Type | Description | Validation | +| ----- | ---- | ----------- | ----------- | +| details | zitadel.v1.ObjectDetails | - | | + + + + ### ResetOrgFeaturesRequest diff --git a/internal/api/grpc/admin/custom_text.go b/internal/api/grpc/admin/custom_text.go index 5df7dc9a93..7c53d0cbaf 100644 --- a/internal/api/grpc/admin/custom_text.go +++ b/internal/api/grpc/admin/custom_text.go @@ -45,6 +45,20 @@ func (s *Server) SetDefaultInitMessageText(ctx context.Context, req *admin_pb.Se }, nil } +func (s *Server) ResetCustomInitMessageTextToDefault(ctx context.Context, req *admin_pb.ResetCustomInitMessageTextToDefaultRequest) (*admin_pb.ResetCustomInitMessageTextToDefaultResponse, error) { + result, err := s.command.RemoveIAMMessageTexts(ctx, domain.InitCodeMessageType, language.Make(req.Language)) + if err != nil { + return nil, err + } + return &admin_pb.ResetCustomInitMessageTextToDefaultResponse{ + Details: object.ChangeToDetailsPb( + result.Sequence, + result.EventDate, + result.ResourceOwner, + ), + }, nil +} + func (s *Server) GetDefaultPasswordResetMessageText(ctx context.Context, req *admin_pb.GetDefaultPasswordResetMessageTextRequest) (*admin_pb.GetDefaultPasswordResetMessageTextResponse, error) { msg, err := s.query.DefaultMessageTextByTypeAndLanguageFromFileSystem(domain.PasswordResetMessageType, req.Language) if err != nil { @@ -79,6 +93,20 @@ func (s *Server) SetDefaultPasswordResetMessageText(ctx context.Context, req *ad }, nil } +func (s *Server) ResetCustomPasswordResetMessageTextToDefault(ctx context.Context, req *admin_pb.ResetCustomPasswordResetMessageTextToDefaultRequest) (*admin_pb.ResetCustomPasswordResetMessageTextToDefaultResponse, error) { + result, err := s.command.RemoveIAMMessageTexts(ctx, domain.PasswordResetMessageType, language.Make(req.Language)) + if err != nil { + return nil, err + } + return &admin_pb.ResetCustomPasswordResetMessageTextToDefaultResponse{ + Details: object.ChangeToDetailsPb( + result.Sequence, + result.EventDate, + result.ResourceOwner, + ), + }, nil +} + func (s *Server) GetDefaultVerifyEmailMessageText(ctx context.Context, req *admin_pb.GetDefaultVerifyEmailMessageTextRequest) (*admin_pb.GetDefaultVerifyEmailMessageTextResponse, error) { msg, err := s.query.DefaultMessageTextByTypeAndLanguageFromFileSystem(domain.VerifyEmailMessageType, req.Language) if err != nil { @@ -113,6 +141,20 @@ func (s *Server) SetDefaultVerifyEmailMessageText(ctx context.Context, req *admi }, nil } +func (s *Server) ResetCustomVerifyEmailMessageTextToDefault(ctx context.Context, req *admin_pb.ResetCustomVerifyEmailMessageTextToDefaultRequest) (*admin_pb.ResetCustomVerifyEmailMessageTextToDefaultResponse, error) { + result, err := s.command.RemoveIAMMessageTexts(ctx, domain.VerifyEmailMessageType, language.Make(req.Language)) + if err != nil { + return nil, err + } + return &admin_pb.ResetCustomVerifyEmailMessageTextToDefaultResponse{ + Details: object.ChangeToDetailsPb( + result.Sequence, + result.EventDate, + result.ResourceOwner, + ), + }, nil +} + func (s *Server) GetDefaultVerifyPhoneMessageText(ctx context.Context, req *admin_pb.GetDefaultVerifyPhoneMessageTextRequest) (*admin_pb.GetDefaultVerifyPhoneMessageTextResponse, error) { msg, err := s.query.DefaultMessageTextByTypeAndLanguageFromFileSystem(domain.VerifyPhoneMessageType, req.Language) if err != nil { @@ -147,6 +189,20 @@ func (s *Server) SetDefaultVerifyPhoneMessageText(ctx context.Context, req *admi }, nil } +func (s *Server) ResetCustomVerifyPhoneMessageTextToDefault(ctx context.Context, req *admin_pb.ResetCustomVerifyPhoneMessageTextToDefaultRequest) (*admin_pb.ResetCustomVerifyPhoneMessageTextToDefaultResponse, error) { + result, err := s.command.RemoveIAMMessageTexts(ctx, domain.VerifyPhoneMessageType, language.Make(req.Language)) + if err != nil { + return nil, err + } + return &admin_pb.ResetCustomVerifyPhoneMessageTextToDefaultResponse{ + Details: object.ChangeToDetailsPb( + result.Sequence, + result.EventDate, + result.ResourceOwner, + ), + }, nil +} + func (s *Server) GetDefaultDomainClaimedMessageText(ctx context.Context, req *admin_pb.GetDefaultDomainClaimedMessageTextRequest) (*admin_pb.GetDefaultDomainClaimedMessageTextResponse, error) { msg, err := s.query.DefaultMessageTextByTypeAndLanguageFromFileSystem(domain.DomainClaimedMessageType, req.Language) if err != nil { @@ -181,6 +237,20 @@ func (s *Server) SetDefaultDomainClaimedMessageText(ctx context.Context, req *ad }, nil } +func (s *Server) ResetCustomDomainClaimedMessageTextToDefault(ctx context.Context, req *admin_pb.ResetCustomDomainClaimedMessageTextToDefaultRequest) (*admin_pb.ResetCustomDomainClaimedMessageTextToDefaultResponse, error) { + result, err := s.command.RemoveIAMMessageTexts(ctx, domain.DomainClaimedMessageType, language.Make(req.Language)) + if err != nil { + return nil, err + } + return &admin_pb.ResetCustomDomainClaimedMessageTextToDefaultResponse{ + Details: object.ChangeToDetailsPb( + result.Sequence, + result.EventDate, + result.ResourceOwner, + ), + }, nil +} + func (s *Server) GetDefaultPasswordlessRegistrationMessageText(ctx context.Context, req *admin_pb.GetDefaultPasswordlessRegistrationMessageTextRequest) (*admin_pb.GetDefaultPasswordlessRegistrationMessageTextResponse, error) { msg, err := s.query.DefaultMessageTextByTypeAndLanguageFromFileSystem(domain.PasswordlessRegistrationMessageType, req.Language) if err != nil { @@ -215,6 +285,20 @@ func (s *Server) SetDefaultPasswordlessRegistrationMessageText(ctx context.Conte }, nil } +func (s *Server) ResetCustomPasswordlessRegistrationMessageTextToDefault(ctx context.Context, req *admin_pb.ResetCustomPasswordlessRegistrationMessageTextToDefaultRequest) (*admin_pb.ResetCustomPasswordlessRegistrationMessageTextToDefaultResponse, error) { + result, err := s.command.RemoveIAMMessageTexts(ctx, domain.PasswordlessRegistrationMessageType, language.Make(req.Language)) + if err != nil { + return nil, err + } + return &admin_pb.ResetCustomPasswordlessRegistrationMessageTextToDefaultResponse{ + Details: object.ChangeToDetailsPb( + result.Sequence, + result.EventDate, + result.ResourceOwner, + ), + }, nil +} + func (s *Server) GetDefaultLoginTexts(ctx context.Context, req *admin_pb.GetDefaultLoginTextsRequest) (*admin_pb.GetDefaultLoginTextsResponse, error) { msg, err := s.query.GetDefaultLoginTexts(ctx, req.Language) if err != nil { diff --git a/internal/api/grpc/text/custom_text.go b/internal/api/grpc/text/custom_text.go index f9045112dd..a3675345d8 100644 --- a/internal/api/grpc/text/custom_text.go +++ b/internal/api/grpc/text/custom_text.go @@ -22,7 +22,7 @@ func ModelCustomMessageTextToPb(msg *query.MessageText) *text_pb.MessageCustomTe msg.ChangeDate, msg.AggregateID, ), - IsDefault: msg.AggregateID == domain.IAMID, + IsDefault: msg.IsDefault, } } diff --git a/internal/command/custom_message_text_model.go b/internal/command/custom_message_text_model.go index ac8c9f0863..893d4295cf 100644 --- a/internal/command/custom_message_text_model.go +++ b/internal/command/custom_message_text_model.go @@ -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 } } diff --git a/internal/command/iam_custom_message_text.go b/internal/command/iam_custom_message_text.go index 4d19e4038f..6d2722eab2 100644 --- a/internal/command/iam_custom_message_text.go +++ b/internal/command/iam_custom_message_text.go @@ -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) diff --git a/internal/command/iam_custom_message_text_model.go b/internal/command/iam_custom_message_text_model.go index 12782aa2df..f8596ca16e 100644 --- a/internal/command/iam_custom_message_text_model.go +++ b/internal/command/iam_custom_message_text_model.go @@ -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() } diff --git a/proto/zitadel/admin.proto b/proto/zitadel/admin.proto index 8a0628c932..a6b89d739f 100644 --- a/proto/zitadel/admin.proto +++ b/proto/zitadel/admin.proto @@ -1645,6 +1645,18 @@ service AdminService { }; } + // Removes the custom init message text of the system + // The default text from the translation file will trigger after + rpc ResetCustomInitMessageTextToDefault(ResetCustomInitMessageTextToDefaultRequest) returns (ResetCustomInitMessageTextToDefaultResponse) { + option (google.api.http) = { + delete: "/text/message/init/{language}" + }; + + option (zitadel.v1.auth_option) = { + permission: "iam.policy.delete" + }; + } + //Returns the default text for password reset message (translation file) rpc GetDefaultPasswordResetMessageText(GetDefaultPasswordResetMessageTextRequest) returns (GetDefaultPasswordResetMessageTextResponse) { option (google.api.http) = { @@ -1683,6 +1695,18 @@ service AdminService { } + // Removes the custom password reset message text of the system + // The default text from the translation file will trigger after + rpc ResetCustomPasswordResetMessageTextToDefault(ResetCustomPasswordResetMessageTextToDefaultRequest) returns (ResetCustomPasswordResetMessageTextToDefaultResponse) { + option (google.api.http) = { + delete: "/text/message/verifyemail/{language}" + }; + + option (zitadel.v1.auth_option) = { + permission: "iam.policy.delete" + }; + } + //Returns the default text for verify email message (translation files) rpc GetDefaultVerifyEmailMessageText(GetDefaultVerifyEmailMessageTextRequest) returns (GetDefaultVerifyEmailMessageTextResponse) { option (google.api.http) = { @@ -1720,6 +1744,18 @@ service AdminService { }; } + // Removes the custom verify email message text of the system + // The default text from the translation file will trigger after + rpc ResetCustomVerifyEmailMessageTextToDefault(ResetCustomVerifyEmailMessageTextToDefaultRequest) returns (ResetCustomVerifyEmailMessageTextToDefaultResponse) { + option (google.api.http) = { + delete: "/text/message/verifyemail/{language}" + }; + + option (zitadel.v1.auth_option) = { + permission: "iam.policy.delete" + }; + } + //Returns the default text for verify phone message (translation file) rpc GetDefaultVerifyPhoneMessageText(GetDefaultVerifyPhoneMessageTextRequest) returns (GetDefaultVerifyPhoneMessageTextResponse) { option (google.api.http) = { @@ -1757,6 +1793,18 @@ service AdminService { }; } + // Removes the custom verify phone text of the system + // The default text from the translation file will trigger after + rpc ResetCustomVerifyPhoneMessageTextToDefault(ResetCustomVerifyPhoneMessageTextToDefaultRequest) returns (ResetCustomVerifyPhoneMessageTextToDefaultResponse) { + option (google.api.http) = { + delete: "/text/message/verifyphone/{language}" + }; + + option (zitadel.v1.auth_option) = { + permission: "iam.policy.delete" + }; + } + //Returns the default text for domain claimed message (translation file) rpc GetDefaultDomainClaimedMessageText(GetDefaultDomainClaimedMessageTextRequest) returns (GetDefaultDomainClaimedMessageTextResponse) { option (google.api.http) = { @@ -1794,6 +1842,18 @@ service AdminService { }; } + // Removes the custom domain claimed message text of the system + // The default text from the translation file will trigger after + rpc ResetCustomDomainClaimedMessageTextToDefault(ResetCustomDomainClaimedMessageTextToDefaultRequest) returns (ResetCustomDomainClaimedMessageTextToDefaultResponse) { + option (google.api.http) = { + delete: "/text/message/domainclaimed/{language}" + }; + + option (zitadel.v1.auth_option) = { + permission: "iam.policy.delete" + }; + } + //Returns the default text for passwordless registration message (translation file) rpc GetDefaultPasswordlessRegistrationMessageText(GetDefaultPasswordlessRegistrationMessageTextRequest) returns (GetDefaultPasswordlessRegistrationMessageTextResponse) { option (google.api.http) = { @@ -1831,6 +1891,18 @@ service AdminService { }; } + // Removes the custom passwordless link message text of the system + // The default text from the translation file will trigger after + rpc ResetCustomPasswordlessRegistrationMessageTextToDefault(ResetCustomPasswordlessRegistrationMessageTextToDefaultRequest) returns (ResetCustomPasswordlessRegistrationMessageTextToDefaultResponse) { + option (google.api.http) = { + delete: "/text/message/passwordless_registration/{language}" + }; + + option (zitadel.v1.auth_option) = { + permission: "policy.delete" + }; + } + //Returns the default custom texts for login ui (translation file) rpc GetDefaultLoginTexts(GetDefaultLoginTextsRequest) returns (GetDefaultLoginTextsResponse) { option (google.api.http) = { @@ -3377,6 +3449,14 @@ message SetDefaultInitMessageTextResponse { zitadel.v1.ObjectDetails details = 1; } +message ResetCustomInitMessageTextToDefaultRequest { + string language = 1 [(validate.rules).string = {min_len: 1, max_len: 200}]; +} + +message ResetCustomInitMessageTextToDefaultResponse { + zitadel.v1.ObjectDetails details = 1; +} + message GetDefaultPasswordResetMessageTextRequest { string language = 1 [(validate.rules).string = {min_len: 1, max_len: 200}]; } @@ -3413,6 +3493,14 @@ message SetDefaultPasswordResetMessageTextResponse { zitadel.v1.ObjectDetails details = 1; } +message ResetCustomPasswordResetMessageTextToDefaultRequest { + string language = 1 [(validate.rules).string = {min_len: 1, max_len: 200}]; +} + +message ResetCustomPasswordResetMessageTextToDefaultResponse { + zitadel.v1.ObjectDetails details = 1; +} + message GetDefaultVerifyEmailMessageTextRequest { string language = 1 [(validate.rules).string = {min_len: 1, max_len: 200}]; } @@ -3449,6 +3537,14 @@ message SetDefaultVerifyEmailMessageTextResponse { zitadel.v1.ObjectDetails details = 1; } +message ResetCustomVerifyEmailMessageTextToDefaultRequest { + string language = 1 [(validate.rules).string = {min_len: 1, max_len: 200}]; +} + +message ResetCustomVerifyEmailMessageTextToDefaultResponse { + zitadel.v1.ObjectDetails details = 1; +} + message GetDefaultVerifyPhoneMessageTextRequest { string language = 1 [(validate.rules).string = {min_len: 1, max_len: 200}]; } @@ -3485,6 +3581,14 @@ message SetDefaultVerifyPhoneMessageTextResponse { zitadel.v1.ObjectDetails details = 1; } +message ResetCustomVerifyPhoneMessageTextToDefaultRequest { + string language = 1 [(validate.rules).string = {min_len: 1, max_len: 200}]; +} + +message ResetCustomVerifyPhoneMessageTextToDefaultResponse { + zitadel.v1.ObjectDetails details = 1; +} + message GetDefaultDomainClaimedMessageTextRequest { string language = 1 [(validate.rules).string = {min_len: 1, max_len: 200}]; } @@ -3521,6 +3625,14 @@ message SetDefaultDomainClaimedMessageTextResponse { zitadel.v1.ObjectDetails details = 1; } +message ResetCustomDomainClaimedMessageTextToDefaultRequest { + string language = 1 [(validate.rules).string = {min_len: 1, max_len: 200}]; +} + +message ResetCustomDomainClaimedMessageTextToDefaultResponse { + zitadel.v1.ObjectDetails details = 1; +} + message GetDefaultPasswordlessRegistrationMessageTextRequest { string language = 1 [(validate.rules).string = {min_len: 1, max_len: 200}]; } @@ -3557,6 +3669,14 @@ message SetDefaultPasswordlessRegistrationMessageTextResponse { zitadel.v1.ObjectDetails details = 1; } +message ResetCustomPasswordlessRegistrationMessageTextToDefaultRequest { + string language = 1 [(validate.rules).string = {min_len: 1, max_len: 200}]; +} + +message ResetCustomPasswordlessRegistrationMessageTextToDefaultResponse { + zitadel.v1.ObjectDetails details = 1; +} + message GetDefaultLoginTextsRequest { string language = 1 [(validate.rules).string = {min_len: 1, max_len: 200}]; }