src/Entity/LoginEntry.php line 39

  1. <?php
  2. namespace App\Entity;
  3. use Doctrine\ORM\Mapping as ORM,
  4.     Doctrine\DBAL\Types\Types;
  5. use Symfony\Component\Serializer\Annotation\Groups;
  6. use ApiPlatform\Metadata\ApiResource,
  7.     ApiPlatform\Metadata\ApiProperty,
  8.     ApiPlatform\Metadata\Get,
  9.     ApiPlatform\Metadata\GetCollection,
  10.     ApiPlatform\Metadata\ApiFilter,
  11.     ApiPlatform\Doctrine\Orm\Filter\SearchFilter,
  12.     ApiPlatform\Doctrine\Orm\Filter\BooleanFilter,
  13.     ApiPlatform\Doctrine\Orm\Filter\OrderFilter;
  14. use App\Entity\Trait\IdTrait,
  15.     App\Entity\Trait\UuidTrait,
  16.     App\Entity\Trait\TimestampableTrait,
  17.     App\Repository\LoginEntryRepository;
  18. #[ApiResource(
  19.     description'Login entries',
  20.     normalizationContext: ['groups' => ['read''read:' self::class]],
  21.     denormalizationContext: ['groups' => ['write']],
  22.     security'is_granted("' self::class . '")',
  23.     order: ['createdAt' => 'desc'],
  24.     operations: [
  25.         new GetCollection(),
  26.         new Get()
  27.     ],
  28.     extraProperties: ['standard_put' => false],
  29. )]
  30. #[ApiFilter(SearchFilter::class, properties: ['username' => 'partial''ip' => 'partial'])]
  31. #[ApiFilter(BooleanFilter::class, properties: ['result'])]
  32. #[ApiFilter(OrderFilter::class, properties: ['username''ip''result''createdAt''updatedAt'])]
  33. #[ORM\Entity(repositoryClassLoginEntryRepository::class)]
  34. class LoginEntry
  35. {
  36.     use IdTrait,
  37.         UuidTrait,
  38.         TimestampableTrait;
  39.     #[ApiProperty(description'Username')]
  40.     #[Groups(['read:' self::class])]
  41.     #[ORM\Column(typeTypes::STRINGlength191)]
  42.     private string $username;
  43.     #[ApiProperty(description'Origin ip')]
  44.     #[Groups(['read:' self::class])]
  45.     #[ORM\Column(typeTypes::STRINGlength255)]
  46.     private string $ip;
  47.     #[ApiProperty(description'Result')]
  48.     #[Groups(['read:' self::class])]
  49.     #[ORM\Column(typeTypes::BOOLEANoptions: ['default' => false])]
  50.     private bool $result false;
  51.     public function __construct(string $usernamestring $ipbool $result)
  52.     {
  53.         $this->setUuid();
  54.         $this->username $username;
  55.         $this->ip $ip;
  56.         $this->result $result;
  57.         $this->createdAt = new \DateTimeImmutable();
  58.         $this->updatedAt = new \DateTimeImmutable();
  59.     }
  60.     public function getUsername()
  61.     {
  62.         return $this->username;
  63.     }
  64.     public function getIp(): string
  65.     {
  66.         return $this->ip;
  67.     }
  68.     public function getResult(): bool
  69.     {
  70.         return $this->result;
  71.     }
  72. }