Merge "Fix sql injection vulnerability"
[portal.git] / ecomp-portal-FE-common / client / app / views / role / role-controller.js
index c5c7c97..7be5118 100644 (file)
-/*-\r
- * ================================================================================\r
- * ECOMP Portal\r
- * ================================================================================\r
- * Copyright (C) 2017 AT&T Intellectual Property\r
- * ================================================================================\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- * \r
- *      http://www.apache.org/licenses/LICENSE-2.0\r
- * \r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- * ================================================================================\r
- */\r
-\r
-app.controller('roleController', function ($scope, $http, confirmBoxService, ngDialog, RoleService, conf, $stateParams){\r
-       //$scope.role=${role};\r
-               \r
-       $( "#dialogRoleFunction" ).hide();\r
-       $( "#dialogChildRole" ).hide();\r
-       \r
-       //$scope.ociavailableRoleFunctions=${availableRoleFunctions};\r
-       $scope.fetchRoles = function() {\r
-       \r
-       RoleService.getRole($stateParams.roleId).then(function(data){\r
-               \r
-               var j = data;\r
-               $scope.data = JSON.parse(j.data);\r
-               \r
-               $scope.role =JSON.parse($scope.data.role);\r
-               \r
-               $scope.ociavailableRoleFunctions =JSON.parse($scope.data.availableRoleFunctions);\r
-               $scope.availableRoleFunctions=[];\r
-               \r
-               if($scope.ociavailableRoleFunctions)\r
-                       $.each($scope.ociavailableRoleFunctions, function(i, a){ \r
-                               var availableRoleFunction = a;\r
-                               availableRoleFunction.selected = false;\r
-                           $.each($scope.role.roleFunctions, function(j, b){ \r
-                               if(a.code === b.code) {\r
-                                       availableRoleFunction.selected = true;\r
-                               }\r
-                           });\r
-                           $scope.availableRoleFunctions.push(availableRoleFunction);      \r
-               });     \r
-               \r
-\r
-               $scope.ociavailableRoles=JSON.parse($scope.data.availableRoles);\r
-               $scope.availableRoles=[];\r
-               \r
-               if($scope.ociavailableRoles)\r
-                       $.each($scope.ociavailableRoles, function(i, a){ \r
-                               var availableRole = a;\r
-                               availableRole.selected = false;\r
-                               if($scope.role.childRoles){\r
-                           $.each($scope.role.childRoles, function(j, b){ \r
-                               if(a.id === b.id) {\r
-                                       availableRole.selected = true;\r
-                               }\r
-                           });\r
-                               };\r
-                           $scope.availableRoles.push(availableRole);      \r
-               });\r
-                       \r
-       \r
-       },function(error){\r
-               console.log("RoleService.getRole failed", error);\r
-               //reloadPageOnce();\r
-       });\r
-       }\r
-       \r
-       $scope.fetchRoles();\r
-\r
-       $scope.saveRole = function() {\r
-                               var exists = false,x;   \r
-                               for(x in $scope.availableRoles){\r
-                                       if($scope.availableRoles[x].name==$scope.role.name){\r
-                                               exists = true;\r
-                                               //$modalInstance.close({availableRoleFunctions:message.availableRoleFunctions});\r
-                                       }\r
-                               }\r
-                               if (exists) {\r
-                                       confirmBoxService.showInformation( "Role already exists.");\r
-                               }\r
-                               else {\r
-                                       var uuu = conf.api.saveRole + "?role_id="+$stateParams.roleId;\r
-                                       var postData = {\r
-                                                       role: $scope.role, \r
-                                                       childRoles: $scope.role.childRoles,\r
-                                                       roleFunctions : $scope.role.roleFunctions\r
-                                       };\r
-                                       $http.post(uuu, JSON.stringify(postData)).then(function(res) {\r
-                                               // console.log('roleController::saveRole: ' + JSON.stringify(res));\r
-                                               if (res && res.data && res.data.role)\r
-                                                       confirmBoxService.showInformation("Update Successful.");\r
-                                               else\r
-                                                       confirmBoxService.showInformation('Failed to create role: ' + res.data.error)\r
-                                       },\r
-                                       function(res){\r
-                                               console.log('post failed', res.data);\r
-                                               confirmBoxService.showInformation("Error while saving.");\r
-                                       }\r
-                                       );\r
-                               }\r
-                       };\r
-               \r
-       $scope.addNewRoleFunctionModalPopup = function() {\r
-                       var modalInstance = ngDialog.open({\r
-                           templateUrl: 'app/views/role/role_functions_popup.html',\r
-                           controller: 'rolepopupController',\r
-                           \r
-                           resolve: {\r
-                               roleId: function () {\r
-                                         return $stateParams.roleId;\r
-                                       },\r
-                               role: function () {\r
-                                 return $scope.role;\r
-                               },\r
-                               availableRoles: function () {\r
-                                         return $scope.ociavailableRoles;\r
-                                   },\r
-                                   availableRoleFunctions: function () {\r
-                                         return $scope.ociavailableRoleFunctions;\r
-                                   },\r
-                             }\r
-                         });\r
-                        modalInstance.closePromise.then(response => {\r
-                                       if($stateParams.roleId === '0'){\r
-                                               return $scope.role;\r
-                                       }else{\r
-                                               $scope.fetchRoles();\r
-                                       }\r
-                  // $scope.role=response.role;\r
-               });\r
-       };\r
-               \r
-        $scope.addNewChildRoleModalPopup = function() {\r
-                       var modalInstance = ngDialog.open({\r
-                           templateUrl: 'app/views/role/role_childrole_popup.html',\r
-                           controller: 'rolepopupController',\r
-                         \r
-                           resolve: {\r
-                               roleId: function () {\r
-                                         return $stateParams.roleId;\r
-                                       },\r
-                               role: function () {\r
-                                 return $scope.role;\r
-                               },\r
-                               availableRoles: function () {\r
-                                         return $scope.ociavailableRoles;\r
-                                   },\r
-                                   availableRoleFunctions: function () {\r
-                                         return $scope.ociavailableRoleFunctions;\r
-                                   },\r
-                             }\r
-                         }).closePromise.then(function(response){\r
-                                       if($stateParams.roleId === '0'){\r
-                                                return $scope.role;\r
-                                       }else{\r
-                                   $scope.fetchRoles();\r
-                                       }\r
-                   //$scope.role=response.role;\r
-               });\r
-               };\r
-               \r
-               $scope.removeRoleFunction = function(roleFunction) {\r
-                       confirmBoxService.confirm("You are about to remove the role function "+roleFunction.name+" from the role for "+$scope.role.name+". Do you want to continue?").then(\r
-                               function(confirmed){\r
-                                               var uuu = conf.api.toggleRoleRoleFunction + "?role_id=" + $stateParams.roleId;\r
-                                                 var postData={roleFunction:roleFunction};\r
-                                                       if(confirmed) { \r
-                                                               $http.post(uuu, postData).then(\r
-                                                                               function(response) {\r
-                                                                                       $scope.role= response.data.role;\r
-                                                                                       $.each($scope.availableRoleFunctions, function(k, c){ \r
-                                                                                       if(c.code === roleFunction.code) {\r
-                                                                                               c.selected = false;\r
-                                                                                       }\r
-                                                                                   });\r
-                                                                               }, \r
-                                                                               function(response) {\r
-                                                                                       confirmBoxService.showInformation("Error while saving.");\r
-                                                                               }\r
-                                                               );                                                                      \r
-                                                               }\r
-                               \r
-               });\r
-               \r
-               };\r
-               \r
-               $scope.removeChildRole = function(childRole) {\r
-                       confirmBoxService.confirm("You are about to remove the child role "+childRole.name+" from the role for "+$scope.role.name+". Do you want to continue?").then(\r
-                               function(confirmed){\r
-                                       var uuu = conf.api.toggleRoleChildRole + "?role_id=" + $stateParams.roleId;\r
-                                         var postData={childRole:childRole};\r
-                                         if(confirmed) {\r
-                                                         $http.post(uuu,postData).then( function(response) {\r
-                                                                 $scope.role=response.data.role;\r
-                                                                 $.each($scope.availableRoles, function(k, c){ \r
-                                                                       if(c.id === childRole.id) {\r
-                                                                               c.selected = false;\r
-                                                                       }\r
-                                                                   });\r
-                                                                 },\r
-                                                                 \r
-                                                                 function(data) {\r
-                                                                         confirmBoxService.showInformation("Error while saving.");\r
-                                                                 });\r
-                                               }                               \r
-               });\r
-                       \r
-               };\r
-               \r
-});\r
+/*-
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *             http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *             https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ============LICENSE_END============================================
+ *
+ * 
+ */
+
+
+app.controller('roleController', function ($scope, $http, confirmBoxService, ngDialog, RoleService, conf, $stateParams,$modal,utilsService){
+       //$scope.role=${role};
+               
+       $( "#dialogRoleFunction" ).hide();
+       $( "#dialogChildRole" ).hide();
+       $scope.routeRoleId = $stateParams.roleId;
+
+       // $scope.ociavailableRoleFunctions=${availableRoleFunctions};
+       $scope.fetchRoles = function() {
+               $scope.isLoadingRoleFunctions = true;
+               utilsService.showLoadingLayer(); // show the loading layer
+               RoleService.getRole($stateParams.roleId).then(function(data){
+                       if(data==null || data ==''){
+                               var msg={
+                                               content:'Something is wrong. Please contact the administrator for more information'
+                               };
+                               confirmBoxService.reloadPageConfirm(msg);
+                       }else{
+                               var j = data;
+                               $scope.data = JSON.parse(j.data);
+                               $scope.role =JSON.parse($scope.data.role);
+                               $scope.routeRoleId = $stateParams.roleId;
+                               $scope.ociavailableRoleFunctions =JSON.parse($scope.data.availableRoleFunctions);
+                               $scope.isGlobalRoleChecked=($scope.role.name.indexOf('global_')==-1)?false:true;
+                               
+                               $scope.availableRoleFunctions=[];
+
+                               if($scope.ociavailableRoleFunctions)
+                                       $.each($scope.ociavailableRoleFunctions, function(i, a){ 
+                                               var availableRoleFunction = a;
+                                               availableRoleFunction.selected = false;
+                                               $.each($scope.role.roleFunctions, function(j, b){ 
+                                                       if(a.code === b.code) {
+                                                               availableRoleFunction.selected = true;
+                                                       }
+                                               });
+                                               $scope.availableRoleFunctions.push(availableRoleFunction);          
+                                       });     
+                               $scope.ociavailableRoles=JSON.parse($scope.data.availableRoles);
+                               $scope.availableRoles=[];
+
+                               if($scope.ociavailableRoles)
+                                       $.each($scope.ociavailableRoles, function(i, a){ 
+                                               var availableRole = a;
+                                               availableRole.selected = false;
+                                               if($scope.role.childRoles){
+                                                       $.each($scope.role.childRoles, function(j, b){ 
+                                                               if(a.id === b.id) {
+                                                                       availableRole.selected = true;
+                                                               }
+                                                       });
+                                               };
+                                               $scope.availableRoles.push(availableRole);          
+                                       });
+                       }
+               },function(error){
+                       console.log("RoleService.getRole failed", error);
+               }).finally(function(){
+                       utilsService.hideLoadingLayer();
+                       $scope.isLoadingRoleFunctions = false;
+               });
+       }
+       
+       $scope.fetchRoles();
+
+       $scope.isGlobalRoleChecked;
+
+       $scope.saveRole = function() {
+                               var exists = false,x;   
+                               for(x in $scope.availableRoles){
+                                       if($scope.availableRoles[x].name==$scope.role.name){
+                                               exists = true;
+                                               // $modalInstance.close({availableRoleFunctions:message.availableRoleFunctions});
+                                       }
+                               }
+                               if (exists) {
+                                       confirmBoxService.showInformation( "Role already exists.");
+                               } else if($scope.role.name.toLowerCase() == "admin"){
+                                       confirmBoxService.showInformation( "Role '"+$scope.role.name+"' is not acceptable.");
+                               }
+                               else {
+                                       var uuu = conf.api.saveRole + "?role_id="+$stateParams.roleId;
+                                       if($scope.isGlobalRoleChecked ){
+                                               $scope.role.name = ($scope.role.name.indexOf('global_')==-1)?('global_'+$scope.role.name):($scope.role.name);
+                                               
+                                       }else{
+                                               $scope.role.name=$scope.role.name.replace('global_','');
+                                       }
+                                       for(let key in $scope.role.roleFunctions){
+                                               if($scope.role.roleFunctions[key].hasOwnProperty('selected')){
+                                                       delete $scope.role.roleFunctions[key].selected;
+                                               }
+                                       }
+                                       var postData = {
+                                                       role: $scope.role, 
+                                                       childRoles: $scope.role.childRoles,
+                                                       roleFunctions : $scope.role.roleFunctions
+                                       };
+                                       $http.post(uuu, JSON.stringify(postData,$stateParams.roleId)).then(function(res) {
+                                               // console.log('roleController::saveRole: ' +
+                                               // JSON.stringify(res));
+                                               if (res && res.data && res.data.role){
+                                                       confirmBoxService.showInformation("Update Successful.");
+                                                       $scope.routeRoleId = res.role;
+                                                       $scope.isSaveClicked=true;
+                                                       $scope.role='';
+                                               }
+                                               
+                                               else{
+                                                       confirmBoxService.showInformation('Failed to create role: ' + res.data.error)
+                                               }
+                                       },
+                                       function(res){
+                                               console.log('post failed', res.data);
+                                               confirmBoxService.showInformation("Error while saving.");
+                                       }
+                                       );
+                               }
+                       };
+               
+       $scope.addNewRoleFunctionModalPopup = function() {
+               var modalInstance = $modal.open({
+            templateUrl: 'app/views/role/role_functions_popup.html',
+            controller: 'rolepopupController',
+            sizeClass: 'modal-medium',
+            resolve: {
+               roleId: function () {
+                                 return $stateParams.roleId;
+                               },
+                       role: function () {
+                         return $scope.role;
+                       },
+                       availableRoles: function () {
+                                 return $scope.ociavailableRoles;
+                           },
+                           availableRoleFunctions: function () {
+                                 return $scope.ociavailableRoleFunctions;
+                           }
+            }
+        });
+       
+       modalInstance.result.finally(function () {
+           });
+       };
+               
+        $scope.addNewChildRoleModalPopup = function() {
+                  var modalInstance = $modal.open({
+                   templateUrl: 'app/views/role/role_childrole_popup.html',
+                   controller: 'rolepopupController',
+                   sizeClass: 'modal-medium',
+                   resolve: {
+                       roleId: function () {
+                                         return $stateParams.roleId;
+                                       },
+                               role: function () {
+                                 return $scope.role;
+                               },
+                               availableRoles: function () {
+                                         return $scope.ociavailableRoles;
+                                   },
+                                   availableRoleFunctions: function () {
+                                         return $scope.ociavailableRoleFunctions;
+                                   }
+                   }
+               });
+               
+               modalInstance.result.finally(function () {
+                       if($stateParams.roleId === '0'){
+                                       return $scope.role;
+                               }else{
+                                       $scope.fetchRoles();
+                               }
+                   });
+               };
+               
+               $scope.removeRoleFunction = function(roleFunction) {
+                       confirmBoxService.confirm("You are about to remove the role function "+roleFunction.name+" from the role for "+$scope.role.name+". Do you want to continue?").then(
+                               function(confirmed){
+                                                       if(confirmed) { 
+                                                               var index = $scope.role.roleFunctions.indexOf(roleFunction);
+                                                               if(index>=0)
+                                                                       $scope.role.roleFunctions.splice(index, 1);
+                                                               return;
+                                                               }
+                               
+               });
+               
+               };
+               
+               $scope.removeChildRole = function(childRole) {
+                       confirmBoxService.confirm("You are about to remove the child role "+childRole.name+" from the role for "+$scope.role.name+". Do you want to continue?").then(
+                               function(confirmed){
+                                       var uuu = conf.api.toggleRoleChildRole + "?role_id=" + $stateParams.roleId;
+                                         var postData={childRole:childRole};
+                                         if(confirmed) {
+                                                         $http.post(uuu,postData).then( function(response) {
+                                                                 $scope.role=response.data.role;
+                                                                 $.each($scope.availableRoles, function(k, c){ 
+                                                                       if(c.id === childRole.id) {
+                                                                               c.selected = false;
+                                                                       }
+                                                                   });
+                                                                 },
+                                                                 
+                                                                 function(data) {
+                                                                         confirmBoxService.showInformation("Error while saving.");
+                                                                 });
+                                               }                               
+               });
+                       
+               };
+               
+});