More info modal, read more opens to github discussion
🔄 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>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
📋 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:
master← Head:new_jwt_auth📝 Commits (10+)
d8cdb70Update auth to handle refresh tokens467fedbUpdate to use x-refresh-token header, update logout to clear refresh token, add AbsLogger logs for android refreshb99e0b1Merge branch 'master' into new_jwt_auth44613e1Update serverConnectionConfig to include server version, update server track URL and server cover image URL based on server versionf6e2e40Update to not logout from server when switching servers, force users to re-login if using old auth52f86cbFix plugin listener handlers, add message for configs using old server auth, show server version on account page5804c54Add version to ServerConnectionConfig on iOSbc927d4Add SecureStorage to iOS and implement refresh token methods5766c49Update iOS ApiClient to handle token refreshb062748iOS 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
ServerConnectionConfigto store server version/session/API if server version is v2.22.0+In-depth Description
Auth system description in https://github.com/advplyr/audiobookshelf/pull/4444
Screenshots
More info modal, read more opens to github discussion

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