/** * Create a new item. * * @param Request $request * @param string|int $id * * @throws NotFoundHttpException * @throws RuntimeException * @throws UserProtectedException * @throws UserLimitReachedException * * @return mixed */ public function __invoke(Request $request, $id) { /** * @var ResourceInterface */ list($resourceType, $format) = $this->extractAttributes($request); /** * @var User */ $data = $this->getItem($this->dataProvider, $resourceType, $id); $context = $resourceType->getDenormalizationContext(); $context['object_to_populate'] = $data; if ($data->isProtected()) { throw new UserProtectedException(); } $data = $this->serializer->deserialize($request->getContent(), $resourceType->getEntityClass(), $format, $context); if ($data->isActive()) { if ($this->userService->checkUserLimit()) { throw new UserLimitReachedException(); } } $this->userService->syncData($data); $data->setNewPassword(''); $data->setPassword(''); $data->setLegacy(false); return $data; }
/** * Create a new item. * * @param Request $request * * @return mixed * * @throws NotFoundHttpException * @throws RuntimeException * @throws UserLimitReachedException */ public function __invoke(Request $request) { /** * @var $resourceType ResourceInterface */ list($resourceType, $format) = $this->extractAttributes($request); if ($this->userService->checkUserLimit() === true) { throw new UserLimitReachedException(); } /** * @var User $data */ $data = $this->serializer->deserialize($request->getContent(), $resourceType->getEntityClass(), $format, $resourceType->getDenormalizationContext()); $data->setProvider($this->userService->getBuiltinProvider()); $data->setLegacy(false); $this->userService->syncData($data); $data->setNewPassword(""); $data->setPassword(""); return $data; }