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}];
}