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

Commit70a2284

Browse files
committed
Link accounts based on common authid(email)
1 parentc822a45 commit70a2284

File tree

4 files changed

+48
-8
lines changed

4 files changed

+48
-8
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ public interface UserRepository extends ReactiveMongoRepository<User, String> {
1616

1717
Mono<User>findByConnections_SourceAndConnections_RawId(Stringsource,StringrawId);
1818

19+
Flux<User>findByConnections_RawId(StringrawId);
20+
1921
Flux<User>findByConnections_SourceAndConnections_RawIdIn(Stringsource,Collection<String>rawIds);
2022

2123
}

‎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+
Flux<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+
publicFlux<User>findByRawId(StringrawUuid) {
115+
returnrepository.findByConnections_RawId(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+
publicFlux<User>findByAuthUserRawId(AuthUserauthUser) {
156+
returnfindByRawId(authUser.getUid());
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/service/AuthenticationApiServiceImpl.java‎

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

157157
privateMono<User>updateOrCreateUser(AuthUserauthUser) {
158-
returnfindByAuthUser(authUser)
159-
.flatMap(findByAuthUser -> {
160-
if (findByAuthUser.userExist()) {
161-
Useruser =findByAuthUser.user();
158+
returnfindByAuthUserSourceAndRawId(authUser).zipWith(findByAuthUserRawId(authUser))
159+
.flatMap(tuple -> {
160+
161+
FindByAuthUserfindByAuthUserFirst =tuple.getT1();
162+
FindByAuthUserfindByAuthUserSecond =tuple.getT2();
163+
164+
// If the user is found for the same auth source and id, just update the connection
165+
if (findByAuthUserFirst.userExist()) {
166+
Useruser =findByAuthUserFirst.user();
162167
updateConnection(authUser,user);
163168
returnuserService.update(user.getId(),user);
164169
}
165170

171+
//If the user connection is not found with login id, but the user is
172+
// found for the same id in some different connection, then just add a new connection to the user
173+
if(findByAuthUserSecond.userExist()) {
174+
Useruser =findByAuthUserSecond.user();
175+
returnuserService.addNewConnectionAndReturnUser(user.getId(),authUser.toAuthConnection());
176+
}
177+
166178
// if the user is logging/registering via OAuth provider for the first time,
167179
// but is not anonymous, then just add a new connection
168180

@@ -183,12 +195,18 @@ private Mono<User> updateOrCreateUser(AuthUser authUser) {
183195
});
184196
}
185197

186-
protectedMono<FindByAuthUser>findByAuthUser(AuthUserauthUser) {
187-
returnuserService.findByAuthUser(authUser)
198+
protectedMono<FindByAuthUser>findByAuthUserSourceAndRawId(AuthUserauthUser) {
199+
returnuserService.findByAuthUserSourceAndRawId(authUser)
188200
.map(user ->newFindByAuthUser(true,user))
189201
.defaultIfEmpty(newFindByAuthUser(false,null));
190202
}
191203

204+
protectedMono<FindByAuthUser>findByAuthUserRawId(AuthUserauthUser) {
205+
returnuserService.findByAuthUserRawId(authUser).collectList()
206+
.map(user ->newFindByAuthUser(true,user.stream().findFirst().get()))
207+
.defaultIfEmpty(newFindByAuthUser(false,null));
208+
}
209+
192210
/**
193211
* Update the connection after re-authenticating
194212
*/

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp