diff options
| author | Luke <luke.pulverenti@gmail.com> | 2015-03-19 13:21:35 -0400 |
|---|---|---|
| committer | Luke <luke.pulverenti@gmail.com> | 2015-03-19 13:21:35 -0400 |
| commit | 9926be0d9de688c04065c916e44ada4177b38a80 (patch) | |
| tree | 15338144a143948ffbee316641757e81489a7354 /MediaBrowser.Server.Implementations/HttpServer/Security/SessionContext.cs | |
| parent | b756e677d733992c2033bdd369980a37e17609e4 (diff) | |
| parent | 0564d454e5ad4f59702aa9022af6bb8fd064a9ff (diff) | |
Merge pull request #1043 from MediaBrowser/dev
3.0.5557.0
Diffstat (limited to 'MediaBrowser.Server.Implementations/HttpServer/Security/SessionContext.cs')
| -rw-r--r-- | MediaBrowser.Server.Implementations/HttpServer/Security/SessionContext.cs | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/MediaBrowser.Server.Implementations/HttpServer/Security/SessionContext.cs b/MediaBrowser.Server.Implementations/HttpServer/Security/SessionContext.cs index 9d1ddb7fc..1bbe9893b 100644 --- a/MediaBrowser.Server.Implementations/HttpServer/Security/SessionContext.cs +++ b/MediaBrowser.Server.Implementations/HttpServer/Security/SessionContext.cs @@ -1,8 +1,10 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Net; +using MediaBrowser.Controller.Security; using MediaBrowser.Controller.Session; using ServiceStack.Web; +using System.Threading.Tasks; namespace MediaBrowser.Server.Implementations.HttpServer.Security { @@ -19,27 +21,41 @@ namespace MediaBrowser.Server.Implementations.HttpServer.Security _sessionManager = sessionManager; } - public SessionInfo GetSession(IServiceRequest requestContext) + public Task<SessionInfo> GetSession(IServiceRequest requestContext) { var authorization = _authContext.GetAuthorizationInfo(requestContext); - return _sessionManager.GetSession(authorization.DeviceId, authorization.Client, authorization.Version); + if (!string.IsNullOrWhiteSpace(authorization.Token)) + { + var auth = GetTokenInfo(requestContext); + return _sessionManager.GetSessionByAuthenticationToken(auth, authorization.DeviceId, requestContext.RemoteIp, authorization.Version); + } + + var session = _sessionManager.GetSession(authorization.DeviceId, authorization.Client, authorization.Version); + return Task.FromResult(session); } - public User GetUser(IServiceRequest requestContext) + private AuthenticationInfo GetTokenInfo(IServiceRequest request) { - var session = GetSession(requestContext); - - return session == null || !session.UserId.HasValue ? null : _userManager.GetUserById(session.UserId.Value); + object info; + request.Items.TryGetValue("OriginalAuthenticationInfo", out info); + return info as AuthenticationInfo; } - public SessionInfo GetSession(object requestContext) + public Task<SessionInfo> GetSession(object requestContext) { var req = new ServiceStackServiceRequest((IRequest)requestContext); return GetSession(req); } - public User GetUser(object requestContext) + public async Task<User> GetUser(IServiceRequest requestContext) + { + var session = await GetSession(requestContext).ConfigureAwait(false); + + return session == null || !session.UserId.HasValue ? null : _userManager.GetUserById(session.UserId.Value); + } + + public Task<User> GetUser(object requestContext) { var req = new ServiceStackServiceRequest((IRequest)requestContext); return GetUser(req); |
