Forces respecting IsVisible on people

This commit is contained in:
LogicalPhallacy 2022-08-11 14:02:51 -07:00 committed by cvium
parent ba026716c1
commit de196a7687
3 changed files with 16 additions and 5 deletions

View file

@ -182,7 +182,7 @@ namespace Emby.Server.Implementations.Dto
if (options.ContainsField(ItemFields.People)) if (options.ContainsField(ItemFields.People))
{ {
AttachPeople(dto, item); AttachPeople(dto, item, user);
} }
if (options.ContainsField(ItemFields.PrimaryImageAspectRatio)) if (options.ContainsField(ItemFields.PrimaryImageAspectRatio))
@ -503,7 +503,8 @@ namespace Emby.Server.Implementations.Dto
/// </summary> /// </summary>
/// <param name="dto">The dto.</param> /// <param name="dto">The dto.</param>
/// <param name="item">The item.</param> /// <param name="item">The item.</param>
private void AttachPeople(BaseItemDto dto, BaseItem item) /// <param name="user">The requesting user.</param>
private void AttachPeople(BaseItemDto dto, BaseItem item, User user = null)
{ {
// Ordering by person type to ensure actors and artists are at the front. // Ordering by person type to ensure actors and artists are at the front.
// This is taking advantage of the fact that they both begin with A // This is taking advantage of the fact that they both begin with A
@ -560,6 +561,9 @@ namespace Emby.Server.Implementations.Dto
return null; return null;
} }
}).Where(i => i != null) }).Where(i => i != null)
.Where(i => user == null ?
true :
i.IsVisible(user))
.GroupBy(i => i.Name, StringComparer.OrdinalIgnoreCase) .GroupBy(i => i.Name, StringComparer.OrdinalIgnoreCase)
.Select(x => x.First()) .Select(x => x.First())
.ToDictionary(i => i.Name, StringComparer.OrdinalIgnoreCase); .ToDictionary(i => i.Name, StringComparer.OrdinalIgnoreCase);

View file

@ -2766,7 +2766,8 @@ namespace Emby.Server.Implementations.Library
public List<Person> GetPeopleItems(InternalPeopleQuery query) public List<Person> GetPeopleItems(InternalPeopleQuery query)
{ {
return _itemRepository.GetPeopleNames(query).Select(i => return _itemRepository.GetPeopleNames(query)
.Select(i =>
{ {
try try
{ {
@ -2777,7 +2778,10 @@ namespace Emby.Server.Implementations.Library
_logger.LogError(ex, "Error getting person"); _logger.LogError(ex, "Error getting person");
return null; return null;
} }
}).Where(i => i != null).ToList(); })
.Where(i => i.IsVisible(query.User))
.Where(i => i != null)
.ToList();
} }
public List<string> GetPeopleNames(InternalPeopleQuery query) public List<string> GetPeopleNames(InternalPeopleQuery query)

View file

@ -98,7 +98,10 @@ namespace Jellyfin.Api.Controllers
Limit = limit ?? 0 Limit = limit ?? 0
}); });
return new QueryResult<BaseItemDto>(peopleItems.Select(person => _dtoService.GetItemByNameDto(person, dtoOptions, null, user)).ToArray()); return new QueryResult<BaseItemDto>(
peopleItems
.Select(person => _dtoService.GetItemByNameDto(person, dtoOptions, null, user))
.ToArray());
} }
/// <summary> /// <summary>