2
0
Phallacy 6 жил өмнө
parent
commit
5e8496bc59

+ 16 - 11
Emby.Server.Implementations/Library/DefaultPasswordResetProvider.cs

@@ -10,7 +10,6 @@ using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Model.Serialization;
 using MediaBrowser.Model.Users;
-using Microsoft.Win32.SafeHandles;
 
 namespace Emby.Server.Implementations.Library
 {
@@ -37,13 +36,15 @@ namespace Emby.Server.Implementations.Library
 
         public async Task<PinRedeemResult> RedeemPasswordResetPin(string pin)
         {
+            SerializablePasswordReset spr;
             HashSet<string> usersreset = new HashSet<string>();
             foreach (var resetfile in Directory.EnumerateFiles(_passwordResetFileBaseDir, $"{_passwordResetFileBaseName}*"))
             {
                 using (var str = File.OpenRead(resetfile))
                 {
-                    var spr = await _jsonSerializer.DeserializeFromStreamAsync<SerializablePasswordReset>(str).ConfigureAwait(false);
-                }
+                    spr = await _jsonSerializer.DeserializeFromStreamAsync<SerializablePasswordReset>(str).ConfigureAwait(false);
+                }
+
                 if (spr.ExpirationDate < DateTime.Now)
                 {
                     File.Delete(resetfile);
@@ -51,12 +52,14 @@ namespace Emby.Server.Implementations.Library
                 else if (spr.Pin == pin)
                 {
                     var resetUser = _userManager.GetUserByName(spr.UserName);
-                    if (resetUser != null)
+                    if (resetUser == null)
                     {
-                        await _userManager.ChangePassword(resetUser, pin).ConfigureAwait(false);
-                        usersreset.Add(resetUser.Name);
-                        File.Delete(resetfile);
+                        throw new Exception($"User with a username of {spr.UserName} not found");
                     }
+
+                    await _userManager.ChangePassword(resetUser, pin).ConfigureAwait(false);
+                    usersreset.Add(resetUser.Name);
+                    File.Delete(resetfile);
                 }
             }
 
@@ -76,7 +79,7 @@ namespace Emby.Server.Implementations.Library
 
         public async Task<ForgotPasswordResult> StartForgotPasswordProcess(MediaBrowser.Controller.Entities.User user, bool isInNetwork)
         {
-            string pin = new Random().Next(99999999).ToString("00000000",CultureInfo.InvariantCulture);
+            string pin = new Random().Next(99999999).ToString("00000000", CultureInfo.InvariantCulture);
             DateTime expireTime = DateTime.Now.AddMinutes(30);
             string filePath = _passwordResetFileBase + user.InternalId + ".json";
             SerializablePasswordReset spr = new SerializablePasswordReset
@@ -89,9 +92,11 @@ namespace Emby.Server.Implementations.Library
 
             try
             {
-                FileStream fileStream = File.OpenWrite(filePath);
-                _jsonSerializer.SerializeToStream(spr,fileStream);
-                await fileStream.FlushAsync().ConfigureAwait(false);
+                using (FileStream fileStream = File.OpenWrite(filePath))
+                {
+                    _jsonSerializer.SerializeToStream(spr, fileStream);
+                    await fileStream.FlushAsync().ConfigureAwait(false);
+                }
             }
             catch (Exception e)
             {