diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/authentication/context/FormAuthRequestContext.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/authentication/context/FormAuthRequestContext.java index c4d51866e..eecc1fe99 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/authentication/context/FormAuthRequestContext.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/authentication/context/FormAuthRequestContext.java @@ -12,9 +12,10 @@ public class FormAuthRequestContext extends AuthRequestContext { private final String password; private final boolean register; - public FormAuthRequestContext(String loginId, String password, boolean register) { + public FormAuthRequestContext(String loginId, String password, boolean register, String orgId) { this.loginId = loginId; this.password = password; this.register = register; + this.setOrgId(orgId); } } diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/authentication/AuthenticationController.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/authentication/AuthenticationController.java index f6a58a3c5..c80d7536d 100644 --- a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/authentication/AuthenticationController.java +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/authentication/AuthenticationController.java @@ -41,10 +41,11 @@ public class AuthenticationController implements AuthenticationEndpoints */ @Override public Mono> formLogin(@RequestBody FormLoginRequest formLoginRequest, - @RequestParam(required = false) String invitationId, - ServerWebExchange exchange) { + @RequestParam(required = false) String invitationId, + @RequestParam(required = false) String orgId, + ServerWebExchange exchange) { return authenticationApiService.authenticateByForm(formLoginRequest.loginId(), formLoginRequest.password(), - formLoginRequest.source(), formLoginRequest.register(), formLoginRequest.authId()) + formLoginRequest.source(), formLoginRequest.register(), formLoginRequest.authId(), orgId) .flatMap(user -> authenticationApiService.loginOrRegister(user, exchange, invitationId)) .thenReturn(ResponseView.success(true)); } diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/authentication/AuthenticationEndpoints.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/authentication/AuthenticationEndpoints.java index 096713728..2645c1035 100644 --- a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/authentication/AuthenticationEndpoints.java +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/authentication/AuthenticationEndpoints.java @@ -47,6 +47,7 @@ public interface AuthenticationEndpoints @PostMapping("/form/login") public Mono> formLogin(@RequestBody FormLoginRequest formLoginRequest, @RequestParam(required = false) String invitationId, + @RequestParam(required = false) String orgId, ServerWebExchange exchange); /** diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/authentication/service/AuthenticationApiService.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/authentication/service/AuthenticationApiService.java index e6ae37bd9..d47748662 100644 --- a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/authentication/service/AuthenticationApiService.java +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/authentication/service/AuthenticationApiService.java @@ -12,7 +12,7 @@ public interface AuthenticationApiService { - Mono authenticateByForm(String loginId, String password, String source, boolean register, String authId); + Mono authenticateByForm(String loginId, String password, String source, boolean register, String authId, String orgId); Mono authenticateByOauth2(String authId, String source, String code, String redirectUrl, String orgId); diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/authentication/service/AuthenticationApiServiceImpl.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/authentication/service/AuthenticationApiServiceImpl.java index 20b833415..d4b934b7a 100644 --- a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/authentication/service/AuthenticationApiServiceImpl.java +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/authentication/service/AuthenticationApiServiceImpl.java @@ -86,8 +86,8 @@ public class AuthenticationApiServiceImpl implements AuthenticationApiService { private JWTUtils jwtUtils; @Override - public Mono authenticateByForm(String loginId, String password, String source, boolean register, String authId) { - return authenticate(authId, source, new FormAuthRequestContext(loginId, password, register)); + public Mono authenticateByForm(String loginId, String password, String source, boolean register, String authId, String orgId) { + return authenticate(authId, source, new FormAuthRequestContext(loginId, password, register, orgId)); } @Override @@ -105,7 +105,13 @@ protected Mono authenticate(String authId, @Deprecated String source, }) .doOnNext(findAuthConfig -> { context.setAuthConfig(findAuthConfig.authConfig()); - context.setOrgId(Optional.ofNullable(findAuthConfig.organization()).map(Organization::getId).orElse(null)); + if (findAuthConfig.authConfig().getSource().equals("EMAIL")) { + if(StringUtils.isBlank(context.getOrgId())) { + context.setOrgId(Optional.ofNullable(findAuthConfig.organization()).map(Organization::getId).orElse(null)); + } + } else { + context.setOrgId(Optional.ofNullable(findAuthConfig.organization()).map(Organization::getId).orElse(null)); + } }) .then(authRequestFactory.build(context)) .flatMap(authRequest -> authRequest.auth(context)) diff --git a/server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/authentication/AuthenticationControllerTest.java b/server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/authentication/AuthenticationControllerTest.java index 1930454af..8c53978d0 100644 --- a/server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/authentication/AuthenticationControllerTest.java +++ b/server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/authentication/AuthenticationControllerTest.java @@ -64,7 +64,7 @@ public void testFormRegisterSuccess() { MockServerHttpRequest request = MockServerHttpRequest.post("").build(); MockServerWebExchange exchange = MockServerWebExchange.builder(request).build(); - Mono userMono = authenticationController.formLogin(formLoginRequest, null, exchange) + Mono userMono = authenticationController.formLogin(formLoginRequest, null, null, exchange) .then(userRepository.findByConnections_SourceAndConnections_RawId(source, email)); StepVerifier.create(userMono) @@ -115,8 +115,8 @@ public void testFormLoginSuccess() { MockServerHttpRequest loginRequest = MockServerHttpRequest.post("").build(); MockServerWebExchange loginExchange = MockServerWebExchange.builder(loginRequest).build(); - Mono userMono = authenticationController.formLogin(formRegisterRequest, null, registerExchange) - .then(authenticationController.formLogin(formLoginRequest, null, loginExchange)) + Mono userMono = authenticationController.formLogin(formRegisterRequest, null,null, registerExchange) + .then(authenticationController.formLogin(formLoginRequest, null, null,loginExchange)) .then(userRepository.findByConnections_SourceAndConnections_RawId(source, email)); StepVerifier.create(userMono) @@ -163,8 +163,8 @@ public void testRegisterFailByLoginIdExist() { MockServerHttpRequest request = MockServerHttpRequest.post("").build(); MockServerWebExchange exchange = MockServerWebExchange.builder(request).build(); - Mono> loginMono = authenticationController.formLogin(formLoginRequest, null, exchange) - .then(authenticationController.formLogin(formLoginRequest, null, exchange)); + Mono> loginMono = authenticationController.formLogin(formLoginRequest, null, null,exchange) + .then(authenticationController.formLogin(formLoginRequest, null,null, exchange)); StepVerifier.create(loginMono) .verifyErrorMatches(throwable -> { BizException bizException = (BizException) throwable; @@ -184,7 +184,7 @@ public void testLoginFailByLoginIdNotExist() { MockServerHttpRequest request = MockServerHttpRequest.post("").build(); MockServerWebExchange exchange = MockServerWebExchange.builder(request).build(); - Mono> loginMono = authenticationController.formLogin(formLoginRequest, null, exchange); + Mono> loginMono = authenticationController.formLogin(formLoginRequest, null, null, exchange); StepVerifier.create(loginMono) .verifyErrorMatches(throwable -> { BizException bizException = (BizException) throwable; diff --git a/server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/authentication/GoogleAuthenticateTest.java b/server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/authentication/GoogleAuthenticateTest.java index 2bc973614..c194e10c4 100644 --- a/server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/authentication/GoogleAuthenticateTest.java +++ b/server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/authentication/GoogleAuthenticateTest.java @@ -60,7 +60,7 @@ public void testGoogleRegisterSuccess() { MockServerHttpRequest request = MockServerHttpRequest.post("").build(); MockServerWebExchange exchange = MockServerWebExchange.builder(request).build(); - Mono userMono = authenticationController.formLogin(formLoginRequest, null, exchange) + Mono userMono = authenticationController.formLogin(formLoginRequest, null,null, exchange) .then(userRepository.findByConnections_SourceAndConnections_RawId(source, email)); StepVerifier.create(userMono)