Skip to content

Commit

Permalink
remove user token after account is deleted or logged out
Browse files Browse the repository at this point in the history
  • Loading branch information
mojganii committed Sep 12, 2023
1 parent b952fff commit 68bedf0
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 2 deletions.
9 changes: 9 additions & 0 deletions ios/MullvadREST/RESTAccessTokenManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -62,5 +62,14 @@ extension REST {

return operation
}

func invalidateToken(for accountNumber: String) {
operationQueue.addOperation(AsyncBlockOperation(dispatchQueue: dispatchQueue) { [weak self] in
guard let self else {
return
}
self.tokens.removeValue(forKey: accountNumber)
})
}
}
}
4 changes: 3 additions & 1 deletion ios/MullvadREST/RESTAccountsProxy.swift
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ extension REST {
retryStrategy: RetryStrategy,
completion: @escaping CompletionHandler<Void>
) -> Cancellable {
let accessTokenProvider = createAuthorizationProvider(accountNumber: accountNumber)
let requestHandler = AnyRequestHandler(createURLRequest: { endpoint, authorization in
var requestBuilder = try self.requestFactory.createRequestBuilder(
endpoint: endpoint,
Expand All @@ -104,13 +105,14 @@ extension REST {
requestBuilder.addValue(accountNumber, forHTTPHeaderField: "Mullvad-Account-Number")

return requestBuilder.getRequest()
}, authorizationProvider: createAuthorizationProvider(accountNumber: accountNumber))
}, authorizationProvider: accessTokenProvider)

let responseHandler = AnyResponseHandler { response, data -> ResponseHandlerResult<Void> in
let statusCode = HTTPStatus(rawValue: response.statusCode)

switch statusCode {
case let statusCode where statusCode.isSuccess:
accessTokenProvider.invalidateToken()
return .success(())
default:
return .unhandledResponse(
Expand Down
5 changes: 5 additions & 0 deletions ios/MullvadREST/RESTAuthorization.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import Operations
protocol RESTAuthorizationProvider {
func getAuthorization(completion: @escaping (Result<REST.Authorization, Swift.Error>) -> Void)
-> Cancellable
func invalidateToken()
}

extension REST {
Expand All @@ -37,6 +38,10 @@ extension REST {
})
}
}

func invalidateToken() {
accessTokenManager.invalidateToken(for: accountNumber)
}
}
}

Expand Down
5 changes: 4 additions & 1 deletion ios/MullvadREST/RESTDevicesProxy.swift
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,8 @@ extension REST {
retryStrategy: REST.RetryStrategy,
completion: @escaping CompletionHandler<Bool>
) -> Cancellable {
let accessTokenProvider = createAuthorizationProvider(accountNumber: accountNumber)

let requestHandler = AnyRequestHandler(
createURLRequest: { endpoint, authorization in
var path: URLPathTemplate = "devices/{id}"
Expand All @@ -187,7 +189,7 @@ extension REST {

return requestBuilder.getRequest()
},
authorizationProvider: createAuthorizationProvider(accountNumber: accountNumber)
authorizationProvider: accessTokenProvider
)

let responseHandler =
Expand All @@ -196,6 +198,7 @@ extension REST {

switch statusCode {
case let statusCode where statusCode.isSuccess:
accessTokenProvider.invalidateToken()
return .success(true)

case .notFound:
Expand Down

0 comments on commit 68bedf0

Please sign in to comment.