mirror of
https://github.com/advplyr/audiobookshelf-app.git
synced 2026-09-11 12:21:58 +02:00
iOS update refresh token failure to only logout when request returns 401/403
This commit is contained in:
@@ -183,6 +183,7 @@ class ApiClient {
|
|||||||
]
|
]
|
||||||
|
|
||||||
let refreshRequest = AF.request("\(serverConfig.address)/auth/refresh", method: .post, headers: refreshHeaders)
|
let refreshRequest = AF.request("\(serverConfig.address)/auth/refresh", method: .post, headers: refreshHeaders)
|
||||||
|
.validate(statusCode: 200..<300)
|
||||||
|
|
||||||
refreshRequest.responseDecodable(of: RefreshResponse.self) { response in
|
refreshRequest.responseDecodable(of: RefreshResponse.self) { response in
|
||||||
switch response.result {
|
switch response.result {
|
||||||
@@ -190,7 +191,6 @@ class ApiClient {
|
|||||||
guard let user = refreshResponse.user,
|
guard let user = refreshResponse.user,
|
||||||
!user.accessToken.isEmpty else {
|
!user.accessToken.isEmpty else {
|
||||||
AbsLogger.error(message: "handleTokenRefresh: No access token in refresh response for server \(serverConfig.name)")
|
AbsLogger.error(message: "handleTokenRefresh: No access token in refresh response for server \(serverConfig.name)")
|
||||||
handleRefreshFailure()
|
|
||||||
callback?(nil)
|
callback?(nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -206,7 +206,8 @@ class ApiClient {
|
|||||||
|
|
||||||
case .failure(let error):
|
case .failure(let error):
|
||||||
AbsLogger.error(message: "handleTokenRefresh: Refresh request failed for server \(serverConfig.name): \(error)")
|
AbsLogger.error(message: "handleTokenRefresh: Refresh request failed for server \(serverConfig.name): \(error)")
|
||||||
handleRefreshFailure()
|
let status = response.response?.statusCode
|
||||||
|
if status == 401 || status == 403 { handleRefreshFailure() }
|
||||||
callback?(nil)
|
callback?(nil)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -313,12 +314,10 @@ class ApiClient {
|
|||||||
private static func handleRefreshFailure() {
|
private static func handleRefreshFailure() {
|
||||||
AbsLogger.info(message: "handleRefreshFailure: Token refresh failed, clearing session")
|
AbsLogger.info(message: "handleRefreshFailure: Token refresh failed, clearing session")
|
||||||
|
|
||||||
// Clear the current server connection
|
let configId = Store.serverConfig?.id
|
||||||
Store.serverConfig = nil
|
Store.serverConfig = nil
|
||||||
|
if let configId = configId {
|
||||||
// Remove refresh token from secure storage
|
_ = secureStorage.removeRefreshToken(serverConnectionConfigId: configId)
|
||||||
if let serverConfig = Store.serverConfig {
|
|
||||||
_ = secureStorage.removeRefreshToken(serverConnectionConfigId: serverConfig.id)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Notify webview frontend about token refresh failure
|
// Notify webview frontend about token refresh failure
|
||||||
|
|||||||
Reference in New Issue
Block a user