Skip to content

Commit 2655e5c

Browse files
dragonpooludomikula
authored andcommitted
#1322: Expose email in currentUser endpoint.
Add userAuth(jwt, provider) to the currentUser endpoint.
1 parent 6828af9 commit 2655e5c

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/user/model/UserDetail.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,5 @@ public class UserDetail {
3131
private String ip;
3232
private List<Map<String, String>> groups;
3333
private Map<String, Object> extra;
34+
private Map<String, Object> userAuth;
3435
}

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

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.apache.commons.lang3.ObjectUtils;
99
import org.apache.commons.lang3.RandomStringUtils;
1010
import org.apache.commons.lang3.StringUtils;
11+
import org.jetbrains.annotations.NotNull;
1112
import org.lowcoder.domain.asset.model.Asset;
1213
import org.lowcoder.domain.asset.service.AssetService;
1314
import org.lowcoder.domain.authentication.AuthenticationService;
@@ -197,8 +198,10 @@ public Mono<Boolean> bindEmail(User user, String email) {
197198
.source(AuthSourceConstants.EMAIL)
198199
.name(email)
199200
.rawId(email)
201+
.email(email)
200202
.build();
201203
user.getConnections().add(connection);
204+
user.setEmail(email);
202205
return repository.save(user)
203206
.then(Mono.just(true))
204207
.onErrorResume(throwable -> {
@@ -215,6 +218,7 @@ public Mono<User> addNewConnectionAndReturnUser(String userId, AuthUser authUser
215218
return findById(userId)
216219
.doOnNext(user -> {
217220
user.getConnections().add(connection);
221+
if(StringUtils.isEmpty(user.getEmail())) user.setEmail(connection.getEmail());
218222
user.setActiveAuthId(connection.getAuthId());
219223

220224
if (AuthSourceConstants.EMAIL.equals(authUser.getSource())
@@ -360,20 +364,41 @@ public Mono<UserDetail> buildUserDetail(User user, boolean withoutDynamicGroups)
360364
.map(tuple2 -> {
361365
OrgMember orgMember = tuple2.getT1();
362366
List<Map<String, String>> groups = tuple2.getT2();
367+
String activeAuthId = user.getActiveAuthId();
368+
Optional<Connection> connection = user.getConnections().stream().filter(con -> con.getAuthId().equals(activeAuthId)).findFirst();
369+
HashMap<String, Object> userAuth = connectionToUserAuthDetail(connection);
363370
return UserDetail.builder()
364371
.id(user.getId())
365372
.name(StringUtils.isEmpty(user.getName())?user.getId():user.getName())
366373
.avatarUrl(user.getAvatarUrl())
367374
.uiLanguage(user.getUiLanguage())
368-
.email(convertEmail(user.getConnections()))
375+
.email(user.getEmail())
369376
.ip(ip)
370377
.groups(groups)
371378
.extra(getUserDetailExtra(user, orgMember.getOrgId()))
379+
.userAuth(userAuth)
372380
.build();
373381
});
374382
});
375383
}
376384

385+
private static @NotNull HashMap<String, Object> connectionToUserAuthDetail(Optional<Connection> connection) {
386+
HashMap<String, Object> userAuth = new HashMap<String, Object>();
387+
if(connection.isPresent()) {
388+
if(connection.get().getSource().equals(AuthSourceConstants.EMAIL)) {
389+
userAuth.put("jwt", "");
390+
userAuth.put("provider", AuthSourceConstants.EMAIL);
391+
} else if(connection.get().getAuthConnectionAuthToken() != null) {
392+
userAuth.put("jwt", connection.get().getAuthConnectionAuthToken().getAccessToken());
393+
userAuth.put("provider", connection.get().getSource());
394+
} else {
395+
userAuth.put("jwt", "");
396+
userAuth.put("provider", connection.get().getSource());
397+
}
398+
}
399+
return userAuth;
400+
}
401+
377402
/**
378403
* In enterprise mode, user can be deleted and then related connections should be released here by appending a timestamp after the source field.
379404
*/

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy