UserLockedOutLogger.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using System.Globalization;
  2. using System.Threading.Tasks;
  3. using Jellyfin.Data.Events.Users;
  4. using Jellyfin.Database.Implementations.Entities;
  5. using MediaBrowser.Controller.Events;
  6. using MediaBrowser.Model.Activity;
  7. using MediaBrowser.Model.Globalization;
  8. using MediaBrowser.Model.Notifications;
  9. using Microsoft.Extensions.Logging;
  10. namespace Jellyfin.Server.Implementations.Events.Consumers.Users
  11. {
  12. /// <summary>
  13. /// Creates an entry in the activity log when a user is locked out.
  14. /// </summary>
  15. public class UserLockedOutLogger : IEventConsumer<UserLockedOutEventArgs>
  16. {
  17. private readonly ILocalizationManager _localizationManager;
  18. private readonly IActivityManager _activityManager;
  19. /// <summary>
  20. /// Initializes a new instance of the <see cref="UserLockedOutLogger"/> class.
  21. /// </summary>
  22. /// <param name="localizationManager">The localization manager.</param>
  23. /// <param name="activityManager">The activity manager.</param>
  24. public UserLockedOutLogger(ILocalizationManager localizationManager, IActivityManager activityManager)
  25. {
  26. _localizationManager = localizationManager;
  27. _activityManager = activityManager;
  28. }
  29. /// <inheritdoc />
  30. public async Task OnEvent(UserLockedOutEventArgs eventArgs)
  31. {
  32. await _activityManager.CreateAsync(new ActivityLog(
  33. string.Format(
  34. CultureInfo.InvariantCulture,
  35. _localizationManager.GetLocalizedString("UserLockedOutWithName"),
  36. eventArgs.Argument.Username),
  37. NotificationType.UserLockedOut.ToString(),
  38. eventArgs.Argument.Id)
  39. {
  40. LogSeverity = LogLevel.Error
  41. }).ConfigureAwait(false);
  42. }
  43. }
  44. }