Skip to content

Commit 93a0023

Browse files
authored
Merge pull request #401 from lowcoder-org/fix-for-email-sign-up-env-var-not-applicable
Mongo DB Datasource Query Failure Fix + SIGNUP Enablement Always On Fix
2 parents 852d8ab + 75f41f0 commit 93a0023

File tree

7 files changed

+46
-6
lines changed

7 files changed

+46
-6
lines changed

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

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
package org.lowcoder.domain.authentication;
22

33
import lombok.extern.slf4j.Slf4j;
4+
import org.lowcoder.domain.organization.service.OrgMemberService;
45
import org.lowcoder.domain.organization.service.OrganizationService;
56
import org.lowcoder.sdk.auth.AbstractAuthConfig;
7+
import org.lowcoder.sdk.auth.EmailAuthConfig;
68
import org.lowcoder.sdk.config.AuthProperties;
79
import org.lowcoder.sdk.config.CommonConfig;
10+
import org.lowcoder.sdk.constants.AuthSourceConstants;
811
import org.lowcoder.sdk.constants.WorkspaceMode;
912
import org.springframework.beans.factory.annotation.Autowired;
1013
import org.springframework.stereotype.Service;
@@ -24,6 +27,10 @@ public class AuthenticationServiceImpl implements AuthenticationService {
2427

2528
@Autowired
2629
private OrganizationService organizationService;
30+
31+
@Autowired
32+
private OrgMemberService orgMemberService;
33+
2734
@Autowired
2835
private CommonConfig commonConfig;
2936
@Autowired
@@ -49,16 +56,27 @@ private Mono<FindAuthConfig> findAuthConfig(String orgId, Function<AbstractAuthC
4956

5057
@Override
5158
public Flux<FindAuthConfig> findAllAuthConfigs(String orgId, boolean enableOnly) {
52-
return findAllAuthConfigsByDomain()
59+
60+
Mono<FindAuthConfig> emailAuthConfigMono = orgMemberService.doesAtleastOneAdminExist()
61+
.map(doesAtleastOneAdminExist -> {
62+
boolean shouldEnableRegister = !doesAtleastOneAdminExist && authProperties.getEmail().isEnableRegister();
63+
return new FindAuthConfig
64+
(new EmailAuthConfig(AuthSourceConstants.EMAIL, authProperties.getEmail().isEnable(), shouldEnableRegister), null);
65+
});
66+
67+
68+
Flux<FindAuthConfig> findAuthConfigFlux = findAllAuthConfigsByDomain()
5369
.switchIfEmpty(findAllAuthConfigsForEnterpriseMode())
5470
.switchIfEmpty(findAllAuthConfigsForSaasMode(orgId))
5571
.filter(findAuthConfig -> {
5672
if (enableOnly) {
5773
return findAuthConfig.authConfig().isEnable();
5874
}
5975
return true;
60-
})
61-
.concatWithValues(new FindAuthConfig(DEFAULT_AUTH_CONFIG, null));
76+
});
77+
78+
return Flux.concat(findAuthConfigFlux, emailAuthConfigMono);
79+
6280
}
6381

6482
private Flux<FindAuthConfig> findAllAuthConfigsByDomain() {

server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/organization/service/OrgMemberService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ public interface OrgMemberService {
2424

2525
Mono<Long> getOrgMemberCount(String orgId);
2626

27+
Mono<Boolean> doesAtleastOneAdminExist();
28+
2729
Mono<Long> countAllActiveOrgs(String userId);
2830

2931
Mono<OrgMember> getOrgMember(String orgId, String userId);

server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/organization/service/OrgMemberServiceImpl.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,13 @@ public Mono<Long> getOrgMemberCount(String orgId) {
125125
return biRelationService.countBySourceId(ORG_MEMBER, orgId);
126126
}
127127

128+
@Override
129+
public Mono<Boolean> doesAtleastOneAdminExist() {
130+
return biRelationService.countByRelation(ORG_MEMBER, MemberRole.ADMIN.getValue())
131+
.single()
132+
.map(count -> count != 0);
133+
}
134+
128135
@Override
129136
public Mono<Boolean> addMember(String orgId, String userId, MemberRole memberRole) {
130137
return biRelationService.addBiRelation(ORG_MEMBER, orgId,

server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/query/service/QueryExecutionService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public Mono<QueryExecutionResult> executeQuery(Datasource datasource, Map<String
4848
String timeoutStr, QueryVisitorContext queryVisitorContext) {
4949

5050
int timeoutMs = QueryTimeoutUtils.parseQueryTimeoutMs(timeoutStr, requestParams, common.getMaxQueryTimeout());
51-
queryConfig.putIfAbsent("timeoutMs", timeoutMs);
51+
queryConfig.putIfAbsent("timeoutMs", String.valueOf(timeoutMs));
5252

5353
return Mono.defer(() -> {
5454
if (datasourceMetaInfoService.isJsDatasourcePlugin(datasource.getType())) {

server/api-service/lowcoder-infra/src/main/java/org/lowcoder/infra/birelation/BiRelationRepository.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ public interface BiRelationRepository extends ReactiveMongoRepository<BiRelation
2626

2727
Flux<BiRelation> findByBizTypeAndSourceIdAndRelation(BiRelationBizType bizType, String sourceId, String relation);
2828

29+
Mono<Long> countByBizTypeAndRelation(BiRelationBizType bizType, String relation);
30+
2931
Mono<Long> countByBizTypeAndSourceId(BiRelationBizType bizType, String sourceId);
3032

3133
Mono<Long> countByBizTypeAndTargetId(BiRelationBizType bizType, String targetId);

server/api-service/lowcoder-infra/src/main/java/org/lowcoder/infra/birelation/BiRelationService.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,10 @@ public Flux<BiRelation> getBySourceIdAndRelation(BiRelationBizType bizType, Stri
166166
return biRelationRepository.findByBizTypeAndSourceIdAndRelation(bizType, sourceId, relation);
167167
}
168168

169+
public Mono<Long> countByRelation(BiRelationBizType bizType, String relation) {
170+
return biRelationRepository.countByBizTypeAndRelation(bizType, relation);
171+
}
172+
169173
public Mono<Long> countBySourceId(BiRelationBizType bizType, String sourceId) {
170174
return biRelationRepository.countByBizTypeAndSourceId(bizType, sourceId);
171175
}

server/api-service/lowcoder-server/src/main/resources/application-lowcoder.yml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ spring:
33
mongodb:
44
authentication-database: admin
55
auto-index-creation: false
6-
uri: mongodb://lowcoder:secret123@127.0.0.1/lowcoder?authSource=admin
6+
uri: mongodb://192.168.8.100:27017/lowcoder?authSource=admin
77
redis:
8-
url: redis://localhost:6379
8+
url: redis://192.168.8.100:6379
99
main:
1010
allow-bean-definition-overriding: true
1111
allow-circular-references: true
@@ -41,6 +41,8 @@ common:
4141
- '*'
4242
version: 1.1.8
4343
block-hound-enable: false
44+
js-executor:
45+
host: http://127.0.0.1:6060
4446

4547
material:
4648
mongodb-grid-fs:
@@ -52,3 +54,8 @@ springdoc:
5254
swagger-ui:
5355
path: /api/docs/swagger-ui
5456
paths-to-exclude: /api/v1/**
57+
58+
auth:
59+
email:
60+
enable: true
61+
enable-register: false

0 commit comments

Comments
 (0)