Use IEventManager in UserManager

pull/3910/head
Patrick Barron 5 years ago
parent d39e236dfe
commit 816c80525a

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

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

@ -19,26 +19,6 @@ namespace MediaBrowser.Controller.Library
/// </summary> /// </summary>
event EventHandler<GenericEventArgs<User>> OnUserUpdated; 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> /// <summary>
/// Gets the users. /// Gets the users.
/// </summary> /// </summary>

Loading…
Cancel
Save