apps/artisancommerce/custom-theme/src/Entity/LoginLog.php line 11

Open in your IDE?
  1. <?php
  2. namespace UVDesk\CommunityPackages\ArtisanCommerce\CustomTheme\Entity;
  3. use Doctrine\ORM\Mapping as ORM;
  4. /**
  5. * @ORM\Entity(repositoryClass="UVDesk\CommunityPackages\ArtisanCommerce\CustomTheme\Repository\LoginLogRepository")
  6. * @ORM\Table(name="uv_login_log")
  7. */
  8. class LoginLog
  9. {
  10. const STATUS_SUCCESS = 'SUCCESS';
  11. const STATUS_FAILED = 'FAILED';
  12. /**
  13. * @ORM\Id
  14. * @ORM\GeneratedValue
  15. * @ORM\Column(type="integer")
  16. */
  17. private int $id;
  18. /** @ORM\Column(type="string", length=255) */
  19. private string $username;
  20. /** @ORM\Column(type="string", length=20) */
  21. private string $status;
  22. /** @ORM\Column(type="string", length=45) */
  23. private string $ipAddress;
  24. /** @ORM\Column(type="datetime") */
  25. private \DateTime $loggedInAt;
  26. /** @ORM\Column(type="datetime", nullable=true) */
  27. private ?\DateTime $loggedOutAt = null;
  28. public function __construct(string $username, string $status, string $ip)
  29. {
  30. $this->username = $username;
  31. $this->status = $status;
  32. $this->ipAddress = $ip;
  33. $this->loggedInAt = new \DateTime();
  34. }
  35. public function getId(): int { return $this->id; }
  36. public function getUsername(): string { return $this->username; }
  37. public function getStatus(): string { return $this->status; }
  38. public function getIpAddress(): string { return $this->ipAddress; }
  39. public function getLoggedInAt(): \DateTime { return $this->loggedInAt; }
  40. public function getLoggedOutAt(): ?\DateTime { return $this->loggedOutAt; }
  41. public function setLoggedOutAt(\DateTime $dt): void
  42. {
  43. $this->loggedOutAt = $dt;
  44. }
  45. public function isSessionOpen(): bool
  46. {
  47. return $this->status === self::STATUS_SUCCESS
  48. && $this->loggedOutAt === null;
  49. }
  50. public function getDurationSeconds(): ?int
  51. {
  52. if (!$this->loggedOutAt) {
  53. return null; // noch aktiv
  54. }
  55. return $this->loggedOutAt->getTimestamp()
  56. - $this->loggedInAt->getTimestamp();
  57. }
  58. }