zitadel/proto/zitadel/text.proto
Fabi 99b2c33ccb
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>
2021-07-05 15:10:49 +02:00

363 lines
18 KiB
Protocol Buffer

syntax = "proto3";
import "zitadel/object.proto";
import "protoc-gen-openapiv2/options/annotations.proto";
import "validate/validate.proto";
package zitadel.text.v1;
option go_package ="github.com/caos/zitadel/pkg/grpc/text";
message MessageCustomText {
zitadel.v1.ObjectDetails details = 1;
string title = 2 [
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
description: "custom text for email title"
}
];
string pre_header = 3 [
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
description: "custom text for email pre header"
}
];
string subject = 4 [
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
description: "custom text for email subject"
}
];
string greeting = 5 [
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
description: "custom text for email greeting"
}
];
string text = 6 [
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
description: "custom text for email text"
}
];
string button_text = 7 [
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
description: "custom text for email button_text"
}
];
string footer_text = 8 [
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
description: "custom text for email footer_text"
}
];
}
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}];
}