LoggedAttribute.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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. var serviceRequest = new ServiceRequest(request);
  31. //This code is executed before the service
  32. var auth = AuthorizationContext.GetAuthorizationInfo(serviceRequest);
  33. if (auth != null)
  34. {
  35. User user = null;
  36. if (!string.IsNullOrWhiteSpace(auth.UserId))
  37. {
  38. var userId = auth.UserId;
  39. user = UserManager.GetUserById(userId);
  40. }
  41. string deviceId = auth.DeviceId;
  42. string device = auth.Device;
  43. string client = auth.Client;
  44. string version = auth.Version;
  45. if (!string.IsNullOrEmpty(client) && !string.IsNullOrEmpty(deviceId) && !string.IsNullOrEmpty(device) && !string.IsNullOrEmpty(version))
  46. {
  47. var remoteEndPoint = request.RemoteIp;
  48. SessionManager.LogSessionActivity(client, version, deviceId, device, remoteEndPoint, user);
  49. }
  50. }
  51. }
  52. }
  53. }