@ -270,30 +270,13 @@ namespace Jellyfin.Api.Controllers
includeItemTypes = new [ ] { BaseItemKind . Playlist } ;
}
var enabledChannels = user ! . GetPreferenceValues < Guid > ( PreferenceKind . EnabledChannels ) ;
bool isInEnabledFolder = Array . IndexOf ( user . GetPreferenceValues < Guid > ( PreferenceKind . EnabledFolders ) , item . Id ) ! = - 1
// Assume all folders inside an EnabledChannel are enabled
| | Array . IndexOf ( enabledChannels , item . Id ) ! = - 1
// Assume all items inside an EnabledChannel are enabled
| | Array . IndexOf ( enabledChannels , item . ChannelId ) ! = - 1 ;
var collectionFolders = _libraryManager . GetCollectionFolders ( item ) ;
foreach ( var collectionFolder in collectionFolders )
{
if ( user . GetPreferenceValues < Guid > ( PreferenceKind . EnabledFolders ) . Contains ( collectionFolder . Id ) )
{
isInEnabledFolder = true ;
}
}
if ( item is not UserRootFolder
& & ! isInEnabledFolder
& & ! user. HasPermission ( PermissionKind . EnableAllFolders )
& & ! user . HasPermission ( PermissionKind . EnableAllChannels )
& & ! string . Equals ( collectionType , CollectionType . Folders , StringComparison . OrdinalIgnoreCase ) )
// api keys can always access all folders
& & ! ClaimHelpers . GetIsApiKey ( User )
// check the item is visible for the user
& & ! item . IsVisible ( user ) )
{
_logger . LogWarning ( "{UserName} is not permitted to access Library {ItemName} . ", user . Username , item . Name ) ;
_logger . LogWarning ( "{UserName} is not permitted to access Library {ItemName}" , user ! . Username , item . Name ) ;
return Unauthorized ( $"{user.Username} is not permitted to access Library {item.Name}." ) ;
}