From bb14dd611e77ba4c028057bfb26b9dadffaef5b2 Mon Sep 17 00:00:00 2001 From: ViacheslavKlimov Date: Thu, 28 Dec 2023 16:06:16 +0200 Subject: [PATCH] Firebase settings only for sysadmin --- .../notification/DefaultNotificationCenter.java | 2 ++ .../notification/NotificationProcessingContext.java | 10 +++++++++- .../channels/MobileAppNotificationChannel.java | 4 ++-- .../DefaultNotificationSettingsService.java | 4 ++++ 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/application/src/main/java/org/thingsboard/server/service/notification/DefaultNotificationCenter.java b/application/src/main/java/org/thingsboard/server/service/notification/DefaultNotificationCenter.java index ef4fd02e8b..b8aca35403 100644 --- a/application/src/main/java/org/thingsboard/server/service/notification/DefaultNotificationCenter.java +++ b/application/src/main/java/org/thingsboard/server/service/notification/DefaultNotificationCenter.java @@ -154,6 +154,7 @@ public class DefaultNotificationCenter extends AbstractSubscriptionService imple } } NotificationSettings settings = notificationSettingsService.findNotificationSettings(tenantId); + NotificationSettings systemSettings = tenantId.isSysTenantId() ? settings : notificationSettingsService.findNotificationSettings(TenantId.SYS_TENANT_ID); log.debug("Processing notification request (tenantId: {}, targets: {})", tenantId, request.getTargets()); request.setStatus(NotificationRequestStatus.PROCESSING); @@ -165,6 +166,7 @@ public class DefaultNotificationCenter extends AbstractSubscriptionService imple .deliveryMethods(deliveryMethods) .template(notificationTemplate) .settings(settings) + .systemSettings(systemSettings) .build(); processNotificationRequestAsync(ctx, targets, callback); diff --git a/application/src/main/java/org/thingsboard/server/service/notification/NotificationProcessingContext.java b/application/src/main/java/org/thingsboard/server/service/notification/NotificationProcessingContext.java index 29cac96be6..ec09553e5a 100644 --- a/application/src/main/java/org/thingsboard/server/service/notification/NotificationProcessingContext.java +++ b/application/src/main/java/org/thingsboard/server/service/notification/NotificationProcessingContext.java @@ -43,6 +43,7 @@ public class NotificationProcessingContext { @Getter private final TenantId tenantId; private final NotificationSettings settings; + private final NotificationSettings systemSettings; @Getter private final NotificationRequest request; @Getter @@ -58,11 +59,12 @@ public class NotificationProcessingContext { @Builder public NotificationProcessingContext(TenantId tenantId, NotificationRequest request, Set deliveryMethods, - NotificationTemplate template, NotificationSettings settings) { + NotificationTemplate template, NotificationSettings settings, NotificationSettings systemSettings) { this.tenantId = tenantId; this.request = request; this.deliveryMethods = deliveryMethods; this.settings = settings; + this.systemSettings = systemSettings; this.notificationTemplate = template; this.notificationType = template.getNotificationType(); this.templates = new EnumMap<>(NotificationDeliveryMethod.class); @@ -81,6 +83,12 @@ public class NotificationProcessingContext { } public C getDeliveryMethodConfig(NotificationDeliveryMethod deliveryMethod) { + NotificationSettings settings; + if (deliveryMethod == NotificationDeliveryMethod.MOBILE_APP) { + settings = this.systemSettings; + } else { + settings = this.settings; + } return (C) settings.getDeliveryMethodsConfigs().get(deliveryMethod); } diff --git a/application/src/main/java/org/thingsboard/server/service/notification/channels/MobileAppNotificationChannel.java b/application/src/main/java/org/thingsboard/server/service/notification/channels/MobileAppNotificationChannel.java index b6a63fdeb2..82977d6df9 100644 --- a/application/src/main/java/org/thingsboard/server/service/notification/channels/MobileAppNotificationChannel.java +++ b/application/src/main/java/org/thingsboard/server/service/notification/channels/MobileAppNotificationChannel.java @@ -66,8 +66,8 @@ public class MobileAppNotificationChannel implements NotificationChannel { AdminSettings newAdminSettings = new AdminSettings();