diff options
| -rw-r--r-- | Jellyfin.Server.Implementations/Users/UserManager.cs | 29 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Events/IEventManager.cs | 10 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Library/IUserManager.cs | 20 |
3 files changed, 21 insertions, 38 deletions
diff --git a/Jellyfin.Server.Implementations/Users/UserManager.cs b/Jellyfin.Server.Implementations/Users/UserManager.cs index 267c1c103..3e8edeb44 100644 --- a/Jellyfin.Server.Implementations/Users/UserManager.cs +++ b/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; @@ -78,21 +84,9 @@ namespace Jellyfin.Server.Implementations.Users } /// <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 { get @@ -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, diff --git a/MediaBrowser.Controller/Events/IEventManager.cs b/MediaBrowser.Controller/Events/IEventManager.cs index 794a8709e..a1f40b3a6 100644 --- a/MediaBrowser.Controller/Events/IEventManager.cs +++ b/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; } } diff --git a/MediaBrowser.Controller/Library/IUserManager.cs b/MediaBrowser.Controller/Library/IUserManager.cs index c8d8375b3..96a41920a 100644 --- a/MediaBrowser.Controller/Library/IUserManager.cs +++ b/MediaBrowser.Controller/Library/IUserManager.cs @@ -20,26 +20,6 @@ namespace MediaBrowser.Controller.Library 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> /// <value>The users.</value> |
