Пример #1
0
 /**
  * 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.");
     }
 }