Skip to content

Commit

Permalink
Merge pull request #5817 from RushanNanayakkara/sms_otp_pw_recovery_r…
Browse files Browse the repository at this point in the history
…ecovery_portal

Update recovery portal to support SMS OTP based password recovery
  • Loading branch information
RushanNanayakkara authored May 14, 2024
2 parents d8c7f89 + 877baa4 commit 877a811
Show file tree
Hide file tree
Showing 27 changed files with 1,902 additions and 181 deletions.
7 changes: 7 additions & 0 deletions .changeset/six-penguins-clean.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"@wso2is/identity-apps-core": minor
"@wso2is/i18n": minor
"@wso2is/features": patch
---

Adds sms otp support to password recovery flows.
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ export class CustomTextPreferenceConstants {
},
PASSWORD_RECOVERY: {
BODY: "password.recovery.body",
BUTTON: "password.recovery.button",
BUTTON: "password.recovery.button.email.link",
HEADING: "password.recovery.heading",
IDENTIFIER: {
INPUT: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,15 +37,29 @@ sign.up.heading=Sign Up
sign.up.button=Sign Up
# <!-- End of Sign Up Screen Translations -->

# <!-- SMS OTP -->
sms.otp.heading=OTP Verification
enter.code.sent.smsotp=Enter the code sent to your mobile phone
sms.otp.resend.code=Resend Code
sms.otp.submit.button=Continue

# <!-- Start of Password Recovery Translations -->
# EDITABLE=true,SCREEN="password-recovery",MULTI_LINE=false
password.recovery.heading=Forgot Password?
# EDITABLE=true,SCREEN="password-recovery",MULTI_LINE=true
password.recovery.body=Don't worry, it happens. We will send you an email to reset your password.
password.recovery.body=We've got you covered. Enter your username to begin resetting your password.
# EDITABLE=true,SCREEN="password-recovery",MULTI_LINE=false
password.recovery.identifier.input.placeholder=Username
# EDITABLE=true,SCREEN="password-recovery",MULTI_LINE=false
password.recovery.button=Send Reset Link
# EDITABLE=true,SCREEN="password-recovery",MULTI_LINE=false,VARIATIONS="email-link"
password.recovery.button.email.link=Send Reset Link
# EDITABLE=true,SCREEN="password-recovery",MULTI_LINE=false,VARIATIONS="sms-otp"
password.recovery.button.smsotp=Send SMS OTP
# EDITABLE=true,SCREEN="password-recovery",MULTI_LINE=false,VARIATIONS="multi"
password.recovery.button.multi=Proceed
# EDITABLE=true,SCREEN="password-recovery",MULTI_LINE=false,VARIATIONS="multi"
send.email.link=Send reset link via email
# EDITABLE=true,SCREEN="password-recovery",MULTI_LINE=false,VARIATIONS="multi"
send.code.via.sms=Send code via SMS
# <!-- End of Password Recovery Translations -->

# <!-- Start of Password Reset Translations -->
Expand Down Expand Up @@ -158,7 +172,7 @@ Start.password.recovery=Start Password Recovery
Enter.tenant.here=Enter Your Tenant Domain
Proceed.username.recovery=Proceed to Username Recovery
Proceed.password.recovery=Proceed to Password Recovery
If.you.do.not.specify.tenant.domain.consider.as.super.tenant=If you do not specify a tenant domain, you will be considered under super tenant.
If.you.do.not.specify.tenant.domain.consider.as.super.tenant=If you do not specify a tenant domain, you will be considered under super tenant. (Compulsory for email usernames.)
SW52YWxpZCBhbnN3ZXI_=Invalid answer
Q291bnRyeQ__=Country
TW9iaWxl=Mobile
Expand Down Expand Up @@ -305,6 +319,8 @@ username.pattern.violated=Username pattern policy violated
fill.the.first.name=Please fill the first name.
Password.Expired=Your password has expired. Please set a new password.
error.22001=This password has been used in recent history. Please choose a different password.
error.retry.code.invalid=Authentication failed. The code you entered is invalid or expired. Please retry.
resend.time.exceed.or.max.resend.count.exceed=Resend failed. Resend time limit exceeded or maximum resend count reached.

# SCIM Attributes
VXNlcm5hbWU_=Username
Expand Down Expand Up @@ -379,6 +395,8 @@ QmFja3VwIENvZGUgRW5hYmxlZA__=Backup Code Enabled
RW5hYmxlZCBBdXRoZW50aWNhdG9ycw__=Enabled Authenticators
QmFja3VwIENvZGVz=Backup Codes
RmFpbGVkIEJhY2t1cCBDb2RlIEF0dGVtcHRz=Failed Backup Code Attempts
Q2hhbm5lbC51bmF2YWlsYWJsZS5mb3IudXNlcg__=Channel not set by user
VW5rbm93bi5jaGFubmVs=Unknown channel
invitation.accepted=Invitation Accepted
invitation.accepted.message=You now have access to your invited organization's applications. Reach out to your invited organization's administrator for information on available applications
invitation.not.active=The invitation link is not active
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,12 @@ sign.up.button=Registrieren

# <!-- Start of Password Recovery Translations -->
password.recovery.heading=Passwort vergessen?
password.recovery.body=Machen Sie sich keine Sorgen, das kann passieren. Eine E-Mail zum Zurücksetzen Ihres Passwortes wird Ihnen gesendet
password.recovery.body=Wir geben dir Deckung. Geben Sie Ihren Benutzernamen ein, um mit dem Zurücksetzen Ihres Passworts zu beginnen.
password.recovery.identifier.input.placeholder=Nutzername
password.recovery.button=Reset-Link senden
password.recovery.button.email.link=Reset-Link senden
password.recovery.button.smsotp=SMS-Code senden
send.email.link=Link zum Zurücksetzen per E-Mail senden
send.code.via.sms=Code per SMS versenden
# <!-- End of Password Recovery Translations -->

# <!-- Start of Password Reset Translations -->
Expand Down Expand Up @@ -142,7 +145,7 @@ Start.password.recovery=Starten Sie die Passwortwiederherstellung
Enter.tenant.here=Geben Sie Ihre Mieterdomain ein
Proceed.username.recovery=Fahren Sie mit der Wiederherstellung des Benutzernamens fort
Proceed.password.recovery=Fahren Sie mit der Wiederherstellung der Passwort fort
If.you.do.not.specify.tenant.domain.consider.as.super.tenant=Wenn Sie keine Mieterdomäne angeben, werden Sie unter Super-Mieter betrachtet
If.you.do.not.specify.tenant.domain.consider.as.super.tenant=Wenn Sie keine Mandantendomäne angeben, werden Sie als Supermandant betrachtet. (Pflichtig für E-Mail-Benutzernamen.)
SW52YWxpZCBhbnN3ZXI_=Ungültige Antwort
Q291bnRyeQ__=Land
TW9iaWxl=Handy, Mobiltelefon
Expand Down Expand Up @@ -289,6 +292,8 @@ username.pattern.violated=Verstoß gegen die Benutzernamenmusterrichtlinie
fill.the.first.name=Bitte füllen Sie den Vornamen aus.
Password.Expired=Dein Passwort ist abgelaufen. Bitte legen Sie ein neues Passwort fest.
error.22001=Dieses Passwort wurde in der jüngeren Geschichte verwendet. Bitte wählen Sie ein anderes Passwort.
error.retry.code.invalid=Authentifizierung fehlgeschlagen. Der von Ihnen eingegebene Code ist ungültig oder abgelaufen. Bitte erneut versuchen.
resend.time.exceed.or.max.resend.count.exceed=Das erneute Senden ist fehlgeschlagen. Das Zeitlimit für erneute Sendungen wurde überschritten oder die maximale Anzahl an erneuten Sendungen wurde erreicht.

# SCIM Attributes
VXNlcm5hbWU_=Benutzername
Expand Down Expand Up @@ -363,6 +368,8 @@ QmFja3VwIENvZGUgRW5hYmxlZA__=Backup-Code aktiviert
RW5hYmxlZCBBdXRoZW50aWNhdG9ycw__=Aktivierte Authentikatoren
QmFja3VwIENvZGVz=Backup-Codes
RmFpbGVkIEJhY2t1cCBDb2RlIEF0dGVtcHRz=Fehlgeschlagene Backup-Codes Versuche
Q2hhbm5lbC51bmF2YWlsYWJsZS5mb3IudXNlcg__=Kanal für Benutzer nicht verfügbar
VW5rbm93bi5jaGFubmVs=Unbekannter Kanal
invitation.accepted=Einladung angenommen
invitation.accepted.message=Sie haben jetzt Zugriff auf die Bewerbungen Ihrer eingeladenen Organisation. Wenden Sie sich an den Administrator Ihrer eingeladenen Organisation, um Informationen zu verfügbaren Anwendungen zu erhalten
invitation.not.active=Der Einladungslink ist nicht aktiv
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,12 @@ sign.up.button=Inscribirse

# <!-- Start of Password Recovery Translations -->
password.recovery.heading=¿Has olvidado tu contraseña?
password.recovery.body=No te preocupes, sucede. Le enviaremos un correo electrónico para restablecer su contraseña.
password.recovery.body=Te tenemos cubierto. Ingrese su nombre de usuario para comenzar a restablecer su contraseña.
password.recovery.identifier.input.placeholder=Correo electrónico
password.recovery.button=Enviar enlace de reinicio
password.recovery.button.email.link=Enviar enlace de reinicio
password.recovery.button.smsotp=Enviar codigo sms
send.email.link=Enviar enlace de reinicio por correo electrónico
send.code.via.sms=Enviar código por SMS
# <!-- End of Password Recovery Translations -->

# <!-- Start of Password Reset Translations -->
Expand Down Expand Up @@ -142,7 +145,7 @@ Start.password.recovery=Iniciar recuperación de contraseña
Enter.tenant.here=Ingrese su dominio del inquilino
Proceed.username.recovery=Proceder a la recuperación del nombre de usuario
Proceed.password.recovery=Proceder a la recuperación de contraseña
If.you.do.not.specify.tenant.domain.consider.as.super.tenant=Si no especifica un dominio de inquilino, se lo considerará bajo super inquilino.
If.you.do.not.specify.tenant.domain.consider.as.super.tenant=Si no especifica un dominio de inquilino, se le considerará superinquilino. (Obligatorio para nombres de usuario de correo electrónico).
SW52YWxpZCBhbnN3ZXI_=Respuesta invalida
Q291bnRyeQ__=País
TW9iaWxl=Móvil
Expand Down Expand Up @@ -289,6 +292,8 @@ username.pattern.violated=Política de patrón de nombre de usuario infringida
fill.the.first.name=Por favor complete el primer nombre.
Password.Expired=Tu contraseña ha expirado. Establezca una nueva contraseña.
error.22001=Esta contraseña se ha utilizado en la historia reciente. Elija una contraseña diferente.
error.retry.code.invalid=La autenticación falló. El código que ingresó no es válido o ha caducado. Por favor, intenta de nuevo.
resend.time.exceed.or.max.resend.count.exceed=El reenvío falló. Se superó el límite de tiempo de reenvío o se alcanzó el recuento máximo de reenvío.

# SCIM Attributes
VXNlcm5hbWU_=Nombre de usuario
Expand Down Expand Up @@ -363,6 +368,8 @@ QmFja3VwIENvZGUgRW5hYmxlZA__=Código de respaldo habilitado
RW5hYmxlZCBBdXRoZW50aWNhdG9ycw__=Autenticadores habilitados
QmFja3VwIENvZGVz=Códigos de backup
RmFpbGVkIEJhY2t1cCBDb2RlIEF0dGVtcHRz=Intentos de código de copia de seguridad fallidos
Q2hhbm5lbC51bmF2YWlsYWJsZS5mb3IudXNlcg__=Canal no disponible para el usuario
VW5rbm93bi5jaGFubmVs=Canal desconocido
invitation.accepted=Invitación aceptada
invitation.accepted.message=Ahora tiene acceso a las solicitudes de su organización invitada. Comuníquese con el administrador de su organización invitada para obtener información sobre las aplicaciones disponibles
invitation.not.active=El enlace de invitación no está activo.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,12 @@ sign.up.button=S'inscrire

# <!-- Start of Password Recovery Translations -->
password.recovery.heading=Mot de passe oublié?
password.recovery.body=Ne vous inquiétez pas, ça arrive. Nous vous enverrons un e-mail pour réinitialiser votre mot de passe.
password.recovery.body=Nous avons ce qu'il vous faut. Entrez votre nom d'utilisateur pour commencer à réinitialiser votre mot de passe.
password.recovery.identifier.input.placeholder=Nom d'utilisateur
password.recovery.button=Envoyer le lien de réinitialisation
password.recovery.button.email.link=Envoyer le lien de réinitialisation
password.recovery.button.smsotp=Envoyer le code SMS
send.email.link=Envoyer le lien de réinitialisation par e-mail
send.code.via.sms=Envoyer le code par SMS
# <!-- End of Password Recovery Translations -->

# <!-- Start of Password Reset Translations -->
Expand Down Expand Up @@ -137,7 +140,7 @@ Enter.tenant.here=Entrer votre domaine
For.required.fields.cannot.be.empty=Les champs obligatoires ne peuvent pas être vides
Proceed.username.recovery=Procéder à la récupération du nom d'utilisateur
Proceed.password.recovery=Procéder à la récupération du mot de passe
If.you.do.not.specify.tenant.domain.consider.as.super.tenant=Si vous ne spécifiez pas de domaine de locataire, vous serez considéré comme un hôte.
If.you.do.not.specify.tenant.domain.consider.as.super.tenant=Si vous ne spécifiez pas de domaine locataire, vous serez considéré comme un super locataire. (Obligatoire pour les noms d'utilisateur de messagerie.)
SW52YWxpZCBhbnN3ZXI_=Réponse invalide
Q291bnRyeQ__=Pays
TW9iaWxl=Mobile
Expand Down Expand Up @@ -290,6 +293,8 @@ username.pattern.violated=Violation de la règle relative au modèle de nom d ut
fill.the.first.name=Veuillez remplir le prénom.
Password.Expired=Votre mot de passe a expiré. Veuillez définir un nouveau mot de passe.
error.22001=Ce mot de passe a été utilisé dans l'histoire récente. Veuillez choisir un autre mot de passe.
error.retry.code.invalid=Authentification échouée. Le code que vous avez entré est invalide ou a expiré. Veuillez réessayer.
resend.time.exceed.or.max.resend.count.exceed=Échec du renvoi. Délai de renvoi dépassé ou nombre maximal de renvois atteint.

# SCIM Attributes
VXNlcm5hbWU_=Nom d'utilisateur
Expand Down Expand Up @@ -364,6 +369,8 @@ QmFja3VwIENvZGUgRW5hYmxlZA__=Code de sauvegarde activé
RW5hYmxlZCBBdXRoZW50aWNhdG9ycw__=Authentificateurs activés
QmFja3VwIENvZGVz=Codes de sauvegarde
RmFpbGVkIEJhY2t1cCBDb2RlIEF0dGVtcHRz=Échec des tentatives de code de sauvegardee
Q2hhbm5lbC51bmF2YWlsYWJsZS5mb3IudXNlcg__=Chaîne indisponible pour l'utilisateur
VW5rbm93bi5jaGFubmVs=Chaîne inconnue
invitation.accepted=Invitation acceptée
invitation.accepted.message=Vous avez désormais accès aux candidatures de votre organisation invitée. Contactez l'administrateur de votre organisation invitée pour obtenir des informations sur les applications disponibles
invitation.not.active=Le lien d'invitation n'est pas actif
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,12 @@ sign.up.button=サインアップ

# <!-- Start of Password Recovery Translations -->
password.recovery.heading=パスワード
password.recovery.body=心配する必要はありません。パスワードをリセットするためのメールをお送りします
password.recovery.body=ご対応させていただきます。ユーザー名を入力してパスワードのリセットを開始します
password.recovery.identifier.input.placeholder=ユーザー名
password.recovery.button=リセットリンクの送信
password.recovery.button.email.link=リセットリンクの送信
password.recovery.button.smsotp=SMSコードを送信する
send.email.link=電子メールでコードを送信する
send.code.via.sms=コードをSMSで送信する
# <!-- End of Password Recovery Translations -->

# <!-- Start of Password Reset Translations -->
Expand Down Expand Up @@ -138,7 +141,7 @@ Start.password.recovery=パスワードの復旧開始
Enter.tenant.here=テナントドメインの入力
Proceed.username.recovery=ユーザー名の復旧に進む
Proceed.password.recovery=パスワードの復旧に進む
If.you.do.not.specify.tenant.domain.consider.as.super.tenant=テナントドメインを指定しない場合、スーパーテナントに属していると見なされます。
If.you.do.not.specify.tenant.domain.consider.as.super.tenant=テナント ドメインを指定しない場合は、スーパー テナントの下にあるとみなされます。 (電子メールのユーザー名には必須です。)
SW52YWxpZCBhbnN3ZXI_=回答が無効です
Q291bnRyeQ__=
TW9iaWxl=携帯番号
Expand Down Expand Up @@ -285,6 +288,8 @@ username.pattern.violated=ユーザー名パターンポリシーが違反しま
fill.the.first.name=名を記入してください。
Password.Expired=パスワードが期限切れになりました。新しいパスワードを設定してください。
error.22001=このパスワードは最近の歴史で使用されています。別のパスワードを選択してください。
error.retry.code.invalid=認証に失敗しました。入力したコードは無効であるか、有効期限が切れています。再試行してください。
resend.time.exceed.or.max.resend.count.exceed=再送信に失敗しました。再送信制限時間を超えたか、最大再送信回数に達しました。

## SCIM Attributes
VXNlcm5hbWU_=ユーザー名
Expand Down Expand Up @@ -359,6 +364,8 @@ QmFja3VwIENvZGUgRW5hYmxlZA__=バックアップコードが有効になりまし
RW5hYmxlZCBBdXRoZW50aWNhdG9ycw__=有効な認証システム
QmFja3VwIENvZGVz=バックアップコード
RmFpbGVkIEJhY2t1cCBDb2RlIEF0dGVtcHRz=バックアップコードの失敗
Q2hhbm5lbC51bmF2YWlsYWJsZS5mb3IudXNlcg__=ユーザーがチャンネルを使用できません
VW5rbm93bi5jaGFubmVs=不明なチャンネル
invitation.accepted=招待状が受け入れられました
invitation.accepted.message=招待された組織のアプリケーションにアクセスできるようになりました。利用可能なアプリケーションに関する情報については、招待された組織の管理者に連絡してください
invitation.not.active=招待リンクはアクティブではありません
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,12 @@ sign.up.button=Cadastrar

# <!-- Start of Password Recovery Translations -->
password.recovery.heading=Esqueceu a senha?
password.recovery.body=Não se preocupe, isso acontece. Enviaremos um e-mail para redefinir sua senha.
password.recovery.body=Estamos protegendo você. Digite seu nome de usuário para começar a redefinir sua senha.
password.recovery.identifier.input.placeholder=Nome de usuário
password.recovery.button=Enviar link de redefinição
password.recovery.button.email.link=Enviar link de redefinição
password.recovery.button.smsotp=enviar codigo sms
send.email.link=Enviar link de redefinição por e-mail
send.code.via.sms=Enviar código por SMS
# <!-- End of Password Recovery Translations -->

# <!-- Start of Password Reset Translations -->
Expand Down Expand Up @@ -142,7 +145,7 @@ Start.password.recovery=Iniciar a recuperação de senha
Enter.tenant.here=Digite seu domínio de tenant
Proceed.username.recovery=Prossiga para a recuperação de nome de usuário
Proceed.password.recovery=Prossiga para a recuperação de senha
If.you.do.not.specify.tenant.domain.consider.as.super.tenant=Se você não especificar um domínio de tenant, você será considerado sob o super tenant.
If.you.do.not.specify.tenant.domain.consider.as.super.tenant=Se você não especificar um domínio de locatário, será considerado superinquilino. (Obrigatório para nomes de usuário de e-mail.)
SW52YWxpZCBhbnN3ZXI_=Resposta inválida
Q291bnRyeQ__=País
TW9iaWxl=Celular
Expand Down Expand Up @@ -289,6 +292,8 @@ username.pattern.violated=Política de padrão de nome de usuário violada
fill.the.first.name=Por favor, preencha o nome.
Password.Expired=Sua senha expirou. Por favor, defina uma nova senha.
error.22001=Esta senha já foi utilizada recentemente. Por favor, escolha uma senha diferente.
error.retry.code.invalid=Falha na autenticação. O código que você digitou é inválido ou expirou. Por favor tente novamente.
resend.time.exceed.or.max.resend.count.exceed=Falha ao reenviar. O limite de tempo de reenvio foi excedido ou a contagem máxima de reenvio foi atingida.

# SCIM Attributes
VXNlcm5hbWU_=Nome de Usuário
Expand Down Expand Up @@ -363,6 +368,8 @@ QmFja3VwIENvZGUgRW5hYmxlZA__=Código de Backup Ativado
RW5hYmxlZCBBdXRoZW50aWNhdG9ycw__=Autenticadores Habilitados
QmFja3VwIENvZGVz=Códigos de Backup
RmFpbGVkIEJhY2t1cCBDb2RlIEF0dGVtcHRz=Tentativas Falhas no Código de Backup
Q2hhbm5lbC51bmF2YWlsYWJsZS5mb3IudXNlcg__=Canal indisponível para o usuário
VW5rbm93bi5jaGFubmVs=Canal desconhecido
invitation.accepted=Convite aceito
invitation.accepted.message=Agora você tem acesso às inscrições da sua organização convidada. Entre em contato com o administrador da sua organização convidada para obter informações sobre os aplicativos disponíveis
invitation.not.active=O link do convite não está ativo
Expand Down
Loading

0 comments on commit 877a811

Please sign in to comment.