Merge pull request #1066 from MediaBrowser/master

create user info from exchange token
This commit is contained in:
Luke
2015-04-03 21:12:09 -04:00
4 changed files with 33 additions and 5 deletions

View File

@@ -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))

View File

@@ -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;
}