diff --git a/src/login/Fallback.tsx b/src/login/Fallback.tsx index 07c59e47..94b24dc7 100644 --- a/src/login/Fallback.tsx +++ b/src/login/Fallback.tsx @@ -13,7 +13,7 @@ const Error = lazy(() => import("keycloakify/login/pages/Error")); const LoginResetPassword = lazy(() => import("keycloakify/login/pages/LoginResetPassword")); const LoginVerifyEmail = lazy(() => import("keycloakify/login/pages/LoginVerifyEmail")); const Terms = lazy(() => import("keycloakify/login/pages/Terms")); -const LoginDeviceVerifyUserCode = lazy(() => import("keycloakify/login/pages/LoginOauth2DeviceVerifyUserCode")); +const LoginOauth2DeviceVerifyUserCode = lazy(() => import("keycloakify/login/pages/LoginOauth2DeviceVerifyUserCode")); const LoginOauthGrant = lazy(() => import("keycloakify/login/pages/LoginOauthGrant")); const LoginOtp = lazy(() => import("keycloakify/login/pages/LoginOtp")); const LoginPassword = lazy(() => import("keycloakify/login/pages/LoginPassword")); @@ -63,7 +63,7 @@ export default function Fallback(props: FallbackProps) { case "terms.ftl": return ; case "login-oauth2-device-verify-user-code.ftl": - return ; + return ; case "login-oauth-grant.ftl": return ; case "login-otp.ftl": diff --git a/src/login/kcContext/KcContext.ts b/src/login/kcContext/KcContext.ts index e8b68b54..15146652 100644 --- a/src/login/kcContext/KcContext.ts +++ b/src/login/kcContext/KcContext.ts @@ -273,7 +273,11 @@ export declare namespace KcContext { export type LoginOtp = Common & { pageId: "login-otp.ftl"; otpLogin: { - userOtpCredentials: { id: string; userLabel: string }[]; + userOtpCredentials: { + id: string; + userLabel: string; + }[]; + selectedCredentialId?: string; }; }; diff --git a/src/login/pages/LoginOtp.tsx b/src/login/pages/LoginOtp.tsx index 3dc8419b..8dbe637f 100644 --- a/src/login/pages/LoginOtp.tsx +++ b/src/login/pages/LoginOtp.tsx @@ -1,3 +1,4 @@ +import { Fragment } from "react"; import { clsx } from "keycloakify/tools/clsx"; import type { PageProps } from "keycloakify/login/pages/PageProps"; import { useGetClassName } from "keycloakify/login/lib/useGetClassName"; @@ -12,81 +13,88 @@ export default function LoginOtp(props: PageProps - - - - {otpLogin.userOtpCredentials.length > 1 && ( - - - {otpLogin.userOtpCredentials.map((otpCredential, index) => ( - - - - - - {otpCredential.userLabel} - - - - ))} - - - )} + + + {otpLogin.userOtpCredentials.length > 1 && ( - - - {msg("loginOtpOneTime")} - - - - + {otpLogin.userOtpCredentials.map((otpCredential, index) => ( + + + + + + + + {otpCredential.userLabel} + + + + ))} + )} - - - - - - - - + + + + {msg("loginOtpOneTime")} + - - - > + + + {messagesPerField.existsError("totp") && ( + + {messagesPerField.get("totp")} + + )} + + + + + + + + + + + + + ); }