[PR #1618] [MERGED] Update auth to handle refresh tokens #1638

Closed
opened 2026-04-24 23:59:52 +02:00 by adam · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/advplyr/audiobookshelf-app/pull/1618
Author: @advplyr
Created: 7/1/2025
Status: Merged
Merged: 7/18/2025
Merged by: @advplyr

Base: masterHead: new_jwt_auth


📝 Commits (10+)

  • d8cdb70 Update auth to handle refresh tokens
  • 467fedb Update to use x-refresh-token header, update logout to clear refresh token, add AbsLogger logs for android refresh
  • b99e0b1 Merge branch 'master' into new_jwt_auth
  • 44613e1 Update serverConnectionConfig to include server version, update server track URL and server cover image URL based on server version
  • f6e2e40 Update to not logout from server when switching servers, force users to re-login if using old auth
  • 52f86cb Fix plugin listener handlers, add message for configs using old server auth, show server version on account page
  • 5804c54 Add version to ServerConnectionConfig on iOS
  • bc927d4 Add SecureStorage to iOS and implement refresh token methods
  • 5766c49 Update iOS ApiClient to handle token refresh
  • b062748 iOS update to use new track endpoint and remove token from cover url depending on version

📊 Changes

43 files changed (+2081 additions, -322 deletions)

View changed files

📝 android/app/src/main/java/com/audiobookshelf/app/data/AudioTrack.kt (+1 -0)
📝 android/app/src/main/java/com/audiobookshelf/app/data/DeviceClasses.kt (+3 -0)
📝 android/app/src/main/java/com/audiobookshelf/app/data/LibraryItem.kt (+5 -0)
📝 android/app/src/main/java/com/audiobookshelf/app/data/PlaybackSession.kt (+29 -7)
📝 android/app/src/main/java/com/audiobookshelf/app/device/DeviceManager.kt (+36 -0)
android/app/src/main/java/com/audiobookshelf/app/managers/SecureStorage.kt (+124 -0)
📝 android/app/src/main/java/com/audiobookshelf/app/plugins/AbsDatabase.kt (+70 -7)
📝 android/app/src/main/java/com/audiobookshelf/app/server/ApiHandler.kt (+278 -0)
📝 components/app/Appbar.vue (+3 -3)
📝 components/app/AudioPlayer.vue (+11 -23)
📝 components/app/AudioPlayerContainer.vue (+9 -9)
📝 components/app/SideDrawer.vue (+1 -15)
📝 components/connection/ServerConnectForm.vue (+103 -40)
📝 components/readers/ComicReader.vue (+2 -7)
📝 components/readers/EpubReader.vue (+14 -6)
📝 components/readers/MobiReader.vue (+4 -10)
📝 components/readers/PdfReader.vue (+55 -3)
📝 components/readers/Reader.vue (+3 -3)
📝 components/widgets/DownloadProgressIndicator.vue (+7 -7)
📝 ios/App/App.xcodeproj/project.pbxproj (+4 -0)

...and 23 more files

📄 Description

Brief summary

Updates to support new JWT auth implemented in https://github.com/advplyr/audiobookshelf/pull/4444

Changes

  • Auto refresh tokens implemented natively for ios/android and for the Capacitor native http
  • Secure storage for iOS & Android to store refresh tokens for server connections
  • Update ServerConnectionConfig to store server version
  • Update audio track URLs to use the new /session/ API if server version is v2.22.0+
  • Update cover image URLs to exclude the token in the request if server version is v2.17.0+
  • Request user re-authenticates if server v2.26.0+ and they are still using an old token
  • Show alert on server connection configs that are servers < v2.26.0

In-depth Description

Auth system description in https://github.com/advplyr/audiobookshelf/pull/4444

Screenshots

image

More info modal, read more opens to github discussion
image


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/advplyr/audiobookshelf-app/pull/1618 **Author:** [@advplyr](https://github.com/advplyr) **Created:** 7/1/2025 **Status:** ✅ Merged **Merged:** 7/18/2025 **Merged by:** [@advplyr](https://github.com/advplyr) **Base:** `master` ← **Head:** `new_jwt_auth` --- ### 📝 Commits (10+) - [`d8cdb70`](https://github.com/advplyr/audiobookshelf-app/commit/d8cdb7073e93262e7fe1e1e7c8f3c8a0c9fc7d5e) Update auth to handle refresh tokens - [`467fedb`](https://github.com/advplyr/audiobookshelf-app/commit/467fedbfe7051fd216b462b36e150d4f357b01c3) Update to use x-refresh-token header, update logout to clear refresh token, add AbsLogger logs for android refresh - [`b99e0b1`](https://github.com/advplyr/audiobookshelf-app/commit/b99e0b112b382e915b4f00631687a558c338a531) Merge branch 'master' into new_jwt_auth - [`44613e1`](https://github.com/advplyr/audiobookshelf-app/commit/44613e12f14d4eda93193a10b4b9e5762a765106) Update serverConnectionConfig to include server version, update server track URL and server cover image URL based on server version - [`f6e2e40`](https://github.com/advplyr/audiobookshelf-app/commit/f6e2e4010f866a07eafeeb5c6f0a23feb1f04d09) Update to not logout from server when switching servers, force users to re-login if using old auth - [`52f86cb`](https://github.com/advplyr/audiobookshelf-app/commit/52f86cbce9d6e8bbebdca2f070f7901452681ff5) Fix plugin listener handlers, add message for configs using old server auth, show server version on account page - [`5804c54`](https://github.com/advplyr/audiobookshelf-app/commit/5804c54656f82b9b27956ff54c094e96d3d640cc) Add version to ServerConnectionConfig on iOS - [`bc927d4`](https://github.com/advplyr/audiobookshelf-app/commit/bc927d4c355cfad9f72a776ab407773c74f3215b) Add SecureStorage to iOS and implement refresh token methods - [`5766c49`](https://github.com/advplyr/audiobookshelf-app/commit/5766c49f6186187cd921a8db40a411984aa4256a) Update iOS ApiClient to handle token refresh - [`b062748`](https://github.com/advplyr/audiobookshelf-app/commit/b06274866da9831b4c4938335812fb36ed6e7f69) iOS update to use new track endpoint and remove token from cover url depending on version ### 📊 Changes **43 files changed** (+2081 additions, -322 deletions) <details> <summary>View changed files</summary> 📝 `android/app/src/main/java/com/audiobookshelf/app/data/AudioTrack.kt` (+1 -0) 📝 `android/app/src/main/java/com/audiobookshelf/app/data/DeviceClasses.kt` (+3 -0) 📝 `android/app/src/main/java/com/audiobookshelf/app/data/LibraryItem.kt` (+5 -0) 📝 `android/app/src/main/java/com/audiobookshelf/app/data/PlaybackSession.kt` (+29 -7) 📝 `android/app/src/main/java/com/audiobookshelf/app/device/DeviceManager.kt` (+36 -0) ➕ `android/app/src/main/java/com/audiobookshelf/app/managers/SecureStorage.kt` (+124 -0) 📝 `android/app/src/main/java/com/audiobookshelf/app/plugins/AbsDatabase.kt` (+70 -7) 📝 `android/app/src/main/java/com/audiobookshelf/app/server/ApiHandler.kt` (+278 -0) 📝 `components/app/Appbar.vue` (+3 -3) 📝 `components/app/AudioPlayer.vue` (+11 -23) 📝 `components/app/AudioPlayerContainer.vue` (+9 -9) 📝 `components/app/SideDrawer.vue` (+1 -15) 📝 `components/connection/ServerConnectForm.vue` (+103 -40) 📝 `components/readers/ComicReader.vue` (+2 -7) 📝 `components/readers/EpubReader.vue` (+14 -6) 📝 `components/readers/MobiReader.vue` (+4 -10) 📝 `components/readers/PdfReader.vue` (+55 -3) 📝 `components/readers/Reader.vue` (+3 -3) 📝 `components/widgets/DownloadProgressIndicator.vue` (+7 -7) 📝 `ios/App/App.xcodeproj/project.pbxproj` (+4 -0) _...and 23 more files_ </details> ### 📄 Description ## Brief summary Updates to support new JWT auth implemented in https://github.com/advplyr/audiobookshelf/pull/4444 Changes - Auto refresh tokens implemented natively for ios/android and for the Capacitor native http - Secure storage for iOS & Android to store refresh tokens for server connections - Update `ServerConnectionConfig` to store server version - Update audio track URLs to use the new `/session/` API if server version is v2.22.0+ - Update cover image URLs to exclude the token in the request if server version is v2.17.0+ - Request user re-authenticates if server v2.26.0+ and they are still using an old token - Show alert on server connection configs that are servers < v2.26.0 ## In-depth Description Auth system description in https://github.com/advplyr/audiobookshelf/pull/4444 ## Screenshots <img width="517" height="392" alt="image" src="https://github.com/user-attachments/assets/6cd6548e-3f37-4d16-ab9e-db3eb0cece20" /> More info modal, read more opens to github discussion <img width="507" height="427" alt="image" src="https://github.com/user-attachments/assets/618c9124-9f7a-4a34-babf-39f509601070" /> --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
adam added the pull-request label 2026-04-24 23:59:52 +02:00
adam closed this issue 2026-04-24 23:59:52 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/audiobookshelf-app#1638