Addition of user count info in warning before deleting a role.

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

Branch: refs/heads/master
Commit: d7b2ab01b65ae7b6b6f82af7c9b5b5c78db56637
Parents: 944b359
Author: Nipurn Doshi <[email protected]>
Authored: Wed Jan 27 14:49:35 2016 -0500
Committer: Nipurn Doshi <[email protected]>
Committed: Wed Jan 27 14:49:35 2016 -0500

----------------------------------------------------------------------
 app/controllers/AdminController.php    | 44 ++++++++++-------------------
 app/routes.php                         |  2 ++
 app/views/admin/manage-roles.blade.php | 39 +++++++++++++++++++++++--
 3 files changed, 53 insertions(+), 32 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/d7b2ab01/app/controllers/AdminController.php
----------------------------------------------------------------------
diff --git a/app/controllers/AdminController.php 
b/app/controllers/AdminController.php
index 5b40f86..54b92e1 100644
--- a/app/controllers/AdminController.php
+++ b/app/controllers/AdminController.php
@@ -13,21 +13,15 @@ class AdminController extends BaseController {
        }
 
        public function addAdminSubmit(){
-               $this->beforeFilter('verifyadmin');
                WSIS::update_user_roles( Input::get("username"), array( 
"new"=>array("admin"), "deleted"=>array() ) );
 
                return View::make("account/admin-dashboard")->with("message", 
"User has been added to Admin.");
        }
 
        public function usersView(){
-               $this->beforeFilter('verifyadmin');
                if( Input::has("role"))
                {
-                       $users = WSIS::getUserlistOfRole(Input::get("role"));
-                       if( isset( $users->return))
-                       $users = $users->return;
-                   else
-                       $users = array();
+                       $users = AdminController::getUsersWithRole( 
Input::get("role"));
                }
                else
                $users =  WSIS::listUsers();
@@ -35,11 +29,14 @@ class AdminController extends BaseController {
            $roles = WSIS::getAllRoles();
         Session::put("admin-nav", "manage-users");
            return View::make("admin/manage-users", array("users" => $users, 
"roles" => $roles));
+       }
 
+       public function getUserCountInRole(){
+                       $users = AdminController::getUsersWithRole( 
Input::get("role"));
+                       return count( $users);
        }
 
     public function searchUsersView(){
-               $this->beforeFilter('verifyadmin');
         if(Input::has("search_val"))
         {
             $users =  WSIS::searchUsers(Input::get("search_val"));
@@ -57,7 +54,6 @@ class AdminController extends BaseController {
     }
 
     public function gatewayView(){
-               $this->beforeFilter('verifyadmin');
        //only for super admin
                //Session::put("super-admin", true);
                $crData = CRUtilities::getEditCRData();
@@ -81,7 +77,6 @@ class AdminController extends BaseController {
     }
 
        public function addGatewayAdminSubmit(){
-               $this->beforeFilter('verifyadmin');
                //check if username exists
                if(WSIS::usernameExists( Input::get("username")) )
                {
@@ -95,33 +90,28 @@ class AdminController extends BaseController {
        }
 
        public function rolesView(){
-               $this->beforeFilter('verifyadmin');
                $roles = WSIS::getAllRoles();
         Session::put("admin-nav", "manage-roles");
         return View::make("admin/manage-roles", array("roles" => $roles));
        }
 
        public function experimentsView(){
-               $this->beforeFilter('verifyadmin');
         Session::put("admin-nav", "exp-statistics");
                return View::make("admin/manage-experiments" );
        }
 
        public function resourcesView(){
-               $this->beforeFilter('verifyadmin');
                $data = CRUtilities::getBrowseCRData(false);
                $allCRs = $data["crObjects"];
                return View::make("admin/manage-resources", array("resources" 
=> $allCRs) );
        }
 
        public function addRole(){
-               $this->beforeFilter('verifyadmin');
                WSIS::addRole( Input::get("role") );
                return Redirect::to("admin/dashboard/roles")->with( "message", 
"Role has been added.");
        }
 
     public function addRolesToUser(){
-               $this->beforeFilter('verifyadmin');
         $currentRoles = (array)WSIS::getUserRoles(Input::get("username"));
         $roles["new"] = array_diff(Input::all()["roles"], $currentRoles);
         $roles["deleted"] = array_diff($currentRoles, Input::all()["roles"]);
@@ -142,7 +132,6 @@ class AdminController extends BaseController {
     }
 
     public function removeRoleFromUser(){
-               $this->beforeFilter('verifyadmin');
         $roles["deleted"] = array(Input::all()["roleName"]);
         $roles["new"] = array();
         $username = Input::all()["username"];
@@ -151,19 +140,16 @@ class AdminController extends BaseController {
     }
 
        public function getRoles(){
-               $this->beforeFilter('verifyadmin');
                return 
json_encode((array)WSIS::getUserRoles(Input::get("username")));
        }
 
        public function deleteRole(){
-               $this->beforeFilter('verifyadmin');
                WSIS::deleteRole( Input::get("role") );
                return Redirect::to("admin/dashboard/roles")->with( "message", 
"Role has been deleted.");
 
        }
 
        public function credentialStoreView(){
-               $this->beforeFilter('verifyadmin');
         Session::put("admin-nav", "credential-store");
         $tokens = AdminUtilities::get_all_ssh_tokens();
         //var_dump( $tokens); exit;
@@ -171,7 +157,6 @@ class AdminController extends BaseController {
        }
 
        public function updateUserRoles(){
-               $this->beforeFilter('verifyadmin');
                if( Input::has("add"))
                        return WSIS::updateUserRoles(Input::get("username"), 
array("new"=> Input::get("roles"), "deleted" => array() ) );
                else
@@ -182,7 +167,6 @@ class AdminController extends BaseController {
        /* ---- Super Admin Functions ------- */
 
        public function addGateway(){
-               $this->beforeFilter('verifyadmin');
                $inputs = Input::all();
 
         $gateway = AdminUtilities::add_gateway(Input::all());
@@ -198,7 +182,6 @@ class AdminController extends BaseController {
 
     public function experimentStatistics()
     {
-               $this->beforeFilter('verifyadmin');
         if (Request::ajax()) {
             $inputs = Input::all();
             $expStatistics = 
AdminUtilities::get_experiment_execution_statistics(strtotime($inputs['fromTime'])
 * 1000
@@ -209,7 +192,6 @@ class AdminController extends BaseController {
 
     public function getExperimentsOfTimeRange()
     {
-               $this->beforeFilter('verifyadmin');
         if (Request::ajax()) {
             $inputs = Input::all();
             $expContainer = 
AdminUtilities::get_experiments_of_time_range($inputs);
@@ -223,7 +205,6 @@ class AdminController extends BaseController {
     }
 
     public function enableComputeResource(){
-               $this->beforeFilter('verifyadmin');
         $resourceId = Input::get("resourceId");
         $computeResource = CRUtilities::get_compute_resource($resourceId);
         $computeResource->enabled = true;
@@ -231,7 +212,6 @@ class AdminController extends BaseController {
     }
 
     public function disableComputeResource(){
-               $this->beforeFilter('verifyadmin');
         $resourceId = Input::get("resourceId");
         $computeResource = CRUtilities::get_compute_resource($resourceId);
         $computeResource->enabled = false;
@@ -239,7 +219,6 @@ class AdminController extends BaseController {
     }
 
     public function enableStorageResource(){
-               $this->beforeFilter('verifyadmin');
         $resourceId = Input::get("resourceId");
         $storageResource = SRUtilities::get_storage_resource($resourceId);
         $storageResource->enabled = true;
@@ -247,7 +226,6 @@ class AdminController extends BaseController {
     }
 
     public function disableStorageResource(){
-               $this->beforeFilter('verifyadmin');
         $resourceId = Input::get("resourceId");
         $storageResource = SRUtilities::get_storage_resource($resourceId);
         $storageResource->enabled = false;
@@ -256,7 +234,6 @@ class AdminController extends BaseController {
 
 
        public function createSSH(){
-               $this->beforeFilter('verifyadmin');
                $newToken = AdminUtilities::create_ssh_token();
                $pubkey = AdminUtilities::get_pubkey_from_token( $newToken);
                return Response::json( array( "token" => $newToken, "pubkey" => 
$pubkey));
@@ -264,7 +241,6 @@ class AdminController extends BaseController {
        }
 
        public function removeSSH(){
-               $this->beforeFilter('verifyadmin');
                $removeToken = Input::get("token");
                if( AdminUtilities::remove_ssh_token( $removeToken) )
                        return 1;
@@ -273,4 +249,14 @@ class AdminController extends BaseController {
 
        }
 
+       public function getUsersWithRole( $role){
+                       $users = WSIS::getUserlistOfRole( $role);
+                       if( isset( $users->return))
+                       $users = $users->return;
+                   else
+                       $users = array();
+
+                   return $users;
+       }
+
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/d7b2ab01/app/routes.php
----------------------------------------------------------------------
diff --git a/app/routes.php b/app/routes.php
index a180cba..60c8832 100755
--- a/app/routes.php
+++ b/app/routes.php
@@ -234,6 +234,8 @@ Route::get("manage/users", "AdminController@usersView");
 
 Route::post("admin/adduser", "AdminController@addAdminSubmit");
 
+Route::get("admin/getusercountinrole", "AdminController@getUserCountInRole");
+
 Route::post("admin/addgatewayadmin", "AdminController@addGatewayAdminSubmit");
 
 Route::post("admin/add-role", "AdminController@addRole");

http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/d7b2ab01/app/views/admin/manage-roles.blade.php
----------------------------------------------------------------------
diff --git a/app/views/admin/manage-roles.blade.php 
b/app/views/admin/manage-roles.blade.php
index 3bdc278..f78283e 100644
--- a/app/views/admin/manage-roles.blade.php
+++ b/app/views/admin/manage-roles.blade.php
@@ -96,13 +96,18 @@
                     <h3 class="text-center">Delete Role Confirmation</h3>
                 </div>
                 <div class="modal-body">
+                    <div class="loading-count">
+                        <img src="{{URL::to('/')}}/assets/ajax-loader.gif"/>
+                    </div>
+                    <div class="delete-warning-text hide">
                     <input type="hidden" class="form-control delete-roleName" 
name="role"/>
-                    Do you really want to delete the role - <span 
class="delete-role-name"></span>
+                    <h4 class="alert alert-warning"><span 
class="role-user-count"> 0 </span> users currently have the role - <span 
class="delete-role-name"></span>. Do you really want to delete this role? 
</span></h2>
+                    </div>
                 </div>
                 <div class="modal-footer">
                     <div class="form-group">
                         <input type="submit" class="btn btn-danger" 
value="Delete"/>
-                        <input type="button" class="btn btn-default" 
data-dismiss="modal" value="Cancel"/>
+                        <input type="button" class="btn btn-default 
cancel-delete-role" data-dismiss="modal" value="Cancel"/>
                     </div>
                 </div>
             </div>
@@ -137,10 +142,38 @@
     });
 
     $(".delete-role").click(function () {
-        $("#delete-role-block").modal("show");
         var roleName = $(this).parent().parent().find(".role-name").html();
+        $(".loading-count")
+        $.ajax({
+            type: "GET",
+            url: "{{URL::to('/')}}/admin/getusercountinrole",
+            data: {
+                role: roleName
+            }
+        }).success( function( data){
+            data = parseInt(data);
+            if( data === parseInt(data, 10)){
+                $(".role-user-count").html( data);
+                $(".loading-count").addClass("hide");
+                $(".delete-warning-text").removeClass("hide");
+            }
+            else{
+                $(".loading-count").after("<h4 class='problem-retrieving-count 
alert alert-warning'>There was a problem retrieving number of users connected 
with this role. Do you still want to delete the role - " + roleName + "?</h4>");
+                $(".loading-count").addClass("hide");
+            }
+        }).error( function(){
+            $(".loading-count").after("<h4 class='problem-retrieving-count 
alert alert-warning'>There was a problem retrieving number of users connected 
with this role. Do you still want to delete the role - " + roleName + "?</h4>");
+            $(".loading-count").addClass("hide");
+        });
+        $("#delete-role-block").modal("show");
         $(".delete-role-name").html(roleName);
         $(".delete-roleName").val(roleName);
     });
+
+    $(".cancel-delete-role").click( function(){
+            $(".loading-count").removeClass("hide");
+            $(".delete-warning-text").addClass("hide");
+            $(".problem-retrieving-count").remove();
+    });
 </script>
 @stop
\ No newline at end of file

Reply via email to