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/09 21:36:37 UTC

[2/3] airavata-php-gateway git commit: AIRAVATA-2196 Only owner can change experiment sharing

AIRAVATA-2196 Only owner can change experiment sharing


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/25808c53
Tree: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/tree/25808c53
Diff: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/diff/25808c53

Branch: refs/heads/develop
Commit: 25808c53c31bf1e9184b8751671ec096866d927f
Parents: 50e9117
Author: Marcus Christie <ma...@iu.edu>
Authored: Wed Nov 9 15:58:46 2016 -0500
Committer: Marcus Christie <ma...@iu.edu>
Committed: Wed Nov 9 16:29:18 2016 -0500

----------------------------------------------------------------------
 app/controllers/ExperimentController.php       | 23 +++++++++++++++------
 app/libraries/ExperimentUtilities.php          |  2 +-
 app/views/partials/experiment-info.blade.php   | 15 ++++----------
 app/views/partials/experiment-inputs.blade.php |  2 +-
 4 files changed, 23 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/25808c53/app/controllers/ExperimentController.php
----------------------------------------------------------------------
diff --git a/app/controllers/ExperimentController.php b/app/controllers/ExperimentController.php
index c36d3ed..83586e0 100755
--- a/app/controllers/ExperimentController.php
+++ b/app/controllers/ExperimentController.php
@@ -77,7 +77,9 @@ class ExperimentController extends BaseController
                 $users = SharingUtilities::getProfilesForSharedUsers($_POST['project'], ResourceType::PROJECT);
                 $owner = array();
 
-                return View::make("experiment/create-complete", array("expInputs" => $experimentInputs, "users" => json_encode($users), "owner" => json_encode($owner)));
+                return View::make("experiment/create-complete", array("expInputs" => $experimentInputs,
+                    "users" => json_encode($users), "owner" => json_encode($owner),
+                    "canEditSharing" => true));
             }else{
                 return View::make("experiment/no-sharing-create-complete", array("expInputs" => $experimentInputs));
             }
@@ -160,17 +162,18 @@ class ExperimentController extends BaseController
                 $users = SharingUtilities::getProfilesForSharedUsers(Input::get("expId"), ResourceType::EXPERIMENT);
 
                 $owner = array();
-                $is_owner = false;
                 if (strcmp(Session::get("username"), $experiment->userName) !== 0) {
                     $owner[$experiment->userName] = $users[$experiment->userName];
                     $users = array_diff_key($users, $owner);
-                } else {
-                    $is_owner = true;
                 }
+                // 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.
+                $canEditSharing = $this->isExperimentOwner($experiment, Session::get("username")) && !$expVal["editable"];
                 $data['can_write'] = SharingUtilities::userCanWrite(Session::get("username"), $experiment->experimentId, ResourceType::EXPERIMENT);
                 $data["users"] = json_encode($users);
                 $data["owner"] = json_encode($owner);
-                $data["is_owner"] = $is_owner;
+                $data["canEditSharing"] = $canEditSharing;
             }
 
             if( Input::has("dashboard"))
@@ -278,8 +281,11 @@ class ExperimentController extends BaseController
                     $owner[$experiment->userName] = $users[$experiment->userName];
                     $users = array_diff_key($users, $owner);
                 }
+                $canEditSharing = $this->isExperimentOwner($experiment, Session::get('username'));
 
-                return View::make("experiment/edit", array("expInputs" => $experimentInputs, "users" => json_encode($users), "owner" => json_encode($owner)));
+                return View::make("experiment/edit", array("expInputs" => $experimentInputs,
+                    "users" => json_encode($users), "owner" => json_encode($owner),
+                    "canEditSharing" => $canEditSharing));
             }
             else {
                 Redirect::to("experiment/summary?expId=" . $experiment->experimentId)->with("error", "You do not have permission to edit this experiment");
@@ -432,6 +438,11 @@ class ExperimentController extends BaseController
             return Response::json(array("error" => "Error: No experiment specified"));
         }
     }
+
+    private function isExperimentOwner($experiment, $username)
+    {
+        return strcmp($username, $experiment->userName) === 0;
+    }
 }
 
 ?>

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/25808c53/app/libraries/ExperimentUtilities.php
----------------------------------------------------------------------
diff --git a/app/libraries/ExperimentUtilities.php b/app/libraries/ExperimentUtilities.php
index 0f7a935..f629399 100755
--- a/app/libraries/ExperimentUtilities.php
+++ b/app/libraries/ExperimentUtilities.php
@@ -571,7 +571,7 @@ class ExperimentUtilities
                 '<p>AiravataSystemException: ' . $ase->getMessage() . '</p>');
         }
 
-        if(Config::get('pga_config.airavata')["data-sharing-enabled"]){
+        if(Config::get('pga_config.airavata')["data-sharing-enabled"] && isset($_POST['share-settings'])){
             $share = $_POST['share-settings'];
             ExperimentUtilities::share_experiment($expId, json_decode($share));
         }

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/25808c53/app/views/partials/experiment-info.blade.php
----------------------------------------------------------------------
diff --git a/app/views/partials/experiment-info.blade.php b/app/views/partials/experiment-info.blade.php
index 062a7f8..6ba71df 100644
--- a/app/views/partials/experiment-info.blade.php
+++ b/app/views/partials/experiment-info.blade.php
@@ -229,13 +229,8 @@
     <form id="experiment-form" action="{{URL::to('/') }}/experiment/summary" method="post" role="form">
 
         <div class="form-group">
-        @if(Config::get('pga_config.airavata')["data-sharing-enabled"])
-            @if($is_owner)
-            <!-- Only allow editing sharing here if the experiment isn't editable -->
-            @include('partials/sharing-display-body', array("form" => !$expVal["editable"]))
-            @else
-            @include('partials/sharing-display-body', array("form" => false))
-            @endif
+        @if(Config::get('pga_config.airavata')["data-sharing-enabled"] && isset($canEditSharing))
+            @include('partials/sharing-display-body', array("form" => $canEditSharing))
         @endif
         </div>
         <div class="btn-toolbar">
@@ -260,7 +255,7 @@
                 <span class="glyphicon glyphicon-pencil"></span>
                 Edit
             </a>
-            @if(Config::get('pga_config.airavata')["data-sharing-enabled"] && $is_owner && !$expVal["editable"])
+            @if(Config::get('pga_config.airavata')["data-sharing-enabled"] && isset($canEditSharing) && $canEditSharing)
             <button name="update-sharing"
                    type="submit"
                    class="btn btn-primary"
@@ -393,10 +388,8 @@
 </div>
 @endif
 
-@if(Config::get('pga_config.airavata')["data-sharing-enabled"] and isset($is_owner))
-    @if($is_owner)
+@if(Config::get('pga_config.airavata')["data-sharing-enabled"] and isset($canEditSharing) && $canEditSharing)
     @include('partials/sharing-form-modal')
-    @endif
 @endif
 @section('scripts')
 @parent

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/25808c53/app/views/partials/experiment-inputs.blade.php
----------------------------------------------------------------------
diff --git a/app/views/partials/experiment-inputs.blade.php b/app/views/partials/experiment-inputs.blade.php
index 69ae78c..b9ac2cf 100644
--- a/app/views/partials/experiment-inputs.blade.php
+++ b/app/views/partials/experiment-inputs.blade.php
@@ -26,7 +26,7 @@
 </div>
 
 <div class="form-group">
-    @include('partials/sharing-display-body', array("form" => true))
+    @include('partials/sharing-display-body', array("form" => $canEditSharing))
 </div>
 
 <div class="panel panel-default">