/**
  * @param  string $middleware
  * @param  bool   $isAjax
  * @return \Illuminate\Http\RedirectResponse
  */
 protected function failedResponse($middleware, $isAjax = false)
 {
     if ($isAjax) {
         return $this->response->make($this->getErrorMessage($middleware), 403);
     }
     return $this->redirector->back()->exceptInput('_guard_pot', '_guard_opened')->withErrors($this->getErrorMessage($middleware));
 }
예제 #2
0
 /**
  * Generic response.
  *
  * @api
  * @param array|null $payload
  * @return \Illuminate\Contracts\Http\Response
  */
 public function respond($payload)
 {
     if ($meta = $this->getMeta()) {
         $payload = array_merge($payload, ['meta' => $meta]);
     }
     return !($callback = $this->request->input('callback')) ? $this->response->json($payload, $this->getStatusCode(), $this->getHeaders()) : $this->response->jsonp($callback, $payload, $this->getStatusCode(), $this->getHeaders());
 }
 /**
  * Bootstrap the application services.
  *
  * @return void
  */
 public function boot(ResponseFactory $factory)
 {
     $factory->macro('validation_error', function ($messageBag, $defaultFullErrorMessage = null) use($factory) {
         $errorId = 'validation_error';
         $jsonResponse = ["id" => $errorId, "fields" => []];
         $fullErrorMessage = $messageBag->get('full_error_message');
         if ($fullErrorMessage) {
             $jsonResponse['message'] = $fullErrorMessage[0];
         } else {
             if ($defaultFullErrorMessage != null) {
                 $jsonResponse['message'] = $defaultFullErrorMessage;
             } else {
                 $jsonResponse['message'] = 'Los datos enviados contienen errores';
             }
         }
         foreach ($messageBag->getMessages() as $key => $fieldMessages) {
             if (strcmp($key, 'full_error_message') != 0) {
                 $jsonResponse["fields"][] = [$key => $fieldMessages[0]];
             }
         }
         return $factory->make($jsonResponse, 400);
     });
     $factory->macro('not_found', function ($message) use($factory) {
         $errorId = 'not_found';
         $jsonResponse = ["id" => $errorId, "message" => $message];
         return $factory->make($jsonResponse, 404);
     });
 }
예제 #4
0
 protected function process($data)
 {
     if ('json' == $this->type) {
         return $this->responseFactory->json($data, $this->code);
     }
     throw new \Exception('no processer for api maker');
 }
예제 #5
0
 /**
  * Serialize the data and wrap it in a JSON response object.
  *
  * @param  int|null $statusCode
  * @param  array    $headers
  * @return \Illuminate\Http\JsonResponse
  */
 public function respond(int $statusCode = null, array $headers = []) : JsonResponse
 {
     if (!is_null($statusCode)) {
         $this->setStatus($statusCode);
     }
     $data = $this->includeStatusCode($this->toArray());
     return $this->responseFactory->json($data, $this->statusCode, $headers);
 }
예제 #6
0
 /**
  * Index handler.
  *
  * @param \Psr\Http\Message\ServerRequestInterface $psrRequest
  * @param \Laravel\Passport\ClientRepository       $clients
  *
  * @return \Illuminate\Http\Response
  */
 public function index(ServerRequestInterface $psrRequest, ClientRepository $clients)
 {
     return $this->withErrorHandling(function () use($psrRequest, $clients) {
         $this->request->session()->put('authRequest', $authRequest = $this->server->validateAuthorizationRequest($psrRequest));
         $scopes = $this->parseScopes($authRequest);
         return $this->response->view('passport::authorize', ['client' => $clients->find($authRequest->getClient()->getIdentifier()), 'user' => $this->request->user(), 'scopes' => $scopes, 'request' => $this->request]);
     });
 }
예제 #7
0
 /**
  * @inheritdoc
  */
 public function make($data, $statusCode = 200, array $headers = [])
 {
     $acceptedMediaType = $this->requestParser->acceptedMediaType();
     $mediaType = $this->versionFactory->makeMediaType($acceptedMediaType);
     $representation = $mediaType->format($data);
     $headers = $this->setContentTypeHeader($headers, $acceptedMediaType);
     return $this->response->make($representation, $statusCode, $headers);
 }
