diff options
Diffstat (limited to 'MediaBrowser.Server.Implementations')
| -rw-r--r-- | MediaBrowser.Server.Implementations/Connect/ConnectManager.cs | 12 | ||||
| -rw-r--r-- | MediaBrowser.Server.Implementations/HttpServer/Security/AuthorizationContext.cs | 15 |
2 files changed, 24 insertions, 3 deletions
diff --git a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs index a7f8717a7..b1b6cd899 100644 --- a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs +++ b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs @@ -1125,7 +1125,7 @@ namespace MediaBrowser.Server.Implementations.Connect url += "?serverId=" + ConnectServerId; url += "&supporterKey=" + _securityManager.SupporterKey; url += "&userId=" + id; - + var options = new HttpRequestOptions { Url = url, @@ -1244,6 +1244,16 @@ namespace MediaBrowser.Server.Implementations.Connect .FirstOrDefault(i => string.Equals(i.ConnectUserId, connectUserId, StringComparison.OrdinalIgnoreCase)); } + public User GetUserFromExchangeToken(string token) + { + if (string.IsNullOrWhiteSpace(token)) + { + throw new ArgumentNullException("token"); + } + + return _userManager.Users.FirstOrDefault(u => string.Equals(token, u.ConnectAccessKey, StringComparison.OrdinalIgnoreCase)); + } + public bool IsAuthorizationTokenValid(string token) { if (string.IsNullOrWhiteSpace(token)) diff --git a/MediaBrowser.Server.Implementations/HttpServer/Security/AuthorizationContext.cs b/MediaBrowser.Server.Implementations/HttpServer/Security/AuthorizationContext.cs index cd4d23f5c..9461143a8 100644 --- a/MediaBrowser.Server.Implementations/HttpServer/Security/AuthorizationContext.cs +++ b/MediaBrowser.Server.Implementations/HttpServer/Security/AuthorizationContext.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller.Net; +using MediaBrowser.Controller.Connect; +using MediaBrowser.Controller.Net; using MediaBrowser.Controller.Security; using ServiceStack.Web; using System; @@ -10,10 +11,12 @@ namespace MediaBrowser.Server.Implementations.HttpServer.Security public class AuthorizationContext : IAuthorizationContext { private readonly IAuthenticationRepository _authRepo; + private readonly IConnectManager _connectManager; - public AuthorizationContext(IAuthenticationRepository authRepo) + public AuthorizationContext(IAuthenticationRepository authRepo, IConnectManager connectManager) { _authRepo = authRepo; + _connectManager = connectManager; } public AuthorizationInfo GetAuthorizationInfo(object requestContext) @@ -144,6 +147,14 @@ namespace MediaBrowser.Server.Implementations.HttpServer.Security info.DeviceId = tokenInfo.DeviceId; } } + else + { + var user = _connectManager.GetUserFromExchangeToken(token); + if (user != null) + { + info.UserId = user.Id.ToString("N"); + } + } httpReq.Items["OriginalAuthenticationInfo"] = tokenInfo; } |
