Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit6845453

Browse files
committed
Add functionality to allow users to link to auth providers while being logged in
1 parent9595937 commit6845453

File tree

4 files changed

+43
-6
lines changed

4 files changed

+43
-6
lines changed

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

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public Mono<ResponseView<Boolean>> formLogin(@RequestBody FormLoginRequest formL
4646
ServerWebExchangeexchange) {
4747
returnauthenticationApiService.authenticateByForm(formLoginRequest.loginId(),formLoginRequest.password(),
4848
formLoginRequest.source(),formLoginRequest.register(),formLoginRequest.authId(),orgId)
49-
.flatMap(user ->authenticationApiService.loginOrRegister(user,exchange,invitationId))
49+
.flatMap(user ->authenticationApiService.loginOrRegister(user,exchange,invitationId,Boolean.FALSE))
5050
.thenReturn(ResponseView.success(true));
5151
}
5252

@@ -63,7 +63,20 @@ public Mono<ResponseView<Boolean>> loginWithThirdParty(
6363
@RequestParamStringorgId,
6464
ServerWebExchangeexchange) {
6565
returnauthenticationApiService.authenticateByOauth2(authId,source,code,redirectUrl,orgId)
66-
.flatMap(authUser ->authenticationApiService.loginOrRegister(authUser,exchange,invitationId))
66+
.flatMap(authUser ->authenticationApiService.loginOrRegister(authUser,exchange,invitationId,Boolean.FALSE))
67+
.thenReturn(ResponseView.success(true));
68+
}
69+
70+
@Override
71+
publicMono<ResponseView<Boolean>>linkAccountWithThirdParty(
72+
@RequestParam(required =false)StringauthId,
73+
@RequestParam(required =false)Stringsource,
74+
@RequestParamStringcode,
75+
@RequestParamStringredirectUrl,
76+
@RequestParamStringorgId,
77+
ServerWebExchangeexchange) {
78+
returnauthenticationApiService.authenticateByOauth2(authId,source,code,redirectUrl,orgId)
79+
.flatMap(authUser ->authenticationApiService.loginOrRegister(authUser,exchange,null,Boolean.TRUE))
6780
.thenReturn(ResponseView.success(true));
6881
}
6982

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,24 @@ public Mono<ResponseView<Boolean>> loginWithThirdParty(
6969
@RequestParamStringorgId,
7070
ServerWebExchangeexchange);
7171

72+
/**
73+
* Link current account with third party auth provider
74+
*/
75+
@Operation(
76+
tags =TAG_AUTHENTICATION,
77+
operationId ="linkAccountWithTP",
78+
summary ="Link current account with third party auth provider",
79+
description ="Authenticate a Lowcoder User using third-party login credentials and link to the existing session/account"
80+
)
81+
@PostMapping("/tp/link")
82+
publicMono<ResponseView<Boolean>>linkAccountWithThirdParty(
83+
@RequestParam(required =false)StringauthId,
84+
@RequestParam(required =false)Stringsource,
85+
@RequestParamStringcode,
86+
@RequestParamStringredirectUrl,
87+
@RequestParamStringorgId,
88+
ServerWebExchangeexchange);
89+
7290
@Operation(
7391
tags =TAG_AUTHENTICATION,
7492
operationId ="logout",

‎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
@@ -16,7 +16,7 @@ public interface AuthenticationApiService {
1616

1717
Mono<AuthUser>authenticateByOauth2(StringauthId,Stringsource,Stringcode,StringredirectUrl,StringorgId);
1818

19-
Mono<Void>loginOrRegister(AuthUserauthUser,ServerWebExchangeexchange,StringinvitationId);
19+
Mono<Void>loginOrRegister(AuthUserauthUser,ServerWebExchangeexchange,StringinvitationId,booleanlinKExistingUser);
2020

2121
Mono<Boolean>enableAuthConfig(AuthConfigRequestauthConfigRequest);
2222

‎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
@@ -130,8 +130,8 @@ protected Mono<AuthUser> authenticate(String authId, @Deprecated String source,
130130

131131
@Override
132132
publicMono<Void>loginOrRegister(AuthUserauthUser,ServerWebExchangeexchange,
133-
StringinvitationId) {
134-
returnupdateOrCreateUser(authUser)
133+
StringinvitationId,booleanlinKExistingUser) {
134+
returnupdateOrCreateUser(authUser,linKExistingUser)
135135
.delayUntil(user ->ReactiveSecurityContextHolder.getContext()
136136
.doOnNext(securityContext ->securityContext.setAuthentication(AuthenticationUtils.toAuthentication(user))))
137137
// save token and set cookie
@@ -160,7 +160,13 @@ public Mono<Void> loginOrRegister(AuthUser authUser, ServerWebExchange exchange,
160160
.then(businessEventPublisher.publishUserLoginEvent(authUser.getSource()));
161161
}
162162

163-
privateMono<User>updateOrCreateUser(AuthUserauthUser) {
163+
privateMono<User>updateOrCreateUser(AuthUserauthUser,booleanlinkExistingUser) {
164+
165+
if(linkExistingUser) {
166+
returnsessionUserService.getVisitor()
167+
.flatMap(user ->userService.addNewConnectionAndReturnUser(user.getId(),authUser.toAuthConnection()));
168+
}
169+
164170
returnfindByAuthUserSourceAndRawId(authUser).zipWith(findByAuthUserRawId(authUser))
165171
.flatMap(tuple -> {
166172

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp