AIRAVATA-2190 Must have write perm to edit/cancel

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

Branch: refs/heads/develop
Commit: 071a027a134037ef63192e1e3dd99172fa306518
Parents: 0455ebd
Author: Marcus Christie <[email protected]>
Authored: Wed Nov 2 16:34:47 2016 -0400
Committer: Marcus Christie <[email protected]>
Committed: Wed Nov 2 16:34:47 2016 -0400

----------------------------------------------------------------------
 app/controllers/ExperimentController.php     |  4 ++++
 app/libraries/ExperimentUtilities.php        | 19 ++++++++-----------
 app/views/partials/experiment-info.blade.php | 17 ++++++-----------
 3 files changed, 18 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/071a027a/app/controllers/ExperimentController.php
----------------------------------------------------------------------
diff --git a/app/controllers/ExperimentController.php 
b/app/controllers/ExperimentController.php
index 4dfc24f..e6803a9 100755
--- a/app/controllers/ExperimentController.php
+++ b/app/controllers/ExperimentController.php
@@ -155,13 +155,17 @@ 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;
                 }
                 $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;
             }
 
             if( Input::has("dashboard"))

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/071a027a/app/libraries/ExperimentUtilities.php
----------------------------------------------------------------------
diff --git a/app/libraries/ExperimentUtilities.php 
b/app/libraries/ExperimentUtilities.php
index 32f4323..3b803b5 100755
--- a/app/libraries/ExperimentUtilities.php
+++ b/app/libraries/ExperimentUtilities.php
@@ -948,6 +948,12 @@ class ExperimentUtilities
         $expVal["taskStates"] = TaskState::$__names;
         $expVal["taskTypes"] = TaskTypes::$__names;
 
+        if(Config::get('pga_config.airavata')["data-sharing-enabled"]) {
+            $can_write = 
SharingUtilities::userCanWrite(Session::get("username"), 
$experiment->experimentId, ResourceType::EXPERIMENT);
+        } else {
+            $can_write = true;
+        }
+
 
         if( is_array( $experiment->experimentStatus ) )
             $experimentStatusString = 
$expVal["experimentStates"][$experiment->experimentStatus[0]->state];
@@ -956,15 +962,6 @@ class ExperimentUtilities
         }
 
         $expVal["experimentStatusString"] = $experimentStatusString;
-        if ( $experimentStatusString == ExperimentState::FAILED)
-            $expVal["editable"] = false;
-
-        $expVal["cancelable"] = false;
-        if ( $experimentStatusString == ExperimentState::LAUNCHED
-            || $experimentStatusString == ExperimentState::EXECUTING)
-            $expVal["cancelable"] = true;
-
-
         if ($experiment->experimentStatus != null) {
             $experimentStatus = $experiment->experimentStatus;
 
@@ -999,7 +996,7 @@ class ExperimentUtilities
             case 'CREATED':
             case 'VALIDATED':
             case 'SCHEDULED':
-                $expVal["editable"] = true;
+                $expVal["editable"] = true && $can_write;
                 break;
             default:
                 $expVal["editable"] = false;
@@ -1012,7 +1009,7 @@ class ExperimentUtilities
             case 'SCHEDULED':
             case 'LAUNCHED':
             case 'EXECUTING':
-                $expVal["cancelable"] = true;
+                $expVal["cancelable"] = true && $can_write;
                 break;
             default:
                 $expVal["cancelable"] = false;

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/071a027a/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 d66e8b7..8236a49 100644
--- a/app/views/partials/experiment-info.blade.php
+++ b/app/views/partials/experiment-info.blade.php
@@ -217,7 +217,7 @@
 
         <div class="form-group">
         @if(Config::get('pga_config.airavata')["data-sharing-enabled"])
-            @if($can_write === true)
+            @if($is_owner)
             <!-- Only allow editing sharing here if the experiment isn't 
editable -->
             @include('partials/sharing-display-body', array("form" => 
!$expVal["editable"]))
             @else
@@ -235,8 +235,8 @@
                class="btn btn-default" onclick="return confirm('Are you sure 
you want to cancel this experiment?')"
                role="button"
                title="Cancel experiment" @if (!$expVal["cancelable"]) 
style="display: none" @endif>
-                <input name="cancel" type="submit" class="btn btn-warning"
-                       value="Cancel" <?php if (!$expVal["cancelable"]) echo 
'disabled'; ?> >
+                <span class="glyphicon glyphicon-remove"></span>
+                Cancel
             </a>
 <!--            <input name="clone"-->
 <!--                   type="submit"-->
@@ -253,8 +253,6 @@
                 Clone
             </a>
             <input type="hidden" name="expId" value="{{ Input::get('expId') 
}}"/>
-            @if(Config::get('pga_config.airavata')["data-sharing-enabled"])
-            @if($can_write === true)
             <a href="{{URL::to('/') }}/experiment/edit?expId={{ 
$experiment->experimentId }}&savedExp=true"
                class="btn btn-default"
                role="button"
@@ -262,10 +260,7 @@
                 <span class="glyphicon glyphicon-pencil"></span>
                 Edit
             </a>
-            @endif
-            @endif
-            <!-- Only owner can update sharing -->
-            @if(Config::get('pga_config.airavata')["data-sharing-enabled"] && 
Session::get('username') === $experiment->userName && !$expVal["editable"])
+            @if(Config::get('pga_config.airavata')["data-sharing-enabled"] && 
$is_owner && !$expVal["editable"])
             <button name="update-sharing"
                    type="submit"
                    class="btn btn-primary"
@@ -361,8 +356,8 @@
 </div>
 @endif
 
-@if(Config::get('pga_config.airavata')["data-sharing-enabled"] and 
isset($can_write))
-    @if($can_write === true)
+@if(Config::get('pga_config.airavata')["data-sharing-enabled"] and 
isset($is_owner))
+    @if($is_owner)
     @include('partials/sharing-form-modal')
     @endif
 @endif

Reply via email to