Browse Source

Use IEventManager in UserManager

Patrick Barron 4 years ago
parent
commit
816c80525a

+ 12 - 17
Jellyfin.Server.Implementations/Users/UserManager.cs

@@ -11,12 +11,14 @@ using System.Threading.Tasks;
 using Jellyfin.Data.Entities;
 using Jellyfin.Data.Enums;
 using Jellyfin.Data.Events;
+using Jellyfin.Data.Events.Users;
 using MediaBrowser.Common;
 using MediaBrowser.Common.Cryptography;
 using MediaBrowser.Common.Extensions;
 using MediaBrowser.Common.Net;
 using MediaBrowser.Controller.Authentication;
 using MediaBrowser.Controller.Drawing;
+using MediaBrowser.Controller.Events;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Net;
 using MediaBrowser.Model.Configuration;
@@ -34,6 +36,7 @@ namespace Jellyfin.Server.Implementations.Users
     public class UserManager : IUserManager
     {
         private readonly JellyfinDbProvider _dbProvider;
+        private readonly IEventManager _eventManager;
         private readonly ICryptoProvider _cryptoProvider;
         private readonly INetworkManager _networkManager;
         private readonly IApplicationHost _appHost;
@@ -49,6 +52,7 @@ namespace Jellyfin.Server.Implementations.Users
         /// Initializes a new instance of the <see cref="UserManager"/> class.
         /// </summary>
         /// <param name="dbProvider">The database provider.</param>
+        /// <param name="eventManager">The event manager.</param>
         /// <param name="cryptoProvider">The cryptography provider.</param>
         /// <param name="networkManager">The network manager.</param>
         /// <param name="appHost">The application host.</param>
@@ -56,6 +60,7 @@ namespace Jellyfin.Server.Implementations.Users
         /// <param name="logger">The logger.</param>
         public UserManager(
             JellyfinDbProvider dbProvider,
+            IEventManager eventManager,
             ICryptoProvider cryptoProvider,
             INetworkManager networkManager,
             IApplicationHost appHost,
@@ -63,6 +68,7 @@ namespace Jellyfin.Server.Implementations.Users
             ILogger<UserManager> logger)
         {
             _dbProvider = dbProvider;
+            _eventManager = eventManager;
             _cryptoProvider = cryptoProvider;
             _networkManager = networkManager;
             _appHost = appHost;
@@ -77,21 +83,9 @@ namespace Jellyfin.Server.Implementations.Users
             _defaultPasswordResetProvider = _passwordResetProviders.OfType<DefaultPasswordResetProvider>().First();
         }
 
-        /// <inheritdoc/>
-        public event EventHandler<GenericEventArgs<User>>? OnUserPasswordChanged;
-
         /// <inheritdoc/>
         public event EventHandler<GenericEventArgs<User>>? OnUserUpdated;
 
-        /// <inheritdoc/>
-        public event EventHandler<GenericEventArgs<User>>? OnUserCreated;
-
-        /// <inheritdoc/>
-        public event EventHandler<GenericEventArgs<User>>? OnUserDeleted;
-
-        /// <inheritdoc/>
-        public event EventHandler<GenericEventArgs<User>>? OnUserLockedOut;
-
         /// <inheritdoc/>
         public IEnumerable<User> Users
         {
@@ -234,7 +228,7 @@ namespace Jellyfin.Server.Implementations.Users
             dbContext.Users.Add(newUser);
             await dbContext.SaveChangesAsync().ConfigureAwait(false);
 
-            OnUserCreated?.Invoke(this, new GenericEventArgs<User>(newUser));
+            await _eventManager.PublishAsync(new UserCreatedEventArgs(newUser)).ConfigureAwait(false);
 
             return newUser;
         }
@@ -293,7 +287,8 @@ namespace Jellyfin.Server.Implementations.Users
             dbContext.RemoveRange(user.AccessSchedules);
             dbContext.Users.Remove(user);
             dbContext.SaveChanges();
-            OnUserDeleted?.Invoke(this, new GenericEventArgs<User>(user));
+
+            _eventManager.Publish(new UserDeletedEventArgs(user));
         }
 
         /// <inheritdoc/>
@@ -319,7 +314,7 @@ namespace Jellyfin.Server.Implementations.Users
             await GetAuthenticationProvider(user).ChangePassword(user, newPassword).ConfigureAwait(false);
             await UpdateUserAsync(user).ConfigureAwait(false);
 
-            OnUserPasswordChanged?.Invoke(this, new GenericEventArgs<User>(user));
+            await _eventManager.PublishAsync(new UserPasswordChangedEventArgs(user)).ConfigureAwait(false);
         }
 
         /// <inheritdoc/>
@@ -338,7 +333,7 @@ namespace Jellyfin.Server.Implementations.Users
             user.EasyPassword = newPasswordSha1;
             UpdateUser(user);
 
-            OnUserPasswordChanged?.Invoke(this, new GenericEventArgs<User>(user));
+            _eventManager.Publish(new UserPasswordChangedEventArgs(user));
         }
 
         /// <inheritdoc/>
@@ -901,7 +896,7 @@ namespace Jellyfin.Server.Implementations.Users
             if (maxInvalidLogins.HasValue && user.InvalidLoginAttemptCount >= maxInvalidLogins)
             {
                 user.SetPermission(PermissionKind.IsDisabled, true);
-                OnUserLockedOut?.Invoke(this, new GenericEventArgs<User>(user));
+                await _eventManager.PublishAsync(new UserLockedOutEventArgs(user)).ConfigureAwait(false);
                 _logger.LogWarning(
                     "Disabling user {Username} due to {Attempts} unsuccessful login attempts.",
                     user.Username,

+ 9 - 1
MediaBrowser.Controller/Events/IEventManager.cs

@@ -11,10 +11,18 @@ namespace MediaBrowser.Controller.Events
         /// <summary>
         /// Publishes an event.
         /// </summary>
+        /// <param name="eventArgs">the event arguments.</param>
+        /// <typeparam name="T">The type of event.</typeparam>
+        void Publish<T>(T eventArgs)
+            where T : EventArgs;
+
+        /// <summary>
+        /// Publishes an event asynchronously.
+        /// </summary>
         /// <param name="eventArgs">The event arguments.</param>
         /// <typeparam name="T">The type of event.</typeparam>
         /// <returns>A task representing the publishing of the event.</returns>
-        Task Publish<T>(T eventArgs)
+        Task PublishAsync<T>(T eventArgs)
             where T : EventArgs;
     }
 }

+ 0 - 20
MediaBrowser.Controller/Library/IUserManager.cs

@@ -19,26 +19,6 @@ namespace MediaBrowser.Controller.Library
         /// </summary>
         event EventHandler<GenericEventArgs<User>> OnUserUpdated;
 
-        /// <summary>
-        /// Occurs when a user is created.
-        /// </summary>
-        event EventHandler<GenericEventArgs<User>> OnUserCreated;
-
-        /// <summary>
-        /// Occurs when a user is deleted.
-        /// </summary>
-        event EventHandler<GenericEventArgs<User>> OnUserDeleted;
-
-        /// <summary>
-        /// Occurs when a user's password is changed.
-        /// </summary>
-        event EventHandler<GenericEventArgs<User>> OnUserPasswordChanged;
-
-        /// <summary>
-        /// Occurs when a user is locked out.
-        /// </summary>
-        event EventHandler<GenericEventArgs<User>> OnUserLockedOut;
-
         /// <summary>
         /// Gets the users.
         /// </summary>