Login: fix ldap

This commit is contained in:
Timofey Boyko 2024-08-09 12:40:17 +03:00
parent 7dc348e05a
commit 1cb8af424c
5 changed files with 8 additions and 15 deletions

View File

@ -70,6 +70,7 @@ async function Page() {
reCaptchaPublicKey={settings?.recaptchaPublicKey} reCaptchaPublicKey={settings?.recaptchaPublicKey}
reCaptchaType={settings?.recaptchaType} reCaptchaType={settings?.recaptchaType}
ldapDomain={capabilities?.ldapDomain} ldapDomain={capabilities?.ldapDomain}
ldapEnabled={capabilities?.ldapEnabled}
/> />
<ThirdParty <ThirdParty
thirdParty={thirdParty} thirdParty={thirdParty}

View File

@ -31,27 +31,20 @@ import React, { createContext, useState } from "react";
export const LoginValueContext = createContext({ export const LoginValueContext = createContext({
isLoading: false, isLoading: false,
isModalOpen: false, isModalOpen: false,
ldapDomain: "",
}); });
export const LoginDispatchContext = createContext({ export const LoginDispatchContext = createContext({
setIsLoading: (value: boolean) => {}, setIsLoading: (value: boolean) => {},
setIsModalOpen: (value: boolean) => {}, setIsModalOpen: (value: boolean) => {},
setLdapDomain: (value: string) => {},
}); });
export const LoginContext = ({ children }: { children: React.ReactNode }) => { export const LoginContext = ({ children }: { children: React.ReactNode }) => {
const [isLoading, setIsLoading] = useState(false); const [isLoading, setIsLoading] = useState(false);
const [isModalOpen, setIsModalOpen] = useState(false); const [isModalOpen, setIsModalOpen] = useState(false);
const [ldapDomain, setLdapDomain] = useState("");
return ( return (
<LoginDispatchContext.Provider <LoginDispatchContext.Provider value={{ setIsLoading, setIsModalOpen }}>
value={{ setIsLoading, setIsModalOpen, setLdapDomain }} <LoginValueContext.Provider value={{ isLoading, isModalOpen }}>
>
<LoginValueContext.Provider
value={{ isLoading, isModalOpen, ldapDomain }}
>
{children} {children}
</LoginValueContext.Provider> </LoginValueContext.Provider>
</LoginDispatchContext.Provider> </LoginDispatchContext.Provider>

View File

@ -75,6 +75,7 @@ const LoginForm = ({
reCaptchaPublicKey, reCaptchaPublicKey,
reCaptchaType, reCaptchaType,
ldapDomain, ldapDomain,
ldapEnabled,
}: LoginFormProps) => { }: LoginFormProps) => {
const { isLoading, isModalOpen } = useContext(LoginValueContext); const { isLoading, isModalOpen } = useContext(LoginValueContext);
const { setIsLoading } = useContext(LoginDispatchContext); const { setIsLoading } = useContext(LoginDispatchContext);
@ -420,7 +421,7 @@ const LoginForm = ({
onChangeCheckbox={onChangeCheckbox} onChangeCheckbox={onChangeCheckbox}
/> />
{ldapDomain && ( {ldapDomain && ldapEnabled && (
<LDAPContainer <LDAPContainer
ldapDomain={ldapDomain} ldapDomain={ldapDomain}
isLdapLoginChecked={isLdapLoginChecked} isLdapLoginChecked={isLdapLoginChecked}

View File

@ -66,16 +66,13 @@ const ThirdParty = ({
hideAuthPage, hideAuthPage,
}: ThirdPartyProps) => { }: ThirdPartyProps) => {
const { isLoading } = useContext(LoginValueContext); const { isLoading } = useContext(LoginValueContext);
const { setIsModalOpen, setLdapDomain } = useContext(LoginDispatchContext); const { setIsModalOpen } = useContext(LoginDispatchContext);
const searchParams = useSearchParams(); const searchParams = useSearchParams();
const { t } = useTranslation(["Login", "Common"]); const { t } = useTranslation(["Login", "Common"]);
useEffect(() => { useEffect(() => {
if (capabilities?.ldapEnabled && capabilities.ldapDomain)
setLdapDomain(capabilities.ldapDomain);
if ( if (
ssoUrl && ssoUrl &&
hideAuthPage && hideAuthPage &&
@ -83,7 +80,7 @@ const ThirdParty = ({
) { ) {
window.location.replace(ssoUrl); window.location.replace(ssoUrl);
} }
}, [capabilities, searchParams, setLdapDomain, ssoUrl, hideAuthPage]); }, [capabilities, searchParams, ssoUrl, hideAuthPage]);
const onSocialButtonClick = useCallback( const onSocialButtonClick = useCallback(
(e: React.MouseEvent<Element, MouseEvent>) => { (e: React.MouseEvent<Element, MouseEvent>) => {

View File

@ -87,6 +87,7 @@ export type LoginFormProps = {
reCaptchaType?: RecaptchaType; reCaptchaType?: RecaptchaType;
cookieSettingsEnabled: boolean; cookieSettingsEnabled: boolean;
ldapDomain?: string; ldapDomain?: string;
ldapEnabled?: boolean;
}; };
export type ForgotPasswordModalDialogProps = { export type ForgotPasswordModalDialogProps = {