From 048b6a7fbd34b9629ea9d0a2d7eadb9dc478654b Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Tue, 30 Dec 2014 11:36:49 -0500 Subject: sync updates --- MediaBrowser.Api/UserService.cs | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) (limited to 'MediaBrowser.Api/UserService.cs') diff --git a/MediaBrowser.Api/UserService.cs b/MediaBrowser.Api/UserService.cs index 760cb07fd..51a7584b8 100644 --- a/MediaBrowser.Api/UserService.cs +++ b/MediaBrowser.Api/UserService.cs @@ -1,6 +1,7 @@ using MediaBrowser.Common.Extensions; using MediaBrowser.Common.Net; using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Devices; using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Net; @@ -216,16 +217,18 @@ namespace MediaBrowser.Api private readonly ISessionManager _sessionMananger; private readonly IServerConfigurationManager _config; private readonly INetworkManager _networkManager; + private readonly IDeviceManager _deviceManager; public IAuthorizationContext AuthorizationContext { get; set; } - public UserService(IUserManager userManager, IDtoService dtoService, ISessionManager sessionMananger, IServerConfigurationManager config, INetworkManager networkManager) + public UserService(IUserManager userManager, IDtoService dtoService, ISessionManager sessionMananger, IServerConfigurationManager config, INetworkManager networkManager, IDeviceManager deviceManager) { _userManager = userManager; _dtoService = dtoService; _sessionMananger = sessionMananger; _config = config; _networkManager = networkManager; + _deviceManager = deviceManager; } public object Get(GetPublicUsers request) @@ -239,18 +242,12 @@ namespace MediaBrowser.Api }); } - // TODO: Uncomment once clients can handle an empty user list (and below) - //if (Request.IsLocal || IsInLocalNetwork(Request.RemoteIp)) + return Get(new GetUsers { - return Get(new GetUsers - { - IsHidden = false, - IsDisabled = false - }); - } + IsHidden = false, + IsDisabled = false - //// Return empty when external - //return ToOptimizedResult(new List()); + }, true); } /// @@ -259,6 +256,11 @@ namespace MediaBrowser.Api /// The request. /// System.Object. public object Get(GetUsers request) + { + return Get(request, false); + } + + private object Get(GetUsers request, bool filterByDevice) { var users = _userManager.Users; @@ -274,10 +276,19 @@ namespace MediaBrowser.Api if (request.IsGuest.HasValue) { - users = users.Where(i => (i.ConnectLinkType.HasValue && i.ConnectLinkType.Value == UserLinkType.Guest) == request.IsGuest.Value); } + if (filterByDevice) + { + var deviceId = AuthorizationContext.GetAuthorizationInfo(Request).DeviceId; + + if (!string.IsNullOrWhiteSpace(deviceId)) + { + users = users.Where(i => _deviceManager.CanAccessDevice(i.Id.ToString("N"), deviceId)); + } + } + var result = users .OrderBy(u => u.Name) .Select(i => _userManager.GetUserDto(i, Request.RemoteIp)) -- cgit v1.2.3