feat: show max password length in complexity components (#7810)

# Which Problems Are Solved

There is confusing ambiguity in the error messages for setting too long
passwords in different places.

# How the Problems Are Solved

A check for maximum password length is added so it's clear that
passwords can't exceed a maximum length of 70 or 72 bytes.
Password validation now provides a live updating check mark or cross
mark to indicate if the maximum length requirement is met.

# Additional Changes

Clarified requirement descriptions on the registration page with
complete sentences.

# Additional Context

Closes #6301

---------

Co-authored-by: Elio Bischof <elio@zitadel.com>
This commit is contained in:
Sujoy B
2024-05-23 04:07:36 -04:00
committed by GitHub
parent f5e9d4f57f
commit cfa3d013a4
31 changed files with 223 additions and 133 deletions

View File

@@ -50,4 +50,12 @@
<i *ngIf="password?.dirty && !password?.errors?.['errorslowercasemissing']" class="las la-check green"></i>
<span class="cnsl-secondary-text">{{ 'ERRORS.LOWERCASEMISSING' | translate }}</span>
</div>
<div class="val">
<i *ngIf="password?.value?.length === 0 || password?.value?.length <= 70" class="las la-check green"></i>
<i *ngIf="password?.value?.length > 70" class="las la-times red"></i>
<span class="cnsl-secondary-text"
>{{ 'USER.PASSWORD.MAXLENGTHERROR' | translate: { value: 70 } }} ({{ password?.value?.length }}/{{ 70 }})
</span>
</div>
</div>

View File

@@ -588,6 +588,7 @@
"INVALID_FORMAT": "Форматирането е невалидно.",
"NOTANEMAIL": "Дадената стойност не е имейл адрес.",
"MINLENGTH": "Трябва да е поне {{requiredLength}} знака дълги.",
"MAXLENGTH": "Трябва да е по-малко от {{requiredLength}} символа",
"UPPERCASEMISSING": "Трябва да включва главна буква.",
"LOWERCASEMISSING": "Трябва да включва малка буква.",
"SYMBOLERROR": "Трябва да включва символ или препинателен знак.",
@@ -873,7 +874,8 @@
"SET": "Задайте нова парола",
"RESENDNOTIFICATION": "Изпратете връзка за повторно задаване на парола",
"REQUIRED": "Някои задължителни полета липсват.",
"MINLENGTHERROR": "Трябва да бъде поне {{value}} знака дълги."
"MINLENGTHERROR": "Трябва да бъде поне {{value}} знака дълги.",
"MAXLENGTHERROR": "Трябва да съдържа по-малко от {{value}} знака."
},
"ID": "документ за самоличност",
"EMAIL": "Електронна поща",

View File

@@ -595,6 +595,7 @@
"INVALID_FORMAT": "Formát je neplatný.",
"NOTANEMAIL": "Zadaná hodnota není e-mailová adresa.",
"MINLENGTH": "Musí být dlouhé alespoň {{requiredLength}} znaků.",
"MAXLENGTH": "Musí být kratší než {{requiredLength}} znaků",
"UPPERCASEMISSING": "Musí obsahovat velké písmeno.",
"LOWERCASEMISSING": "Musí obsahovat malé písmeno.",
"SYMBOLERROR": "Musí obsahovat symbol nebo interpunkční znaménko.",
@@ -880,7 +881,8 @@
"SET": "Nastavit nové heslo",
"RESENDNOTIFICATION": "Odeslat odkaz pro reset hesla",
"REQUIRED": "Některá povinná pole nejsou vyplněna.",
"MINLENGTHERROR": "Musí být alespoň {{value}} znaků dlouhé."
"MINLENGTHERROR": "Musí být alespoň {{value}} znaků dlouhé.",
"MAXLENGTHERROR": "Musí být kratší než {{value}} znaků."
},
"ID": "ID",
"EMAIL": "E-mail",

View File

