diff --git a/src/lib/components/Login.tsx b/src/lib/components/Login.tsx index efc98dc2..8c6f6691 100644 --- a/src/lib/components/Login.tsx +++ b/src/lib/components/Login.tsx @@ -5,6 +5,7 @@ import type { KcContextBase } from "../getKcContext/KcContextBase"; import { useKcMessage } from "../i18n/useKcMessage"; import { useCssAndCx } from "tss-react"; import { useConstCallback } from "powerhooks/useConstCallback"; +import type { FormEventHandler } from "react"; export const Login = memo(({ kcContext, ...props }: { kcContext: KcContextBase.Login } & KcProps) => { const { social, realm, url, usernameEditDisabled, login, auth, registrationDisabled } = kcContext; @@ -15,7 +16,19 @@ export const Login = memo(({ kcContext, ...props }: { kcContext: KcContextBase.L const [isLoginButtonDisabled, setIsLoginButtonDisabled] = useState(false); - const onSubmit = useConstCallback(() => (setIsLoginButtonDisabled(true), true)); + const onSubmit = useConstCallback>(e => { + e.preventDefault(); + + setIsLoginButtonDisabled(true); + + const formElement = e.target as HTMLFormElement; + + //NOTE: Even if we login with email Keycloak expect username and password in + //the POST request. + formElement.querySelector("input[name='email']")?.setAttribute("name", "username"); + + formElement.submit(); + }); return (