diff --git a/core/core-frontend/src/views/login/index.vue b/core/core-frontend/src/views/login/index.vue index 8e144d2811..9644a09791 100644 --- a/core/core-frontend/src/views/login/index.vue +++ b/core/core-frontend/src/views/login/index.vue @@ -68,6 +68,7 @@ const getCurLocation = () => { } const enterHandler = e => { e.target.blur() + e.stopPropagation() handleLogin() } const formRef = ref() @@ -91,7 +92,16 @@ const handleLogin = () => { cleanPlatformFlag() loginApi(param) .then(res => { + debugger const { token, exp, mfa } = res.data + if (!isLdap && !xpackLoadFail.value && xpackInvalidPwd.value?.invokeMethod) { + const param = { + methodName: 'init', + args: res.data + } + xpackInvalidPwd?.value.invokeMethod(param) + return + } if (!isLdap && mfa?.enabled) { xpackLoginHandler.value?.invokeMethod({ methodName: 'toMfa', args: mfa }) duringLogin.value = false @@ -100,13 +110,6 @@ const handleLogin = () => { userStore.setToken(token) userStore.setExp(exp) userStore.setTime(Date.now()) - if (!isLdap && !xpackLoadFail.value && xpackInvalidPwd.value?.invokeMethod) { - const param = { - methodName: 'init' - } - xpackInvalidPwd?.value.invokeMethod(param) - return - } const queryRedirectPath = getCurLocation() router.push({ path: queryRedirectPath }) }) @@ -116,9 +119,16 @@ const handleLogin = () => { } }) } -const invalidPwdCb = val => { +const invalidPwdCb = cbParam => { + const val = cbParam['status'] duringLogin.value = !!val if (val) { + const mfa = cbParam['mfa'] + if (mfa?.enabled) { + xpackLoginHandler.value?.invokeMethod({ methodName: 'toMfa', args: mfa }) + duringLogin.value = false + return + } const queryRedirectPath = getCurLocation() router.push({ path: queryRedirectPath }) } diff --git a/core/core-frontend/src/views/mobile/login/index.vue b/core/core-frontend/src/views/mobile/login/index.vue index 2b1b865a19..d388e75edc 100644 --- a/core/core-frontend/src/views/mobile/login/index.vue +++ b/core/core-frontend/src/views/mobile/login/index.vue @@ -83,12 +83,23 @@ const handleBlur = () => { inputFocus.value = '' } -const invalidPwdCb = val => { +const invalidPwdCb = cbParam => { + const val = cbParam['status'] duringLogin.value = !!val if (val) { + const mfa = cbParam['mfa'] + if (mfa?.enabled) { + for (const key in mfa) { + mfaData.value[key] = mfa[key] + } + showMfa.value = true + duringLogin.value = false + return + } router.push({ path: '/index' }) } } + const closeMfa = () => { showMfa.value = false } @@ -114,6 +125,14 @@ const onSubmit = async () => { loginApi(param) .then(res => { const { token, exp, mfa } = res.data + if (!xpackLoadFail.value && xpackInvalidPwd.value?.invokeMethod) { + const param = { + methodName: 'init', + args: res.data + } + xpackInvalidPwd?.value.invokeMethod(param) + return + } showMfa.value = false if (mfa?.enabled) { for (const key in mfa) { @@ -126,13 +145,6 @@ const onSubmit = async () => { userStore.setToken(token) userStore.setExp(exp) userStore.setTime(Date.now()) - if (!xpackLoadFail.value && xpackInvalidPwd.value?.invokeMethod) { - const param = { - methodName: 'init' - } - xpackInvalidPwd?.value.invokeMethod(param) - return - } router.push({ path: '/index' }) }) .catch(() => { diff --git a/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/user/api/UserApi.java b/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/user/api/UserApi.java index 34ecdf7cfa..6ec48dbde7 100644 --- a/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/user/api/UserApi.java +++ b/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/user/api/UserApi.java @@ -9,6 +9,7 @@ import io.dataease.api.permissions.user.dto.*; import io.dataease.api.permissions.user.vo.*; import io.dataease.auth.DeApiPath; import io.dataease.auth.DePermit; +import io.dataease.auth.vo.InvalidPwdVO; import io.dataease.auth.vo.TokenVO; import io.dataease.model.KeywordRequest; import io.dataease.request.BaseGridRequest; @@ -196,10 +197,6 @@ public interface UserApi { @GetMapping("/defaultOrgAdmin") boolean defaultOrgAdmin(); - @Hidden - @GetMapping("/invalidPwd") - InvalidPwdVO invalidPwd(); - @Hidden @PostMapping("/subOrgUser") List subOrgUser(@RequestBody List oidList); diff --git a/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/user/dto/ModifyPwdRequest.java b/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/user/dto/ModifyPwdRequest.java index cf23b2d66a..39e94f2834 100644 --- a/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/user/dto/ModifyPwdRequest.java +++ b/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/user/dto/ModifyPwdRequest.java @@ -12,6 +12,8 @@ public class ModifyPwdRequest implements Serializable { @Serial private static final long serialVersionUID = -6583458043271002864L; + @Schema(description = "用户ID") + private Long uid; @Schema(description = "原始密码", requiredMode = Schema.RequiredMode.REQUIRED) private String pwd; @Schema(description = "新密码", requiredMode = Schema.RequiredMode.REQUIRED) diff --git a/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/user/vo/InvalidPwdVO.java b/sdk/common/src/main/java/io/dataease/auth/vo/InvalidPwdVO.java similarity index 54% rename from sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/user/vo/InvalidPwdVO.java rename to sdk/common/src/main/java/io/dataease/auth/vo/InvalidPwdVO.java index 83b4ec913f..77ed11d9d2 100644 --- a/sdk/api/api-permissions/src/main/java/io/dataease/api/permissions/user/vo/InvalidPwdVO.java +++ b/sdk/common/src/main/java/io/dataease/auth/vo/InvalidPwdVO.java @@ -1,5 +1,7 @@ -package io.dataease.api.permissions.user.vo; +package io.dataease.auth.vo; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import java.io.Serial; @@ -10,6 +12,9 @@ public class InvalidPwdVO implements Serializable { @Serial private static final long serialVersionUID = 3684394012648654165L; + @JsonSerialize(using= ToStringSerializer.class) + private Long uid; + private boolean invalid; private Long validityPeriod; diff --git a/sdk/common/src/main/java/io/dataease/auth/vo/TokenVO.java b/sdk/common/src/main/java/io/dataease/auth/vo/TokenVO.java index bf188547d1..d4f4c78d5e 100644 --- a/sdk/common/src/main/java/io/dataease/auth/vo/TokenVO.java +++ b/sdk/common/src/main/java/io/dataease/auth/vo/TokenVO.java @@ -24,6 +24,8 @@ public class TokenVO implements Serializable { private MfaItem mfa; + private InvalidPwdVO invalidPwd; + public TokenVO(String token, Long exp) { this.token = token; this.exp = exp; diff --git a/sdk/common/src/main/java/io/dataease/utils/WhitelistUtils.java b/sdk/common/src/main/java/io/dataease/utils/WhitelistUtils.java index 55e87f89c5..68da28d329 100644 --- a/sdk/common/src/main/java/io/dataease/utils/WhitelistUtils.java +++ b/sdk/common/src/main/java/io/dataease/utils/WhitelistUtils.java @@ -49,6 +49,7 @@ public class WhitelistUtils { "/sysParameter/defaultLogin", "/embedded/initIframe", "/sysParameter/i18nOptions", + "/user/modifyPwd", "/"); public static boolean match(String requestURI) {