enforce user access to offline items

This commit is contained in:
Luke Pulverenti
2015-02-03 16:06:56 -05:00
parent 256990ac7b
commit 655c9ea7a1
10 changed files with 80 additions and 12 deletions

View File

@@ -314,6 +314,10 @@ namespace MediaBrowser.Server.Implementations.Sync
try
{
_fileSystem.DeleteDirectory(path, true);
}
catch (DirectoryNotFoundException)
{
}
catch (Exception ex)
{
@@ -664,9 +668,48 @@ namespace MediaBrowser.Server.Implementations.Sync
response.ItemIdsToRemove = response.ItemIdsToRemove.Distinct(StringComparer.OrdinalIgnoreCase).ToList();
var itemsOnDevice = request.LocalItemIds
.Except(response.ItemIdsToRemove)
.ToList();
SetUserAccess(request, response, itemsOnDevice);
return response;
}
private void SetUserAccess(SyncDataRequest request, SyncDataResponse response, List<string> itemIds)
{
var users = request.OfflineUserIds
.Select(_userManager.GetUserById)
.Where(i => i != null)
.ToList();
foreach (var itemId in itemIds)
{
var item = _libraryManager.GetItemById(itemId);
if (item != null)
{
var usersWithAccess = new List<User>();
foreach (var user in users)
{
if (IsUserVisible(item, user))
{
usersWithAccess.Add(user);
}
}
response.ItemUserAccess[itemId] = users.Select(i => i.Id.ToString("N")).ToList();
}
}
}
private bool IsUserVisible(BaseItem item, User user)
{
return item.IsVisibleStandalone(user);
}
private bool IsLibraryItemAvailable(BaseItem item)
{
if (item == null)
@@ -723,6 +766,10 @@ namespace MediaBrowser.Server.Implementations.Sync
try
{
_fileSystem.DeleteDirectory(path, true);
}
catch (DirectoryNotFoundException)
{
}
catch (Exception ex)
{