예제 #8
0
 /**
  * @param int    $tagId
  * @param string $tagName
  *
  * @throws \Illuminate\Database\Eloquent\ModelNotFoundException
  *
  * @return \Illuminate\Contracts\View\View|\Illuminate\Http\RedirectResponse
  */
 public function viewAction(int $tagId, string $tagName)
 {
     $tag = $this->tagRepository->loadById($tagId);
     if ($tag->name !== $tagName) {
         return $this->responseFactory->redirectToRoute('tag.view', ['id' => $tag->id, $tag->name]);
     }
     return $this->viewFactory->make('customer.tag.view', compact('tag'));
 }
예제 #9
0
 /**
  * Redirect to specific locale page and set cookie to remember their
  * setting.
  *
  * @param  string  $locale
  * @param  bool  $autoDetect
  * @return Response
  */
 protected function redirect($locale, $autoDetect = false)
 {
     $response = $this->response->redirectTo($this->url->urlFor($locale));
     if ($autoDetect) {
         $response = $this->manager->setCookieLocale($response, $locale);
     }
     return $response;
 }
예제 #10
0
파일: Response.php 프로젝트: appkr/api
 /**
  * Generic response.
  *
  * @api
  * @param array|null $payload
  * @return \Illuminate\Contracts\Http\Response
  */
 public function respond($payload = [])
 {
     if ($meta = $this->getMeta()) {
         $payload = array_merge($payload, ['meta' => $meta]);
     }
     $statusCode = config('api.suppress_response_code') === true ? StatusCode::OK : $this->getStatusCode();
     return !($callback = $this->request->input('callback')) ? $this->response->json($payload, $statusCode, $this->getHeaders(), JSON_PRETTY_PRINT) : $this->response->jsonp($callback, $payload, $statusCode, $this->getHeaders());
 }
 /**
  * Bootstrap the application services.
  *
  * @return void
  */
 public function boot(ResponseFactory $factory)
 {
     // macroメソッドは登録名を第1引数、クロージャーを第2引数に取ります。
     // マクロのクロージャーはResponseFactoryの実装か、responseヘルパーに対し、登録名で呼び出すことで、実行されます。
     // return response()->caps('foo');
     $factory->macro('çsv', function ($value) use($factory) {
         // CSV download 処理を追加する
     });
 }
예제 #12
0
 /**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  \Closure  $next
  *
  * @return mixed
  */
 public function handle($request, Closure $next)
 {
     $as = $request->input('_as');
     if ($this->authorize() && !is_null($as)) {
         $this->auth->loginUsingId($as);
         return $this->response->redirectTo($request->url());
     }
     return $next($request);
 }
예제 #13
0
 /**
  * Run the request filter.
  *
  * @param  \Illuminate\Routing\Route  $route
  * @param  \Illuminate\Http\Request  $request
  * @return mixed
  */
 public function filter(Route $route, Request $request)
 {
     if ($this->auth->guest()) {
         if ($request->ajax()) {
             return $this->response->make('Unauthorized', 401);
         } else {
             return $this->response->redirectGuest('auth/login');
         }
     }
 }
예제 #14
0
 /**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  \Closure  $next
  * @return mixed
  */
 public function handle($request, Closure $next)
 {
     if ($this->auth->guest()) {
         if ($request->ajax()) {
             return $this->response->make('Unauthorized', 401);
         } else {
             return $this->response->redirectGuest('auth/login');
         }
     }
     return $next($request);
 }