@@ -594,6 +594,7 @@
"INVALID_FORMAT": "Das Format is ungültig.",
"NOTANEMAIL": "Der eingegebene Wert ist keine E-Mail Adresse.",
"MINLENGTH": "Muss mindestens {{requiredLength}} Zeichen lang sein.",
"MAXLENGTH": "Muss weniger als {{requiredLength}} Zeichen enthalten",
"UPPERCASEMISSING": "Muss einen Grossbuchstaben beinhalten.",
"LOWERCASEMISSING": "Muss einen Kleinbuchstaben beinhalten.",
"SYMBOLERROR": "Muss ein Symbol/Satzzeichen beinhalten.",
@@ -879,7 +880,8 @@
"SET": "Passwort neu setzen",
"RESENDNOTIFICATION": "Email zum Zurücksetzen senden",
"REQUIRED": "Bitte prüfe, dass alle notwendigen Felder ausgefüllt sind.",
"MINLENGTHERROR": "Muss mindestens {{value}} Zeichen lang sein."
"MINLENGTHERROR": "Muss mindestens {{value}} Zeichen lang sein.",
"MAXLENGTHERROR": "Muss weniger als {{value}} Zeichen umfassen."
},
"ID": "ID",
"EMAIL": "E-Mail",

View File

@@ -595,8 +595,9 @@
"INVALID_FORMAT": "The formatting is invalid.",
"NOTANEMAIL": "The given value is not an e-mail address.",
"MINLENGTH": "Must be at least {{requiredLength}} characters long.",
"UPPERCASEMISSING": "Must include an uppercase character.",
"LOWERCASEMISSING": "Must include a lowercase character.",
"MAXLENGTH": "Must be less than {{requiredLength}} characters.",
"UPPERCASEMISSING": "Must include an uppercase letter.",
"LOWERCASEMISSING": "Must include a lowercase letter.",
"SYMBOLERROR": "Must include a symbol or punctuation mark.",
"NUMBERERROR": "Must include a digit.",
"PWNOTEQUAL": "The passwords provided do not match.",
@@ -880,7 +881,8 @@
"SET": "Set New Password",
"RESENDNOTIFICATION": "Send Password Reset Link",
"REQUIRED": "Some required fields are missing.",
"MINLENGTHERROR": "Has to be at least {{value}} characters long."
"MINLENGTHERROR": "Must be at least {{value}} characters long.",
"MAXLENGTHERROR": "Must be less than {{value}} characters."
},
"ID": "ID",
"EMAIL": "E-mail",

View File

@@ -595,6 +595,7 @@
"INVALID_FORMAT": "El formato no es valido.",
"NOTANEMAIL": "El valor proporcionado no es una dirección de email.",
"MINLENGTH": "Debe tener al menos {{requiredLength}} caracteres de longitud.",
"MAXLENGTH": "Debe tener menos de {{requiredLength}} caracteres.",
"UPPERCASEMISSING": "Debe incluir un carácter en mayúscula.",
"LOWERCASEMISSING": "Debe incluir un carácter en minúscula.",
"SYMBOLERROR": "Debe incluir un símbolo o un signo de puntuación.",
@@ -880,7 +881,8 @@
"SET": "Establecer nueva contraseña",
"RESENDNOTIFICATION": "Enviar enlace para restablecer la contraseña",
"REQUIRED": "Faltan algunos campos requeridos.",
"MINLENGTHERROR": "Debe tener al menos {{value}} caracteres de longitud."
"MINLENGTHERROR": "Debe tener al menos {{value}} caracteres de longitud.",
"MAXLENGTHERROR": "Debe tener menos de {{value}} caracteres"
},
"ID": "ID",
"EMAIL": "Email",

View File

@@ -594,6 +594,7 @@
"INVALID_FORMAT": "Le format n'est pas valide.",
"NOTANEMAIL": "La valeur donnée n'est pas une adresse e-mail.",
"MINLENGTH": "Doit comporter au moins {{length}} caractères.",
"MAXLENGTH": "Doit contenir moins de {{requiredLength}} caractères.",
"UPPERCASEMISSING": "Doit inclure un caractère majuscule.",
"LOWERCASEMISSING": "Doit inclure un caractère minuscule.",
"SYMBOLERROR": "Doit inclure un symbole ou un signe de ponctuation.",
@@ -879,7 +880,8 @@
"SET": "Définir un nouveau mot de passe",
"RESENDNOTIFICATION": "Envoyer le lien de réinitialisation du mot de passe",
"REQUIRED": "Certains champs obligatoires sont manquants.",
"MINLENGTHERROR": "Doit comporter au moins {{value}} caractères."
"MINLENGTHERROR": "Doit comporter au moins {{value}} caractères.",
"MAXLENGTHERROR": "Doit contenir moins de {{value}} caractères"
},
"ID": "ID",
"EMAIL": "E-mail",

View File

