Skip to content

Commit 5e5c306

Browse files
authored
Merge pull request #48 from Milesight-IoT/fix/user_context
fix(msc-integration): set up user context
2 parents 5dab964 + 858b2cc commit 5e5c306

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

integrations/msc-integration/src/main/java/com/milesight/beaveriot/integration/msc/service/MscDataSyncService.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import com.milesight.beaveriot.context.constants.ExchangeContextKeys;
1111
import com.milesight.beaveriot.context.integration.model.Device;
1212
import com.milesight.beaveriot.context.integration.model.ExchangePayload;
13+
import com.milesight.beaveriot.context.security.SecurityUserContext;
1314
import com.milesight.beaveriot.context.security.TenantContext;
1415
import com.milesight.beaveriot.eventbus.annotations.EventSubscribe;
1516
import com.milesight.beaveriot.eventbus.api.Event;
@@ -92,8 +93,15 @@ private void updateScheduled(boolean enabled) {
9293

9394
private Future<?> runSyncTask(boolean delta) {
9495
val tenantId = TenantContext.getTenantId();
96+
val user = SecurityUserContext.getSecurityUser();
9597
return executor.submit(() -> {
9698
TenantContext.setTenantId(tenantId);
99+
if (user != null) {
100+
SecurityUserContext.setSecurityUser(user);
101+
} else {
102+
SecurityUserContext.clear();
103+
}
104+
97105
val lockConfiguration = ScopedLockConfiguration.builder(LockScope.TENANT)
98106
.name("msc-integration:sync-all")
99107
.lockAtLeastFor(Duration.ofSeconds(0))
@@ -143,6 +151,7 @@ public void disable(String tenantId) {
143151
enabledEntity = "msc-integration.integration.scheduled_data_fetch.enabled"
144152
)
145153
public void scheduledSync() {
154+
SecurityUserContext.clear();
146155
runSyncTask(true);
147156
}
148157

@@ -238,10 +247,18 @@ public CompletableFuture<Boolean> syncDeviceData(Task task) {
238247
log.info("Skip execution because device task is running: {}", task.identifier);
239248
return CompletableFuture.completedFuture(null);
240249
}
250+
241251
val tenantId = TenantContext.getTenantId();
252+
val user = SecurityUserContext.getSecurityUser();
242253
return CompletableFuture.supplyAsync(() -> {
243254
try {
244255
TenantContext.setTenantId(tenantId);
256+
if (user != null) {
257+
SecurityUserContext.setSecurityUser(user);
258+
} else {
259+
SecurityUserContext.clear();
260+
}
261+
245262
Device device = null;
246263
switch (task.type) {
247264
case ADD_LOCAL_DEVICE -> device = addLocalDevice(task);

0 commit comments

Comments
 (0)