У меня есть сущность «Пользователь» на платформе API, и я создал специальную операцию для возврата информации о вошедшем в систему пользователе с использованием поставщика состояний.
Тег ApiResource:
#[ApiResource(
operations: [
new Get(
uriTemplate: '/user',
normalizationContext: ['groups' => ['user:read']],
security: self::SECURITY_GET,
provider: UserStateProvider::class
)
]
UserStateProvider:
class UserStateProvider implements ProviderInterface
{
public function __construct(
private readonly Security $security,
) {}
public function provide(Operation $operation, array $uriVariables = [], array $context = []): object|array|null
{
return $this->security->getUser();
}
}
Проблема: Эта конечная точка возвращает IRI без идентификатора, который выглядит следующим образом:
"@context": "/api/contexts/User",
"@id": "/api/user",
"@type": "User",
Я попытался получить пользователя из репозитория в UserStateProvider, но это не решило проблему:
$user = $this->security->getUser();
return $user ? $this->userRepository->find($user->getId()) : null;
Подробнее здесь: https://stackoverflow.com/questions/791 ... e-provider