/** * Define error handler */ private function defineErrorHandler() { $this->app->error(function (\Exception $e, $code) { if ($this->app['debug']) { return null; } switch ($code) { case 404: return ResponseBuilder::createErrorResponse($this->app, ResponseBuilder::STATUS_TYPE_ROUTE_NOT_FOUND, $e->getMessage(), $code); default: return ResponseBuilder::createErrorResponse($this->app, ResponseBuilder::STATUS_TYPE_ERROR, $e->getMessage(), $code); } }); }
/** * Validate data * * @param Request $request * @param array $data * @return null|JsonResponse */ public function validate(Request $request, array $data) { $this->request = $request; /** @var Collection $validation_constraint */ $validation_constraint = $this->createValidationCollection(); /** @var RecursiveValidator $validator */ $validator = $this->app['validator']; $errors = $validator->validate($data, $validation_constraint); if (count($errors) == 0) { $this->getLogger($this->app)->addInfo($this->createSuccessMessage()); } else { $first_error = null; /** @var ConstraintViolation $error */ foreach ($errors as $error) { if (!$first_error) { $first_error = $error; } $this->getLogger($this->app)->addError($this->createErrorMessage(), array('message' => $error->getMessage(), 'property_path' => $error->getPropertyPath(), 'invalid_value' => $error->getInvalidValue())); } return ResponseBuilder::createErrorResponse($this->app, ResponseBuilder::ERROR_TYPE_INVALID_DATA, array('message' => $first_error->getMessage(), 'property_path' => $first_error->getPropertyPath(), 'invalid_value' => $first_error->getInvalidValue()), Response::HTTP_FORBIDDEN); } return null; }
/** * Change password * * @param Request $request * @param Application $app * @return \Symfony\Component\HttpFoundation\JsonResponse */ public function changePassword(Request $request, Application $app) { /** @var User $user */ $user = $app['user']; try { /** @var User_Database $user_db */ $user_db = User_Database::getInstance($app, $request); $user_db->changePassword(); //Delete password $user->setPassword(null); $user->setOldPassword(null); return ResponseBuilder::createSuccessResponse($app, $user->toArray()); } catch (NotFoundException $e) { return ResponseBuilder::createErrorResponse($app, ResponseBuilder::STATUS_TYPE_NOT_FOUND, "Es konnte kein User mit der ID {$request->get('user_id')} gefunden werden.", Response::HTTP_NOT_FOUND); } catch (WrongPasswordException $e) { return ResponseBuilder::createErrorResponse($app, ResponseBuilder::STATUS_TYPE_PASSWORD_INVALID, "User-ID und Passwort stimmmen nicht überein.", Response::HTTP_FORBIDDEN); } catch (ErrorException $e) { return ResponseBuilder::createErrorResponse($app, ResponseBuilder::STATUS_TYPE_ERROR, "Das Passwort des User mit der ID {$user->getUserId()} konnte nicht aktualisiert werden."); } }