aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Entities/BaseItem.cs
diff options
context:
space:
mode:
authorShadowghost <Ghost_of_Stone@web.de>2026-02-05 19:57:03 +0100
committerShadowghost <Ghost_of_Stone@web.de>2026-02-05 19:57:39 +0100
commit0c46004cd921aed337c5b995afe253d65c15eeb4 (patch)
treecf5cff3283ee5ca7cd59eec91e9e4ce0b06a3066 /MediaBrowser.Controller/Entities/BaseItem.cs
parenta0346fe5b70a434860f973086be176ecc2018a52 (diff)
Optimize accessibility checks
Diffstat (limited to 'MediaBrowser.Controller/Entities/BaseItem.cs')
-rw-r--r--MediaBrowser.Controller/Entities/BaseItem.cs23
1 files changed, 21 insertions, 2 deletions
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index 3f04b1ffae..d366e0288a 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -1350,8 +1350,27 @@ namespace MediaBrowser.Controller.Entities
if (itemCollectionFolders.Count > 0)
{
- var userCollectionFolders = LibraryManager.GetUserRootFolder().GetChildren(user, true).Select(i => i.Id).ToList();
- if (!itemCollectionFolders.Any(userCollectionFolders.Contains))
+ var blockedMediaFolders = user.GetPreferenceValues<Guid>(PreferenceKind.BlockedMediaFolders);
+ IEnumerable<Guid> userCollectionFolderIds;
+ if (blockedMediaFolders.Length > 0)
+ {
+ // User has blocked folders - get all library folders and exclude blocked ones
+ userCollectionFolderIds = LibraryManager.GetUserRootFolder().Children
+ .Select(i => i.Id)
+ .Where(id => !blockedMediaFolders.Contains(id));
+ }
+ else if (user.HasPermission(PermissionKind.EnableAllFolders))
+ {
+ // User can access all folders - no need to filter
+ return true;
+ }
+ else
+ {
+ // User has specific enabled folders
+ userCollectionFolderIds = user.GetPreferenceValues<Guid>(PreferenceKind.EnabledFolders);
+ }
+
+ if (!itemCollectionFolders.Any(userCollectionFolderIds.Contains))
{
return false;
}