LoggedAttribute.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using MediaBrowser.Controller.Entities;
  2. using MediaBrowser.Controller.Library;
  3. using MediaBrowser.Controller.Session;
  4. using MediaBrowser.Model.Logging;
  5. using System;
  6. using MediaBrowser.Model.Services;
  7. namespace MediaBrowser.Controller.Net
  8. {
  9. public class LoggedAttribute : IRequestFilter
  10. {
  11. public LoggedAttribute(ILogger logger, IUserManager userManager, ISessionManager sessionManager, IAuthorizationContext authorizationContext)
  12. {
  13. Logger = logger;
  14. UserManager = userManager;
  15. SessionManager = sessionManager;
  16. AuthorizationContext = authorizationContext;
  17. }
  18. public ILogger Logger { get; private set; }
  19. public IUserManager UserManager { get; private set; }
  20. public ISessionManager SessionManager { get; private set; }
  21. public IAuthorizationContext AuthorizationContext { get; private set; }
  22. /// <summary>
  23. /// The request filter is executed before the service.
  24. /// </summary>
  25. /// <param name="request">The http request wrapper</param>
  26. /// <param name="response">The http response wrapper</param>
  27. /// <param name="requestDto">The request DTO</param>
  28. public void Filter(IRequest request, IResponse response, object requestDto)
  29. {
  30. //This code is executed before the service
  31. var auth = AuthorizationContext.GetAuthorizationInfo(request);
  32. if (auth != null)
  33. {
  34. User user = null;
  35. if (!string.IsNullOrWhiteSpace(auth.UserId))
  36. {
  37. var userId = auth.UserId;
  38. user = UserManager.GetUserById(userId);
  39. }
  40. string deviceId = auth.DeviceId;
  41. string device = auth.Device;
  42. string client = auth.Client;
  43. string version = auth.Version;
  44. if (!string.IsNullOrEmpty(client) && !string.IsNullOrEmpty(deviceId) && !string.IsNullOrEmpty(device) && !string.IsNullOrEmpty(version))
  45. {
  46. var remoteEndPoint = request.RemoteIp;
  47. SessionManager.LogSessionActivity(client, version, deviceId, device, remoteEndPoint, user);
  48. }
  49. }
  50. }
  51. }
  52. }