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)
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