mirror of
https://github.com/advplyr/audiobookshelf-app.git
synced 2026-09-10 20:01: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)
|
||||
.validate(statusCode: 200..<300)
|
||||
|
||||
refreshRequest.responseDecodable(of: RefreshResponse.self) { response in
|
||||
switch response.result {
|
||||
@@ -190,7 +191,6 @@ class ApiClient {
|
||||
guard let user = refreshResponse.user,
|
||||
!user.accessToken.isEmpty else {
|
||||
AbsLogger.error(message: "handleTokenRefresh: No access token in refresh response for server \(serverConfig.name)")
|
||||
handleRefreshFailure()
|
||||
callback?(nil)
|
||||
return
|
||||
}
|
||||
@@ -206,7 +206,8 @@ class ApiClient {
|
||||
|
||||
case .failure(let 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)
|
||||
}
|
||||
}
|
||||
@@ -313,12 +314,10 @@ class ApiClient {
|
||||
private static func handleRefreshFailure() {
|
||||
AbsLogger.info(message: "handleRefreshFailure: Token refresh failed, clearing session")
|
||||
|
||||
// Clear the current server connection
|
||||
let configId = Store.serverConfig?.id
|
||||
Store.serverConfig = nil
|
||||
|
||||
// Remove refresh token from secure storage
|
||||
if let serverConfig = Store.serverConfig {
|
||||
_ = secureStorage.removeRefreshToken(serverConnectionConfigId: serverConfig.id)
|
||||
if let configId = configId {
|
||||
_ = secureStorage.removeRefreshToken(serverConnectionConfigId: configId)
|
||||
}
|
||||
|
||||
// Notify webview frontend about token refresh failure
|
||||
|
||||
Reference in New Issue
Block a user