Răsfoiți Sursa

Don't migrate auth token if user doesn't exist

Cody Robibero 3 ani în urmă
părinte
comite
105f057512

+ 17 - 1
Jellyfin.Server/Migrations/Routines/MigrateAuthenticationDb.cs

@@ -5,6 +5,7 @@ using Emby.Server.Implementations.Data;
 using Jellyfin.Data.Entities.Security;
 using Jellyfin.Server.Implementations;
 using MediaBrowser.Controller;
+using MediaBrowser.Controller.Library;
 using Microsoft.Extensions.Logging;
 using SQLitePCL.pretty;
 
@@ -20,6 +21,7 @@ namespace Jellyfin.Server.Migrations.Routines
         private readonly ILogger<MigrateAuthenticationDb> _logger;
         private readonly JellyfinDbProvider _dbProvider;
         private readonly IServerApplicationPaths _appPaths;
+        private readonly IUserManager _userManager;
 
         /// <summary>
         /// Initializes a new instance of the <see cref="MigrateAuthenticationDb"/> class.
@@ -27,11 +29,17 @@ namespace Jellyfin.Server.Migrations.Routines
         /// <param name="logger">The logger.</param>
         /// <param name="dbProvider">The database provider.</param>
         /// <param name="appPaths">The server application paths.</param>
-        public MigrateAuthenticationDb(ILogger<MigrateAuthenticationDb> logger, JellyfinDbProvider dbProvider, IServerApplicationPaths appPaths)
+        /// <param name="userManager">The user manager.</param>
+        public MigrateAuthenticationDb(
+            ILogger<MigrateAuthenticationDb> logger,
+            JellyfinDbProvider dbProvider,
+            IServerApplicationPaths appPaths,
+            IUserManager userManager)
         {
             _logger = logger;
             _dbProvider = dbProvider;
             _appPaths = appPaths;
+            _userManager = userManager;
         }
 
         /// <inheritdoc />
@@ -74,6 +82,14 @@ namespace Jellyfin.Server.Migrations.Routines
                     }
                     else
                     {
+                        var userId = new Guid(row[6].ToString());
+                        var user = _userManager.GetUserById(userId);
+                        if (user is null)
+                        {
+                            // User doesn't exist, don't bring over the device.
+                            continue;
+                        }
+
                         dbContext.Devices.Add(new Device(
                             new Guid(row[6].ToString()),
                             row[3].ToString(),