diff --git a/src/ApiResource/Project/ProjectApiResource.php b/src/ApiResource/Project/ProjectApiResource.php index ae2e319..a260938 100644 --- a/src/ApiResource/Project/ProjectApiResource.php +++ b/src/ApiResource/Project/ProjectApiResource.php @@ -69,6 +69,7 @@ class ProjectApiResource /** * ISO 3166 data about the Project's territory of interest. */ + #[Assert\NotBlank()] #[Assert\Valid()] public ProjectTerritoryApiResource $territory; @@ -91,5 +92,6 @@ class ProjectApiResource * * @var array */ + #[API\ApiProperty(writable: false)] public array $rewards; } diff --git a/src/ApiResource/User/UserApiResource.php b/src/ApiResource/User/UserApiResource.php index 5d94640..6b47bc0 100644 --- a/src/ApiResource/User/UserApiResource.php +++ b/src/ApiResource/User/UserApiResource.php @@ -6,10 +6,13 @@ use ApiPlatform\Doctrine\Orm\Filter\SearchFilter; use ApiPlatform\Doctrine\Orm\State\Options; use ApiPlatform\Metadata as API; use App\ApiResource\Accounting\AccountingApiResource; +use App\Dto\UserSignupDto; use App\Entity\User\User; use App\Filter\OrderedLikeFilter; use App\Filter\UserQueryFilter; use App\State\ApiResourceStateProvider; +use App\State\User\UserSignupProcessor; +use App\State\User\UserStateProcessor; use Symfony\Component\Validator\Constraints as Assert; /** @@ -18,10 +21,11 @@ use Symfony\Component\Validator\Constraints as Assert; #[API\ApiResource( shortName: 'User', stateOptions: new Options(entityClass: User::class), - provider: ApiResourceStateProvider::class + provider: ApiResourceStateProvider::class, + processor: UserStateProcessor::class, )] #[API\GetCollection()] -#[API\Post()] +#[API\Post(input: UserSignupDto::class, processor: UserSignupProcessor::class)] #[API\Get()] #[API\Patch(security: 'is_granted("USER_EDIT", object)')] #[API\Delete(security: 'is_granted("USER_EDIT", object)')] diff --git a/src/Dto/UserSignupDto.php b/src/Dto/UserSignupDto.php new file mode 100644 index 0000000..86146d7 --- /dev/null +++ b/src/Dto/UserSignupDto.php @@ -0,0 +1,29 @@ +autoMapper->map($data, User::class); + $user->setPassword($this->userPasswordHasher->hashPassword($user, $data->password)); + $user = $this->entityStateProcessor->process($user, $operation, $uriVariables, $context); + + return $this->autoMapper->map($user, UserApiResource::class); + } +}