aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/UserService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api/UserService.cs')
-rw-r--r--MediaBrowser.Api/UserService.cs35
1 files changed, 23 insertions, 12 deletions
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<UserDto>());
+ }, true);
}
/// <summary>
@@ -260,6 +257,11 @@ namespace MediaBrowser.Api
/// <returns>System.Object.</returns>
public object Get(GetUsers request)
{
+ return Get(request, false);
+ }
+
+ private object Get(GetUsers request, bool filterByDevice)
+ {
var users = _userManager.Users;
if (request.IsDisabled.HasValue)
@@ -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))