mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 18:17:35 +00:00
feat: Custom text login (#1925)
* feat: default custom message text * feat: org custom message text * feat: org custom message text * feat: custom messages query side * feat: default messages * feat: message text user fields * feat: check for inactive user * feat: fix send password reset * feat: fix custom org text * feat: add variables to docs * feat: custom text tests * feat: fix notifications * feat: add custom text feature * feat: add custom text feature * feat: feature in custom message texts * feat: add custom text feature in frontend * feat: merge main * feat: feature tests * feat: change phone message in setup * fix: remove unused code, add event translation * fix: merge main and fix problems * fix: english translation file * fix: migration versions * fix: setup * fix: custom login text * feat: add all possible custom texts for login * feat: iam login texts * feat: org login texts * feat: protos * fix: custom text in admin api * fix: add success login text * fix: docs * fix: add custom login texts to management api * fix: add sub messages to custom login texts * fix: setup custom texts * feat: get org login texts * feat: get org login texts * feat: handler in adminapi * feat: handlers in auth and admin * feat: render login texts * feat: custom login text * feat: add all login text keys * feat: handle correct login texts * feat: custom login texts in command side * feat: custom login texts in command side * feat: fix yaml file * feat: merge master and add confirmation text * feat: fix html * feat: read default login texts * feat: get default text files * feat: get custom texts org * feat: tests * feat: change translator handling * fix translator from authReq * feat: change h1 on login screens * feat: add custom login text for remove * feat: add custom login text for remove * feat: cache translation files * feat: cache translation files * feat: zitadel user in env var * feat: add registration user description * feat: better func naming * feat: tests * feat: add mutex to read file * feat: add mutex to read file * fix mutex for accessing translation map * fix: translation key Co-authored-by: Livio Amstutz <livio.a@gmail.com>
This commit is contained in:
@@ -1641,6 +1641,41 @@ service AdminService {
|
||||
};
|
||||
}
|
||||
|
||||
//Returns the default custom texts for login ui
|
||||
rpc GetDefaultLoginTexts(GetDefaultLoginTextsRequest) returns (GetDefaultLoginTextsResponse) {
|
||||
option (google.api.http) = {
|
||||
get: "/text/default/login/{language}";
|
||||
};
|
||||
|
||||
option (zitadel.v1.auth_option) = {
|
||||
permission: "iam.policy.read";
|
||||
};
|
||||
}
|
||||
|
||||
//Returns the custom texts for login ui
|
||||
rpc GetCustomLoginTexts(GetCustomLoginTextsRequest) returns (GetCustomLoginTextsResponse) {
|
||||
option (google.api.http) = {
|
||||
get: "/text/login/{language}";
|
||||
};
|
||||
|
||||
option (zitadel.v1.auth_option) = {
|
||||
permission: "iam.policy.read";
|
||||
};
|
||||
}
|
||||
|
||||
//Sets the custom text for login ui
|
||||
//it impacts all organisations without customized login ui texts
|
||||
rpc SetCustomLoginText(SetCustomLoginTextsRequest) returns (SetCustomLoginTextsResponse) {
|
||||
option (google.api.http) = {
|
||||
put: "/text/login/{language}";
|
||||
body: "*";
|
||||
};
|
||||
|
||||
option (zitadel.v1.auth_option) = {
|
||||
permission: "iam.policy.write";
|
||||
};
|
||||
}
|
||||
|
||||
//Returns the IAM roles visible for the requested user
|
||||
rpc ListIAMMemberRoles(ListIAMMemberRolesRequest) returns (ListIAMMemberRolesResponse) {
|
||||
option (google.api.http) = {
|
||||
@@ -3108,6 +3143,65 @@ message SetDefaultDomainClaimedMessageTextResponse {
|
||||
zitadel.v1.ObjectDetails details = 1;
|
||||
}
|
||||
|
||||
message GetDefaultLoginTextsRequest {
|
||||
string language = 1 [(validate.rules).string = {min_len: 1, max_len: 200}];
|
||||
}
|
||||
|
||||
message GetDefaultLoginTextsResponse {
|
||||
zitadel.text.v1.LoginCustomText custom_text = 1;
|
||||
}
|
||||
|
||||
message GetCustomLoginTextsRequest {
|
||||
string language = 1 [(validate.rules).string = {min_len: 1, max_len: 200}];
|
||||
}
|
||||
|
||||
message GetCustomLoginTextsResponse {
|
||||
zitadel.text.v1.LoginCustomText custom_text = 1;
|
||||
}
|
||||
|
||||
message SetCustomLoginTextsRequest {
|
||||
string language = 1 [
|
||||
(validate.rules).string = {min_len: 1, max_len: 200},
|
||||
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||
example: "\"de\""
|
||||
}
|
||||
];
|
||||
zitadel.text.v1.SelectAccountScreenText select_account_text = 2;
|
||||
zitadel.text.v1.LoginScreenText login_text = 3;
|
||||
zitadel.text.v1.PasswordScreenText password_text = 4;
|
||||
zitadel.text.v1.UsernameChangeScreenText username_change_text = 5;
|
||||
zitadel.text.v1.UsernameChangeDoneScreenText username_change_done_text = 6;
|
||||
zitadel.text.v1.InitPasswordScreenText init_password_text = 7;
|
||||
zitadel.text.v1.InitPasswordDoneScreenText init_password_done_text = 8;
|
||||
zitadel.text.v1.EmailVerificationScreenText email_verification_text = 9;
|
||||
zitadel.text.v1.EmailVerificationDoneScreenText email_verification_done_text = 10;
|
||||
zitadel.text.v1.InitializeUserScreenText initialize_user_text = 11;
|
||||
zitadel.text.v1.InitializeUserDoneScreenText initialize_done_text = 12;
|
||||
zitadel.text.v1.InitMFAPromptScreenText init_mfa_prompt_text = 13;
|
||||
zitadel.text.v1.InitMFAOTPScreenText init_mfa_otp_text = 14;
|
||||
zitadel.text.v1.InitMFAU2FScreenText init_mfa_u2f_text = 15;
|
||||
zitadel.text.v1.InitMFADoneScreenText init_mfa_done_text = 16;
|
||||
zitadel.text.v1.MFAProvidersText mfa_providers_text = 17;
|
||||
zitadel.text.v1.VerifyMFAOTPScreenText verify_mfa_otp_text = 18;
|
||||
zitadel.text.v1.VerifyMFAU2FScreenText verify_mfa_u2f_text = 19;
|
||||
zitadel.text.v1.PasswordlessScreenText passwordless_text = 20;
|
||||
zitadel.text.v1.PasswordChangeScreenText password_change_text = 21;
|
||||
zitadel.text.v1.PasswordChangeDoneScreenText password_change_done_text = 22;
|
||||
zitadel.text.v1.PasswordResetDoneScreenText password_reset_done_text = 23;
|
||||
zitadel.text.v1.RegistrationOptionScreenText registration_option_text = 24;
|
||||
zitadel.text.v1.RegistrationUserScreenText registration_user_text = 25;
|
||||
zitadel.text.v1.RegistrationOrgScreenText registration_org_text = 26;
|
||||
zitadel.text.v1.LinkingUserDoneScreenText linking_user_done_text = 27;
|
||||
zitadel.text.v1.ExternalUserNotFoundScreenText external_user_not_found_text = 28;
|
||||
zitadel.text.v1.SuccessLoginScreenText success_login_text = 29;
|
||||
zitadel.text.v1.LogoutDoneScreenText logout_text = 30;
|
||||
zitadel.text.v1.FooterText footer_text = 31;
|
||||
}
|
||||
|
||||
message SetCustomLoginTextsResponse {
|
||||
zitadel.v1.ObjectDetails details = 1;
|
||||
}
|
||||
|
||||
message AddIAMMemberRequest {
|
||||
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = {
|
||||
json_schema: {
|
||||
|
@@ -2391,6 +2391,54 @@ service ManagementService {
|
||||
};
|
||||
}
|
||||
|
||||
//Returns the custom texts for login ui
|
||||
rpc GetCustomLoginTexts(GetCustomLoginTextsRequest) returns (GetCustomLoginTextsResponse) {
|
||||
option (google.api.http) = {
|
||||
get: "/text/login/{language}";
|
||||
};
|
||||
|
||||
option (zitadel.v1.auth_option) = {
|
||||
permission: "policy.read";
|
||||
};
|
||||
}
|
||||
|
||||
//Returns the custom texts for login ui
|
||||
rpc GetDefaultLoginTexts(GetDefaultLoginTextsRequest) returns (GetDefaultLoginTextsResponse) {
|
||||
option (google.api.http) = {
|
||||
get: "/text/default/login/{language}";
|
||||
};
|
||||
|
||||
option (zitadel.v1.auth_option) = {
|
||||
permission: "policy.read";
|
||||
};
|
||||
}
|
||||
|
||||
//Sets the default custom text for login ui
|
||||
//it impacts all organisations without customized login ui texts
|
||||
rpc SetCustomLoginText(SetCustomLoginTextsRequest) returns (SetCustomLoginTextsResponse) {
|
||||
option (google.api.http) = {
|
||||
put: "/text/login/{language}";
|
||||
body: "*";
|
||||
};
|
||||
|
||||
option (zitadel.v1.auth_option) = {
|
||||
permission: "policy.write";
|
||||
feature: "custom_text"
|
||||
};
|
||||
}
|
||||
|
||||
// Removes the custom login text of the organisation
|
||||
// The default text of the IAM will trigger after
|
||||
rpc ResetCustomLoginTextToDefault(ResetCustomLoginTextsToDefaultRequest) returns (ResetCustomLoginTextsToDefaultResponse) {
|
||||
option (google.api.http) = {
|
||||
delete: "/text/login/{language}"
|
||||
};
|
||||
|
||||
option (zitadel.v1.auth_option) = {
|
||||
permission: "policy.delete"
|
||||
};
|
||||
}
|
||||
|
||||
// Returns a identity provider configuration of the organisation
|
||||
rpc GetOrgIDPByID(GetOrgIDPByIDRequest) returns (GetOrgIDPByIDResponse) {
|
||||
option (google.api.http) = {
|
||||
@@ -4235,6 +4283,72 @@ message ResetCustomInitMessageTextToDefaultResponse {
|
||||
zitadel.v1.ObjectDetails details = 1;
|
||||
}
|
||||
|
||||
message GetDefaultLoginTextsRequest {
|
||||
string language = 1 [(validate.rules).string = {min_len: 1, max_len: 200}];
|
||||
}
|
||||
|
||||
message GetDefaultLoginTextsResponse {
|
||||
zitadel.text.v1.LoginCustomText custom_text = 1;
|
||||
}
|
||||
|
||||
message GetCustomLoginTextsRequest {
|
||||
string language = 1 [(validate.rules).string = {min_len: 1, max_len: 200}];
|
||||
}
|
||||
|
||||
message GetCustomLoginTextsResponse {
|
||||
zitadel.text.v1.LoginCustomText custom_text = 1;
|
||||
}
|
||||
|
||||
message SetCustomLoginTextsRequest {
|
||||
string language = 1 [
|
||||
(validate.rules).string = {min_len: 1, max_len: 200},
|
||||
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
|
||||
example: "\"de\""
|
||||
}
|
||||
];
|
||||
zitadel.text.v1.SelectAccountScreenText select_account_text = 2;
|
||||
zitadel.text.v1.LoginScreenText login_text = 3;
|
||||
zitadel.text.v1.PasswordScreenText password_text = 4;
|
||||
zitadel.text.v1.UsernameChangeScreenText username_change_text = 5;
|
||||
zitadel.text.v1.UsernameChangeDoneScreenText username_change_done_text = 6;
|
||||
zitadel.text.v1.InitPasswordScreenText init_password_text = 7;
|
||||
zitadel.text.v1.InitPasswordDoneScreenText init_password_done_text = 8;
|
||||
zitadel.text.v1.EmailVerificationScreenText email_verification_text = 9;
|
||||
zitadel.text.v1.EmailVerificationDoneScreenText email_verification_done_text = 10;
|
||||
zitadel.text.v1.InitializeUserScreenText initialize_user_text = 11;
|
||||
zitadel.text.v1.InitializeUserDoneScreenText initialize_done_text = 12;
|
||||
zitadel.text.v1.InitMFAPromptScreenText init_mfa_prompt_text = 13;
|
||||
zitadel.text.v1.InitMFAOTPScreenText init_mfa_otp_text = 14;
|
||||
zitadel.text.v1.InitMFAU2FScreenText init_mfa_u2f_text = 15;
|
||||
zitadel.text.v1.InitMFADoneScreenText init_mfa_done_text = 16;
|
||||
zitadel.text.v1.MFAProvidersText mfa_providers_text = 17;
|
||||
zitadel.text.v1.VerifyMFAOTPScreenText verify_mfa_otp_text = 18;
|
||||
zitadel.text.v1.VerifyMFAU2FScreenText verify_mfa_u2f_text = 19;
|
||||
zitadel.text.v1.PasswordlessScreenText passwordless_text = 20;
|
||||
zitadel.text.v1.PasswordChangeScreenText password_change_text = 21;
|
||||
zitadel.text.v1.PasswordChangeDoneScreenText password_change_done_text = 22;
|
||||
zitadel.text.v1.PasswordResetDoneScreenText password_reset_done_text = 23;
|
||||
zitadel.text.v1.RegistrationOptionScreenText registration_option_text = 24;
|
||||
zitadel.text.v1.RegistrationUserScreenText registration_user_text = 25;
|
||||
zitadel.text.v1.RegistrationOrgScreenText registration_org_text = 26;
|
||||
zitadel.text.v1.LinkingUserDoneScreenText linking_user_done_text = 27;
|
||||
zitadel.text.v1.ExternalUserNotFoundScreenText external_user_not_found_text = 28;
|
||||
zitadel.text.v1.SuccessLoginScreenText success_login_text = 29;
|
||||
zitadel.text.v1.LogoutDoneScreenText logout_text = 30;
|
||||
zitadel.text.v1.FooterText footer_text = 31;
|
||||
}
|
||||
|
||||
message SetCustomLoginTextsResponse {
|
||||
zitadel.v1.ObjectDetails details = 1;
|
||||
}
|
||||
message ResetCustomLoginTextsToDefaultRequest {
|
||||
string language = 1 [(validate.rules).string = {min_len: 1, max_len: 200}];
|
||||
}
|
||||
|
||||
message ResetCustomLoginTextsToDefaultResponse {
|
||||
zitadel.v1.ObjectDetails details = 1;
|
||||
}
|
||||
|
||||
message GetCustomPasswordResetMessageTextRequest {
|
||||
string language = 1 [(validate.rules).string = {min_len: 1, max_len: 200}];
|
||||
}
|
||||
|
@@ -2,6 +2,7 @@ syntax = "proto3";
|
||||
|
||||
import "zitadel/object.proto";
|
||||
import "protoc-gen-openapiv2/options/annotations.proto";
|
||||
import "validate/validate.proto";
|
||||
|
||||
package zitadel.text.v1;
|
||||
|
||||
@@ -45,3 +46,318 @@ message MessageCustomText {
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
message LoginCustomText {
|
||||
zitadel.v1.ObjectDetails details = 1;
|
||||
SelectAccountScreenText select_account_text = 2;
|
||||
LoginScreenText login_text = 3;
|
||||
PasswordScreenText password_text = 4;
|
||||
UsernameChangeScreenText username_change_text = 5;
|
||||
UsernameChangeDoneScreenText username_change_done_text = 6;
|
||||
InitPasswordScreenText init_password_text = 7;
|
||||
InitPasswordDoneScreenText init_password_done_text = 8;
|
||||
EmailVerificationScreenText email_verification_text = 9;
|
||||
EmailVerificationDoneScreenText email_verification_done_text = 10;
|
||||
InitializeUserScreenText initialize_user_text = 11;
|
||||
InitializeUserDoneScreenText initialize_done_text = 12;
|
||||
InitMFAPromptScreenText init_mfa_prompt_text = 13;
|
||||
InitMFAOTPScreenText init_mfa_otp_text = 14;
|
||||
InitMFAU2FScreenText init_mfa_u2f_text = 15;
|
||||
InitMFADoneScreenText init_mfa_done_text = 16;
|
||||
MFAProvidersText mfa_providers_text = 17;
|
||||
VerifyMFAOTPScreenText verify_mfa_otp_text = 18;
|
||||
VerifyMFAU2FScreenText verify_mfa_u2f_text = 19;
|
||||
PasswordlessScreenText passwordless_text = 20;
|
||||
PasswordChangeScreenText password_change_text = 21;
|
||||
PasswordChangeDoneScreenText password_change_done_text = 22;
|
||||
PasswordResetDoneScreenText password_reset_done_text = 23;
|
||||
RegistrationOptionScreenText registration_option_text = 24;
|
||||
RegistrationUserScreenText registration_user_text = 25;
|
||||
RegistrationOrgScreenText registration_org_text = 26;
|
||||
LinkingUserDoneScreenText linking_user_done_text = 27;
|
||||
ExternalUserNotFoundScreenText external_user_not_found_text = 28;
|
||||
SuccessLoginScreenText success_login_text = 29;
|
||||
LogoutDoneScreenText logout_text = 30;
|
||||
FooterText footer_text = 31;
|
||||
}
|
||||
|
||||
message SelectAccountScreenText {
|
||||
string title = 1 [(validate.rules).string = {max_len: 200}];
|
||||
string description = 2 [(validate.rules).string = {max_len: 500}];
|
||||
string title_linking_process = 3 [(validate.rules).string = {max_len: 200}];
|
||||
string description_linking_process = 4 [(validate.rules).string = {max_len: 500}];
|
||||
string other_user = 5 [(validate.rules).string = {max_len: 500}];
|
||||
string session_state_active = 6 [(validate.rules).string = {max_len: 100}];
|
||||
string session_state_inactive = 7 [(validate.rules).string = {max_len: 100}];
|
||||
string user_must_be_member_of_org = 8 [(validate.rules).string = {max_len: 500}];
|
||||
}
|
||||
|
||||
message LoginScreenText {
|
||||
string title = 1 [(validate.rules).string = {max_len: 200}];
|
||||
string description = 2 [(validate.rules).string = {max_len: 500}];
|
||||
string title_linking_process = 3 [(validate.rules).string = {max_len: 200}];
|
||||
string description_linking_process = 4 [(validate.rules).string = {max_len: 500}];
|
||||
string user_must_be_member_of_org = 5 [(validate.rules).string = {max_len: 500}];
|
||||
string login_name_label = 6 [(validate.rules).string = {max_len: 200}];
|
||||
string register_button_text = 7 [(validate.rules).string = {max_len: 100}];
|
||||
string next_button_text = 8 [(validate.rules).string = {max_len: 100}];
|
||||
string external_user_description = 9 [(validate.rules).string = {max_len: 500}];
|
||||
string user_name_placeholder = 10 [(validate.rules).string = {max_len: 200}];
|
||||
string login_name_placeholder = 11 [(validate.rules).string = {max_len: 200}];
|
||||
}
|
||||
|
||||
message PasswordScreenText {
|
||||
string title = 1 [(validate.rules).string = {max_len: 200}];
|
||||
string description = 2 [(validate.rules).string = {max_len: 500}];
|
||||
string password_label = 3 [(validate.rules).string = {max_len: 200}];
|
||||
string reset_link_text = 4 [(validate.rules).string = {max_len: 100}];
|
||||
string back_button_text = 5 [(validate.rules).string = {max_len: 100}];
|
||||
string next_button_text = 6 [(validate.rules).string = {max_len: 100}];
|
||||
string min_length = 7 [(validate.rules).string = {max_len: 100}];
|
||||
string has_uppercase = 8 [(validate.rules).string = {max_len: 100}];
|
||||
string has_lowercase = 9 [(validate.rules).string = {max_len: 100}];
|
||||
string has_number = 10 [(validate.rules).string = {max_len: 100}];
|
||||
string has_symbol = 11 [(validate.rules).string = {max_len: 100}];
|
||||
string confirmation = 12 [(validate.rules).string = {max_len: 100}];
|
||||
}
|
||||
|
||||
message UsernameChangeScreenText {
|
||||
string title = 1 [(validate.rules).string = {max_len: 200}];
|
||||
string description = 2 [(validate.rules).string = {max_len: 500}];
|
||||
string username_label = 3 [(validate.rules).string = {max_len: 200}];
|
||||
string cancel_button_text = 4 [(validate.rules).string = {max_len: 100}];
|
||||
string next_button_text = 5 [(validate.rules).string = {max_len: 100}];
|
||||
}
|
||||
|
||||
message UsernameChangeDoneScreenText {
|
||||
string title = 1 [(validate.rules).string = {max_len: 200}];
|
||||
string description = 2 [(validate.rules).string = {max_len: 500}];
|
||||
string next_button_text = 3 [(validate.rules).string = {max_len: 100}];
|
||||
}
|
||||
|
||||
message InitPasswordScreenText {
|
||||
string title = 1 [(validate.rules).string = {max_len: 200}];
|
||||
string description = 2 [(validate.rules).string = {max_len: 500}];
|
||||
string code_label = 3 [(validate.rules).string = {max_len: 200}];
|
||||
string new_password_label = 4 [(validate.rules).string = {max_len: 200}];
|
||||
string new_password_confirm_label = 5 [(validate.rules).string = {max_len: 200}];
|
||||
string next_button_text = 6 [(validate.rules).string = {max_len: 100}];
|
||||
string resend_button_text = 7 [(validate.rules).string = {max_len: 100}];
|
||||
}
|
||||
|
||||
message InitPasswordDoneScreenText {
|
||||
string title = 1 [(validate.rules).string = {max_len: 200}];
|
||||
string description = 2 [(validate.rules).string = {max_len: 500}];
|
||||
string next_button_text = 3 [(validate.rules).string = {max_len: 100}];
|
||||
string cancel_button_text = 4 [(validate.rules).string = {max_len: 100}];
|
||||
}
|
||||
|
||||
message EmailVerificationScreenText {
|
||||
string title = 1 [(validate.rules).string = {max_len: 200}];
|
||||
string description = 2 [(validate.rules).string = {max_len: 500}];
|
||||
string code_label = 3 [(validate.rules).string = {max_len: 200}];
|
||||
string next_button_text = 4 [(validate.rules).string = {max_len: 100}];
|
||||
string resend_button_text = 5 [(validate.rules).string = {max_len: 100}];
|
||||
}
|
||||
|
||||
message EmailVerificationDoneScreenText {
|
||||
string title = 1 [(validate.rules).string = {max_len: 200}];
|
||||
string description = 2 [(validate.rules).string = {max_len: 500}];
|
||||
string next_button_text = 3 [(validate.rules).string = {max_len: 100}];
|
||||
string cancel_button_text = 4 [(validate.rules).string = {max_len: 100}];
|
||||
string login_button_text = 5 [(validate.rules).string = {max_len: 100}];
|
||||
}
|
||||
|
||||
message InitializeUserScreenText {
|
||||
string title = 1 [(validate.rules).string = {max_len: 200}];
|
||||
string description = 2 [(validate.rules).string = {max_len: 500}];
|
||||
string code_label = 3 [(validate.rules).string = {max_len: 200}];
|
||||
string new_password_label = 4 [(validate.rules).string = {max_len: 200}];
|
||||
string new_password_confirm_label = 5 [(validate.rules).string = {max_len: 200}];
|
||||
string resend_button_text = 6 [(validate.rules).string = {max_len: 100}];
|
||||
string next_button_text = 7 [(validate.rules).string = {max_len: 100}];
|
||||
}
|
||||
|
||||
message InitializeUserDoneScreenText {
|
||||
string title = 1 [(validate.rules).string = {max_len: 200}];
|
||||
string description = 2 [(validate.rules).string = {max_len: 500}];
|
||||
string cancel_button_text = 3 [(validate.rules).string = {max_len: 100}];
|
||||
string next_button_text = 4 [(validate.rules).string = {max_len: 100}];
|
||||
}
|
||||
|
||||
message InitMFAPromptScreenText {
|
||||
string title = 1 [(validate.rules).string = {max_len: 200}];
|
||||
string description = 2 [(validate.rules).string = {max_len: 500}];
|
||||
string otp_option = 3 [(validate.rules).string = {max_len: 200}];
|
||||
string u2f_option = 4 [(validate.rules).string = {max_len: 200}];
|
||||
string skip_button_text = 5 [(validate.rules).string = {max_len: 100}];
|
||||
string next_button_text = 6 [(validate.rules).string = {max_len: 100}];
|
||||
}
|
||||
|
||||
message InitMFAOTPScreenText {
|
||||
string title = 1 [(validate.rules).string = {max_len: 200}];
|
||||
string description = 2 [(validate.rules).string = {max_len: 500}];
|
||||
string description_otp = 3 [(validate.rules).string = {max_len: 500}];
|
||||
string secret_label = 4 [(validate.rules).string = {max_len: 200}];
|
||||
string code_label = 5 [(validate.rules).string = {max_len: 200}];
|
||||
string next_button_text = 6 [(validate.rules).string = {max_len: 100}];
|
||||
string cancel_button_text = 7 [(validate.rules).string = {max_len: 100}];
|
||||
}
|
||||
|
||||
message InitMFAU2FScreenText {
|
||||
string title = 1 [(validate.rules).string = {max_len: 200}];
|
||||
string description = 2 [(validate.rules).string = {max_len: 500}];
|
||||
string token_name_label = 3 [(validate.rules).string = {max_len: 200}];
|
||||
string not_supported = 4 [(validate.rules).string = {max_len: 500}];
|
||||
string register_token_button_text = 5 [(validate.rules).string = {max_len: 100}];
|
||||
string error_retry = 6 [(validate.rules).string = {max_len: 500}];
|
||||
}
|
||||
|
||||
message InitMFADoneScreenText {
|
||||
string title = 1 [(validate.rules).string = {max_len: 200}];
|
||||
string description = 2 [(validate.rules).string = {max_len: 500}];
|
||||
string cancel_button_text = 3 [(validate.rules).string = {max_len: 100}];
|
||||
string next_button_text = 4 [(validate.rules).string = {max_len: 100}];
|
||||
}
|
||||
|
||||
message MFAProvidersText {
|
||||
string choose_other = 1 [(validate.rules).string = {max_len: 500}];
|
||||
string otp = 2 [(validate.rules).string = {max_len: 200}];
|
||||
string u2f = 3 [(validate.rules).string = {max_len: 200}];
|
||||
}
|
||||
|
||||
message VerifyMFAOTPScreenText {
|
||||
string title = 1 [(validate.rules).string = {max_len: 200}];
|
||||
string description = 2 [(validate.rules).string = {max_len: 500}];
|
||||
string code_label = 3 [(validate.rules).string = {max_len: 200}];
|
||||
string next_button_text = 4 [(validate.rules).string = {max_len: 100}];
|
||||
}
|
||||
|
||||
message VerifyMFAU2FScreenText {
|
||||
string title = 1 [(validate.rules).string = {max_len: 200}];
|
||||
string description = 2 [(validate.rules).string = {max_len: 500}];
|
||||
string validate_token_text = 3 [(validate.rules).string = {max_len: 500}];
|
||||
string not_supported = 4 [(validate.rules).string = {max_len: 500}];
|
||||
string error_retry = 5 [(validate.rules).string = {max_len: 500}];
|
||||
}
|
||||
|
||||
message PasswordlessScreenText {
|
||||
string title = 1 [(validate.rules).string = {max_len: 200}];
|
||||
string description = 2 [(validate.rules).string = {max_len: 500}];
|
||||
string login_with_pw_button_text = 3 [(validate.rules).string = {max_len: 100}];
|
||||
string validate_token_button_text = 4 [(validate.rules).string = {max_len: 200}];
|
||||
string not_supported = 5 [(validate.rules).string = {max_len: 500}];
|
||||
string error_retry = 6 [(validate.rules).string = {max_len: 500}];
|
||||
}
|
||||
|
||||
message PasswordChangeScreenText {
|
||||
string title = 1 [(validate.rules).string = {max_len: 200}];
|
||||
string description = 2 [(validate.rules).string = {max_len: 500}];
|
||||
string old_password_label = 3 [(validate.rules).string = {max_len: 200}];
|
||||
string new_password_label = 4 [(validate.rules).string = {max_len: 200}];
|
||||
string new_password_confirm_label = 5 [(validate.rules).string = {max_len: 200}];
|
||||
string cancel_button_text = 6 [(validate.rules).string = {max_len: 100}];
|
||||
string next_button_text = 7 [(validate.rules).string = {max_len: 100}];
|
||||
}
|
||||
|
||||
message PasswordChangeDoneScreenText {
|
||||
string title = 1 [(validate.rules).string = {max_len: 200}];
|
||||
string description = 2 [(validate.rules).string = {max_len: 500}];
|
||||
string next_button_text = 3 [(validate.rules).string = {max_len: 100}];
|
||||
}
|
||||
|
||||
message PasswordResetDoneScreenText {
|
||||
string title = 1 [(validate.rules).string = {max_len: 200}];
|
||||
string description = 2 [(validate.rules).string = {max_len: 500}];
|
||||
string next_button_text = 3 [(validate.rules).string = {max_len: 100}];
|
||||
}
|
||||
|
||||
message RegistrationOptionScreenText {
|
||||
string title = 1 [(validate.rules).string = {max_len: 200}];
|
||||
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}];
|
||||
}
|
||||
|
||||
message RegistrationUserScreenText {
|
||||
string title = 1 [(validate.rules).string = {max_len: 200}];
|
||||
string description = 2 [(validate.rules).string = {max_len: 500}];
|
||||
string description_org_register = 3 [(validate.rules).string = {max_len: 500}];
|
||||
string firstname_label = 4 [(validate.rules).string = {max_len: 200}];
|
||||
string lastname_label = 5 [(validate.rules).string = {max_len: 200}];
|
||||
string email_label = 6 [(validate.rules).string = {max_len: 200}];
|
||||
string username_label = 7 [(validate.rules).string = {max_len: 200}];
|
||||
string language_label = 8 [(validate.rules).string = {max_len: 200}];
|
||||
string gender_label = 9 [(validate.rules).string = {max_len: 200}];
|
||||
string password_label = 10 [(validate.rules).string = {max_len: 200}];
|
||||
string password_confirm_label = 11 [(validate.rules).string = {max_len: 200}];
|
||||
string tos_and_privacy_label = 12 [(validate.rules).string = {max_len: 200}];
|
||||
string tos_confirm = 13 [(validate.rules).string = {max_len: 200}];
|
||||
string tos_link = 14 [(validate.rules).string = {max_len: 200}];
|
||||
string tos_link_text = 15 [(validate.rules).string = {max_len: 200}];
|
||||
string privacy_confirm = 16 [(validate.rules).string = {max_len: 200}];
|
||||
string privacy_link = 17 [(validate.rules).string = {max_len: 200}];
|
||||
string privacy_link_text = 18 [(validate.rules).string = {max_len: 200}];
|
||||
string external_login_description = 19 [(validate.rules).string = {max_len: 500}];
|
||||
string next_button_text = 20 [(validate.rules).string = {max_len: 200}];
|
||||
string back_button_text = 21 [(validate.rules).string = {max_len: 200}];
|
||||
}
|
||||
|
||||
message RegistrationOrgScreenText {
|
||||
string title = 1 [(validate.rules).string = {max_len: 200}];
|
||||
string description = 2 [(validate.rules).string = {max_len: 500}];
|
||||
string orgname_label = 3 [(validate.rules).string = {max_len: 200}];
|
||||
string firstname_label = 4 [(validate.rules).string = {max_len: 200}];
|
||||
string lastname_label = 5 [(validate.rules).string = {max_len: 200}];
|
||||
string username_label = 6 [(validate.rules).string = {max_len: 200}];
|
||||
string email_label = 7 [(validate.rules).string = {max_len: 200}];
|
||||
string password_label = 9 [(validate.rules).string = {max_len: 200}];
|
||||
string password_confirm_label = 10 [(validate.rules).string = {max_len: 200}];
|
||||
string tos_and_privacy_label = 11 [(validate.rules).string = {max_len: 200}];
|
||||
string tos_confirm = 12 [(validate.rules).string = {max_len: 200}];
|
||||
string tos_link = 13 [(validate.rules).string = {max_len: 200}];
|
||||
string tos_link_text = 14 [(validate.rules).string = {max_len: 200}];
|
||||
string privacy_confirm = 15 [(validate.rules).string = {max_len: 200}];
|
||||
string privacy_link = 16 [(validate.rules).string = {max_len: 200}];
|
||||
string privacy_link_text = 17 [(validate.rules).string = {max_len: 200}];
|
||||
string external_login_description = 18 [(validate.rules).string = {max_len: 500}];
|
||||
string save_button_text = 19 [(validate.rules).string = {max_len: 200}];
|
||||
}
|
||||
|
||||
message LinkingUserDoneScreenText {
|
||||
string title = 1 [(validate.rules).string = {max_len: 200}];
|
||||
string description = 2 [(validate.rules).string = {max_len: 500}];
|
||||
string cancel_button_text = 3 [(validate.rules).string = {max_len: 100}];
|
||||
string next_button_text = 4 [(validate.rules).string = {max_len: 100}];
|
||||
}
|
||||
|
||||
message ExternalUserNotFoundScreenText {
|
||||
string title = 1 [(validate.rules).string = {max_len: 200}];
|
||||
string description = 2 [(validate.rules).string = {max_len: 500}];
|
||||
string link_button_text = 3 [(validate.rules).string = {max_len: 100}];
|
||||
string auto_register_button_text = 4 [(validate.rules).string = {max_len: 100}];
|
||||
}
|
||||
|
||||
message SuccessLoginScreenText {
|
||||
string title = 1 [(validate.rules).string = {max_len: 200}];
|
||||
// Text to describe that auto redirect should happen after successful login
|
||||
string auto_redirect_description = 2 [(validate.rules).string = {max_len: 500}];
|
||||
// Text to describe that the window can be closed after redirect
|
||||
string redirected_description = 3 [(validate.rules).string = {max_len: 100}];
|
||||
string next_button_text = 4 [(validate.rules).string = {max_len: 200}];
|
||||
}
|
||||
|
||||
message LogoutDoneScreenText {
|
||||
string title = 1 [(validate.rules).string = {max_len: 200}];
|
||||
string description = 2 [(validate.rules).string = {max_len: 500}];
|
||||
string login_button_text = 3 [(validate.rules).string = {max_len: 200}];
|
||||
}
|
||||
|
||||
message FooterText {
|
||||
string tos = 1 [(validate.rules).string = {max_len: 200}];
|
||||
string tos_link = 2 [(validate.rules).string = {max_len: 500}];
|
||||
string privacy_policy = 3 [(validate.rules).string = {max_len: 200}];
|
||||
string privacy_policy_link = 4 [(validate.rules).string = {max_len: 500}];
|
||||
string help = 5 [(validate.rules).string = {max_len: 200}];
|
||||
string help_link = 6 [(validate.rules).string = {max_len: 500}];
|
||||
}
|
Reference in New Issue
Block a user