<?php
namespace App\Security\Voter;
use App\Entity\User;
use Symfony\Component\Security\Core\User\UserInterface;
class UserVoter extends AbstractDeepVoter
{
public static $listAttribute = 'list_users';
public static $createAttribute = 'create_user';
protected function listAttribute(): string
{
return self::$listAttribute;
}
protected function createAttribute(): string
{
return self::$createAttribute;
}
protected function isSupportedSubject(object $subject): bool
{
return $subject instanceof User;
}
protected function canList(UserInterface $user): bool
{
return $user->isAnAdmin() || $user->isCompanyDirector();
}
protected function canCreate(UserInterface $user): bool
{
return $user->isMainAdmin() || $user->isCompanyDirector();
}
protected function canRead(UserInterface $user): bool
{
return $user->isAnAdmin() || $user->isCompanyDirector();
}
protected function canUpdate(UserInterface $user): bool
{
return $user->isMainAdmin() || $user->isCompanyDirector();
}
protected function canDelete(UserInterface $user): bool
{
return $user->isMainAdmin() || $user->isCompanyDirector();
}
}