Merge "Fix sql injection vulnerability"
[portal.git] / ecomp-portal-FE-common / client / app / views / users / new-user-dialogs / new-user.controller.js
index 6550a1e..3df58da 100644 (file)
@@ -1,21 +1,39 @@
 /*-
- * ================================================================================
- * ECOMP Portal
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
+ * ============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
- * 
+ *
+ *             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============================================
+ *
+ * 
  */
 /**
  * Created by nnaffar on 12/20/15.
 'use strict';
 (function () {
     class NewUserModalCtrl {
-        constructor($scope, $log, usersService, applicationsService, confirmBoxService) {
+        constructor($scope, $log, usersService, applicationsService, confirmBoxService, items) {
             var extRequestValue = false;
+            var isSystemUser = false;
+
+            $scope.ngRepeatDemo = [
+                       {id: 'userButton', value: 'true', labelvalue: 'user'},
+                       {id: 'systemUserButton', value: 'false', labelvalue: 'system'}
+                   ]
+            
+            $scope.selectedvalueradioButtonGroup = {
+                               type: 'true'
+                           }
+            
+            
             let init = () => {
                 //$log.info('NewUserModalCtrl::init');
                 this.isSaving = false;
                 this.anyChanges = false;
                 this.adminApps = [];
                 this.isGettingAdminApps = false;
-                if($scope.ngDialogData && $scope.ngDialogData.selectedUser && $scope.ngDialogData.dialogState){
-                    this.selectedUser = $scope.ngDialogData.selectedUser;
-                    this.dialogState = $scope.ngDialogData.dialogState;
+                if(items && items.selectedUser && items.dialogState){
+                    this.selectedUser = items.selectedUser;
+                    this.dialogState = items.dialogState;
                     this.isShowBack = false;
                     if(this.dialogState === 3){
                         this.getUserAppsRoles();
                     this.dialogState = 1;
                     return;
                 }
-                //$log.debug('NewUserModalCtrl::getUserAppsRoles: about to call getAdminAppsSimpler');
+                $log.debug('NewUserModalCtrl::getUserAppsRoles: about to call getAdminAppsSimpler');
                 this.isGettingAdminApps = true;
                 applicationsService.getAdminAppsSimpler().then((apps) => {
                     //$log.debug('NewUserModalCtrl::getUserAppsRoles: beginning of then for getAdminAppsSimpler');
                         app.isErrorUpdating = false;
                         app.isDoneUpdating = false;
                         app.errorMessage = "";
-                        usersService.getUserAppRoles(app.id, this.selectedUser.orgUserId, extRequestValue).promise().then((userAppRolesResult) => {
+                        if($scope.selectedvalueradioButtonGroup.type == 'false')
+                               {
+                                  isSystemUser = true;
+                               }
+                        usersService.getUserAppRoles(app.id, this.selectedUser.orgUserId, extRequestValue,isSystemUser).promise().then((userAppRolesResult) => {
                             //$log.debug('NewUserModalCtrl::getUserAppsRoles: got a result for app: ',app.id,': ',app.name,': ',userAppRolesResult);
                             app.appRoles = userAppRolesResult;
                             app.isLoading = false;
+                            for(var i=0;i<app.appRoles.length;i++){
+                                
+                               if(app.appRoles[i].roleName.indexOf('global_')!=-1){
+                                       app.appRoles[i].roleName='*'+app.appRoles[i].roleName;
+                                                       
+                                               }
+                                }
 
                         }).catch(err => {
                             $log.error(err);
                     if (app.isChanged) {
                         //$log.debug('NewUserModalCtrl::updateUserAppsRoles: app roles have changed; going to update: id: ', app.id, '; name: ', app.name);
                         app.isUpdating = true;
+                        for(var i=0;i<app.appRoles.length;i++){
+                          if(app.appRoles[i].roleName.indexOf('*global_')!=-1){
+                                       app.appRoles[i].roleName=app.appRoles[i].roleName.replace('*','');
+                                                       
+                                               }
+                            }
+                        if($scope.selectedvalueradioButtonGroup.type == 'false')
+                       {
+                          isSystemUser = true;
+                       }else{
+                               isSystemUser = false;
+                       }
                         var newUserAppRoles = {
                                orgUserId: this.selectedUser.orgUserId,
                                appId: app.id, 
                                appRoles: app.appRoles,
-                               appName: app.name
+                               appName: app.name,
+                               isSystemUser : isSystemUser
                         }; 
                         usersService.updateUserAppRoles(newUserAppRoles).promise()
                         .then(res => {
                             app.isDoneUpdating = true;
                             this.numberAppsSucceeded++;
                         }).catch(err => {
-                            $log.error(err);
-                            app.isErrorUpdating = true;
+                               $log.error(err);                       
+                            var errorMessage = 'Failed to update the user application roles: ' + err;
+                            if(err.status == 504){ 
+                               this.numberAppsSucceeded++;
+                               errorMessage = 'Request is being processed, please check back later!';
+                            } else{
+                               app.isErrorUpdating = true;
+                            }
                             confirmBoxService.showInformation(
-                                       'Failed to update the user application roles: ' + err.status)
-                                       .then(isConfirmed => {});
+                                       errorMessage)
+                                       .then(isConfirmed => {});                       
                         }).finally(()=>{
                             this.numberAppsProcessed++;
                             if (this.numberAppsProcessed === this.adminApps.length) {
                                 this.isSaving = false; // hide the spinner
                             }
                             if (this.numberAppsSucceeded === this.adminApps.length) {
-                                $scope.closeThisDialog(true);//close and resolve dialog promise with true (to update the table)
+                               $scope.$dismiss('cancel');//close and resolve dialog promise with true (to update the table)
                             }
                         })
                     } else {
                             this.isSaving = false; // hide the spinner
                         }
                         if (this.numberAppsSucceeded === this.adminApps.length) {
-                            $scope.closeThisDialog(true);//close and resolve dialog promise with true (to update the table)
+                               $scope.$dismiss('cancel');//close and resolve dialog promise with true (to update the table)
                         }
                     }
                 });
             });
         }
     }
-    NewUserModalCtrl.$inject = ['$scope', '$log', 'usersService', 'applicationsService', 'confirmBoxService'];
+    NewUserModalCtrl.$inject = ['$scope', '$log', 'usersService', 'applicationsService', 'confirmBoxService', 'items'];
     angular.module('ecompApp').controller('NewUserModalCtrl', NewUserModalCtrl);
 })();