mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-06-15 11:34:38 -04:00
Skip allowed tags check for parents of an item (#12721)
This commit is contained in:
parent
21e398ba0c
commit
d1fbdcee34
@ -22,7 +22,7 @@ namespace MediaBrowser.Controller.Channels
|
|||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public override SourceType SourceType => SourceType.Channel;
|
public override SourceType SourceType => SourceType.Channel;
|
||||||
|
|
||||||
public override bool IsVisible(User user)
|
public override bool IsVisible(User user, bool skipAllowedTagsCheck = false)
|
||||||
{
|
{
|
||||||
var blockedChannelsPreference = user.GetPreferenceValues<Guid>(PreferenceKind.BlockedChannels);
|
var blockedChannelsPreference = user.GetPreferenceValues<Guid>(PreferenceKind.BlockedChannels);
|
||||||
if (blockedChannelsPreference.Length != 0)
|
if (blockedChannelsPreference.Length != 0)
|
||||||
@ -41,7 +41,7 @@ namespace MediaBrowser.Controller.Channels
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return base.IsVisible(user);
|
return base.IsVisible(user, skipAllowedTagsCheck);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override QueryResult<BaseItem> GetItemsInternal(InternalItemsQuery query)
|
protected override QueryResult<BaseItem> GetItemsInternal(InternalItemsQuery query)
|
||||||
|
@ -1299,7 +1299,7 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GetParents().Any(i => !i.IsVisible(user)))
|
if (GetParents().Any(i => !i.IsVisible(user, true)))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -1521,13 +1521,14 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
/// Determines if a given user has access to this item.
|
/// Determines if a given user has access to this item.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="user">The user.</param>
|
/// <param name="user">The user.</param>
|
||||||
|
/// <param name="skipAllowedTagsCheck">Don't check for allowed tags.</param>
|
||||||
/// <returns><c>true</c> if [is parental allowed] [the specified user]; otherwise, <c>false</c>.</returns>
|
/// <returns><c>true</c> if [is parental allowed] [the specified user]; otherwise, <c>false</c>.</returns>
|
||||||
/// <exception cref="ArgumentNullException">If user is null.</exception>
|
/// <exception cref="ArgumentNullException">If user is null.</exception>
|
||||||
public bool IsParentalAllowed(User user)
|
public bool IsParentalAllowed(User user, bool skipAllowedTagsCheck)
|
||||||
{
|
{
|
||||||
ArgumentNullException.ThrowIfNull(user);
|
ArgumentNullException.ThrowIfNull(user);
|
||||||
|
|
||||||
if (!IsVisibleViaTags(user))
|
if (!IsVisibleViaTags(user, skipAllowedTagsCheck))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -1599,7 +1600,7 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
return list.Distinct(StringComparer.OrdinalIgnoreCase).ToList();
|
return list.Distinct(StringComparer.OrdinalIgnoreCase).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool IsVisibleViaTags(User user)
|
private bool IsVisibleViaTags(User user, bool skipAllowedTagsCheck)
|
||||||
{
|
{
|
||||||
var allTags = GetInheritedTags();
|
var allTags = GetInheritedTags();
|
||||||
if (user.GetPreference(PreferenceKind.BlockedTags).Any(i => allTags.Contains(i, StringComparison.OrdinalIgnoreCase)))
|
if (user.GetPreference(PreferenceKind.BlockedTags).Any(i => allTags.Contains(i, StringComparison.OrdinalIgnoreCase)))
|
||||||
@ -1614,7 +1615,7 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
}
|
}
|
||||||
|
|
||||||
var allowedTagsPreference = user.GetPreference(PreferenceKind.AllowedTags);
|
var allowedTagsPreference = user.GetPreference(PreferenceKind.AllowedTags);
|
||||||
if (allowedTagsPreference.Length != 0 && !allowedTagsPreference.Any(i => allTags.Contains(i, StringComparison.OrdinalIgnoreCase)))
|
if (!skipAllowedTagsCheck && allowedTagsPreference.Length != 0 && !allowedTagsPreference.Any(i => allTags.Contains(i, StringComparison.OrdinalIgnoreCase)))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -1654,13 +1655,14 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
/// Default is just parental allowed. Can be overridden for more functionality.
|
/// Default is just parental allowed. Can be overridden for more functionality.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="user">The user.</param>
|
/// <param name="user">The user.</param>
|
||||||
|
/// <param name="skipAllowedTagsCheck">Don't check for allowed tags.</param>
|
||||||
/// <returns><c>true</c> if the specified user is visible; otherwise, <c>false</c>.</returns>
|
/// <returns><c>true</c> if the specified user is visible; otherwise, <c>false</c>.</returns>
|
||||||
/// <exception cref="ArgumentNullException"><paramref name="user" /> is <c>null</c>.</exception>
|
/// <exception cref="ArgumentNullException"><paramref name="user" /> is <c>null</c>.</exception>
|
||||||
public virtual bool IsVisible(User user)
|
public virtual bool IsVisible(User user, bool skipAllowedTagsCheck = false)
|
||||||
{
|
{
|
||||||
ArgumentNullException.ThrowIfNull(user);
|
ArgumentNullException.ThrowIfNull(user);
|
||||||
|
|
||||||
return IsParentalAllowed(user);
|
return IsParentalAllowed(user, skipAllowedTagsCheck);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual bool IsVisibleStandalone(User user)
|
public virtual bool IsVisibleStandalone(User user)
|
||||||
|
@ -96,11 +96,11 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
return GetLibraryOptions(Path);
|
return GetLibraryOptions(Path);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool IsVisible(User user)
|
public override bool IsVisible(User user, bool skipAllowedTagsCheck = false)
|
||||||
{
|
{
|
||||||
if (GetLibraryOptions().Enabled)
|
if (GetLibraryOptions().Enabled)
|
||||||
{
|
{
|
||||||
return base.IsVisible(user);
|
return base.IsVisible(user, skipAllowedTagsCheck);
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -217,7 +217,7 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
LibraryManager.CreateItem(item, this);
|
LibraryManager.CreateItem(item, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool IsVisible(User user)
|
public override bool IsVisible(User user, bool skipAllowedTagsCheck = false)
|
||||||
{
|
{
|
||||||
if (this is ICollectionFolder && this is not BasePluginFolder)
|
if (this is ICollectionFolder && this is not BasePluginFolder)
|
||||||
{
|
{
|
||||||
@ -239,7 +239,7 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return base.IsVisible(user);
|
return base.IsVisible(user, skipAllowedTagsCheck);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -144,14 +144,14 @@ namespace MediaBrowser.Controller.Entities.Movies
|
|||||||
return GetItemLookupInfo<BoxSetInfo>();
|
return GetItemLookupInfo<BoxSetInfo>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool IsVisible(User user)
|
public override bool IsVisible(User user, bool skipAllowedTagsCheck = false)
|
||||||
{
|
{
|
||||||
if (IsLegacyBoxSet)
|
if (IsLegacyBoxSet)
|
||||||
{
|
{
|
||||||
return base.IsVisible(user);
|
return base.IsVisible(user, skipAllowedTagsCheck);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (base.IsVisible(user))
|
if (base.IsVisible(user, skipAllowedTagsCheck))
|
||||||
{
|
{
|
||||||
if (LinkedChildren.Length == 0)
|
if (LinkedChildren.Length == 0)
|
||||||
{
|
{
|
||||||
|
@ -227,11 +227,11 @@ namespace MediaBrowser.Controller.Playlists
|
|||||||
return [item];
|
return [item];
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool IsVisible(User user)
|
public override bool IsVisible(User user, bool skipAllowedTagsCheck = false)
|
||||||
{
|
{
|
||||||
if (!IsSharedItem)
|
if (!IsSharedItem)
|
||||||
{
|
{
|
||||||
return base.IsVisible(user);
|
return base.IsVisible(user, skipAllowedTagsCheck);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (OpenAccess)
|
if (OpenAccess)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user