You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sc...@apache.org on 2016/11/29 21:50:04 UTC
[3/3] airavata-php-gateway git commit: AIRAVATA-2195 Use sharing API
to figure out project owner
AIRAVATA-2195 Use sharing API to figure out project owner
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/3a2de307
Tree: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/tree/3a2de307
Diff: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/diff/3a2de307
Branch: refs/heads/develop
Commit: 3a2de30726cdaa07bce260a02333f88b25b18887
Parents: 4d546cf
Author: Marcus Christie <ma...@iu.edu>
Authored: Tue Nov 29 16:02:47 2016 -0500
Committer: Marcus Christie <ma...@iu.edu>
Committed: Tue Nov 29 16:02:47 2016 -0500
----------------------------------------------------------------------
app/controllers/ExperimentController.php | 38 ++++++++++++++-------------
app/libraries/SharingUtilities.php | 10 +++++++
2 files changed, 30 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/3a2de307/app/controllers/ExperimentController.php
----------------------------------------------------------------------
diff --git a/app/controllers/ExperimentController.php b/app/controllers/ExperimentController.php
index 392383b..6d06aad 100755
--- a/app/controllers/ExperimentController.php
+++ b/app/controllers/ExperimentController.php
@@ -78,10 +78,9 @@ class ExperimentController extends BaseController
$owner = array();
$projectOwner = array();
- $project = ProjectUtilities::get_project($_POST['project']);
- // TODO: figure out the owner of the project using sharing API
- if ($project != null && strcmp(Session::get("username"), $project->owner) !== 0) {
- $projectOwner[$project->owner] = $users[$project->owner];
+ $sharedProjectOwner = SharingUtilities::getSharedResourceOwner($_POST['project'], ResourceType::PROJECT);
+ if (strcmp(Session::get("username"), $sharedProjectOwner) !== 0) {
+ $projectOwner[$sharedProjectOwner] = $users[$sharedProjectOwner];
$users = array_diff_key($users, $projectOwner);
}
@@ -170,18 +169,21 @@ class ExperimentController extends BaseController
);
if(Config::get('pga_config.airavata')["data-sharing-enabled"]){
$users = SharingUtilities::getProfilesForSharedUsers(Input::get("expId"), ResourceType::EXPERIMENT);
+ $sharedProjectOwner = SharingUtilities::getSharedResourceOwner($experiment->projectId, ResourceType::PROJECT);
$owner = array();
$projectOwner = array();
if (strcmp(Session::get("username"), $experiment->userName) !== 0) {
$owner[$experiment->userName] = $users[$experiment->userName];
- $users = array_diff_key($users, $owner);
}
- // TODO: figure out the owner of the project using sharing API
- if ($project != null && strcmp(Session::get("username"), $project->owner) !== 0) {
- $projectOwner[$project->owner] = $users[$project->owner];
- $users = array_diff_key($users, $projectOwner);
+ if (strcmp(Session::get("username"), $sharedProjectOwner) !== 0) {
+ $projectOwner[$sharedProjectOwner] = $users[$sharedProjectOwner];
}
+ // Subtract out the owner and project owner from list of users
+ $users = array_diff_key($users, $owner);
+ $users = array_diff_key($users, $projectOwner);
+ // If project owner is the same as owner, just show the owner, not the project owner
+ $projectOwner = array_diff_key($projectOwner, $owner);
// Only allow editing sharing on the summary page if the owner
// and the experiment isn't editable. If the experiment is
// editable, the sharing can be edited on the edit page.
@@ -294,22 +296,22 @@ class ExperimentController extends BaseController
if(Config::get('pga_config.airavata')["data-sharing-enabled"]){
if (SharingUtilities::userCanWrite(Session::get("username"), $_GET['expId'], ResourceType::EXPERIMENT) === true) {
$users = SharingUtilities::getProfilesForSharedUsers($_GET['expId'], ResourceType::EXPERIMENT);
+ $sharedProjectOwner = SharingUtilities::getSharedResourceOwner($experiment->projectId, ResourceType::PROJECT);
$owner = array();
$projectOwner = array();
if (strcmp(Session::get("username"), $experiment->userName) !== 0) {
$owner[$experiment->userName] = $users[$experiment->userName];
- $users = array_diff_key($users, $owner);
- }
- // TODO: figure out the owner of the project using sharing API
- $project = null;
- if (SharingUtilities::userCanRead(Session::get("username"), $experiment->projectId, ResourceType::PROJECT)) {
- $project = ProjectUtilities::get_project($experiment->projectId);
}
- if ($project != null && strcmp(Session::get("username"), $project->owner) !== 0) {
- $projectOwner[$project->owner] = $users[$project->owner];
- $users = array_diff_key($users, $projectOwner);
+ if (strcmp(Session::get("username"), $sharedProjectOwner) !== 0) {
+ $projectOwner[$sharedProjectOwner] = $users[$sharedProjectOwner];
}
+ // Subtract out owner and project owner from list of users
+ $users = array_diff_key($users, $owner);
+ $users = array_diff_key($users, $projectOwner);
+ // If project owner is the same as owner, just show the owner, not the project owner
+ $projectOwner = array_diff_key($projectOwner, $owner);
+
$canEditSharing = $this->isExperimentOwner($experiment, Session::get('username'));
return View::make("experiment/edit", array("expInputs" => $experimentInputs,
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/3a2de307/app/libraries/SharingUtilities.php
----------------------------------------------------------------------
diff --git a/app/libraries/SharingUtilities.php b/app/libraries/SharingUtilities.php
index a0a1380..b689b24 100755
--- a/app/libraries/SharingUtilities.php
+++ b/app/libraries/SharingUtilities.php
@@ -175,6 +175,16 @@ class SharingUtilities {
return $users;
}
+
+ public static function getSharedResourceOwner($resourceId, $dataResourceType) {
+ $owners = GrouperUtilities::getAllAccessibleUsers($resourceId, $dataResourceType, ResourcePermissionType::OWNER);
+ if (count($owners) != 1) {
+ Log::error("Got more than one shared resource owner!", array($resourceId, $dataResourceType, $owners));
+ throw new Exception("Expected exactly 1 owner for $resourceId of type $dataResourceType!");
+ } else {
+ return $owners[0];
+ }
+ }
}
?>