diff options
| author | Mojgan <Mojgan.jelodar@codic.se> | 2023-09-13 16:39:42 +0200 |
|---|---|---|
| committer | Bug Magnet <marco.nikic@mullvad.net> | 2023-09-18 15:24:20 +0200 |
| commit | 0f3965e69b0a3afc5abff327ff6ce19e29f1369d (patch) | |
| tree | 4dfb3ea6bd7b4801342aa14e4786183887f92980 | |
| parent | a91c5d9a80a10c5d939befbf6b3cf5e0ca2bc90d (diff) | |
| download | mullvadvpn-0f3965e69b0a3afc5abff327ff6ce19e29f1369d.tar.xz mullvadvpn-0f3965e69b0a3afc5abff327ff6ce19e29f1369d.zip | |
remove user token after account is deleted or logged out
| -rw-r--r-- | ios/MullvadREST/RESTAccessTokenManager.swift | 9 | ||||
| -rw-r--r-- | ios/MullvadVPN/AppDelegate.swift | 4 | ||||
| -rw-r--r-- | ios/MullvadVPN/TunnelManager/DeleteAccountOperation.swift | 4 | ||||
| -rw-r--r-- | ios/MullvadVPN/TunnelManager/SetAccountOperation.swift | 4 | ||||
| -rw-r--r-- | ios/MullvadVPN/TunnelManager/TunnelManager.swift | 7 | ||||
| -rw-r--r-- | ios/MullvadVPN/Views/AppButton.swift | 1 |
6 files changed, 26 insertions, 3 deletions
diff --git a/ios/MullvadREST/RESTAccessTokenManager.swift b/ios/MullvadREST/RESTAccessTokenManager.swift index 8b374b88d5..17c812020d 100644 --- a/ios/MullvadREST/RESTAccessTokenManager.swift +++ b/ios/MullvadREST/RESTAccessTokenManager.swift @@ -62,5 +62,14 @@ extension REST { return operation } + + public func invalidateAllTokens() { + operationQueue.addOperation(AsyncBlockOperation(dispatchQueue: dispatchQueue) { [weak self] in + guard let self else { + return + } + self.tokens.removeAll() + }) + } } } diff --git a/ios/MullvadVPN/AppDelegate.swift b/ios/MullvadVPN/AppDelegate.swift index 8c1487f916..a68a78728b 100644 --- a/ios/MullvadVPN/AppDelegate.swift +++ b/ios/MullvadVPN/AppDelegate.swift @@ -36,6 +36,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD private(set) var accountsProxy: REST.AccountsProxy! private(set) var devicesProxy: REST.DevicesProxy! + private(set) var accessTokenManager: REST.AccessTokenManager! private(set) var addressCacheTracker: AddressCacheTracker! private(set) var relayCacheTracker: RelayCacheTracker! private(set) var storePaymentManager: StorePaymentManager! @@ -75,7 +76,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD relayCacheTracker: relayCacheTracker, accountsProxy: accountsProxy, devicesProxy: devicesProxy, - apiProxy: apiProxy + apiProxy: apiProxy, + accessTokenManager: accessTokenManager ) let constraintsUpdater = RelayConstraintsUpdater() diff --git a/ios/MullvadVPN/TunnelManager/DeleteAccountOperation.swift b/ios/MullvadVPN/TunnelManager/DeleteAccountOperation.swift index 3230e9fde0..ad4463d562 100644 --- a/ios/MullvadVPN/TunnelManager/DeleteAccountOperation.swift +++ b/ios/MullvadVPN/TunnelManager/DeleteAccountOperation.swift @@ -17,15 +17,18 @@ class DeleteAccountOperation: ResultOperation<Void> { private let accountNumber: String private let accountsProxy: REST.AccountsProxy + private let accessTokenManager: REST.AccessTokenManager private var task: Cancellable? init( dispatchQueue: DispatchQueue, accountsProxy: REST.AccountsProxy, + accessTokenManager: REST.AccessTokenManager, accountNumber: String ) { self.accountNumber = accountNumber self.accountsProxy = accountsProxy + self.accessTokenManager = accessTokenManager super.init(dispatchQueue: dispatchQueue) } @@ -37,6 +40,7 @@ class DeleteAccountOperation: ResultOperation<Void> { self?.dispatchQueue.async { switch result { case .success: + self?.accessTokenManager.invalidateAllTokens() self?.finish(result: .success(())) case let .failure(error): self?.logger.error( diff --git a/ios/MullvadVPN/TunnelManager/SetAccountOperation.swift b/ios/MullvadVPN/TunnelManager/SetAccountOperation.swift index 080fdc36ab..77eeb02db6 100644 --- a/ios/MullvadVPN/TunnelManager/SetAccountOperation.swift +++ b/ios/MullvadVPN/TunnelManager/SetAccountOperation.swift @@ -41,6 +41,7 @@ class SetAccountOperation: ResultOperation<StoredAccountData?> { private let accountsProxy: REST.AccountsProxy private let devicesProxy: REST.DevicesProxy private let action: SetAccountAction + private let accessTokenManager: REST.AccessTokenManager private let logger = Logger(label: "SetAccountOperation") private var tasks: [Cancellable] = [] @@ -50,11 +51,13 @@ class SetAccountOperation: ResultOperation<StoredAccountData?> { interactor: TunnelInteractor, accountsProxy: REST.AccountsProxy, devicesProxy: REST.DevicesProxy, + accessTokenManager: REST.AccessTokenManager, action: SetAccountAction ) { self.interactor = interactor self.accountsProxy = accountsProxy self.devicesProxy = devicesProxy + self.accessTokenManager = accessTokenManager self.action = action super.init(dispatchQueue: dispatchQueue) @@ -64,6 +67,7 @@ class SetAccountOperation: ResultOperation<StoredAccountData?> { override func main() { startLogoutFlow { [self] in + self.accessTokenManager.invalidateAllTokens() switch action { case .new: startNewAccountFlow { [self] result in diff --git a/ios/MullvadVPN/TunnelManager/TunnelManager.swift b/ios/MullvadVPN/TunnelManager/TunnelManager.swift index 4b33489c8b..710d663bed 100644 --- a/ios/MullvadVPN/TunnelManager/TunnelManager.swift +++ b/ios/MullvadVPN/TunnelManager/TunnelManager.swift @@ -49,6 +49,7 @@ final class TunnelManager: StorePaymentObserver { private let accountsProxy: REST.AccountsProxy private let devicesProxy: REST.DevicesProxy private let apiProxy: REST.APIProxy + private let accessTokenManager: REST.AccessTokenManager private let logger = Logger(label: "TunnelManager") private var nslock = NSRecursiveLock() @@ -84,7 +85,8 @@ final class TunnelManager: StorePaymentObserver { relayCacheTracker: RelayCacheTracker, accountsProxy: REST.AccountsProxy, devicesProxy: REST.DevicesProxy, - apiProxy: REST.APIProxy + apiProxy: REST.APIProxy, + accessTokenManager: REST.AccessTokenManager ) { self.application = application self.tunnelStore = tunnelStore @@ -94,6 +96,7 @@ final class TunnelManager: StorePaymentObserver { self.apiProxy = apiProxy self.operationQueue.name = "TunnelManager.operationQueue" self.operationQueue.underlyingQueue = internalQueue + self.accessTokenManager = accessTokenManager NotificationCenter.default.addObserver( self, @@ -335,6 +338,7 @@ final class TunnelManager: StorePaymentObserver { interactor: TunnelInteractorProxy(self), accountsProxy: accountsProxy, devicesProxy: devicesProxy, + accessTokenManager: accessTokenManager, action: action ) @@ -438,6 +442,7 @@ final class TunnelManager: StorePaymentObserver { let operation = DeleteAccountOperation( dispatchQueue: internalQueue, accountsProxy: accountsProxy, + accessTokenManager: accessTokenManager, accountNumber: accountNumber ) diff --git a/ios/MullvadVPN/Views/AppButton.swift b/ios/MullvadVPN/Views/AppButton.swift index 48bbd20ac8..2fc3603e22 100644 --- a/ios/MullvadVPN/Views/AppButton.swift +++ b/ios/MullvadVPN/Views/AppButton.swift @@ -286,7 +286,6 @@ class CustomButton: UIButton { } } - // swiftlint:disable:next cyclomatic_complexity private func computeLayout(forContentRect contentRect: CGRect) -> (CGRect, CGRect) { var imageRect = super.imageRect(forContentRect: contentRect) var titleRect = super.titleRect(forContentRect: contentRect) |
