AdminAccessLog.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using System.ComponentModel.DataAnnotations;
  2. namespace Domain.Entities.Director;
  3. /// <summary>
  4. /// 관리자 접근 기록
  5. /// </summary>
  6. public class AdminAccessLog
  7. {
  8. [Key]
  9. public long ID { get; private set; }
  10. public string UserID { get; private set; } = default!;
  11. public string? UserName { get; private set; }
  12. public string Method { get; private set; } = default!;
  13. public string Path { get; private set; } = default!;
  14. public string? QueryString { get; private set; }
  15. public int StatusCode { get; private set; }
  16. public long ElapsedMs { get; private set; }
  17. public string? MenuName { get; private set; }
  18. public string? IpAddress { get; private set; }
  19. public string? UserAgent { get; private set; }
  20. public DateTime CreatedAt { get; private set; } = DateTime.UtcNow;
  21. private AdminAccessLog() { }
  22. public static AdminAccessLog Create(
  23. string userId,
  24. string? userName,
  25. string method,
  26. string path,
  27. string? queryString,
  28. int statusCode,
  29. long elapsedMs,
  30. string? menuName,
  31. string? ipAddress,
  32. string? userAgent
  33. ) {
  34. return new AdminAccessLog
  35. {
  36. UserID = userId.Length > 64 ? userId[..64] : userId,
  37. UserName = userName?.Length > 100 ? userName[..100] : userName,
  38. Method = method.Length > 10 ? method[..10] : method,
  39. Path = path.Length > 2048 ? path[..2048] : path,
  40. QueryString = queryString?.Length > 2048 ? queryString[..2048] : queryString,
  41. StatusCode = statusCode,
  42. ElapsedMs = elapsedMs,
  43. MenuName = menuName?.Length > 200 ? menuName[..200] : menuName,
  44. IpAddress = ipAddress?.Length > 45 ? ipAddress[..45] : ipAddress,
  45. UserAgent = userAgent?.Length > 512 ? userAgent[..512] : userAgent,
  46. CreatedAt = DateTime.UtcNow
  47. };
  48. }
  49. }