From fb77747a1b5600b663cba04f83bcf093b091acf7 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Sat, 20 Aug 2016 22:18:05 -0400 Subject: [PATCH] Only process push messages for the current logged in user. Do not unregister from push on logout. --- src/Android/MainActivity.cs | 1 - src/App/App.cs | 4 ---- src/App/Services/PushNotificationListener.cs | 21 ++++++++++++++++++++ src/iOS/AppDelegate.cs | 1 - 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/Android/MainActivity.cs b/src/Android/MainActivity.cs index bd1cc0897..28228df2a 100644 --- a/src/Android/MainActivity.cs +++ b/src/Android/MainActivity.cs @@ -56,7 +56,6 @@ namespace Bit.Android Resolver.Resolve(), Resolver.Resolve(), Resolver.Resolve(), - Resolver.Resolve(), Resolver.Resolve(), Resolver.Resolve())); diff --git a/src/App/App.cs b/src/App/App.cs index 940473ca1..941119c58 100644 --- a/src/App/App.cs +++ b/src/App/App.cs @@ -27,7 +27,6 @@ namespace Bit.App private readonly IAuthService _authService; private readonly IFingerprint _fingerprint; private readonly ISettings _settings; - private readonly IPushNotification _pushNotification; private readonly ILockService _lockService; private readonly IGoogleAnalyticsService _googleAnalyticsService; @@ -39,7 +38,6 @@ namespace Bit.App ISyncService syncService, IFingerprint fingerprint, ISettings settings, - IPushNotification pushNotification, ILockService lockService, IGoogleAnalyticsService googleAnalyticsService) { @@ -50,7 +48,6 @@ namespace Bit.App _authService = authService; _fingerprint = fingerprint; _settings = settings; - _pushNotification = pushNotification; _lockService = lockService; _googleAnalyticsService = googleAnalyticsService; @@ -211,7 +208,6 @@ namespace Bit.App var deviceApiRepository = Resolver.Resolve(); var appIdService = Resolver.Resolve(); - _pushNotification.Unregister(); _settings.Remove(Constants.PushLastRegistrationDate); await Task.Run(() => deviceApiRepository.PutClearTokenAsync(appIdService.AppId)).ConfigureAwait(false); } diff --git a/src/App/Services/PushNotificationListener.cs b/src/App/Services/PushNotificationListener.cs index 8b34e5a9c..827db083f 100644 --- a/src/App/Services/PushNotificationListener.cs +++ b/src/App/Services/PushNotificationListener.cs @@ -43,6 +43,11 @@ namespace Bit.App.Services _showNotification = false; Debug.WriteLine("Message Arrived: {0}", JsonConvert.SerializeObject(values)); + if(!_authService.IsAuthenticated) + { + return; + } + JToken token; if(!values.TryGetValue("type", StringComparison.OrdinalIgnoreCase, out token) || token == null) { @@ -55,18 +60,34 @@ namespace Bit.App.Services case Enums.PushType.SyncCipherUpdate: case Enums.PushType.SyncCipherCreate: var createUpdateMessage = values.ToObject(); + if(createUpdateMessage.UserId != _authService.UserId) + { + break; + } _syncService.SyncAsync(createUpdateMessage.Id); break; case Enums.PushType.SyncFolderDelete: var folderDeleteMessage = values.ToObject(); + if(folderDeleteMessage.UserId != _authService.UserId) + { + break; + } _syncService.SyncDeleteFolderAsync(folderDeleteMessage.Id, folderDeleteMessage.RevisionDate); break; case Enums.PushType.SyncSiteDelete: var siteDeleteMessage = values.ToObject(); + if(siteDeleteMessage.UserId != _authService.UserId) + { + break; + } _syncService.SyncDeleteSiteAsync(siteDeleteMessage.Id); break; case Enums.PushType.SyncCiphers: var cipherMessage = values.ToObject(); + if(cipherMessage.UserId != _authService.UserId) + { + break; + } _syncService.FullSyncAsync(); break; default: diff --git a/src/iOS/AppDelegate.cs b/src/iOS/AppDelegate.cs index 2205e41f1..309bb12dc 100644 --- a/src/iOS/AppDelegate.cs +++ b/src/iOS/AppDelegate.cs @@ -65,7 +65,6 @@ namespace Bit.iOS Resolver.Resolve(), Resolver.Resolve(), Resolver.Resolve(), - Resolver.Resolve(), Resolver.Resolve(), Resolver.Resolve()));