mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-07-09 03:04:24 -04:00
Use IEventManager in UserManager
This commit is contained in:
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…
x
Reference in New Issue
Block a user