src/DataProvider/AboutMeDataProvider.php line 49

Open in your IDE?
  1. <?php
  2. namespace App\DataProvider;
  3. use ApiPlatform\Core\DataProvider\ItemDataProviderInterface;
  4. use ApiPlatform\Core\DataProvider\RestrictedDataProviderInterface;
  5. use App\DataProvider\Traits\CompanyRestrictedTrait;
  6. use App\DataTransformer\AboutMeTransformer;
  7. use App\Entity\User;
  8. use App\Request\AboutMeRequest;
  9. use App\Security\CompanyUserProvider;
  10. use Doctrine\ORM\EntityManagerInterface;
  11. use Symfony\Component\Finder\Exception\AccessDeniedException;
  12. use Symfony\Component\Security\Core\Security;
  13. class AboutMeDataProvider implements
  14. RestrictedDataProviderInterface,
  15. ItemDataProviderInterface
  16. {
  17. use CompanyRestrictedTrait;
  18. /**
  19. * @var AboutMeTransformer
  20. */
  21. private $transformer;
  22. /**
  23. * AboutMeDataProvider constructor.
  24. *
  25. * @param Security $security
  26. * @param CompanyUserProvider $userProvider
  27. * @param AboutMeTransformer $transformer
  28. */
  29. public function __construct(
  30. Security $security,
  31. CompanyUserProvider $userProvider,
  32. AboutMeTransformer $transformer,
  33. EntityManagerInterface $entityManager,
  34. ) {
  35. $this->security = $security;
  36. $this->userProvider = $userProvider;
  37. $this->transformer = $transformer;
  38. $this->entityManager = $entityManager;
  39. }
  40. public function getItem(string $resourceClass, $id, string $operationName = null, array $context = [])
  41. {
  42. $company = $this->getCompany();
  43. if ($company === null) {
  44. throw new AccessDeniedException('Cannot get company from user');
  45. }
  46. /**
  47. * @var $user User
  48. */
  49. $user = $this->security->getUser();
  50. return $this->transformer->transform($user);
  51. }
  52. public function supports(string $resourceClass, string $operationName = null, array $context = []): bool
  53. {
  54. return AboutMeRequest::class === $resourceClass;
  55. }
  56. }