я сначала добавлю код, затем объясню, что я хочу от кода
namespace App\Serializer;
use ApiPlatform\Core\Serializer\SerializerContextBuilderInterface;
use App\Entity\User;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
class UserCollectorContextBuilder implements SerializerContextBuilderInterface
{
private SerializerContextBuilderInterface $decorated;
private AuthorizationCheckerInterface $authorizationChecker;
private TokenStorageInterface $token;
public function __construct(
SerializerContextBuilderInterface $decorated,
AuthorizationCheckerInterface $authorizationChecker,
TokenStorageInterface $token
)
{
$this->decorated = $decorated;
$this->authorizationChecker = $authorizationChecker;
$this->token = $token;
}
public function createFromRequest(Request $request, bool $normalization, array $extractedAttributes = null): array
{
$context = $this->decorated->createFromRequest($request, $normalization, $extractedAttributes);
$resourceClass = $context['resource_class'] ?? null;
if (
$resourceClass === User::class &&
isset($context['groups']) &&
$this->authorizationChecker->isGranted('ROLE_ADMIN') &&
$normalization === true
){
$context['groups'][] = 'admin:read';
}
return $context;
}
}
Свойства объекта пользователя
/**
* @ORM\Column(type="boolean")
* @Groups("admin:read")
*/
private bool $enabled = false;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Association", inversedBy="users", cascade={"persist", "remove"})
* @Groups({"user:read"})
*/
private ?Association $association = null;
, поэтому приведенный выше код работает, он показывает включенное значение для Администратор, но я хочу, чтобы администратор видел только включенное значение пользователей из той же группы (ассоциации), что и администратор, а не из другой группы, потому что каждая группа (ассоциация) имеет своего администратора.
Я был бы рад, если кто-то может помочь как этого добиться.
Спасибо