} // while the project is being amended, non-officers see the "show" version of the project (no SOWComposer) if (!Auth::officer() && $project->status() == Project::STATUS_AMENDING_SOW) { return; } // non-officers who try to view an SOWComposer page get sent home if (!Auth::officer()) { return Redirect::to('/'); } $route = $project->current_sow_composer_route_name(); return Redirect::to_route($route, array($project->id)); }); Route::filter('template_exists_and_is_forkable', function () { $project = Config::get('project'); $id = Request::$route->parameters[1]; $template = Project::where_id($id)->where_public(true)->where_project_type_id($project->project_type_id)->first(); if (!$template) { return Redirect::to_route('project_background', array($project->id)); } Config::set('template', $template); }); Route::filter('i_am_collaborator', function () { // also allowed if user is ADMIN $project = Config::get('project'); if (!$project->is_mine() && !Auth::officer()->is_role_or_higher(Officer::ROLE_ADMIN)) { return Redirect::to('/'); } }); Route::filter('i_am_owner', function () { $project = Config::get('project'); if (!$project->i_am_owner()) {