Skip to content

Commit 20c2f0a

Browse files
committed
[backend] feat(multitenancy): adding builtin connectors for new tenants (#3505)
1 parent 6b262d9 commit 20c2f0a

5 files changed

Lines changed: 15 additions & 4 deletions

File tree

openaev-api/src/main/java/io/openaev/aop/BypassRlsAspect.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,25 @@
55
import org.aspectj.lang.ProceedingJoinPoint;
66
import org.aspectj.lang.annotation.Around;
77
import org.aspectj.lang.annotation.Aspect;
8+
import org.springframework.core.Ordered;
9+
import org.springframework.core.annotation.Order;
810
import org.springframework.stereotype.Component;
911

1012
/**
1113
* Aspect that enables RLS bypass for methods annotated with {@link BypassRls}. Sets the bypass flag
1214
* on the current thread before execution and always clears it afterwards.
15+
*
16+
* <p>The {@link Order} is set to {@code Ordered.LOWEST_PRECEDENCE - 2} so that this aspect runs
17+
* <b>before</b> {@code @Transactional} (which defaults to {@code LOWEST_PRECEDENCE}). This is
18+
* critical because {@link io.openaev.config.TenantAwareDataSourceConfig} checks the bypass flag at
19+
* connection-checkout time: if the flag is not yet set when the transaction opens, the connection
20+
* is obtained under the restricted {@code openaev_app} role and PostgreSQL Row-Level Security is
21+
* enforced, causing spurious policy violations.
1322
*/
1423
@Aspect
1524
@Component
1625
@Slf4j
26+
@Order(Ordered.LOWEST_PRECEDENCE - 2)
1727
public class BypassRlsAspect {
1828

1929
@Around("@annotation(io.openaev.aop.BypassRls)")

openaev-api/src/main/java/io/openaev/integration/ManagerFactory.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import io.openaev.rest.injector_contract.InjectorContractService;
1717
import io.openaev.rest.settings.PreviewFeature;
1818
import io.openaev.service.PreviewFeatureService;
19-
import io.openaev.service.tenants.UserTenantService;
2019
import jakarta.annotation.PostConstruct;
2120
import jakarta.persistence.EntityManager;
2221
import java.util.List;
@@ -137,6 +136,6 @@ public void deleteDependencyForTenant(String tenantId) {
137136

138137
@Override
139138
public List<Class<? extends DependenciesManager>> getPrerequisite() {
140-
return List.of(InjectorContractService.class, UserTenantService.class, DataPackProcessor.class);
139+
return List.of(InjectorContractService.class, DataPackProcessor.class);
141140
}
142141
}

openaev-api/src/main/java/io/openaev/integration/impl/injectors/ovh/OvhInjectorIntegration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public OvhInjectorIntegration(
6666

6767
@Override
6868
protected void innerStart() throws Exception {
69-
OvhSmsService ovhSmsService = new OvhSmsService(this.config);
69+
OvhSmsService ovhSmsService = new OvhSmsService(injectorContext.getMapper(), this.config);
7070
this.ovhSmsExecutor =
7171
new OvhSmsExecutor(injectorContext, ovhSmsService, injectExpectationService);
7272
}

openaev-api/src/main/java/io/openaev/migration/V5_03__Composite_pk_connectors.java renamed to openaev-api/src/main/java/io/openaev/migration/V5_06__Composite_pk_connectors.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
* </ul>
2525
*/
2626
@Component
27-
public class V5_03__Composite_pk_connectors extends BaseJavaMigration {
27+
public class V5_06__Composite_pk_connectors extends BaseJavaMigration {
2828

2929
@Override
3030
public void migrate(Context context) throws Exception {

openaev-api/src/main/java/io/openaev/scheduler/jobs/InjectsExecutionJob.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import static java.util.Optional.ofNullable;
77
import static java.util.stream.Collectors.groupingBy;
88

9+
import com.fasterxml.jackson.databind.ObjectMapper;
910
import com.google.common.annotations.VisibleForTesting;
1011
import io.openaev.aop.BypassRls;
1112
import io.openaev.aop.LogExecutionTime;
@@ -49,6 +50,7 @@
4950
import org.quartz.Job;
5051
import org.quartz.JobExecutionContext;
5152
import org.quartz.JobExecutionException;
53+
import org.springframework.beans.factory.annotation.Autowired;
5254
import org.springframework.core.env.Environment;
5355
import org.springframework.expression.EvaluationContext;
5456
import org.springframework.expression.EvaluationException;

0 commit comments

Comments
 (0)