Skip to content

Commit ff95aab

Browse files
authored
Merge pull request #522 from lowcoder-org/possibility-to-bind-user-to-org-on-signup-and-login
Allow Email/Form Login/Register To Bind User To Org On Login/SignUp
2 parents f8077f2 + d0c019f commit ff95aab

File tree

7 files changed

+24
-15
lines changed

7 files changed

+24
-15
lines changed

server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/authentication/context/FormAuthRequestContext.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@ public class FormAuthRequestContext extends AuthRequestContext {
1212
private final String password;
1313
private final boolean register;
1414

15-
public FormAuthRequestContext(String loginId, String password, boolean register) {
15+
public FormAuthRequestContext(String loginId, String password, boolean register, String orgId) {
1616
this.loginId = loginId;
1717
this.password = password;
1818
this.register = register;
19+
this.setOrgId(orgId);
1920
}
2021
}

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/authentication/AuthenticationController.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,11 @@ public class AuthenticationController implements AuthenticationEndpoints
4141
*/
4242
@Override
4343
public Mono<ResponseView<Boolean>> formLogin(@RequestBody FormLoginRequest formLoginRequest,
44-
@RequestParam(required = false) String invitationId,
45-
ServerWebExchange exchange) {
44+
@RequestParam(required = false) String invitationId,
45+
@RequestParam(required = false) String orgId,
46+
ServerWebExchange exchange) {
4647
return authenticationApiService.authenticateByForm(formLoginRequest.loginId(), formLoginRequest.password(),
47-
formLoginRequest.source(), formLoginRequest.register(), formLoginRequest.authId())
48+
formLoginRequest.source(), formLoginRequest.register(), formLoginRequest.authId(), orgId)
4849
.flatMap(user -> authenticationApiService.loginOrRegister(user, exchange, invitationId))
4950
.thenReturn(ResponseView.success(true));
5051
}

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/authentication/AuthenticationEndpoints.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public interface AuthenticationEndpoints
4747
@PostMapping("/form/login")
4848
public Mono<ResponseView<Boolean>> formLogin(@RequestBody FormLoginRequest formLoginRequest,
4949
@RequestParam(required = false) String invitationId,
50+
@RequestParam(required = false) String orgId,
5051
ServerWebExchange exchange);
5152

