fix: PushWorker APNs/FCM 크리덴셜 복호화 누락 수정 (#271)

Closes #271
This commit is contained in:
SEAN 2026-03-03 10:10:29 +09:00
parent 6c3a384a99
commit b8d87377b9

View File

@ -29,6 +29,7 @@ public class PushWorker : BackgroundService
private readonly IWebhookService _webhookService; private readonly IWebhookService _webhookService;
private readonly IFcmSender _fcmSender; private readonly IFcmSender _fcmSender;
private readonly IApnsSender _apnsSender; private readonly IApnsSender _apnsSender;
private readonly ICredentialEncryptionService _credentialEncryption;
private readonly ILogger<PushWorker> _logger; private readonly ILogger<PushWorker> _logger;
public PushWorker( public PushWorker(
@ -41,6 +42,7 @@ public class PushWorker : BackgroundService
IWebhookService webhookService, IWebhookService webhookService,
IFcmSender fcmSender, IFcmSender fcmSender,
IApnsSender apnsSender, IApnsSender apnsSender,
ICredentialEncryptionService credentialEncryption,
ILogger<PushWorker> logger) ILogger<PushWorker> logger)
{ {
_rabbitConnection = rabbitConnection; _rabbitConnection = rabbitConnection;
@ -52,6 +54,7 @@ public class PushWorker : BackgroundService
_webhookService = webhookService; _webhookService = webhookService;
_fcmSender = fcmSender; _fcmSender = fcmSender;
_apnsSender = apnsSender; _apnsSender = apnsSender;
_credentialEncryption = credentialEncryption;
_logger = logger; _logger = logger;
} }
@ -185,8 +188,9 @@ public class PushWorker : BackgroundService
if (androidDevices.Count > 0 && !string.IsNullOrEmpty(service.FcmCredentials)) if (androidDevices.Count > 0 && !string.IsNullOrEmpty(service.FcmCredentials))
{ {
var fcmCredentials = _credentialEncryption.Decrypt(service.FcmCredentials);
var fcmResults = await SendFcmBatchAsync( var fcmResults = await SendFcmBatchAsync(
service.FcmCredentials, androidDevices, pushMessage, customData, ct); fcmCredentials, androidDevices, pushMessage, customData, ct);
allResults.AddRange(fcmResults); allResults.AddRange(fcmResults);
} }
@ -196,8 +200,9 @@ public class PushWorker : BackgroundService
!string.IsNullOrEmpty(service.ApnsTeamId) && !string.IsNullOrEmpty(service.ApnsTeamId) &&
!string.IsNullOrEmpty(service.ApnsBundleId)) !string.IsNullOrEmpty(service.ApnsBundleId))
{ {
var apnsPrivateKey = _credentialEncryption.Decrypt(service.ApnsPrivateKey);
var apnsResults = await SendApnsBatchAsync( var apnsResults = await SendApnsBatchAsync(
service, iosDevices, pushMessage, customData, ct); service, apnsPrivateKey, iosDevices, pushMessage, customData, ct);
allResults.AddRange(apnsResults); allResults.AddRange(apnsResults);
} }
@ -448,14 +453,14 @@ public class PushWorker : BackgroundService
} }
private async Task<List<(Device Device, PushResultDto Result)>> SendApnsBatchAsync( private async Task<List<(Device Device, PushResultDto Result)>> SendApnsBatchAsync(
Service service, List<Device> devices, PushMessageDto message, Service service, string apnsPrivateKey, List<Device> devices, PushMessageDto message,
Dictionary<string, string>? customData, CancellationToken ct) Dictionary<string, string>? customData, CancellationToken ct)
{ {
var results = new List<(Device, PushResultDto)>(); var results = new List<(Device, PushResultDto)>();
var tokens = devices.Select(d => d.DeviceToken).ToList(); var tokens = devices.Select(d => d.DeviceToken).ToList();
var batchResults = await _apnsSender.SendBatchAsync( var batchResults = await _apnsSender.SendBatchAsync(
service.ApnsPrivateKey!, service.ApnsKeyId!, service.ApnsTeamId!, service.ApnsBundleId!, apnsPrivateKey, service.ApnsKeyId!, service.ApnsTeamId!, service.ApnsBundleId!,
tokens, message.Title, message.Body, tokens, message.Title, message.Body,
message.ImageUrl, customData, ct); message.ImageUrl, customData, ct);