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; }