5253
/**

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/authentication/service/AuthenticationApiService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
public interface AuthenticationApiService {
1414

15-
Mono<AuthUser> authenticateByForm(String loginId, String password, String source, boolean register, String authId);
15+
Mono<AuthUser> authenticateByForm(String loginId, String password, String source, boolean register, String authId, String orgId);
1616

1717
Mono<AuthUser> authenticateByOauth2(String authId, String source, String code, String redirectUrl, String orgId);
1818

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/authentication/service/AuthenticationApiServiceImpl.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,8 @@ public class AuthenticationApiServiceImpl implements AuthenticationApiService {
8686
private JWTUtils jwtUtils;
8787

8888
@Override
89-
public Mono<AuthUser> authenticateByForm(String loginId, String password, String source, boolean register, String authId) {
90-
return authenticate(authId, source, new FormAuthRequestContext(loginId, password, register));
89+
public Mono<AuthUser> authenticateByForm(String loginId, String password, String source, boolean register, String authId, String orgId) {
90+
return authenticate(authId, source, new FormAuthRequestContext(loginId, password, register, orgId));
9191
}
9292

9393
@Override
@@ -105,7 +105,13 @@ protected Mono<AuthUser> authenticate(String authId, @Deprecated String source,
105105
})
106106
.doOnNext(findAuthConfig -> {
107107
context.setAuthConfig(findAuthConfig.authConfig());
108-
context.setOrgId(Optional.ofNullable(findAuthConfig.organization()).map(Organization::getId).orElse(null));
108+
if (findAuthConfig.authConfig().getSource().equals("EMAIL")) {
109+
if(StringUtils.isBlank(context.getOrgId())) {
110+
context.setOrgId(Optional.ofNullable(findAuthConfig.organization()).map(Organization::getId).orElse(null));
111+
}
112+
} else {
113+
context.setOrgId(Optional.ofNullable(findAuthConfig.organization()).map(Organization::getId).orElse(null));
114+
}
109115
})
110116
.then(authRequestFactory.build(context))
111117
.flatMap(authRequest -> authRequest.auth(context))

server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/authentication/AuthenticationControllerTest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public void testFormRegisterSuccess() {
6464
MockServerHttpRequest request = MockServerHttpRequest.post("").build();
6565
MockServerWebExchange exchange = MockServerWebExchange.builder(request).build();
6666

67-
Mono<User> userMono = authenticationController.formLogin(formLoginRequest, null, exchange)
67+
Mono<User> userMono = authenticationController.formLogin(formLoginRequest, null, null, exchange)
6868
.then(userRepository.findByConnections_SourceAndConnections_RawId(source, email));
6969

7070
StepVerifier.create(userMono)
@@ -115,8 +115,8 @@ public void testFormLoginSuccess() {
115115
MockServerHttpRequest loginRequest = MockServerHttpRequest.post("").build();
116116
MockServerWebExchange loginExchange = MockServerWebExchange.builder(loginRequest).build();
117117

118-
Mono<User> userMono = authenticationController.formLogin(formRegisterRequest, null, registerExchange)
119-
.then(authenticationController.formLogin(formLoginRequest, null, loginExchange))
118+
Mono<User> userMono = authenticationController.formLogin(formRegisterRequest, null,null, registerExchange)
119+
.then(authenticationController.formLogin(formLoginRequest, null, null,loginExchange))
120120
.then(userRepository.findByConnections_SourceAndConnections_RawId(source, email));
121121

122122
StepVerifier.create(userMono)
@@ -163,8 +163,8 @@ public void testRegisterFailByLoginIdExist() {
163163
MockServerHttpRequest request = MockServerHttpRequest.post("").build();
164164
MockServerWebExchange exchange = MockServerWebExchange.builder(request).build();
165165

166-
Mono<ResponseView<Boolean>> loginMono = authenticationController.formLogin(formLoginRequest, null, exchange)
167-
.then(authenticationController.formLogin(formLoginRequest, null, exchange));
166+
Mono<ResponseView<Boolean>> loginMono = authenticationController.formLogin(formLoginRequest, null, null,exchange)
167+
.then(authenticationController.formLogin(formLoginRequest, null,null, exchange));
168168
StepVerifier.create(loginMono)
169169
.verifyErrorMatches(throwable -> {
170170
BizException bizException = (BizException) throwable;
@@ -184,7 +184,7 @@ public void testLoginFailByLoginIdNotExist() {
184184
MockServerHttpRequest request = MockServerHttpRequest.post("").build();
185185
MockServerWebExchange exchange = MockServerWebExchange.builder(request).build();
186186

187-
Mono<ResponseView<Boolean>> loginMono = authenticationController.formLogin(formLoginRequest, null, exchange);
187+
Mono<ResponseView<Boolean>> loginMono = authenticationController.formLogin(formLoginRequest, null, null, exchange);
188188
StepVerifier.create(loginMono)
189189
.verifyErrorMatches(throwable -> {
190190
BizException bizException = (BizException) throwable;

server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/authentication/GoogleAuthenticateTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public void testGoogleRegisterSuccess() {
6060
MockServerHttpRequest request = MockServerHttpRequest.post("").build();
6161
MockServerWebExchange exchange = MockServerWebExchange.builder(request).build();
6262

63-
Mono<User> userMono = authenticationController.formLogin(formLoginRequest, null, exchange)
63+
Mono<User> userMono = authenticationController.formLogin(formLoginRequest, null,null, exchange)
6464
.then(userRepository.findByConnections_SourceAndConnections_RawId(source, email));
6565

6666
StepVerifier.create(userMono)

0 commit comments

Comments
 (0)