vendor/crosiersource/crosierlib-base/src/Entity/Security/Group.php line 49

Open in your IDE?
  1. <?php
  2. namespace CrosierSource\CrosierLibBaseBundle\Entity\Security;
  3. use ApiPlatform\Core\Annotation\ApiFilter;
  4. use ApiPlatform\Core\Annotation\ApiResource;
  5. use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\OrderFilter;
  6. use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\SearchFilter;
  7. use CrosierSource\CrosierLibBaseBundle\Doctrine\Annotations\EntityHandler;
  8. use CrosierSource\CrosierLibBaseBundle\Entity\EntityId;
  9. use CrosierSource\CrosierLibBaseBundle\Entity\EntityIdTrait;
  10. use Doctrine\Common\Collections\ArrayCollection;
  11. use Doctrine\ORM\Mapping as ORM;
  12. use Symfony\Component\Serializer\Annotation\Groups;
  13. /**
  14.  * Entidade 'Group'.
  15.  *
  16.  * @ApiResource(
  17.  *     normalizationContext={"groups"={"group","role","entityId"},"enable_max_depth"=true},
  18.  *     denormalizationContext={"groups"={"group"},"enable_max_depth"=true},
  19.  *
  20.  *     itemOperations={
  21.  *          "get"={"path"="/sec/group/{id}", "security"="is_granted('ROLE_ADMIN')"},
  22.  *          "put"={"path"="/sec/group/{id}", "security"="is_granted('ROLE_ADMIN')"},
  23.  *          "delete"={"path"="/sec/group/{id}", "security"="is_granted('ROLE_ADMIN')"}
  24.  *     },
  25.  *     collectionOperations={
  26.  *          "get"={"path"="/sec/group", "security"="is_granted('ROLE_ADMIN')"},
  27.  *          "post"={"path"="/sec/group", "security"="is_granted('ROLE_ADMIN')"}
  28.  *     },
  29.  *
  30.  *     attributes={
  31.  *          "pagination_items_per_page"=10,
  32.  *          "formats"={"jsonld", "csv"={"text/csv"}}
  33.  *     }
  34.  * )
  35.  *
  36.  * @ApiFilter(SearchFilter::class, properties={"groupname": "exact"})
  37.  * @ApiFilter(OrderFilter::class, properties={"id", "groupname", "updated"}, arguments={"orderParameterName"="order"})
  38.  *
  39.  * @EntityHandler(entityHandlerClass="CrosierSource\CrosierLibBaseBundle\EntityHandler\Security\GroupEntityHandler")
  40.  *
  41.  * @ORM\Entity(repositoryClass="CrosierSource\CrosierLibBaseBundle\Repository\Security\GroupRepository")
  42.  * @ORM\Table(name="sec_group")
  43.  *
  44.  * @author Carlos Eduardo Pauluk
  45.  */
  46. class Group implements EntityId
  47. {
  48.     use EntityIdTrait;
  49.     /**
  50.      *
  51.      * @ORM\Column(name="groupname", type="string", length=90, unique=true)
  52.      * @var null|string
  53.      * @Groups("group")
  54.      */
  55.     public ?string $groupname null;
  56.     /**
  57.      *
  58.      * @ORM\ManyToMany(targetEntity="Role")
  59.      * @ORM\JoinTable(name="sec_group_role",
  60.      *      joinColumns={@ORM\JoinColumn(name="group_id", referencedColumnName="id")},
  61.      *      inverseJoinColumns={@ORM\JoinColumn(name="role_id", referencedColumnName="id")}
  62.      *      )
  63.      * @Groups("group")
  64.      */
  65.     public $roles;
  66.     public function __construct()
  67.     {
  68.         $this->roles = new ArrayCollection();
  69.     }
  70.     
  71. }