예제 #15
0
 /**
  * @param int    $productId
  * @param string $slug
  *
  * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
  *
  * @return \Illuminate\Contracts\View\View|\Illuminate\Http\Response
  */
 public function viewAction(int $productId, string $slug)
 {
     $product = $this->productRepository->loadAlone($productId);
     if (!$product->id) {
         throw new NotFoundHttpException();
     }
     if ($product->slug !== $slug) {
         return $this->responseFactory->redirectToRoute('product::view', ['id' => $product->id, 'slug' => $product->slug], 301);
     }
     return $this->view->make('customer.product.view', ['product' => $this->view->getProduct($product), 'meta' => $this->view->productMeta($product), 'similar' => $this->view->similarProducts($product)]);
 }
 /**
  * Authorize the user
  *
  * @param ResponseFactory $response
  * @return array|\Illuminate\Http\Response
  */
 public function authorize(ResponseFactory $response)
 {
     $credentials = array_merge($this->request->only(['username', 'password']), ['status' => 'active']);
     if (!$this->auth->once($credentials)) {
         return $response->make('Invalid credentials', 401);
     }
     /*
                     if (!$this->isAuthorized($userRoles)) {
                         return $response->make('Unauthorized user', 401);
                     }*/
     return ['token' => $this->getUserToken($this->auth->user())];
 }
 /**
  * Perform post-registration booting of services.
  *
  * @param  ResponseFactory  $factory
  * @return void
  */
 public function boot(ResponseFactory $factory)
 {
     $factory->macro('calculatePercent', function ($num_amount, $num_total) use($factory) {
         if ($num_total == 0) {
             return '0%';
         }
         $count1 = $num_amount / $num_total;
         $count2 = $count1 * 100;
         $count = number_format($count2, 0);
         return $count . ' %';
     });
 }
예제 #18
0
 public function act(Request $request, ResponseFactory $response, $number = 5)
 {
     $status = 200;
     try {
         $cages = $this->cageRepo->getRandomCageImages($number);
         $data = ['cages' => $cages];
     } catch (\InvalidArgumentException $e) {
         $status = 400;
         $data = ['error' => $e->getMessage()];
     }
     return $response->json($data, $status);
 }
예제 #19
0
 /**
  * Bootstrap the application services.
  */
 public function boot(ResponseFactory $factory, Request $request)
 {
     $factory->macro('yaml', function ($value, $status = 200, array $headers = [], $style = YamlResponse::MULTILINE_YAML) use($factory) {
         YamlResponse::prepareHeaders($headers);
         return $factory->make(YamlResponse::dump($value, $style), $status, $headers);
     });
     $request->macro('wantsYaml', function () use($request) {
         return YamlRequest::wantsYaml($request);
     });
     $request->macro('isYaml', function () use($request) {
         return YamlRequest::isYaml($request);
     });
 }
예제 #20
0
 /**
  * Handle an incoming request.
  *
  * @param \Illuminate\Http\Request $request Request
  * @param \Closure                 $next    Closure
  *
  * @return mixed
  */
 public function handle($request, Closure $next)
 {
     if ($this->auth->check()) {
         $admin = 0;
         if ($this->auth->user()->admin == 1) {
             $admin = 1;
         }
         if ($admin == 0) {
             return $this->response->redirectTo('/');
         }
         return $next($request);
     }
     return $this->response->redirectTo('/');
 }
예제 #21
0
 /**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  \Closure  $next
  * @return mixed
  */
 public function handle($request, Closure $next)
 {
     if ($this->auth->check()) {
         $user = 0;
         if ($this->auth->user()->role_id == 2) {
             $user = 2;
         }
         if ($user == 0) {
             return $this->response->redirectTo('/');
         }
         return $next($request);
     }
     return $this->response->redirectTo('/');
 }
 /**
  * Handle the file upload.
  *
  * @param DiskRepositoryInterface $disks
  * @param ResponseFactory         $response
  * @param MountManager            $manager
  * @param Request                 $request
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function handle(DiskRepositoryInterface $disks, ResponseFactory $response, MountManager $manager, Request $request)
 {
     $path = trim($request->get('path'), '.');
     $file = $request->file('upload');
     $disk = $request->get('disk');
     if (is_numeric($disk)) {
         $disk = $disks->find($disk);
     } elseif (is_string($disk)) {
         $disk = $disks->findBySlug($disk);
     }
     $file = $manager->putStream($disk->path(ltrim(trim($path, '/') . '/' . $file->getClientOriginalName(), '/')), fopen($file->getRealPath(), 'r+'));
     /* @var FileInterface $file */
     return $response->json($file->getAttributes());
 }
