Skip to content

Commit 29201c7

Browse files
Merge branch 'dev' into list-comp-sortable
2 parents d6e4781 + d302efe commit 29201c7

File tree

5 files changed

+32
-8
lines changed

5 files changed

+32
-8
lines changed

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ public class AuthUser {
2525

2626
private String orgId;
2727

28+
// Add groupId for group mapping
29+
private String groupId;
30+
2831
private AuthRequestContext authContext;
2932

3033
/**

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,7 @@ protected Map<String, Object> getUserDetailExtra(User user, String orgId) {
418418
return Optional.ofNullable(user.getOrgTransformedUserInfo())
419419
.map(orgTransformedUserInfo -> orgTransformedUserInfo.get(orgId))
420420
.map(TransformedUserInfo::extra)
421-
.orElse(convertConnections(user.getConnections()));
421+
.orElse(convertConnections(user.getConnections().stream().filter(c -> c.getAuthId().equals(user.getActiveAuthId())).collect(Collectors.toSet())));
422422
}
423423

424424
protected Mono<List<Map<String, String>>> buildUserDetailGroups(String userId, OrgMember orgMember, boolean withoutDynamicGroups,
@@ -443,7 +443,7 @@ protected Map<String, Object> convertConnections(Set<Connection> connections) {
443443
return connections.stream()
444444
.filter(connection -> !AuthSourceConstants.EMAIL.equals(connection.getSource()) &&
445445
!AuthSourceConstants.PHONE.equals(connection.getSource()))
446-
.collect(Collectors.toMap(Connection::getAuthId, Connection::getRawUserInfo));
446+
.collect(Collectors.toMap(Connection::getSource, Connection::getRawUserInfo));
447447
}
448448

449449
protected String convertEmail(Set<Connection> connections) {

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

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@
2323
import org.lowcoder.domain.authentication.FindAuthConfig;
2424
import org.lowcoder.domain.authentication.context.AuthRequestContext;
2525
import org.lowcoder.domain.authentication.context.FormAuthRequestContext;
26+
import org.lowcoder.domain.group.model.GroupMember;
27+
import org.lowcoder.domain.group.service.GroupMemberService;
28+
import org.lowcoder.domain.organization.model.MemberRole;
2629
import org.lowcoder.domain.organization.model.OrgMember;
2730
import org.lowcoder.domain.organization.model.Organization;
2831
import org.lowcoder.domain.organization.model.OrganizationDomain;
@@ -73,6 +76,7 @@ public class AuthenticationApiServiceImpl implements AuthenticationApiService {
7376
private final JWTUtils jwtUtils;
7477
private final AuthProperties authProperties;
7578
private final CommonConfig commonConfig;
79+
private final GroupMemberService groupMemberService;
7680

7781
@Override
7882
public Mono<AuthUser> authenticateByForm(String loginId, String password, String source, boolean register, String authId, String orgId) {
@@ -143,7 +147,7 @@ public Mono<Void> loginOrRegister(AuthUser authUser, ServerWebExchange exchange,
143147
return Mono.empty();
144148
})
145149
// after login
146-
.delayUntil(user -> onUserLogin(authUser.getOrgId(), user, authUser.getSource()))
150+
.delayUntil(user -> onUserLogin(authUser.getOrgId(), user, authUser.getSource(), authUser.getGroupId()))
147151
// process invite
148152
.delayUntil(__ -> {
149153
if (StringUtils.isBlank(invitationId)) {
@@ -241,7 +245,7 @@ public Mono<Void> onUserRegister(User user, boolean isSuperAdmin) {
241245
return organizationService.createDefault(user, isSuperAdmin).then();
242246
}
243247

244-
protected Mono<Void> onUserLogin(String orgId, User user, String source) {
248+
protected Mono<Void> onUserLogin(String orgId, User user, String source, String groupId) {
245249
Mono<String> orgMono;
246250
if(commonConfig.getWorkspace().getMode() == WorkspaceMode.ENTERPRISE) {
247251
orgMono = organizationService.getOrganizationInEnterpriseMode().map(HasIdAndAuditing::getId);
@@ -251,7 +255,14 @@ protected Mono<Void> onUserLogin(String orgId, User user, String source) {
251255
}
252256
orgMono = Mono.just(orgId);
253257
}
254-
return orgMono.flatMap(orgId2 -> orgApiService.tryAddUserToOrgAndSwitchOrg(orgId2, user.getId())).then();
258+
Mono<GroupMember> groupMember = groupMemberService.getGroupMember(groupId, user.getId()).switchIfEmpty(Mono.defer(() -> {
259+
GroupMember groupMember1 = GroupMember.builder()
260+
.groupId(groupId)
261+
.userId(user.getId())
262+
.build();
263+
return groupMemberService.addMember(orgId, groupId, user.getId(), MemberRole.MEMBER).thenReturn(groupMember1);
264+
}));
265+
return orgMono.flatMap(orgId2 -> orgApiService.tryAddUserToOrgAndSwitchOrg(orgId2, user.getId())).then(groupMember).then();
255266
}
256267

257268
@Override

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,14 @@ public static AuthUser mapToAuthUser(Map<String, Object> map, HashMap<String, St
9393
if(StringUtils.isEmpty(username)) username = email;
9494
if(StringUtils.isEmpty(username)) username = uid;
9595
String avatar = AdvancedMapUtils.getString(map, MapUtils.getString(sourceMappings, "avatar"));
96+
// Add group id mapping
97+
String groupId = AdvancedMapUtils.getString(map, MapUtils.getString(sourceMappings, "group_id"));
9698
return AuthUser.builder()
9799
.uid(uid)
98100
.username(username)
99101
.email(email)
100102
.avatar(avatar)
103+
.groupId(groupId) // Make sure AuthUser has this field and builder method
101104
.rawUserInfo(map)
102105
.build();
103106
}

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/usermanagement/OrganizationController.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import reactor.core.publisher.Flux;
3131
import reactor.core.publisher.Mono;
3232

33+
import java.util.Comparator;
3334
import java.util.List;
3435

3536
import static org.lowcoder.api.util.Pagination.fluxToPageResponseView;
@@ -59,15 +60,21 @@ public class OrganizationController implements OrganizationEndpoints
5960
public Mono<PageResponseView<?>> getOrganizationByUser(@PathVariable String email,
6061
@RequestParam(required = false, defaultValue = "1") Integer pageNum,
6162
@RequestParam(required = false, defaultValue = "0") Integer pageSize) {
62-
Flux<?> flux;
63+
Flux<OrgView> flux;
6364
if (commonConfig.getWorkspace().getMode() == WorkspaceMode.SAAS) {
6465
flux = userService.findByEmailDeep(email).flux().flatMap(user -> orgMemberService.getAllActiveOrgs(user.getId()))
6566
.flatMap(orgMember -> organizationService.getById(orgMember.getOrgId()))
6667
.map(OrgView::new).cache();
6768
} else {
68-
flux = organizationService.getOrganizationInEnterpriseMode().flux().cache();
69+
flux = organizationService.getOrganizationInEnterpriseMode().flux().map(OrgView::new).cache();
6970
}
70-
return fluxToPageResponseView(pageNum, pageSize, flux);
71+
var newflux = flux.sort((OrgView o1, OrgView o2) -> {
72+
if (o1.getOrgName() == null || o2.getOrgName() == null) {
73+
return 0;
74+
}
75+
return o1.getOrgName().compareTo(o2.getOrgName());
76+
});
77+
return fluxToPageResponseView(pageNum, pageSize, newflux);
7178
}
7279

7380
@Override

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