redirect read-inly users from edit view to summary view
Project: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/repo Commit: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/commit/ca0105c6 Tree: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/tree/ca0105c6 Diff: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/diff/ca0105c6 Branch: refs/heads/develop Commit: ca0105c6b18e59fdc9fff0be8d598160f62c2c86 Parents: 9f0ee4e Author: Jeff Kinnison <[email protected]> Authored: Wed Aug 17 10:23:14 2016 -0400 Committer: Jeff Kinnison <[email protected]> Committed: Wed Aug 17 10:23:14 2016 -0400 ---------------------------------------------------------------------- app/controllers/ExperimentController.php | 116 ++++++++++++++------------ 1 file changed, 63 insertions(+), 53 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/ca0105c6/app/controllers/ExperimentController.php ---------------------------------------------------------------------- diff --git a/app/controllers/ExperimentController.php b/app/controllers/ExperimentController.php index defe700..1be34f4 100755 --- a/app/controllers/ExperimentController.php +++ b/app/controllers/ExperimentController.php @@ -199,47 +199,52 @@ class ExperimentController extends BaseController public function editView() { - $queueDefaults = array("queueName" => Config::get('pga_config.airavata')["queue-name"], - "nodeCount" => Config::get('pga_config.airavata')["node-count"], - "cpuCount" => Config::get('pga_config.airavata')["total-cpu-count"], - "wallTimeLimit" => Config::get('pga_config.airavata')["wall-time-limit"] - ); + if (SharingUtilities::userCanWrite(Session::get("username"), $_GET['expId'], ResourceType::EXPERIMENT) === true) { + $queueDefaults = array("queueName" => Config::get('pga_config.airavata')["queue-name"], + "nodeCount" => Config::get('pga_config.airavata')["node-count"], + "cpuCount" => Config::get('pga_config.airavata')["total-cpu-count"], + "wallTimeLimit" => Config::get('pga_config.airavata')["wall-time-limit"] + ); - $experiment = ExperimentUtilities::get_experiment($_GET['expId']); - $expVal = ExperimentUtilities::get_experiment_values($experiment); - $expVal["jobState"] = ExperimentUtilities::get_job_status($experiment); + $experiment = ExperimentUtilities::get_experiment($_GET['expId']); + $expVal = ExperimentUtilities::get_experiment_values($experiment); + $expVal["jobState"] = ExperimentUtilities::get_job_status($experiment); - $computeResources = CRUtilities::create_compute_resources_select($experiment->executionId, $expVal['scheduling']->resourceHostId); - - $clonedExp = false; $savedExp = false; - if( Input::has("clonedExp")) - $clonedExp = true; - if( Input::has("savedExp")) - $savedExp = true; - - $experimentInputs = array( - "clonedExp" => $clonedExp, - "savedExp" => $savedExp, - "disabled" => ' ', - "experimentName" => $experiment->experimentName, - "experimentDescription" => $experiment->description, - "application" => $experiment->executionId, - "autoSchedule" => $experiment->userConfigurationData->airavataAutoSchedule, - "userDN" => $experiment->userConfigurationData->userDN, - "allowedFileSize" => Config::get('pga_config.airavata')["server-allowed-file-size"], - 'experiment' => $experiment, - "queueDefaults" => $queueDefaults, - 'computeResources' => $computeResources, - "resourceHostId" => $expVal['scheduling']->resourceHostId, - 'project' => $experiment->projectId, - 'expVal' => $expVal, - 'cloning' => true, - 'advancedOptions' => Config::get('pga_config.airavata')["advanced-experiment-options"] - ); + $computeResources = CRUtilities::create_compute_resources_select($experiment->executionId, $expVal['scheduling']->resourceHostId); + + $clonedExp = false; $savedExp = false; + if( Input::has("clonedExp")) + $clonedExp = true; + if( Input::has("savedExp")) + $savedExp = true; - $users = SharingUtilities::getProfilesForSharedUsers($_GET['expId'], ResourceType::EXPERIMENT); + $experimentInputs = array( + "clonedExp" => $clonedExp, + "savedExp" => $savedExp, + "disabled" => ' ', + "experimentName" => $experiment->experimentName, + "experimentDescription" => $experiment->description, + "application" => $experiment->executionId, + "autoSchedule" => $experiment->userConfigurationData->airavataAutoSchedule, + "userDN" => $experiment->userConfigurationData->userDN, + "allowedFileSize" => Config::get('pga_config.airavata')["server-allowed-file-size"], + 'experiment' => $experiment, + "queueDefaults" => $queueDefaults, + 'computeResources' => $computeResources, + "resourceHostId" => $expVal['scheduling']->resourceHostId, + 'project' => $experiment->projectId, + 'expVal' => $expVal, + 'cloning' => true, + 'advancedOptions' => Config::get('pga_config.airavata')["advanced-experiment-options"] + ); - return View::make("experiment/edit", array("expInputs" => $experimentInputs, "users" => json_encode($users))); + $users = SharingUtilities::getProfilesForSharedUsers($_GET['expId'], ResourceType::EXPERIMENT); + + return View::make("experiment/edit", array("expInputs" => $experimentInputs, "users" => json_encode($users))); + } + else { + Redirect::to("experiment/summary?expId=" . $experiment->experimentId)->with("error", "You do not have permission to edit this experiment"); + } } public function cloneExperiment() @@ -258,22 +263,27 @@ class ExperimentController extends BaseController public function editSubmit() { - if (isset($_POST['save']) || isset($_POST['launch'])) { - $experiment = ExperimentUtilities::get_experiment(Input::get('expId')); // update local experiment variable - $updatedExperiment = ExperimentUtilities::apply_changes_to_experiment($experiment, Input::all()); + if (SharingUtilities::userCanWrite(Session::get("username"), Input::get('expId'), ResourceType::EXPERIMENT)) { + if (isset($_POST['save']) || isset($_POST['launch'])) { + $experiment = ExperimentUtilities::get_experiment(Input::get('expId')); // update local experiment variable + $updatedExperiment = ExperimentUtilities::apply_changes_to_experiment($experiment, Input::all()); - ExperimentUtilities::update_experiment($experiment->experimentId, $updatedExperiment); + ExperimentUtilities::update_experiment($experiment->experimentId, $updatedExperiment); - if (isset($_POST['save'])) { - $experiment = ExperimentUtilities::get_experiment(Input::get('expId')); // update local experiment variable - } - if (isset($_POST['launch'])) { - ExperimentUtilities::launch_experiment($experiment->experimentId); - } + if (isset($_POST['save'])) { + $experiment = ExperimentUtilities::get_experiment(Input::get('expId')); // update local experiment variable + } + if (isset($_POST['launch'])) { + ExperimentUtilities::launch_experiment($experiment->experimentId); + } - return Redirect::to('experiment/summary?expId=' . $experiment->experimentId); - } else - return View::make("home"); + return Redirect::to('experiment/summary?expId=' . $experiment->experimentId); + } else + return View::make("home"); + } + else { + return Redirect::to("experiment/summary?expId=" . Input::get('expId'))->with("error", "You do not have permission to edit this experiment"); + } } public function getQueueView() @@ -310,7 +320,7 @@ class ExperimentController extends BaseController 'pageNo' => $pageNo, 'limit' => $this->limit, 'expStates' => $experimentStates, - 'expContainer' => $expContainer + 'expContainer' => $expContainer, )); } @@ -323,7 +333,7 @@ class ExperimentController extends BaseController */ public function sharedUsers() { - if (array_key_exists('resourceId', $_GET)) { + if (Session::has("authz-token") && array_key_exists('resourceId', $_GET)) { return Response::json(SharingUtilities::getProfilesForSharedUsers($_GET['resourceId'], ResourceType::EXPERIMENT)); } else { @@ -333,7 +343,7 @@ class ExperimentController extends BaseController public function unsharedUsers() { - if (array_key_exists('resourceId', $_GET)) { + if (Session::has("authz-token") && array_key_exists('resourceId', $_GET)) { return Response::json(SharingUtilities::getProfilesForUnsharedUsers($_GET['resourceId'], ResourceType::EXPERIMENT)); } else {
