fix(X-Pack): Ldap 对接 AD 域可以免密登录

This commit is contained in:
fit2cloud-chenyw 2024-12-31 15:02:54 +08:00 committed by taojinlong
parent be19a11c8c
commit 21dc31da55
5 changed files with 26 additions and 30 deletions

View File

@ -416,7 +416,9 @@ export default {
btn: 'Login',
username_format: "1-25 alphanumeric characters or ._-:{'@'} and start with a letter or number",
pwd_format: 'Password length is 5-15',
default_login: 'Default'
default_login: 'Default',
ldap_login: 'LDAP Login',
account_login: 'Account Login'
},
component: {
columnList: 'List item',

View File

@ -407,7 +407,9 @@ export default {
btn: '登入',
username_format: "1-25位元字母數字或._-:{'@'}且以字母或數字開頭",
pwd_format: '密碼長度在5-15',
default_login: '預設'
default_login: '預設',
ldap_login: 'LDAP 登錄',
account_login: '賬號登錄'
},
component: {
columnList: '列表項目',

View File

@ -408,7 +408,9 @@ export default {
btn: '登录',
username_format: "1-25位字母数字或者._-:{'@'}且以字母或数字开头",
pwd_format: '密码长度在5-15',
default_login: '默认'
default_login: '默认',
ldap_login: 'LDAP 登录',
account_login: '账号登录'
},
component: {
columnList: '列表项',

View File

@ -80,12 +80,16 @@ const handleLogin = () => {
wsCache.set(appStore.getDekey, res.data)
}
const param = { name: rsaEncryp(name), pwd: rsaEncryp(pwd) }
const isLdap = activeName.value === 'ldap'
if (isLdap) {
param['origin'] = 1
}
duringLogin.value = true
cleanPlatformFlag()
loginApi(param)
.then(res => {
const { token, exp, mfa } = res.data
if (mfa?.enabled) {
if (!isLdap && mfa?.enabled) {
xpackLoginHandler.value?.invokeMethod({ methodName: 'toMfa', args: mfa })
duringLogin.value = false
return
@ -93,7 +97,7 @@ const handleLogin = () => {
userStore.setToken(token)
userStore.setExp(exp)
userStore.setTime(Date.now())
if (!xpackLoadFail.value && xpackInvalidPwd.value?.invokeMethod) {
if (!isLdap && !xpackLoadFail.value && xpackInvalidPwd.value?.invokeMethod) {
const param = {
methodName: 'init'
}
@ -109,18 +113,6 @@ const handleLogin = () => {
}
})
}
const ldapValidate = callback => {
if (!formRef.value) return
formRef.value.validate((valid: boolean) => {
if (valid && callback) {
duringLogin.value = true
callback()
}
})
}
const ldapFeedback = () => {
duringLogin.value = false
}
const invalidPwdCb = val => {
duringLogin.value = !!val
if (val) {
@ -303,14 +295,21 @@ onMounted(async () => {
{{ slogan || '人人可用的开源 BI 工具' }}
</div>
<div class="login-form">
<div class="default-login-tabs" v-if="activeName === 'simple'">
<div
class="default-login-tabs"
v-if="activeName === 'simple' || activeName === 'ldap'"
>
<div class="login-form-title">
<span>账号登录</span>
<span>{{
activeName === 'ldap' ? t('login.ldap_login') : t('login.account_login')
}}</span>
</div>
<el-form-item class="login-form-item" prop="username">
<el-input
v-model="state.loginForm.username"
:placeholder="t('common.account') + '/' + t('commons.email')"
:placeholder="`${t('common.account')}${
activeName === 'simple' ? '/' + t('commons.email') : ''
}`"
autofocus
/>
</el-form-item>
@ -341,15 +340,6 @@ onMounted(async () => {
</div>
</div>
<XpackComponent
class="default-login-tabs"
:active-name="activeName"
:login-form="state.loginForm"
@validate="ldapValidate"
@feedback="ldapFeedback"
jsname="L2NvbXBvbmVudC9sb2dpbi9MZGFw"
/>
<XpackComponent
ref="xpackLoginHandler"
jsname="L2NvbXBvbmVudC9sb2dpbi9IYW5kbGVy"

@ -1 +1 @@
Subproject commit 5173eaefa1251c2f6b7de3d18cfd21046201fda3
Subproject commit f81422e0cb94b72dcf37e940f82e4107e520e9a9