@@ -593,6 +593,7 @@
"INVALID_FORMAT": "Il formato non è valido.",
"NOTANEMAIL": "Il valore dato non è un indirizzo e-mail.",
"MINLENGTH": "Deve essere lunga almeno {{requiredLength}} caratteri.",
"MAXLENGTH": "Deve contenere meno di {{requiredLength}} caratteri.",
"UPPERCASEMISSING": "Deve includere un carattere maiuscolo.",
"LOWERCASEMISSING": "Deve includere un carattere minuscolo.",
"SYMBOLERROR": "Deve includere un simbolo o un segno di punteggiatura.",
@@ -878,7 +879,8 @@
"SET": "Imposta nuova password",
"RESENDNOTIFICATION": "Invia email per la reimpostazione",
"REQUIRED": "Mancano alcuni campi obbligatori.",
"MINLENGTHERROR": "Deve essere lunga almeno {{valore}} caratteri."
"MINLENGTHERROR": "Deve essere lunga almeno {{valore}} caratteri.",
"MAXLENGTHERROR": "Deve contenere meno di {{value}} caratteri"
},
"ID": "ID",
"EMAIL": "E-mail",

View File

@@ -595,6 +595,7 @@
"INVALID_FORMAT": "不正なフォーマットです",
"NOTANEMAIL": "入力された値がメールアドレスではありません。",
"MINLENGTH": "{{requiredLength}} 文字以上の文字列が必要です。",
"MAXLENGTH": "{{requiredLength}}文字以下でなければなりません.",
"UPPERCASEMISSING": "大文字を含める必要があります。",
"LOWERCASEMISSING": "小文字を含める必要があります。",
"SYMBOLERROR": "記号を含める必要があります。",
@@ -880,7 +881,8 @@
"SET": "新しいパスワードを設定する",
"RESENDNOTIFICATION": "パスワードリセットのリンクを送信する",
"REQUIRED": "一部の必須項目が不足しています。",
"MINLENGTHERROR": "最小で{{value}}文字の長さが必要です。"
"MINLENGTHERROR": "最小で{{value}}文字の長さが必要です。",
"MAXLENGTHERROR": "{{value}}文字以下でなければなりません"
},
"ID": "id",
"EMAIL": "Eメール",

View File

@@ -595,6 +595,7 @@
"INVALID_FORMAT": "Невалиден формат.",
"NOTANEMAIL": "Внесената вредност не е е-пошта.",
"MINLENGTH": "Мора да биде најмалку {{requiredLength}} карактери долга.",
"MAXLENGTH": "Мора да биде помалку од {{requiredLength}} карактери.",
"UPPERCASEMISSING": "Мора да содржи голема буква.",
"LOWERCASEMISSING": "Мора да содржи мала буква.",
"SYMBOLERROR": "Мора да содржи симбол или знак за интерпункција.",
@@ -880,7 +881,8 @@
"SET": "Постави нова лозинка",
"RESENDNOTIFICATION": "Испрати линк за ресетирање на лозинката",
"REQUIRED": "Некои задолжителни полиња не се пополнети.",
"MINLENGTHERROR": "Мора да биде најмалку {{value}} карактери долга."
"MINLENGTHERROR": "Мора да биде најмалку {{value}} карактери долга.",
"MAXLENGTHERROR": "Мора да биде помалку од {{value}} карактери"
},
"ID": "ID",
"EMAIL": "E-пошта",

View File

@@ -595,6 +595,7 @@
"INVALID_FORMAT": "De opmaak is ongeldig.",
"NOTANEMAIL": "De opgegeven waarde is geen e-mailadres.",
"MINLENGTH": "Moet minimaal {{requiredLength}} tekens lang zijn.",
"MAXLENGTH": "Moet minder dan {{requiredLength}} tekens bevatten.",
"UPPERCASEMISSING": "Moet een hoofdletter bevatten.",
"LOWERCASEMISSING": "Moet een kleine letter bevatten.",
"SYMBOLERROR": "Moet een symbool of leesteken bevatten.",
@@ -880,7 +881,8 @@
"SET": "Stel nieuw wachtwoord in",
"RESENDNOTIFICATION": "Stuur wachtwoord reset link",
"REQUIRED": "Sommige verplichte velden ontbreken.",
"MINLENGTHERROR": "Moet minstens {{value}} tekens lang zijn."
"MINLENGTHERROR": "Moet minstens {{value}} tekens lang zijn.",
"MAXLENGTHERROR": "Moet minder dan {{value}} tekens bevatten"
},
"ID": "ID",
"EMAIL": "E-mail",

View File

