summaryrefslogtreecommitdiffhomepage
path: root/ios
diff options
context:
space:
mode:
authorMojgan <Mojgan.jelodar@codic.se>2023-09-13 16:39:42 +0200
committerBug Magnet <marco.nikic@mullvad.net>2023-09-18 15:24:20 +0200
commit0f3965e69b0a3afc5abff327ff6ce19e29f1369d (patch)
tree4dfb3ea6bd7b4801342aa14e4786183887f92980 /ios
parenta91c5d9a80a10c5d939befbf6b3cf5e0ca2bc90d (diff)
downloadmullvadvpn-0f3965e69b0a3afc5abff327ff6ce19e29f1369d.tar.xz
mullvadvpn-0f3965e69b0a3afc5abff327ff6ce19e29f1369d.zip
remove user token after account is deleted or logged out
Diffstat (limited to 'ios')
-rw-r--r--ios/MullvadREST/RESTAccessTokenManager.swift9
-rw-r--r--ios/MullvadVPN/AppDelegate.swift4
-rw-r--r--ios/MullvadVPN/TunnelManager/DeleteAccountOperation.swift4
-rw-r--r--ios/MullvadVPN/TunnelManager/SetAccountOperation.swift4
-rw-r--r--ios/MullvadVPN/TunnelManager/TunnelManager.swift7
-rw-r--r--ios/MullvadVPN/Views/AppButton.swift1
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)