diff --git a/src/ApiResource/Accounting/AccountingApiResource.php b/src/ApiResource/Accounting/AccountingApiResource.php index 29c26c5..befca59 100644 --- a/src/ApiResource/Accounting/AccountingApiResource.php +++ b/src/ApiResource/Accounting/AccountingApiResource.php @@ -5,6 +5,7 @@ namespace App\ApiResource\Accounting; use ApiPlatform\Doctrine\Orm\State\Options; use ApiPlatform\Metadata as API; use App\ApiResource\Project\ProjectApiResource; +use App\ApiResource\TipjarApiResource; use App\ApiResource\User\UserApiResource; use App\Entity\Accounting\Accounting; use App\Entity\Money; @@ -56,7 +57,7 @@ class AccountingApiResource /** * The resource owning this Accounting. * - * @return UserApiResource|ProjectApiResource|Tipjar + * @return UserApiResource|ProjectApiResource|TipjarApiResource */ public function getOwner(): ?object { @@ -79,5 +80,5 @@ class AccountingApiResource public ?ProjectApiResource $project = null; #[API\ApiProperty(readable: false, writable: false)] - public ?Tipjar $tipjar = null; + public ?TipjarApiResource $tipjar = null; } diff --git a/src/ApiResource/Gateway/ChargeApiResource.php b/src/ApiResource/Gateway/ChargeApiResource.php index e6343af..7ecb0c2 100644 --- a/src/ApiResource/Gateway/ChargeApiResource.php +++ b/src/ApiResource/Gateway/ChargeApiResource.php @@ -24,7 +24,7 @@ use Symfony\Component\Validator\Constraints as Assert; provider: ApiResourceStateProvider::class )] #[API\Get()] -#[API\GetCollection(security: "is_granted('IS_AUTHENTICATED_FULLY')")] +#[API\GetCollection()] #[API\Patch( input: ChargeUpdationDto::class, processor: ChargeStateProcessor::class, @@ -37,7 +37,7 @@ class ChargeApiResource /** * The Checkout to which this Charge item belongs to. */ - #[API\ApiProperty(writable: false)] + #[API\ApiProperty(writable: false, security: 'is_granted("IS_AUTHENTICATED_FULLY")')] public CheckoutApiResource $checkout; /** diff --git a/src/ApiResource/TipjarApiResource.php b/src/ApiResource/TipjarApiResource.php new file mode 100644 index 0000000..5b58421 --- /dev/null +++ b/src/ApiResource/TipjarApiResource.php @@ -0,0 +1,42 @@ +getAuthenticatedUser(); - - if ($this->isAdmin($user)) { - return; - } - - $queryBuilder - ->leftJoin("$rootAlias.checkout", 'c') - ->leftJoin('c.origin', 'co') - ->leftJoin('co.user', 'u') - ->andWhere('u.id = :userId') - ->setParameter('userId', $user->getId()); - } -} diff --git a/src/Entity/Tipjar.php b/src/Entity/Tipjar.php index 8a177e7..40a4d40 100644 --- a/src/Entity/Tipjar.php +++ b/src/Entity/Tipjar.php @@ -2,10 +2,11 @@ namespace App\Entity; -use ApiPlatform\Metadata as API; use App\Entity\Accounting\Accounting; use App\Entity\Interface\AccountingOwnerInterface; +use App\Mapping\Provider\EntityMapProvider; use App\Repository\TipjarRepository; +use AutoMapper\Attribute\MapProvider; use Doctrine\ORM\Mapping as ORM; use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; @@ -14,12 +15,8 @@ use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; * \ * Tips to the platform owners and other no-purpose money can target a Tipjar. */ +#[MapProvider(EntityMapProvider::class)] #[UniqueEntity(fields: ['name'], message: 'A Tipjar with that name already exists.')] -#[API\GetCollection()] -#[API\Post()] -#[API\Get()] -#[API\Delete()] -#[API\Patch()] #[ORM\Entity(repositoryClass: TipjarRepository::class)] class Tipjar implements AccountingOwnerInterface { @@ -34,7 +31,6 @@ class Tipjar implements AccountingOwnerInterface #[ORM\Column(length: 255)] private ?string $name = null; - #[API\ApiProperty(writable: false)] #[ORM\OneToOne(inversedBy: 'tipjar', cascade: ['persist'])] private ?Accounting $accounting = null;