@@ -594,6 +594,7 @@
"INVALID_FORMAT": "Format jest nieprawidłowy.",
"NOTANEMAIL": "Podana wartość nie jest adresem e-mail.",
"MINLENGTH": "Musi mieć co najmniej {{requiredLength}} znaków.",
"MAXLENGTH": "Musi zawierać mniej niż {{requiredLength}} znaków.",
"UPPERCASEMISSING": "Musi zawierać wielką literę.",
"LOWERCASEMISSING": "Musi zawierać małą literę.",
"SYMBOLERROR": "Musi zawierać symbol lub znak interpunkcyjny.",
@@ -879,7 +880,8 @@
"SET": "Ustaw nowe hasło",
"RESENDNOTIFICATION": "Wyślij link resetowania hasła",
"REQUIRED": "Brakuje niektórych wymaganych pól.",
"MINLENGTHERROR": "Musi mieć co najmniej {{value}} znaków."
"MINLENGTHERROR": "Musi mieć co najmniej {{value}} znaków.",
"MAXLENGTHERROR": "Musi zawierać mniej niż {{value}} znaków"
},
"ID": "ID",
"EMAIL": "E-mail",

View File

@@ -595,6 +595,7 @@
"INVALID_FORMAT": "O formato é inválido.",
"NOTANEMAIL": "O valor fornecido não é um endereço de e-mail.",
"MINLENGTH": "Deve ter pelo menos {{requiredLength}} caracteres.",
"MAXLENGTH": "Deve ter menos de {{requiredLength}} caracteres.",
"UPPERCASEMISSING": "Deve incluir uma letra maiúscula.",
"LOWERCASEMISSING": "Deve incluir uma letra minúscula.",
"SYMBOLERROR": "Deve incluir um símbolo ou caractere de pontuação.",
@@ -880,7 +881,8 @@
"SET": "Definir Nova Senha",
"RESENDNOTIFICATION": "Enviar Link de Redefinição de Senha",
"REQUIRED": "Algumas informações obrigatórias estão faltando.",
"MINLENGTHERROR": "Deve ter pelo menos {{value}} caracteres."
"MINLENGTHERROR": "Deve ter pelo menos {{value}} caracteres.",
"MAXLENGTHERROR": "Deve ter menos de {{value}} caracteres"
},
"ID": "ID",
"EMAIL": "E-mail",

View File

@@ -594,6 +594,7 @@
"INVALID_FORMAT": "Форматирование неверно.",
"NOTANEMAIL": "Данное значение не является адресом электронной почты.",
"MINLENGTH": "Должно быть не менее {{requiredLength}} символов.",
"MAXLENGTH": "Должно быть меньше {{requiredLength}} символов.",
"UPPERCASEMISSING": "Должен содержать символ верхнего регистра.",
"LOWERCASEMISSING": "Должен включать строчные буквы.",
"SYMBOLERROR": "Должен содержать символ или знак препинания.",
@@ -887,7 +888,8 @@
"RESENDNOTIFICATION": "Отправить ссылку для сброса пароля",
"REQUIRED": "Отсутствуют некоторые обязательные поля.",
"MINLENGTHERROR": "Должно быть не менее {{value}} символов.",
"NOTEQUAL": "Указанные пароли не совпадают."
"NOTEQUAL": "Указанные пароли не совпадают.",
"MAXLENGTHERROR": "Должно быть меньше {{value}} символов"
},
"ID": "Идентификатор",
"EMAIL": "Электронная почта",

View File

@@ -594,6 +594,7 @@
"INVALID_FORMAT": "格式是无效的。",
"NOTANEMAIL": "给定的值不是合法电子邮件地址。",
"MINLENGTH": "长度必须至少是{{requiredLength}}字符。",
"MAXLENGTH": "必须少于{{requiredLength}}个字符.",
"UPPERCASEMISSING": "密码必须包含大写字符。",
"LOWERCASEMISSING": "密码必须包含小写字符。",
"SYMBOLERROR": "密码必须包含符号或标点符号。",
@@ -879,7 +880,8 @@
"SET": "设置新密码",
"RESENDNOTIFICATION": "发送重置密码链接",
"REQUIRED": "缺少必填字段。",
"MINLENGTHERROR": "密码长度必须至少为 {{value}} 个字符。"
"MINLENGTHERROR": "密码长度必须至少为 {{value}} 个字符。",
"MAXLENGTHERROR": "必须少于{{value}}个字符"
},
"ID": "ID",
"EMAIL": "电子邮件",