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

Commit53afb73

Browse files
authored
Merge pull request#566 from lowcoder-org/fix-oauth-issues
Link User Accounts Based on Common/Matching Auth-Id(email)
2 parents02327cf +5cc8acd commit53afb73

File tree

5 files changed

+48
-9
lines changed

5 files changed

+48
-9
lines changed

‎server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/user/repository/UserRepository.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,5 @@ public interface UserRepository extends ReactiveMongoRepository<User, String> {
1818

1919
Flux<User>findByConnections_SourceAndConnections_RawIdIn(Stringsource,Collection<String>rawIds);
2020

21+
Mono<User>findByName(StringrawUuid);
2122
}

‎server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/user/service/UserService.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,18 @@ public interface UserService {
3232

3333
Mono<Boolean>bindEmail(Useruser,Stringemail);
3434

35-
Mono<User>findByAuthUser(AuthUserauthUser);
35+
Mono<User>findByAuthUserSourceAndRawId(AuthUserauthUser);
36+
37+
Mono<User>findByAuthUserRawId(AuthUserauthUser);
3638

3739
Mono<User>createNewUserByAuthUser(AuthUserauthUser);
3840

3941
Mono<Void>getUserAvatar(ServerWebExchangeexchange,StringuserId);
4042

4143
Mono<Boolean>addNewConnection(StringuserId,Connectionconnection);
4244

45+
Mono<User>addNewConnectionAndReturnUser(StringuserId,Connectionconnection);
46+
4347
Mono<Void>deleteProfilePhoto(Uservisitor);
4448

4549
Mono<Boolean>updatePassword(StringuserId,StringoldPassword,StringnewPassword);

‎server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/user/service/UserServiceImpl.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,10 @@ public Mono<User> findBySourceAndId(String source, String sourceUuid) {
111111
returnrepository.findByConnections_SourceAndConnections_RawId(source,sourceUuid);
112112
}
113113

114+
publicMono<User>findByName(StringrawUuid) {
115+
returnrepository.findByName(rawUuid);
116+
}
117+
114118
@Override
115119
publicMono<Boolean>saveProfilePhoto(PartfilePart,Useruser) {
116120
StringprevAvatar =ObjectUtils.defaultIfNull(user.getAvatar(),"");
@@ -143,10 +147,15 @@ public Mono<User> update(String id, User updatedUser) {
143147
}
144148

145149
@Override
146-
publicMono<User>findByAuthUser(AuthUserauthUser) {
150+
publicMono<User>findByAuthUserSourceAndRawId(AuthUserauthUser) {
147151
returnfindBySourceAndId(authUser.getSource(),authUser.getUid());
148152
}
149153

154+
@Override
155+
publicMono<User>findByAuthUserRawId(AuthUserauthUser) {
156+
returnfindByName(authUser.getUsername());
157+
}
158+
150159
@Override
151160
publicMono<User>createNewUserByAuthUser(AuthUserauthUser) {
152161
UsernewUser =newUser();
@@ -198,6 +207,13 @@ public Mono<Boolean> addNewConnection(String userId, Connection connection) {
198207
.then(Mono.just(true));
199208
}
200209

210+
@Override
211+
publicMono<User>addNewConnectionAndReturnUser(StringuserId,Connectionconnection) {
212+
returnfindById(userId)
213+
.doOnNext(user ->user.getConnections().add(connection))
214+
.flatMap(repository::save);
215+
}
216+
201217
@Override
202218
publicMono<Void>deleteProfilePhoto(Uservisitor) {
203219
StringuserAvatar =visitor.getAvatar();

‎server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/authentication/request/oauth2/request/KeycloakRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ protected Mono<AuthUser> getAuthUser(AuthToken authToken) {
116116
}
117117
AuthUserauthUser =AuthUser.builder()
118118
.uid(MapUtils.getString(map,"sub"))
119-
.username(MapUtils.getString(map,"name"))
119+
.username(MapUtils.getString(map,"email"))
120120
.rawUserInfo(map)
121121
.build();
122122
returnMono.just(authUser);

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

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -161,14 +161,26 @@ public Mono<Void> loginOrRegister(AuthUser authUser, ServerWebExchange exchange,
161161
}
162162

163163
privateMono<User>updateOrCreateUser(AuthUserauthUser) {
164-
returnfindByAuthUser(authUser)
165-
.flatMap(findByAuthUser -> {
166-
if (findByAuthUser.userExist()) {
167-
Useruser =findByAuthUser.user();
164+
returnfindByAuthUserSourceAndRawId(authUser).zipWith(findByAuthUserRawId(authUser))
165+
.flatMap(tuple -> {
166+
167+
FindByAuthUserfindByAuthUserFirst =tuple.getT1();
168+
FindByAuthUserfindByAuthUserSecond =tuple.getT2();
169+
170+
// If the user is found for the same auth source and id, just update the connection
171+
if (findByAuthUserFirst.userExist()) {
172+
Useruser =findByAuthUserFirst.user();
168173
updateConnection(authUser,user);
169174
returnuserService.update(user.getId(),user);
170175
}
171176

177+
//If the user connection is not found with login id, but the user is
178+
// found for the same id in some different connection, then just add a new connection to the user
179+
if(findByAuthUserSecond.userExist()) {
180+
Useruser =findByAuthUserSecond.user();
181+
returnuserService.addNewConnectionAndReturnUser(user.getId(),authUser.toAuthConnection());
182+
}
183+
172184
// if the user is logging/registering via OAuth provider for the first time,
173185
// but is not anonymous, then just add a new connection
174186

@@ -189,8 +201,14 @@ private Mono<User> updateOrCreateUser(AuthUser authUser) {
189201
});
190202
}
191203

192-
protectedMono<FindByAuthUser>findByAuthUser(AuthUserauthUser) {
193-
returnuserService.findByAuthUser(authUser)
204+
protectedMono<FindByAuthUser>findByAuthUserSourceAndRawId(AuthUserauthUser) {
205+
returnuserService.findByAuthUserSourceAndRawId(authUser)
206+
.map(user ->newFindByAuthUser(true,user))
207+
.defaultIfEmpty(newFindByAuthUser(false,null));
208+
}
209+
210+
protectedMono<FindByAuthUser>findByAuthUserRawId(AuthUserauthUser) {
211+
returnuserService.findByAuthUserRawId(authUser)
194212
.map(user ->newFindByAuthUser(true,user))
195213
.defaultIfEmpty(newFindByAuthUser(false,null));
196214
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp