/**
* 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;
}