mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-11-03 19:17:24 -05:00 
			
		
		
		
	Fix concurrency issues
This commit is contained in:
		
							parent
							
								
									373155a063
								
							
						
					
					
						commit
						3d9c16ba6b
					
				@ -15,12 +15,12 @@ namespace Jellyfin.Server.Implementations.Security
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    public class AuthorizationContext : IAuthorizationContext
 | 
					    public class AuthorizationContext : IAuthorizationContext
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        private readonly JellyfinDb _jellyfinDb;
 | 
					        private readonly JellyfinDbProvider _jellyfinDbProvider;
 | 
				
			||||||
        private readonly IUserManager _userManager;
 | 
					        private readonly IUserManager _userManager;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public AuthorizationContext(JellyfinDb jellyfinDb, IUserManager userManager)
 | 
					        public AuthorizationContext(JellyfinDbProvider jellyfinDb, IUserManager userManager)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            _jellyfinDb = jellyfinDb;
 | 
					            _jellyfinDbProvider = jellyfinDb;
 | 
				
			||||||
            _userManager = userManager;
 | 
					            _userManager = userManager;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -117,7 +117,8 @@ namespace Jellyfin.Server.Implementations.Security
 | 
				
			|||||||
#pragma warning restore CA1508
 | 
					#pragma warning restore CA1508
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            authInfo.HasToken = true;
 | 
					            authInfo.HasToken = true;
 | 
				
			||||||
            var device = await _jellyfinDb.Devices.FirstOrDefaultAsync(d => d.AccessToken == token).ConfigureAwait(false);
 | 
					            await using var jellyfinDb = _jellyfinDbProvider.CreateContext();
 | 
				
			||||||
 | 
					            var device = await jellyfinDb.Devices.FirstOrDefaultAsync(d => d.AccessToken == token).ConfigureAwait(false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (device != null)
 | 
					            if (device != null)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
@ -186,8 +187,8 @@ namespace Jellyfin.Server.Implementations.Security
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                if (updateToken)
 | 
					                if (updateToken)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    _jellyfinDb.Devices.Update(device);
 | 
					                    jellyfinDb.Devices.Update(device);
 | 
				
			||||||
                    await _jellyfinDb.SaveChangesAsync().ConfigureAwait(false);
 | 
					                    await jellyfinDb.SaveChangesAsync().ConfigureAwait(false);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -95,7 +95,7 @@ namespace Jellyfin.Server
 | 
				
			|||||||
            ServiceCollection.AddSingleton<IWebSocketListener, ScheduledTasksWebSocketListener>();
 | 
					            ServiceCollection.AddSingleton<IWebSocketListener, ScheduledTasksWebSocketListener>();
 | 
				
			||||||
            ServiceCollection.AddSingleton<IWebSocketListener, SessionInfoWebSocketListener>();
 | 
					            ServiceCollection.AddSingleton<IWebSocketListener, SessionInfoWebSocketListener>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            ServiceCollection.AddScoped<IAuthorizationContext, AuthorizationContext>();
 | 
					            ServiceCollection.AddSingleton<IAuthorizationContext, AuthorizationContext>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            base.RegisterServices();
 | 
					            base.RegisterServices();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user