Browse Source

Fix bug when migrating user db with users that have never logged in.

Patrick Barron 5 years ago
parent
commit
8ca78f33e9

+ 1 - 1
Emby.Server.Implementations/Session/SessionManager.cs

@@ -282,7 +282,7 @@ namespace Emby.Server.Implementations.Session
 
             if (user != null)
             {
-                var userLastActivityDate = user.LastActivityDate;
+                var userLastActivityDate = user.LastActivityDate ?? DateTime.MinValue;
                 user.LastActivityDate = activityDate;
 
                 if ((activityDate - userLastActivityDate).TotalSeconds > 60)

+ 6 - 12
Emby.Server.Implementations/SyncPlay/SyncPlayManager.cs

@@ -134,11 +134,8 @@ namespace Emby.Server.Implementations.SyncPlay
             var item = _libraryManager.GetItemById(itemId);
 
             // Check ParentalRating access
-            var hasParentalRatingAccess = true;
-            if (user.MaxParentalAgeRating.HasValue)
-            {
-                hasParentalRatingAccess = item.InheritedParentalRatingValue <= user.MaxParentalAgeRating.Value;
-            }
+            var hasParentalRatingAccess = !user.MaxParentalAgeRating.HasValue
+                || item.InheritedParentalRatingValue <= user.MaxParentalAgeRating;
 
             if (!user.HasPermission(PermissionKind.EnableAllFolders) && hasParentalRatingAccess)
             {
@@ -255,8 +252,7 @@ namespace Emby.Server.Implementations.SyncPlay
             // TODO: determine what happens to users that are in a group and get their permissions revoked
             lock (_groupsLock)
             {
-                ISyncPlayController group;
-                _sessionToGroupMap.TryGetValue(session.Id, out group);
+                _sessionToGroupMap.TryGetValue(session.Id, out var group);
 
                 if (group == null)
                 {
@@ -329,8 +325,7 @@ namespace Emby.Server.Implementations.SyncPlay
 
             lock (_groupsLock)
             {
-                ISyncPlayController group;
-                _sessionToGroupMap.TryGetValue(session.Id, out group);
+                _sessionToGroupMap.TryGetValue(session.Id, out var group);
 
                 if (group == null)
                 {
@@ -340,7 +335,7 @@ namespace Emby.Server.Implementations.SyncPlay
                     {
                         Type = GroupUpdateType.NotInGroup
                     };
-                    _sessionManager.SendSyncPlayGroupUpdate(session.Id.ToString(), error, CancellationToken.None);
+                    _sessionManager.SendSyncPlayGroupUpdate(session.Id, error, CancellationToken.None);
                     return;
                 }
 
@@ -367,8 +362,7 @@ namespace Emby.Server.Implementations.SyncPlay
                 throw new InvalidOperationException("Session not in any group!");
             }
 
-            ISyncPlayController tempGroup;
-            _sessionToGroupMap.Remove(session.Id, out tempGroup);
+            _sessionToGroupMap.Remove(session.Id, out var tempGroup);
 
             if (!tempGroup.GetGroupId().Equals(group.GetGroupId()))
             {

+ 2 - 2
Jellyfin.Data/Entities/User.cs

@@ -181,12 +181,12 @@ namespace Jellyfin.Data.Entities
         /// <summary>
         /// Gets or sets the last activity date.
         /// </summary>
-        public DateTime LastActivityDate { get; set; }
+        public DateTime? LastActivityDate { get; set; }
 
         /// <summary>
         /// Gets or sets the last login date.
         /// </summary>
-        public DateTime LastLoginDate { get; set; }
+        public DateTime? LastLoginDate { get; set; }
 
         /// <summary>
         /// Gets or sets the number of login attempts the user can make before they are locked out.

+ 1 - 1
Jellyfin.Server.Implementations/Users/UserManager.cs

@@ -218,7 +218,7 @@ namespace Jellyfin.Server.Implementations.Users
 
             var dbContext = _dbProvider.CreateContext();
 
-            if (!dbContext.Users.Contains(user))
+            if (dbContext.Users.Find(user.Id) == null)
             {
                 throw new ArgumentException(string.Format(
                     CultureInfo.InvariantCulture,

+ 2 - 2
Jellyfin.Server/Migrations/Routines/MigrateUserDb.cs

@@ -196,9 +196,9 @@ namespace Jellyfin.Server.Migrations.Routines
 
             public string EasyPassword { get; set; }
 
-            public DateTime LastLoginDate { get; set; }
+            public DateTime? LastLoginDate { get; set; }
 
-            public DateTime LastActivityDate { get; set; }
+            public DateTime? LastActivityDate { get; set; }
 
             public string Name { get; set; }