mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-11-03 19:17:24 -05:00 
			
		
		
		
	Merge pull request #1066 from MediaBrowser/master
create user info from exchange token
This commit is contained in:
		
						commit
						7bafdfadb9
					
				@ -41,6 +41,13 @@ namespace MediaBrowser.Controller.Connect
 | 
			
		||||
        /// <returns>Task<List<ConnectAuthorization>>.</returns>
 | 
			
		||||
        Task<List<ConnectAuthorization>> GetPendingGuests();
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Gets the user from exchange token.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="token">The token.</param>
 | 
			
		||||
        /// <returns>User.</returns>
 | 
			
		||||
        User GetUserFromExchangeToken(string token);
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Cancels the authorization.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
 | 
			
		||||
@ -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))
 | 
			
		||||
 | 
			
		||||
@ -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;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -525,7 +525,7 @@ namespace MediaBrowser.Server.Startup.Common
 | 
			
		||||
            RegisterSingleInstance(activityLogRepo);
 | 
			
		||||
            RegisterSingleInstance<IActivityManager>(new ActivityManager(LogManager.GetLogger("ActivityManager"), activityLogRepo, UserManager));
 | 
			
		||||
 | 
			
		||||
            var authContext = new AuthorizationContext(AuthenticationRepository);
 | 
			
		||||
            var authContext = new AuthorizationContext(AuthenticationRepository, ConnectManager);
 | 
			
		||||
            RegisterSingleInstance<IAuthorizationContext>(authContext);
 | 
			
		||||
            RegisterSingleInstance<ISessionContext>(new SessionContext(UserManager, authContext, SessionManager));
 | 
			
		||||
            RegisterSingleInstance<IAuthService>(new AuthService(UserManager, authContext, ServerConfigurationManager, ConnectManager, SessionManager, DeviceManager));
 | 
			
		||||
@ -756,7 +756,7 @@ namespace MediaBrowser.Server.Startup.Common
 | 
			
		||||
            ChannelManager.AddParts(GetExports<IChannel>(), GetExports<IChannelFactory>());
 | 
			
		||||
 | 
			
		||||
            MediaSourceManager.AddParts(GetExports<IMediaSourceProvider>());
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            NotificationManager.AddParts(GetExports<INotificationService>(), GetExports<INotificationTypeFactory>());
 | 
			
		||||
            SyncManager.AddParts(GetExports<ISyncProvider>());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user