예제 #23
0
 function it_makes_a_response(\LaraPackage\Api\Contracts\Request\Parser $requestParser, ResponseFactory $response, \LaraPackage\Api\Contracts\Factory\VersionFactory $versionFactory, \LaraPackage\Api\Contracts\MediaType\Json $media, \Illuminate\Http\Response $illuminateResponse, \LaraPackage\Api\Contracts\Config\ApiVersion $versionInfoRetriever)
 {
     $mediaType = 'json';
     $version = 4;
     $vendor = 'vnd.wps_api.';
     $versionDesignator = 'v4';
     $dataArray = ['data' => 'array'];
     $jsonData = json_encode($dataArray);
     $requestParser->acceptedMediaType()->shouldBeCalled()->willReturn($mediaType);
     $versionInfoRetriever->vendor($version)->shouldBeCalled()->willReturn($vendor);
     $versionInfoRetriever->versionDesignator($version)->shouldBeCalled()->willReturn($versionDesignator);
     $versionFactory->makeMediaType($mediaType)->shouldBeCalled()->willReturn($media);
     $media->format($dataArray)->shouldBeCalled()->willReturn($jsonData);
     $response->make($jsonData, 200, ['Content-Type' => 'application/' . $vendor . $versionDesignator . '+' . $mediaType])->shouldBeCalled()->willReturn($illuminateResponse);
     $this->make($dataArray)->shouldReturn($illuminateResponse);
 }
예제 #24
0
 /**
  * Create a response instance from the given parameters.
  *
  * @param mixed $data
  * @param int $status
  * @param BaseTransformer $transformer
  * @return mixed
  */
 public function create($data = [], $status = null, $transformer = null)
 {
     $this->setContent($data);
     if (!isset($data)) {
         $this->setContent('')->setStatusCode(HttpResponse::HTTP_NO_CONTENT);
     } elseif ($data instanceof LengthAwarePaginator) {
         $this->setContent($this->handlePagination($data, $transformer));
     } elseif ($data instanceof Collection) {
         $this->setContent($this->handleCollection($data, $transformer));
     } elseif ($data instanceof Model) {
         $this->setContent($this->handleItem($data, $transformer));
     } elseif ($data instanceof ResourceException || get_parent_class($data) == ResourceException::class) {
         $this->setContent($this->handleError($data, $transformer, ResourceException::class))->setStatusCode($data->getStatusCode());
     } elseif ($data instanceof HttpException || get_parent_class($data) == HttpException::class) {
         $this->setContent($this->handleError($data, $transformer, HttpException::class))->setStatusCode($data->getStatusCode());
     } elseif ($data instanceof ValidationException || get_parent_class($data) == ValidationException::class) {
         // Create new ResourceException with the given errors if it is a ValidationException
         $resourceException = new ResourceException($data->getMessage(), $data->validator->errors());
         $this->setContent($this->handleError($resourceException, $transformer))->setStatusCode($resourceException->getStatusCode());
     } elseif ($data instanceof Exception || get_parent_class($data) == Exception::class) {
         $this->setContent($this->handleError($data, $transformer, Exception::class))->setStatusCode(HttpResponse::HTTP_INTERNAL_SERVER_ERROR);
     } elseif ($data instanceof FatalErrorException) {
         $this->setContent($this->handleError($data, $transformer, Exception::class))->setStatusCode(HttpResponse::HTTP_INTERNAL_SERVER_ERROR);
     }
     // Override status code
     if (isset($status)) {
         $this->setStatusCode($status);
     }
     return $this->response->json($this->getContent(), $this->getStatusCode());
 }
예제 #25
0
 /**
  * @param \Illuminate\Http\Request                 $request
  * @param \Illuminate\Auth\AuthenticationException $exception
  *
  * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
  */
 protected function unauthenticated($request, AuthenticationException $exception)
 {
     if ($request->expectsJson()) {
         return $this->response->json(['error' => 'Unauthenticated.'], 401);
     }
     return $this->redirector->guest('login');
 }
예제 #26
0
 /**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request $request
  * @param  \Closure $next
  * @return mixed
  */
 public function handle($request, Closure $next)
 {
     if ($this->auth->check()) {
         $admin = 0;
         $user_roles = AssignedRoles::join('roles', 'role_user.role_id', '=', 'roles.id')->where('user_id', $this->auth->user()->id)->select('roles.is_admin')->get();
         foreach ($user_roles as $item) {
             if ($item->is_admin == 1) {
                 $admin = 1;
             }
         }
         if ($admin == 0) {
             return $this->response->redirectTo('/');
         }
         return $next($request);
     }
     return $this->response->redirectTo('/');
 }
예제 #27
0
 /**
  * receiveSync.
  *
  * @method receiveSync
  *
  * @param \Illuminate\Http\Request $request
  * @param string                   $payumToken
  *
  * @return mixed
  */
 public function receiveSync(Request $request, $payumToken)
 {
     return $this->send($request, $payumToken, function ($gateway, $token, $httpRequestVerifier) {
         $gateway->execute(new Sync($token));
         $httpRequestVerifier->invalidate($token);
         return $this->responseFactory->redirectTo($token->getAfterUrl());
     });
 }
예제 #28
0
 /**
  * Response on authorized request.
  *
  * @param  \Illuminate\Http\Request  $request
  *
  * @return mixed
  */
 protected function responseOnUnauthorized($request)
 {
     if ($request->ajax()) {
         return $this->response->make('Unauthorized', 401);
     }
     $type = $this->auth->guest() ? 'guest' : 'user';
     $url = $this->config->get("orchestra/foundation::routes.{$type}");
     return $this->response->redirectTo($this->foundation->handles($url));
 }
 /**
  * Handle an incoming request.
  *
  * @return null
  * @throws Exception
  * @throws HttpResponseException
  */
 public function validate()
 {
     if (!$this->isThisValid()) {
         $errorList = null;
         switch ($this->errorFormat) {
             case self::ERROR_FORMAT_RULES:
                 $errorList = $this->getFailedRules();
                 break;
             case self::ERROR_FORMAT_MESSAGES:
                 $errorList = $this->getMessageBag()->all();
                 break;
             default:
                 throw new Exception("Unknown error format: {$this->errorFormat}");
         }
         $result = $this->makeResponse($errorList);
         throw new HttpResponseException($this->responseFactory->json($result, $this->errorResponseStatus));
     }
     return null;
 }
예제 #30
0
 /**
  * media.
  *
  * @param \Illuminate\Http\Request                      $request
  * @param \Illuminate\Filesystem\Filesystem             $filesystem
  * @param \Illuminate\Contracts\Routing\ResponseFactory $request
  * @param string                                        $file
  *
  * @return \Illuminate\Http\Response
  */
 public function media(Request $request, Filesystem $filesystem, ResponseFactory $responseFactory, $file)
 {
     $filename = __DIR__ . '/../../../public/' . $file;
     $mimeType = strpos($filename, '.css') !== false ? 'text/css' : 'application/javascript';
     $lastModified = $filesystem->lastModified($filename);
     $eTag = sha1_file($filename);
     $headers = ['content-type' => $mimeType, 'last-modified' => date('D, d M Y H:i:s ', $lastModified) . 'GMT'];
     if (@strtotime($request->server('HTTP_IF_MODIFIED_SINCE')) === $lastModified || trim($request->server('HTTP_IF_NONE_MATCH'), '"') === $eTag) {
         $response = $responseFactory->make(null, 304, $headers);
     } else {
         $response = $responseFactory->stream(function () use($filename) {
             $out = fopen('php://output', 'wb');
             $file = fopen($filename, 'rb');
             stream_copy_to_stream($file, $out, filesize($filename));
             fclose($out);
             fclose($file);
         }, 200, $headers);
     }
     return $response->setEtag($eTag);
 }