advplyr / audiobookshelf

Self-hosted audiobook and podcast server
https://audiobookshelf.org
GNU General Public License v3.0
6.91k stars 488 forks source link

[Enhancement]: Per-Library Permissions for Users #3112

Open sydlexius opened 5 months ago

sydlexius commented 5 months ago

Type of Enhancement

Server Backend

Describe the Feature/Enhancement

Currently access permissions are limited to all or a subset of libraries, as well as the potential to limit access via tags. The challenge is that the metadata I have for my books libraries doesn't match my audiobooks, so it's nearly impossible to use a global set of tags across all libraries. Would it be possible to have more fine-grained control over the access users have, such as rulesets per-library?

Why would this be helpful?

Metadata sources (Audible, Google/Open Books, etc) don't all use the same tag names, and hence it can be difficult to configure access for a user across all libraries using the hodge-podge of tag names. Manually re-tagging items is fairly cumbersome for large libraries as well.

Future Implementation (Screenshot)

Apologies, as I'm not a UI/UX person, but I would imagine that perhaps instead of an input box that contains all of the libraries a user could access, that instead the list of libraries could be enumerated with perhaps a checkbox to the left of the library name to enable/disable access, the name of the library, and then an (optional) entry box to the right to select tags that can restrict access, finally with a last checkbox to allow inversion of the rules. Ex:

[E] Library     Tags Accessible to User        Invert
[x] Audiobooks  [Kids                        ] [ ]
[x] Books       [Childrens                   ] [ ]
[ ] Podcasts    [                            ] [ ]

Audiobookshelf Server Version

v2.10.1

Current Implementation (Screenshot)

image

ZLoth commented 4 months ago

This is a primary reason why I have multiple libraries instead of a single library. In addition to the "Explicit" setting for books, it allows me to turn off libraries for certain people.