72 lines
1.6 KiB
PHP
72 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace App\Entity;
|
|
|
|
use App\Repository\UserGroupRepository;
|
|
use Doctrine\Common\Collections\ArrayCollection;
|
|
use Doctrine\Common\Collections\Collection;
|
|
use Doctrine\DBAL\Types\Types;
|
|
use Doctrine\ORM\Mapping as ORM;
|
|
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
|
|
|
|
#[ORM\Entity(repositoryClass: UserGroupRepository::class)]
|
|
#[ORM\UniqueConstraint(name: 'UNIQ_IDENTIFIER_NAME', fields: ['name'])]
|
|
#[UniqueEntity(fields: ['name'], message: 'There is already an role with this name')]
|
|
class UserGroup extends AbstractEntity
|
|
{
|
|
use NameableTrait;
|
|
use ToggleableTrait;
|
|
|
|
#[ORM\Column(type: Types::JSON)]
|
|
private array $permissions = [];
|
|
|
|
/**
|
|
* @var Collection<int, User>
|
|
*/
|
|
#[ORM\ManyToMany(targetEntity: User::class, mappedBy: 'userGroups')]
|
|
private Collection $users;
|
|
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
|
|
$this->users = new ArrayCollection();
|
|
}
|
|
|
|
public function getPermissions(): array
|
|
{
|
|
return $this->permissions;
|
|
}
|
|
|
|
public function setPermissions(array $permissions): static
|
|
{
|
|
$this->permissions = $permissions;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return Collection<int, User>
|
|
*/
|
|
public function getUsers(): Collection
|
|
{
|
|
return $this->users;
|
|
}
|
|
|
|
public function addUser(User $user): static
|
|
{
|
|
if (!$this->users->contains($user)) {
|
|
$this->users->add($user);
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
|
|
public function removeUser(User $user): static
|
|
{
|
|
$this->users->removeElement($user);
|
|
|
|
return $this;
|
|
}
|
|
}
|