From a9d57ed141812efa1ed62ccdc36a4468c48a9b57 Mon Sep 17 00:00:00 2001 From: Guobao <8208908+JeremieCHN@users.noreply.github.com> Date: Sun, 31 Dec 2023 21:28:01 +0800 Subject: [PATCH] feat: add ldap login support (#126) * feat: add ldap login support * fix: code factor --------- Co-authored-by: Andy Hsu --- src/lang/en/manage.json | 3 ++- src/lang/en/settings.json | 11 ++++++++- src/pages/login/index.tsx | 36 ++++++++++++++++++++++++----- src/pages/manage/sidemenu_items.tsx | 8 ++++++- src/types/setting.ts | 1 + 5 files changed, 50 insertions(+), 9 deletions(-) diff --git a/src/lang/en/manage.json b/src/lang/en/manage.json index 5268eb2441..89568ffb2b 100644 --- a/src/lang/en/manage.json +++ b/src/lang/en/manage.json @@ -20,7 +20,8 @@ "indexes": "Indexes", "sso": "Single Sign-on", "docs": "Documentation", - "offline_download": "Offline Download" + "offline_download": "Offline Download", + "ldap": "LDAP" }, "title": "AList Manage", "not_admin": "You are not admin user, please login with admin account.", diff --git a/src/lang/en/settings.json b/src/lang/en/settings.json index 74c4da2cea..8b1e604718 100755 --- a/src/lang/en/settings.json +++ b/src/lang/en/settings.json @@ -97,5 +97,14 @@ "version": "Version", "video_autoplay": "Video autoplay", "video_types": "Video types", - "webauthn_login_enabled": "Webauthn login enabled" + "webauthn_login_enabled": "Webauthn login enabled", + "ldap_login_enabled": "LDAP login enabled", + "ldap_server": "Server", + "ldap_manager_dn": "Manager DN", + "ldap_manager_password": "Manager Password", + "ldap_user_search_base": "User Search Base", + "ldap_user_search_filter": "User Search Filter", + "ldap_default_permission": "Default permission", + "ldap_default_dir": "Default Dir", + "ldap_login_tips": "Login tips" } diff --git a/src/pages/login/index.tsx b/src/pages/login/index.tsx index cf0bd68049..bbda98faa7 100644 --- a/src/pages/login/index.tsx +++ b/src/pages/login/index.tsx @@ -56,13 +56,23 @@ const Login = () => { const [opt, setOpt] = createSignal("") const [useauthn, setuseauthn] = createSignal(false) const [remember, setRemember] = createStorageSignal("remember-pwd", "false") + const [useLdap, setUseLdap] = createSignal(false) const [loading, data] = useFetch( - async (): Promise> => - r.post("/auth/login/hash", { - username: username(), - password: hashPwd(password()), - otp_code: opt(), - }), + async (): Promise> => { + if (useLdap()) { + return r.post("/auth/login/ldap", { + username: username(), + password: password(), + otp_code: opt(), + }) + } else { + return r.post("/auth/login/hash", { + username: username(), + password: hashPwd(password()), + otp_code: opt(), + }) + } + }, ) const [, postauthnlogin] = useFetch( ( @@ -149,6 +159,11 @@ const Login = () => { } } const [needOpt, setNeedOpt] = createSignal(false) + const ldapLoginEnabled = getSettingBool("ldap_login_enabled") + const ldapLoginTips = getSetting("ldap_login_tips") + if (ldapLoginEnabled) { + setUseLdap(true) + } return (
@@ -247,6 +262,15 @@ const Login = () => { {t("login.login")} + + setUseLdap(!useLdap())} + > + {ldapLoginTips} + +