mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-11-03 11:07:21 -05:00 
			
		
		
		
	# Conflicts: # Emby.Server.Implementations/Devices/DeviceManager.cs # Emby.Server.Implementations/HttpServer/Security/SessionContext.cs # Emby.Server.Implementations/Security/AuthenticationRepository.cs # Emby.Server.Implementations/Session/SessionManager.cs # Jellyfin.Server.Implementations/Security/AuthorizationContext.cs # MediaBrowser.Controller/Library/IUserManager.cs # MediaBrowser.Controller/Net/ISessionContext.cs
		
			
				
	
	
		
			59 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
#pragma warning disable CS1591
 | 
						|
 | 
						|
using System;
 | 
						|
using System.Threading.Tasks;
 | 
						|
using Jellyfin.Data.Entities;
 | 
						|
using MediaBrowser.Common.Extensions;
 | 
						|
using MediaBrowser.Controller.Library;
 | 
						|
using MediaBrowser.Controller.Net;
 | 
						|
using MediaBrowser.Controller.Session;
 | 
						|
using Microsoft.AspNetCore.Http;
 | 
						|
 | 
						|
namespace Emby.Server.Implementations.HttpServer.Security
 | 
						|
{
 | 
						|
    public class SessionContext : ISessionContext
 | 
						|
    {
 | 
						|
        private readonly IUserManager _userManager;
 | 
						|
        private readonly ISessionManager _sessionManager;
 | 
						|
        private readonly IAuthorizationContext _authContext;
 | 
						|
 | 
						|
        public SessionContext(IUserManager userManager, IAuthorizationContext authContext, ISessionManager sessionManager)
 | 
						|
        {
 | 
						|
            _userManager = userManager;
 | 
						|
            _authContext = authContext;
 | 
						|
            _sessionManager = sessionManager;
 | 
						|
        }
 | 
						|
 | 
						|
        public async Task<SessionInfo> GetSession(HttpContext requestContext)
 | 
						|
        {
 | 
						|
            var authorization = await _authContext.GetAuthorizationInfo(requestContext).ConfigureAwait(false);
 | 
						|
 | 
						|
            var user = authorization.User;
 | 
						|
            return await _sessionManager.LogSessionActivity(
 | 
						|
                authorization.Client,
 | 
						|
                authorization.Version,
 | 
						|
                authorization.DeviceId,
 | 
						|
                authorization.Device,
 | 
						|
                requestContext.GetNormalizedRemoteIp().ToString(),
 | 
						|
                user).ConfigureAwait(false);
 | 
						|
        }
 | 
						|
 | 
						|
        public Task<SessionInfo> GetSession(object requestContext)
 | 
						|
        {
 | 
						|
            return GetSession((HttpContext)requestContext);
 | 
						|
        }
 | 
						|
 | 
						|
        public async Task<User?> GetUser(HttpContext requestContext)
 | 
						|
        {
 | 
						|
            var session = await GetSession(requestContext).ConfigureAwait(false);
 | 
						|
 | 
						|
            return session == null || session.UserId.Equals(Guid.Empty) ? null : _userManager.GetUserById(session.UserId);
 | 
						|
        }
 | 
						|
 | 
						|
        public Task<User?> GetUser(object requestContext)
 | 
						|
        {
 | 
						|
            return GetUser(((HttpRequest)requestContext).HttpContext);
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |