示例#1
0
 /**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  \Closure  $next
  * @return mixed
  */
 public function handle(Request $request, Closure $next)
 {
     $modelIndex = Application::context(Application::CXT_API) ? 3 : 2;
     $idIndex = Application::context(Application::CXT_API) ? $modelIndex + 1 : $modelIndex + 2;
     // Check for the model slug. Throw 404 if not found.
     $modelSegment = $request->segment($modelIndex);
     $idSegment = $request->segment($idIndex);
     $blueprint = ModelBlueprint::slug($modelSegment);
     if (!$blueprint) {
         $message = "Class for '{$modelSegment}' does not exist";
         return Application::context(Application::CXT_API) ? RESTResponse::failed($message, 404) : response($message, 404);
     }
     $class = $blueprint->getClass();
     // Check if the model ID was given.
     if ($idSegment) {
         $model = $class::find($idSegment);
         if (!$model) {
             $message = "Model '{$modelSegment}/{$idSegment}' does not exist";
             return Application::context(Application::CXT_API) ? RESTResponse::failed($message, 404) : response($message, 404);
         }
         $request->Model = $model;
         return $next($request);
     }
     // Otherwise, return the static model class.
     $request->Model = new $class();
     return $next($request);
 }
示例#2
0
 /**
  * Does this model require a user to be logged in and have permission?
  * @param Request $request
  * @param string $ability
  * @return mixed
  */
 protected function isNotAuthorized(Request $request, $ability = 'view')
 {
     $class = $request->Model->getClass();
     if (!$this->user || $this->user->cannot($ability, $class)) {
         return RESTResponse::failed("You are not permitted to {$ability} " . $class::plural(), 401);
     }
     // Checked out.
     return false;
 }
 /**
  * Updates any metadata from the response.
  * @return $this
  */
 public function update()
 {
     $this->meta('statusCode', $this->response->getStatusCode());
     $this->meta('statusText', $this->response->getStatusText());
     return $this;
 }