/**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  \Closure  $next
  * @return mixed
  */
 public function handle($request, Closure $next)
 {
     $file_id = $request->file;
     $user_id = \Authorizer::getResourceOwnerId();
     $file = ProjectFile::find($file_id);
     if (is_null($file)) {
         return Errors::invalidId($file_id);
     }
     if (!$this->repository->isMember($file->project_id, $user_id)) {
         return Errors::basic('Acesso negado! Você não é membro do projeto deste arquivo.');
     }
     return $next($request);
 }
 /**
  * Run the database seeds.
  *
  * @return void
  */
 public function run()
 {
     Model::unguard();
     DB::statement('SET foreign_key_checks = 0');
     ProjectNote::truncate();
     ProjectTask::truncate();
     ProjectMember::truncate();
     ProjectFile::truncate();
     Project::truncate();
     Client::truncate();
     User::truncate();
     OAuthClient::truncate();
     DB::statement('SET foreign_key_checks = 1');
     $this->call(UserTableSeeder::class);
     $this->call(ClientTableSeeder::class);
     $this->call(ProjectTableSeeder::class);
     $this->call(ProjectNoteTableSeeder::class);
     $this->call(ProjectMemberTableSeeder::class);
     $this->call(ProjectTaskTableSeeder::class);
     $this->call(OAuthClientTableSeeder::class);
     Model::reguard();
 }
 public function transform(ProjectFile $model)
 {
     return ['id' => $model->id, 'project_id' => $model->project->id, 'name' => $model->name, 'description' => $model->description, 'file' => $model->file, 'extension' => $model->extension, 'created_at' => $model->getCreatedAt(), 'updated_at' => $model->getUpdatedAt()];
 }
 public function update(array $data, $file_id)
 {
     $file = ProjectFile::find($file_id);
     if (is_null($file)) {
         return Errors::invalidId($file_id);
     }
     try {
         $this->validator->with($data)->passesOrFail(ValidatorInterface::RULE_UPDATE);
         if ($data['project_id'] != $file->project_id) {
             return Errors::basic('Você não pode alterar o projeto do arquivo.');
         }
         if ($data['extension'] != $file->extension) {
             return Errors::basic('Você não pode alterar a extensão do arquivo.');
         }
         $user_id = \Authorizer::getResourceOwnerId();
         if (!$this->projectRepository->isMember($file->project_id, $user_id)) {
             return Errors::basic('Acesso negado. Você não é membro do projeto selecionado.');
         }
         return $this->repository->update($data, $file_id);
     } catch (ValidatorException $e) {
         return Errors::basic($e->getMessageBag());
     }
 }
 public function includeProject(ProjectFile $projectFile)
 {
     return $this->collection($projectFile->project()->get(), new ProjectTransformer());
 }
 public function delete($file_id)
 {
     $projectFile = ProjectFile::find($file_id);
     if (is_null($projectFile)) {
         return Errors::invalidId($file_id);
     }
     $user_id = \Authorizer::getResourceOwnerId();
     if (!$this->projectRepository->isMember($projectFile->project_id, $user_id)) {
         return Errors::basic('Acesso negado. Você não é membro do projeto deste arquivo.');
     }
     $nome = $projectFile->id . '.' . $projectFile->extension;
     $this->repository->delete($file_id);
     $this->storage->delete($nome);
     return ['message' => "Registro e arquivo deletados!"];
 }