public function userCanAccessProject(Project $project) { if (!$this->user) { return false; } if ($project->user_id == $this->user->id) { return true; } foreach ($project->teams()->with('users')->get() as $team) { if ($team->can_edit) { return true; } } return false; }
/** * Register any other events for your application. * * @param \Illuminate\Contracts\Events\Dispatcher $events * @return void */ public function boot(DispatcherContract $events) { parent::boot($events); Event::subscribe('App\\Listeners\\Events\\AuthHistoryLogger'); Event::subscribe('App\\Listeners\\Events\\UserHistoryLogger'); Project::observe($this->app->make('App\\Events\\Observer\\ProjectObserver')); Entry::observe($this->app->make('App\\Events\\Observer\\EntryObserver')); Share::observe($this->app->make('App\\Events\\Observer\\ShareObserver')); Team::observe($this->app->make('App\\Events\\Observer\\TeamObserver')); EntryTag::observe($this->app->make('App\\Events\\Observer\\EntryTagObserver')); EntryTeam::observe($this->app->make('App\\Events\\Observer\\EntryTeamObserver')); ProjectTeam::observe($this->app->make('App\\Events\\Observer\\ProjectTeamObserver')); UserTeam::observe($this->app->make('App\\Events\\Observer\\UserTeamObserver')); }
/** * Run the database seeds. * * @return void */ public function run() { Eloquent::unguard(); if (!User::find(1)) { User::create(['email' => 'admin', 'password' => Hash::make('admin'), 'name' => 'Main', 'surname' => 'Admin', 'group' => User::GROUP_ADMIN]); Project::create(['name' => 'Project 1', 'description' => 'Default starter project', 'user_id' => 1]); $keys = KeyPairGenerator::generate('admin'); $key = new RsaKey(); $key->private = $keys['private']; $key->public = $keys['public']; $key->user_id = 1; $key->save(); echo "DB Seeded...\n"; } else { echo "DB Already Seeded...\n"; } }
public function store(EntryCrypt $entryCrypt) { $validator = Validator::make(['team_id' => Input::get('team_id'), 'project_id' => Input::get('project_id')], ProjectTeam::$rules); if ($validator->fails()) { return Response::make($validator->messages()->first(), 419); } if (ProjectTeam::where('team_id', Input::get('team_id'))->where('project_id', Input::get('project_id'))->count() > 0) { return Response::make('This team already has access.', 419); } $project = Project::findOrFail(Input::get('project_id')); $model = new ProjectTeam(); $model->user_by_id = Auth::user()->id; $model->project_id = Input::get('project_id'); $model->team_id = Input::get('team_id'); DB::transaction(function () use($model, $entryCrypt, $project) { if (!$model->save()) { abort(403); } foreach ($project->keys as $key) { $entryCrypt->reencrypt($key); } }); return $model; }
/** * Remove the specified resource from storage. * * @param Project $model * @return Response */ public function destroy(Project $model) { if (!$model->delete()) { return Response::json(['flash' => 'Unauthorized.'], 403); } }