From 339fbd4f0c53d85ad028dbcbe7ca592a3d31358e Mon Sep 17 00:00:00 2001 From: Stefan Benz <46600784+stebenz@users.noreply.github.com> Date: Tue, 20 Dec 2022 08:26:48 +0000 Subject: [PATCH] fix: change back to login button and add to register option screen (#4847) * fix: change back to login button and add to register option screen * fix: change back to login button and add logic for remove and set events Co-authored-by: Fabi <38692350+hifabienne@users.noreply.github.com> --- .../modules/policies/login-texts/helper.ts | 1 + docs/docs/apis/proto/text.md | 1 + internal/api/grpc/text/custom_text.go | 2 + internal/api/ui/login/static/i18n/de.yaml | 3 +- internal/api/ui/login/static/i18n/en.yaml | 3 +- internal/api/ui/login/static/i18n/fr.yaml | 3 +- internal/api/ui/login/static/i18n/it.yaml | 3 +- internal/api/ui/login/static/i18n/zh.yaml | 3 +- .../static/templates/register_option.html | 6 +++ internal/command/custom_login_text.go | 4 ++ internal/command/custom_login_text_model.go | 9 +++++ .../instance_custom_login_text_test.go | 38 +++++++++++++++++++ internal/domain/custom_login_text.go | 3 ++ proto/zitadel/text.proto | 1 + 14 files changed, 75 insertions(+), 5 deletions(-) diff --git a/console/src/app/modules/policies/login-texts/helper.ts b/console/src/app/modules/policies/login-texts/helper.ts index 6fd03305a8..18b395bbaa 100644 --- a/console/src/app/modules/policies/login-texts/helper.ts +++ b/console/src/app/modules/policies/login-texts/helper.ts @@ -229,6 +229,7 @@ export function mapRequestValues(map: Partial, req: Req): Req { r21.setExternalLoginDescription(map.registrationOptionText?.externalLoginDescription ?? ''); r21.setTitle(map.registrationOptionText?.title ?? ''); r21.setUserNameButtonText(map.registrationOptionText?.userNameButtonText ?? ''); + r21.setLoginButtonText(map.registrationOptionText?.loginButtonText ?? ''); req.setRegistrationOptionText(r21); const r22 = new RegistrationOrgScreenText(); diff --git a/docs/docs/apis/proto/text.md b/docs/docs/apis/proto/text.md index cfd74d04aa..926a790ebc 100644 --- a/docs/docs/apis/proto/text.md +++ b/docs/docs/apis/proto/text.md @@ -486,6 +486,7 @@ title: zitadel/text.proto | description | string | - | string.max_len: 500
| | user_name_button_text | string | - | string.max_len: 200
| | external_login_description | string | - | string.max_len: 500
| +| login_button_text | string | - | string.max_len: 200
| diff --git a/internal/api/grpc/text/custom_text.go b/internal/api/grpc/text/custom_text.go index f57d6c0394..4744e5eb1b 100644 --- a/internal/api/grpc/text/custom_text.go +++ b/internal/api/grpc/text/custom_text.go @@ -345,6 +345,7 @@ func RegistrationOptionScreenTextToPb(text domain.RegistrationOptionScreenText) Description: text.Description, UserNameButtonText: text.RegisterUsernamePasswordButtonText, ExternalLoginDescription: text.ExternalLoginDescription, + LoginButtonText: text.LoginButtonText, } } @@ -811,6 +812,7 @@ func RegistrationOptionScreenTextPbToDomain(text *text_pb.RegistrationOptionScre Description: text.Description, RegisterUsernamePasswordButtonText: text.UserNameButtonText, ExternalLoginDescription: text.ExternalLoginDescription, + LoginButtonText: text.LoginButtonText, } } diff --git a/internal/api/ui/login/static/i18n/de.yaml b/internal/api/ui/login/static/i18n/de.yaml index 545627d48d..e829b39cd0 100644 --- a/internal/api/ui/login/static/i18n/de.yaml +++ b/internal/api/ui/login/static/i18n/de.yaml @@ -195,6 +195,7 @@ RegisterOption: Description: Wähle aus wie du dich registrieren möchtest. RegisterUsernamePasswordButtonText: Mit Benutzername Passwort ExternalLoginDescription: oder registriere dich mit einem externen Benutzer + LoginButtonText: login RegistrationUser: Title: Registration @@ -222,7 +223,7 @@ RegistrationUser: TosConfirmAnd: und die PrivacyLinkText: Datenschutzerklärung ExternalLogin: oder registriere dich mit einem externen Benutzer - BackButtonText: zurück + BackButtonText: login NextButtonText: weiter ExternalRegistrationUserOverview: diff --git a/internal/api/ui/login/static/i18n/en.yaml b/internal/api/ui/login/static/i18n/en.yaml index 183a51595d..9a9dcbd5af 100644 --- a/internal/api/ui/login/static/i18n/en.yaml +++ b/internal/api/ui/login/static/i18n/en.yaml @@ -195,6 +195,7 @@ RegisterOption: Description: Choose how you'd like to register RegisterUsernamePasswordButtonText: With username password ExternalLoginDescription: or register with an external user + LoginButtonText: login RegistrationUser: Title: Registration @@ -222,7 +223,7 @@ RegistrationUser: TosConfirmAnd: and the PrivacyLinkText: privacy policy ExternalLogin: or register with an external user - BackButtonText: back + BackButtonText: login NextButtonText: next ExternalRegistrationUserOverview: diff --git a/internal/api/ui/login/static/i18n/fr.yaml b/internal/api/ui/login/static/i18n/fr.yaml index 545f508337..e87d1eb58d 100644 --- a/internal/api/ui/login/static/i18n/fr.yaml +++ b/internal/api/ui/login/static/i18n/fr.yaml @@ -195,6 +195,7 @@ RegisterOption: Description: Choisissez comment vous souhaitez vous enregistrer RegisterUsernamePasswordButtonText: Avec nom d'utilisateur et mot de passe ExternalLoginDescription: ou s'enregistrer avec un utilisateur externe + LoginButtonText: connexion RegistrationUser: Title: Inscription @@ -222,7 +223,7 @@ RegistrationUser: TosConfirmAnd: et la PrivacyLinkText: politique de confidentialité ExternalLogin: ou m'inscrire avec un utilisateur externe - BackButtonText: retour + BackButtonText: connexion NextButtonText: suivant ExternalRegistrationUserOverview: diff --git a/internal/api/ui/login/static/i18n/it.yaml b/internal/api/ui/login/static/i18n/it.yaml index ee5b1cb57e..996f1cd175 100644 --- a/internal/api/ui/login/static/i18n/it.yaml +++ b/internal/api/ui/login/static/i18n/it.yaml @@ -195,6 +195,7 @@ RegisterOption: Description: Scegli come vuoi registrarti RegisterUsernamePasswordButtonText: Con nome utente e password ExternalLoginDescription: o registrarsi con un utente esterno + LoginButtonText: Accedi RegistrationUser: Title: Registrazione @@ -222,7 +223,7 @@ RegistrationUser: TosConfirmAnd: e PrivacyLinkText: l'informativa sulla privacy ExternalLogin: o registrati con un utente esterno - BackButtonText: indietro + BackButtonText: Accedi NextButtonText: Avanti ExternalRegistrationUserOverview: diff --git a/internal/api/ui/login/static/i18n/zh.yaml b/internal/api/ui/login/static/i18n/zh.yaml index e1922a055b..db47687eab 100644 --- a/internal/api/ui/login/static/i18n/zh.yaml +++ b/internal/api/ui/login/static/i18n/zh.yaml @@ -195,6 +195,7 @@ RegisterOption: Description: 选择您的注册方式 RegisterUsernamePasswordButtonText: 使用用户名密码 ExternalLoginDescription: 或使用外部身份提供者 + LoginButtonText: 登录 RegistrationUser: Title: 注册 @@ -222,7 +223,7 @@ RegistrationUser: TosConfirmAnd: 和 PrivacyLinkText: 隐私政策 ExternalLogin: 使用外部身份提供者注册 - BackButtonText: 返回 + BackButtonText: 登录 NextButtonText: 继续 ExternalRegistrationUserOverview: diff --git a/internal/api/ui/login/static/templates/register_option.html b/internal/api/ui/login/static/templates/register_option.html index 7e247af416..df7d6b4cc4 100644 --- a/internal/api/ui/login/static/templates/register_option.html +++ b/internal/api/ui/login/static/templates/register_option.html @@ -36,6 +36,12 @@ {{template "error-message" .}} + +
+ + {{t "RegisterOption.LoginButtonText"}} + +
diff --git a/internal/command/custom_login_text.go b/internal/command/custom_login_text.go index e433e2c5f0..8e46bbfb22 100644 --- a/internal/command/custom_login_text.go +++ b/internal/command/custom_login_text.go @@ -761,6 +761,10 @@ func (c *Commands) createRegistrationOptionEvents(ctx context.Context, agg *even if event != nil { events = append(events, event) } + event = c.createCustomLoginTextEvent(ctx, agg, domain.LoginKeyRegistrationOptionLoginButtonText, existingText.RegistrationOptionLoginButtonText, text.RegisterOption.LoginButtonText, text.Language, defaultText) + if event != nil { + events = append(events, event) + } return events } diff --git a/internal/command/custom_login_text_model.go b/internal/command/custom_login_text_model.go index 75d2224c45..8b694a5cc3 100644 --- a/internal/command/custom_login_text_model.go +++ b/internal/command/custom_login_text_model.go @@ -204,6 +204,7 @@ type CustomLoginTextReadModel struct { RegistrationOptionDescription string RegistrationOptionUserNameButtonText string RegistrationOptionExternalLoginDescription string + RegistrationOptionLoginButtonText string RegistrationUserTitle string RegistrationUserDescription string @@ -1878,6 +1879,10 @@ func (wm *CustomLoginTextReadModel) handleRegistrationOptionScreenSetEvent(e *po wm.RegistrationOptionExternalLoginDescription = e.Text return } + if e.Key == domain.LoginKeyRegistrationOptionLoginButtonText { + wm.RegistrationOptionLoginButtonText = e.Text + return + } } func (wm *CustomLoginTextReadModel) handleRegistrationOptionScreenRemoveEvent(e *policy.CustomTextRemovedEvent) { @@ -1897,6 +1902,10 @@ func (wm *CustomLoginTextReadModel) handleRegistrationOptionScreenRemoveEvent(e wm.RegistrationOptionExternalLoginDescription = "" return } + if e.Key == domain.LoginKeyRegistrationOptionLoginButtonText { + wm.RegistrationOptionLoginButtonText = "" + return + } } func (wm *CustomLoginTextReadModel) handleRegistrationUserScreenSetEvent(e *policy.CustomTextSetEvent) { diff --git a/internal/command/instance_custom_login_text_test.go b/internal/command/instance_custom_login_text_test.go index 4b97283e86..74f8cfcc49 100644 --- a/internal/command/instance_custom_login_text_test.go +++ b/internal/command/instance_custom_login_text_test.go @@ -932,6 +932,12 @@ func TestCommandSide_SetCustomIAMLoginText(t *testing.T) { &instance.NewAggregate("INSTANCE").Aggregate, domain.LoginCustomText, domain.LoginKeyRegistrationOptionExternalLoginDescription, "ExternalLoginDescription", language.English, ), ), + eventFromEventPusherWithInstanceID( + "INSTANCE", + instance.NewCustomTextSetEvent(context.Background(), + &instance.NewAggregate("INSTANCE").Aggregate, domain.LoginCustomText, domain.LoginKeyRegistrationOptionLoginButtonText, "LoginButtonText", language.English, + ), + ), eventFromEventPusherWithInstanceID( "INSTANCE", instance.NewCustomTextSetEvent(context.Background(), @@ -1569,6 +1575,7 @@ func TestCommandSide_SetCustomIAMLoginText(t *testing.T) { Description: "Description", RegisterUsernamePasswordButtonText: "RegisterUsernamePasswordButtonText", ExternalLoginDescription: "ExternalLoginDescription", + LoginButtonText: "LoginButtonText", }, RegistrationUser: domain.RegistrationUserScreenText{ Title: "Title", @@ -2548,6 +2555,12 @@ func TestCommandSide_SetCustomIAMLoginText(t *testing.T) { &instance.NewAggregate("INSTANCE").Aggregate, domain.LoginCustomText, domain.LoginKeyRegistrationOptionExternalLoginDescription, "ExternalLoginDescription", language.English, ), ), + eventFromEventPusherWithInstanceID( + "INSTANCE", + instance.NewCustomTextSetEvent(context.Background(), + &instance.NewAggregate("INSTANCE").Aggregate, domain.LoginCustomText, domain.LoginKeyRegistrationOptionLoginButtonText, "LoginButtonText", language.English, + ), + ), eventFromEventPusherWithInstanceID( "INSTANCE", instance.NewCustomTextSetEvent(context.Background(), @@ -3859,6 +3872,12 @@ func TestCommandSide_SetCustomIAMLoginText(t *testing.T) { &instance.NewAggregate("INSTANCE").Aggregate, domain.LoginCustomText, domain.LoginKeyRegistrationOptionExternalLoginDescription, language.English, ), ), + eventFromEventPusherWithInstanceID( + "INSTANCE", + instance.NewCustomTextRemovedEvent(context.Background(), + &instance.NewAggregate("INSTANCE").Aggregate, domain.LoginCustomText, domain.LoginKeyRegistrationOptionLoginButtonText, language.English, + ), + ), eventFromEventPusherWithInstanceID( "INSTANCE", instance.NewCustomTextRemovedEvent(context.Background(), @@ -5223,6 +5242,12 @@ func TestCommandSide_SetCustomIAMLoginText(t *testing.T) { &instance.NewAggregate("INSTANCE").Aggregate, domain.LoginCustomText, domain.LoginKeyRegistrationOptionExternalLoginDescription, "ExternalLoginDescription", language.English, ), ), + eventFromEventPusherWithInstanceID( + "INSTANCE", + instance.NewCustomTextSetEvent(context.Background(), + &instance.NewAggregate("INSTANCE").Aggregate, domain.LoginCustomText, domain.LoginKeyRegistrationOptionLoginButtonText, "LoginButtonText", language.English, + ), + ), eventFromEventPusherWithInstanceID( "INSTANCE", instance.NewCustomTextSetEvent(context.Background(), @@ -6532,6 +6557,12 @@ func TestCommandSide_SetCustomIAMLoginText(t *testing.T) { &instance.NewAggregate("INSTANCE").Aggregate, domain.LoginCustomText, domain.LoginKeyRegistrationOptionExternalLoginDescription, language.English, ), ), + eventFromEventPusherWithInstanceID( + "INSTANCE", + instance.NewCustomTextRemovedEvent(context.Background(), + &instance.NewAggregate("INSTANCE").Aggregate, domain.LoginCustomText, domain.LoginKeyRegistrationOptionLoginButtonText, language.English, + ), + ), eventFromEventPusherWithInstanceID( "INSTANCE", instance.NewCustomTextRemovedEvent(context.Background(), @@ -7844,6 +7875,12 @@ func TestCommandSide_SetCustomIAMLoginText(t *testing.T) { &instance.NewAggregate("INSTANCE").Aggregate, domain.LoginCustomText, domain.LoginKeyRegistrationOptionExternalLoginDescription, "ExternalLoginDescription", language.English, ), ), + eventFromEventPusherWithInstanceID( + "INSTANCE", + instance.NewCustomTextSetEvent(context.Background(), + &instance.NewAggregate("INSTANCE").Aggregate, domain.LoginCustomText, domain.LoginKeyRegistrationOptionLoginButtonText, "LoginButtonText", language.English, + ), + ), eventFromEventPusherWithInstanceID( "INSTANCE", instance.NewCustomTextSetEvent(context.Background(), @@ -8481,6 +8518,7 @@ func TestCommandSide_SetCustomIAMLoginText(t *testing.T) { Description: "Description", RegisterUsernamePasswordButtonText: "RegisterUsernamePasswordButtonText", ExternalLoginDescription: "ExternalLoginDescription", + LoginButtonText: "LoginButtonText", }, RegistrationUser: domain.RegistrationUserScreenText{ Title: "Title", diff --git a/internal/domain/custom_login_text.go b/internal/domain/custom_login_text.go index 258c704f16..e31a1ac4cc 100644 --- a/internal/domain/custom_login_text.go +++ b/internal/domain/custom_login_text.go @@ -206,6 +206,7 @@ const ( LoginKeyRegistrationOptionDescription = LoginKeyRegistrationOption + "Description" LoginKeyRegistrationOptionUserNameButtonText = LoginKeyRegistrationOption + "RegisterUsernamePasswordButtonText" LoginKeyRegistrationOptionExternalLoginDescription = LoginKeyRegistrationOption + "ExternalLoginDescription" + LoginKeyRegistrationOptionLoginButtonText = LoginKeyRegistrationOption + "LoginButtonText" LoginKeyRegistrationUser = "RegistrationUser." LoginKeyRegistrationUserTitle = LoginKeyRegistrationUser + "Title" @@ -261,6 +262,7 @@ const ( LoginKeyRegisterOrgTosConfirmAnd = LoginKeyRegistrationOrg + "TosConfirmAnd" LoginKeyRegisterOrgPrivacyLinkText = LoginKeyRegistrationOrg + "PrivacyLinkText" LoginKeyRegisterOrgSaveButtonText = LoginKeyRegistrationOrg + "SaveButtonText" + LoginKeyRegisterOrgBackButtonText = LoginKeyRegistrationOrg + "BackButtonText" LoginKeyLinkingUserDone = "LinkingUsersDone." LoginKeyLinkingUserDoneTitle = LoginKeyLinkingUserDone + "Title" @@ -540,6 +542,7 @@ type RegistrationOptionScreenText struct { Description string RegisterUsernamePasswordButtonText string ExternalLoginDescription string + LoginButtonText string } type RegistrationUserScreenText struct { diff --git a/proto/zitadel/text.proto b/proto/zitadel/text.proto index 52464422ac..0c835c862e 100644 --- a/proto/zitadel/text.proto +++ b/proto/zitadel/text.proto @@ -283,6 +283,7 @@ message RegistrationOptionScreenText { string description = 2 [(validate.rules).string = {max_len: 500}]; string user_name_button_text = 3 [(validate.rules).string = {max_len: 200}]; string external_login_description = 4 [(validate.rules).string = {max_len: 500}]; + string login_button_text = 5 [(validate.rules).string = {max_len: 200}]; } message RegistrationUserScreenText {