1afc8a799Smiramurali23/** 2afc8a799Smiramurali23 * Controller for user Accounts 3afc8a799Smiramurali23 * 4afc8a799Smiramurali23 * @module app/access-control 5afc8a799Smiramurali23 * @exports userController 6afc8a799Smiramurali23 * @name userController 7afc8a799Smiramurali23 */ 8afc8a799Smiramurali23 9afc8a799Smiramurali23window.angular && (function(angular) { 10afc8a799Smiramurali23 'use strict'; 11afc8a799Smiramurali23 12afc8a799Smiramurali23 angular.module('app.accessControl').controller('userController', [ 13afc8a799Smiramurali23 '$scope', 'APIUtils', 'toastService', '$uibModal', '$q', 14afc8a799Smiramurali23 function($scope, APIUtils, toastService, $uibModal, $q) { 15afc8a799Smiramurali23 $scope.loading; 16afc8a799Smiramurali23 $scope.accountSettings; 17afc8a799Smiramurali23 $scope.userRoles; 18afc8a799Smiramurali23 $scope.localUsers; 19afc8a799Smiramurali23 20afc8a799Smiramurali23 $scope.tableData = []; 21afc8a799Smiramurali23 $scope.tableHeader = [ 22afc8a799Smiramurali23 {label: 'Username'}, {label: 'Privilege'}, {label: 'Account status'} 23afc8a799Smiramurali23 ]; 24afc8a799Smiramurali23 $scope.tableBatchActions = [ 25afc8a799Smiramurali23 {type: 'delete', label: 'Remove'}, 26afc8a799Smiramurali23 {type: 'enable', label: 'Enable'}, 27afc8a799Smiramurali23 {type: 'disable', label: 'Disable'}, 28afc8a799Smiramurali23 ]; 29afc8a799Smiramurali23 30afc8a799Smiramurali23 /** 31afc8a799Smiramurali23 * Returns true if username is 'root' 32afc8a799Smiramurali23 * @param {*} user 33afc8a799Smiramurali23 */ 34afc8a799Smiramurali23 function checkIfRoot(user) { 35afc8a799Smiramurali23 return user.UserName === 'root' ? true : false; 36afc8a799Smiramurali23 } 37afc8a799Smiramurali23 38afc8a799Smiramurali23 /** 39afc8a799Smiramurali23 * Data table mapper 40afc8a799Smiramurali23 * @param {*} user 41afc8a799Smiramurali23 * @returns user 42afc8a799Smiramurali23 */ 43afc8a799Smiramurali23 function mapTableData(user) { 44*339db9a4SPatrick Williams const accountStatus = user.Locked ? 'Locked' : 45*339db9a4SPatrick Williams user.Enabled ? 'Enabled' : 46*339db9a4SPatrick Williams 'Disabled'; 47afc8a799Smiramurali23 const editAction = {type: 'Edit', enabled: true, file: 'icon-edit.svg'}; 48afc8a799Smiramurali23 const deleteAction = { 49afc8a799Smiramurali23 type: 'Delete', 50afc8a799Smiramurali23 enabled: checkIfRoot(user) ? false : true, 51afc8a799Smiramurali23 file: 'icon-trashcan.svg' 52afc8a799Smiramurali23 }; 53afc8a799Smiramurali23 user.selectable = checkIfRoot(user) ? false : true; 54afc8a799Smiramurali23 user.actions = [editAction, deleteAction]; 55afc8a799Smiramurali23 user.uiData = [user.UserName, user.RoleId, accountStatus]; 56afc8a799Smiramurali23 return user; 57afc8a799Smiramurali23 } 58afc8a799Smiramurali23 59afc8a799Smiramurali23 /** 60afc8a799Smiramurali23 * Returns lockout method based on the lockout duration property 61afc8a799Smiramurali23 * If the lockoutDuration is greater than 0 the lockout method 62afc8a799Smiramurali23 * is automatic otherwise the lockout method is manual 63afc8a799Smiramurali23 * @param {number} lockoutDuration 64afc8a799Smiramurali23 * @returns {number} : returns the account lockout method 65afc8a799Smiramurali23 * 1(automatic) / 0(manual) 66afc8a799Smiramurali23 */ 67afc8a799Smiramurali23 function mapLockoutMethod(lockoutDuration) { 68afc8a799Smiramurali23 return lockoutDuration > 0 ? 1 : 0; 69afc8a799Smiramurali23 } 70afc8a799Smiramurali23 71afc8a799Smiramurali23 /** 72afc8a799Smiramurali23 * API call to get all user accounts 73afc8a799Smiramurali23 */ 74afc8a799Smiramurali23 function getLocalUsers() { 75afc8a799Smiramurali23 $scope.loading = true; 76afc8a799Smiramurali23 APIUtils.getAllUserAccounts() 77afc8a799Smiramurali23 .then((users) => { 78afc8a799Smiramurali23 $scope.localUsers = users; 79afc8a799Smiramurali23 $scope.tableData = users.map(mapTableData); 80afc8a799Smiramurali23 }) 81afc8a799Smiramurali23 .catch((error) => { 82afc8a799Smiramurali23 console.log(JSON.stringify(error)); 83afc8a799Smiramurali23 toastService.error('Failed to load users.'); 84afc8a799Smiramurali23 }) 85afc8a799Smiramurali23 .finally(() => { 86afc8a799Smiramurali23 $scope.loading = false; 87afc8a799Smiramurali23 }) 88afc8a799Smiramurali23 } 89afc8a799Smiramurali23 90afc8a799Smiramurali23 /** 91afc8a799Smiramurali23 * API call to get current Account settings 92afc8a799Smiramurali23 */ 93afc8a799Smiramurali23 function getAccountSettings() { 94afc8a799Smiramurali23 APIUtils.getAllUserAccountProperties() 95afc8a799Smiramurali23 .then((settings) => { 96afc8a799Smiramurali23 $scope.accountSettings = settings; 97afc8a799Smiramurali23 }) 98afc8a799Smiramurali23 .catch((error) => { 99afc8a799Smiramurali23 console.log(JSON.stringify(error)); 100afc8a799Smiramurali23 $scope.accountSettings = null; 101afc8a799Smiramurali23 }) 102afc8a799Smiramurali23 } 103afc8a799Smiramurali23 104afc8a799Smiramurali23 /** 105afc8a799Smiramurali23 * API call to get local user roles 106afc8a799Smiramurali23 */ 107afc8a799Smiramurali23 function getUserRoles() { 108afc8a799Smiramurali23 APIUtils.getAccountServiceRoles() 109afc8a799Smiramurali23 .then((roles) => { 110afc8a799Smiramurali23 $scope.userRoles = roles; 111afc8a799Smiramurali23 }) 112afc8a799Smiramurali23 .catch((error) => { 113afc8a799Smiramurali23 console.log(JSON.stringify(error)); 114afc8a799Smiramurali23 $scope.userRoles = null; 115afc8a799Smiramurali23 }) 116afc8a799Smiramurali23 } 117afc8a799Smiramurali23 118afc8a799Smiramurali23 /** 119afc8a799Smiramurali23 * API call to create new user 120afc8a799Smiramurali23 * @param {*} user 121afc8a799Smiramurali23 */ 122afc8a799Smiramurali23 function createUser(username, password, role, enabled) { 123afc8a799Smiramurali23 $scope.loading = true; 124afc8a799Smiramurali23 APIUtils.createUser(username, password, role, enabled) 125afc8a799Smiramurali23 .then(() => { 126afc8a799Smiramurali23 getLocalUsers(); 127afc8a799Smiramurali23 toastService.success(`User '${username}' has been created.`); 128afc8a799Smiramurali23 }) 129afc8a799Smiramurali23 .catch((error) => { 130afc8a799Smiramurali23 console.log(JSON.stringify(error)); 131afc8a799Smiramurali23 toastService.error(`Failed to create new user '${username}'.`); 132afc8a799Smiramurali23 }) 133afc8a799Smiramurali23 .finally(() => { 134afc8a799Smiramurali23 $scope.loading = false; 135afc8a799Smiramurali23 }); 136afc8a799Smiramurali23 } 137afc8a799Smiramurali23 138afc8a799Smiramurali23 /** 139afc8a799Smiramurali23 * API call to update existing user 140afc8a799Smiramurali23 */ 141afc8a799Smiramurali23 function updateUser( 142afc8a799Smiramurali23 originalUsername, username, password, role, enabled, locked) { 143afc8a799Smiramurali23 $scope.loading = true; 144afc8a799Smiramurali23 APIUtils 145afc8a799Smiramurali23 .updateUser( 146afc8a799Smiramurali23 originalUsername, username, password, role, enabled, locked) 147afc8a799Smiramurali23 .then(() => { 148afc8a799Smiramurali23 getLocalUsers(); 149afc8a799Smiramurali23 toastService.success('User has been updated successfully.') 150afc8a799Smiramurali23 }) 151afc8a799Smiramurali23 .catch((error) => { 152afc8a799Smiramurali23 console.log(JSON.stringify(error)); 153afc8a799Smiramurali23 toastService.error(`Unable to update user '${originalUsername}'.`) 154afc8a799Smiramurali23 }) 155afc8a799Smiramurali23 .finally(() => { 156afc8a799Smiramurali23 $scope.loading = false; 157afc8a799Smiramurali23 }) 158afc8a799Smiramurali23 } 159afc8a799Smiramurali23 160afc8a799Smiramurali23 /** 161afc8a799Smiramurali23 * API call to delete users 162afc8a799Smiramurali23 * @param {*} users : Array of users to delete 163afc8a799Smiramurali23 */ 164afc8a799Smiramurali23 function deleteUsers(users = []) { 165afc8a799Smiramurali23 $scope.loading = true; 166afc8a799Smiramurali23 const promises = 167afc8a799Smiramurali23 users.map((user) => APIUtils.deleteUser(user.UserName)); 168afc8a799Smiramurali23 $q.all(promises) 169afc8a799Smiramurali23 .then(() => { 170afc8a799Smiramurali23 let message; 171afc8a799Smiramurali23 if (users.length > 1) { 172afc8a799Smiramurali23 message = 'Users have been removed.' 173afc8a799Smiramurali23 } else { 174afc8a799Smiramurali23 message = `User '${users[0].UserName}' has been removed.` 175afc8a799Smiramurali23 } 176afc8a799Smiramurali23 toastService.success(message); 177afc8a799Smiramurali23 }) 178afc8a799Smiramurali23 .catch((error) => { 179afc8a799Smiramurali23 console.log(JSON.stringify(error)); 180afc8a799Smiramurali23 let message; 181afc8a799Smiramurali23 if (users.length > 1) { 182afc8a799Smiramurali23 message = 'Failed to remove users.' 183afc8a799Smiramurali23 } else { 184afc8a799Smiramurali23 message = `Failed to remove user '${users[0].UserName}'.` 185afc8a799Smiramurali23 } 186afc8a799Smiramurali23 toastService.error(message); 187afc8a799Smiramurali23 }) 188afc8a799Smiramurali23 .finally(() => { 189afc8a799Smiramurali23 getLocalUsers(); 190afc8a799Smiramurali23 $scope.loading = false; 191afc8a799Smiramurali23 }); 192afc8a799Smiramurali23 } 193afc8a799Smiramurali23 194afc8a799Smiramurali23 /** 195afc8a799Smiramurali23 * API call to update user status enabled/disabled 196afc8a799Smiramurali23 * @param {*} users : Array of users to update 197afc8a799Smiramurali23 * @param {boolean} enabled : status 198afc8a799Smiramurali23 */ 199afc8a799Smiramurali23 function updateUserStatus(users = [], enabled = true) { 200afc8a799Smiramurali23 $scope.loading = true; 201afc8a799Smiramurali23 const promises = users.map( 202afc8a799Smiramurali23 (user) => APIUtils.updateUser( 203afc8a799Smiramurali23 user.UserName, null, null, null, enabled, null)); 204afc8a799Smiramurali23 $q.all(promises) 205afc8a799Smiramurali23 .then(() => { 206afc8a799Smiramurali23 let message; 207afc8a799Smiramurali23 let statusLabel = enabled ? 'enabled' : 'disabled'; 208afc8a799Smiramurali23 if (users.length > 1) { 209afc8a799Smiramurali23 message = `Users ${statusLabel}.` 210afc8a799Smiramurali23 } else { 211afc8a799Smiramurali23 message = `User '${users[0].UserName}' ${statusLabel}.`; 212afc8a799Smiramurali23 } 213afc8a799Smiramurali23 toastService.success(message); 214afc8a799Smiramurali23 }) 215afc8a799Smiramurali23 .catch((error) => { 216afc8a799Smiramurali23 console.log(JSON.stringify(error)); 217afc8a799Smiramurali23 let message; 218afc8a799Smiramurali23 let statusLabel = enabled ? 'enable' : 'disable'; 219afc8a799Smiramurali23 if (users.length > 1) { 220afc8a799Smiramurali23 message = `Failed to ${statusLabel} users.` 221afc8a799Smiramurali23 } else { 222afc8a799Smiramurali23 message = 223afc8a799Smiramurali23 `Failed to ${statusLabel} user '${users[0].UserName}'.` 224afc8a799Smiramurali23 } 225afc8a799Smiramurali23 toastService.error(message); 226afc8a799Smiramurali23 }) 227afc8a799Smiramurali23 .finally(() => { 228afc8a799Smiramurali23 getLocalUsers(); 229afc8a799Smiramurali23 $scope.loading = false; 230afc8a799Smiramurali23 }); 231afc8a799Smiramurali23 } 232afc8a799Smiramurali23 233afc8a799Smiramurali23 /** 234afc8a799Smiramurali23 * API call to save account policy settings 235afc8a799Smiramurali23 * @param {number} lockoutDuration 236afc8a799Smiramurali23 * @param {number} lockoutThreshold 237afc8a799Smiramurali23 */ 238afc8a799Smiramurali23 function updateAccountSettings(lockoutDuration, lockoutThreshold) { 239afc8a799Smiramurali23 $scope.loading = true; 240afc8a799Smiramurali23 APIUtils.saveUserAccountProperties(lockoutDuration, lockoutThreshold) 241afc8a799Smiramurali23 .then(() => { 242afc8a799Smiramurali23 $scope.accountSettings['AccountLockoutDuration'] = 243afc8a799Smiramurali23 lockoutDuration; 244afc8a799Smiramurali23 $scope.accountSettings['AccountLockoutThreshold'] = 245afc8a799Smiramurali23 lockoutThreshold; 246afc8a799Smiramurali23 toastService.success( 247afc8a799Smiramurali23 'Account policy settings have been updated.'); 248afc8a799Smiramurali23 }) 249afc8a799Smiramurali23 .catch((error) => { 250afc8a799Smiramurali23 console.log(JSON.stringify(error)); 251afc8a799Smiramurali23 toastService.error('Failed to update account policy settings.'); 252afc8a799Smiramurali23 }) 253afc8a799Smiramurali23 .finally(() => { 254afc8a799Smiramurali23 $scope.loading = false; 255afc8a799Smiramurali23 }); 256afc8a799Smiramurali23 } 257afc8a799Smiramurali23 258afc8a799Smiramurali23 /** 259afc8a799Smiramurali23 * Initiate account settings modal 260afc8a799Smiramurali23 */ 261afc8a799Smiramurali23 function initAccountSettingsModal() { 262afc8a799Smiramurali23 const template = require('./user-accounts-modal-settings.html'); 263afc8a799Smiramurali23 $uibModal 264afc8a799Smiramurali23 .open({ 265afc8a799Smiramurali23 template, 266afc8a799Smiramurali23 windowTopClass: 'uib-modal', 267afc8a799Smiramurali23 ariaLabelledBy: 'dialog_label', 268afc8a799Smiramurali23 controllerAs: 'modalCtrl', 269afc8a799Smiramurali23 controller: function() { 270afc8a799Smiramurali23 const lockoutMethod = mapLockoutMethod( 271afc8a799Smiramurali23 $scope.accountSettings.AccountLockoutDuration); 272afc8a799Smiramurali23 273afc8a799Smiramurali23 this.settings = {}; 274afc8a799Smiramurali23 this.settings.maxLogin = 275afc8a799Smiramurali23 $scope.accountSettings.AccountLockoutThreshold; 276afc8a799Smiramurali23 this.settings.lockoutMethod = lockoutMethod; 277afc8a799Smiramurali23 this.settings.timeoutDuration = !lockoutMethod ? 278afc8a799Smiramurali23 null : 279afc8a799Smiramurali23 $scope.accountSettings.AccountLockoutDuration; 280afc8a799Smiramurali23 } 281afc8a799Smiramurali23 }) 282afc8a799Smiramurali23 .result 283afc8a799Smiramurali23 .then((form) => { 284afc8a799Smiramurali23 if (form.$valid) { 285afc8a799Smiramurali23 const lockoutDuration = form.lockoutMethod.$modelValue ? 286afc8a799Smiramurali23 form.timeoutDuration.$modelValue : 287afc8a799Smiramurali23 0; 288afc8a799Smiramurali23 const lockoutThreshold = form.maxLogin.$modelValue; 289afc8a799Smiramurali23 updateAccountSettings(lockoutDuration, lockoutThreshold); 290afc8a799Smiramurali23 } 291afc8a799Smiramurali23 }) 292afc8a799Smiramurali23 .catch( 293afc8a799Smiramurali23 () => { 294afc8a799Smiramurali23 // do nothing 295afc8a799Smiramurali23 }) 296afc8a799Smiramurali23 } 297afc8a799Smiramurali23 298afc8a799Smiramurali23 /** 299afc8a799Smiramurali23 * Initiate user modal 300afc8a799Smiramurali23 * Can be triggered by clicking edit in table or 'Add user' button 301afc8a799Smiramurali23 * If triggered from the table, user parameter will be provided 302afc8a799Smiramurali23 * If triggered by add user button, user parameter will be undefined 303afc8a799Smiramurali23 * @optional @param {*} user 304afc8a799Smiramurali23 */ 305afc8a799Smiramurali23 function initUserModal(user) { 306afc8a799Smiramurali23 if ($scope.userRoles === null || $scope.userRoles === undefined) { 307afc8a799Smiramurali23 // If userRoles failed to load, do not allow add/edit 308afc8a799Smiramurali23 // functionality 309afc8a799Smiramurali23 return; 310afc8a799Smiramurali23 } 311afc8a799Smiramurali23 const newUser = user ? false : true; 312afc8a799Smiramurali23 const originalUsername = user ? angular.copy(user.UserName) : null; 313afc8a799Smiramurali23 const template = require('./user-accounts-modal-user.html'); 314afc8a799Smiramurali23 $uibModal 315afc8a799Smiramurali23 .open({ 316afc8a799Smiramurali23 template, 317afc8a799Smiramurali23 windowTopClass: 'uib-modal', 318afc8a799Smiramurali23 ariaLabelledBy: 'dialog_label', 319afc8a799Smiramurali23 controllerAs: 'modalCtrl', 320afc8a799Smiramurali23 controller: function() { 321afc8a799Smiramurali23 // Set default status to Enabled 322afc8a799Smiramurali23 const status = newUser ? true : user.Enabled; 323afc8a799Smiramurali23 // Check if UserName is root 324afc8a799Smiramurali23 // Some form controls will be disabled for root users: 325afc8a799Smiramurali23 // edit enabled status, edit username, edit role 326*339db9a4SPatrick Williams const isRoot = newUser ? false : 327*339db9a4SPatrick Williams checkIfRoot(user) ? true : 328*339db9a4SPatrick Williams false; 329afc8a799Smiramurali23 // Array of existing usernames (excluding current user instance) 330afc8a799Smiramurali23 const existingUsernames = 331afc8a799Smiramurali23 $scope.localUsers.reduce((acc, val) => { 332afc8a799Smiramurali23 if (user && (val.UserName === user.UserName)) { 333afc8a799Smiramurali23 return acc; 334afc8a799Smiramurali23 } 335afc8a799Smiramurali23 acc.push(val.UserName); 336afc8a799Smiramurali23 return acc; 337afc8a799Smiramurali23 }, []); 338afc8a799Smiramurali23 339afc8a799Smiramurali23 this.user = {}; 340afc8a799Smiramurali23 this.user.isRoot = isRoot; 341afc8a799Smiramurali23 this.user.new = newUser; 342afc8a799Smiramurali23 this.user.accountStatus = status; 343afc8a799Smiramurali23 this.user.username = newUser ? '' : user.UserName; 344afc8a799Smiramurali23 this.user.privilege = newUser ? '' : user.RoleId; 345afc8a799Smiramurali23 this.user.locked = newUser ? null : user.Locked; 346afc8a799Smiramurali23 347afc8a799Smiramurali23 this.manualUnlockProperty = false; 348afc8a799Smiramurali23 this.automaticLockout = mapLockoutMethod( 349afc8a799Smiramurali23 $scope.accountSettings.AccountLockoutDuration); 350afc8a799Smiramurali23 this.privilegeRoles = $scope.userRoles; 351afc8a799Smiramurali23 this.existingUsernames = existingUsernames; 352afc8a799Smiramurali23 this.minPasswordLength = $scope.accountSettings ? 353afc8a799Smiramurali23 $scope.accountSettings.MinPasswordLength : 354afc8a799Smiramurali23 null; 355afc8a799Smiramurali23 this.maxPasswordLength = $scope.accountSettings ? 356afc8a799Smiramurali23 $scope.accountSettings.MaxPasswordLength : 357afc8a799Smiramurali23 null; 358afc8a799Smiramurali23 } 359afc8a799Smiramurali23 }) 360afc8a799Smiramurali23 .result 361afc8a799Smiramurali23 .then((form) => { 362afc8a799Smiramurali23 if (form.$valid) { 363afc8a799Smiramurali23 // If form control is pristine set property to null 364afc8a799Smiramurali23 // this will make sure only changed values are updated when 365afc8a799Smiramurali23 // modifying existing users 366afc8a799Smiramurali23 // API utils checks for null values 367afc8a799Smiramurali23 const username = 368afc8a799Smiramurali23 form.username.$pristine ? null : form.username.$modelValue; 369afc8a799Smiramurali23 const password = 370afc8a799Smiramurali23 form.password.$pristine ? null : form.password.$modelValue; 371afc8a799Smiramurali23 const role = form.privilege.$pristine ? 372afc8a799Smiramurali23 null : 373afc8a799Smiramurali23 form.privilege.$modelValue; 374afc8a799Smiramurali23 const enabled = (form.accountStatus.$pristine && 375afc8a799Smiramurali23 form.accountStatus1.$pristine) ? 376afc8a799Smiramurali23 null : 377afc8a799Smiramurali23 form.accountStatus.$modelValue; 378afc8a799Smiramurali23 const locked = (form.lock && form.lock.$dirty) ? 379afc8a799Smiramurali23 form.lock.$modelValue : 380afc8a799Smiramurali23 null; 381afc8a799Smiramurali23 382afc8a799Smiramurali23 if (!newUser) { 383afc8a799Smiramurali23 updateUser( 384afc8a799Smiramurali23 originalUsername, username, password, role, enabled, 385afc8a799Smiramurali23 locked); 386afc8a799Smiramurali23 } else { 387afc8a799Smiramurali23 createUser( 388afc8a799Smiramurali23 username, password, role, form.accountStatus.$modelValue); 389afc8a799Smiramurali23 } 390afc8a799Smiramurali23 } 391afc8a799Smiramurali23 }) 392afc8a799Smiramurali23 .catch( 393afc8a799Smiramurali23 () => { 394afc8a799Smiramurali23 // do nothing 395afc8a799Smiramurali23 }) 396afc8a799Smiramurali23 } 397afc8a799Smiramurali23 398afc8a799Smiramurali23 /** 399afc8a799Smiramurali23 * Intiate remove users modal 400afc8a799Smiramurali23 * @param {*} users 401afc8a799Smiramurali23 */ 402afc8a799Smiramurali23 function initRemoveModal(users) { 403afc8a799Smiramurali23 const template = require('./user-accounts-modal-remove.html'); 404afc8a799Smiramurali23 $uibModal 405afc8a799Smiramurali23 .open({ 406afc8a799Smiramurali23 template, 407afc8a799Smiramurali23 windowTopClass: 'uib-modal', 408afc8a799Smiramurali23 ariaLabelledBy: 'dialog_label', 409afc8a799Smiramurali23 controllerAs: 'modalCtrl', 410afc8a799Smiramurali23 controller: function() { 411afc8a799Smiramurali23 this.users = users; 412afc8a799Smiramurali23 } 413afc8a799Smiramurali23 }) 414afc8a799Smiramurali23 .result 415afc8a799Smiramurali23 .then(() => { 416afc8a799Smiramurali23 deleteUsers(users); 417afc8a799Smiramurali23 }) 418afc8a799Smiramurali23 .catch( 419afc8a799Smiramurali23 () => { 420afc8a799Smiramurali23 // do nothing 421afc8a799Smiramurali23 }) 422afc8a799Smiramurali23 } 423afc8a799Smiramurali23 424afc8a799Smiramurali23 /** 425afc8a799Smiramurali23 * Callback when action emitted from table 426afc8a799Smiramurali23 * @param {*} value 427afc8a799Smiramurali23 */ 428afc8a799Smiramurali23 $scope.onEmitRowAction = (value) => { 429afc8a799Smiramurali23 switch (value.action) { 430afc8a799Smiramurali23 case 'Edit': 431afc8a799Smiramurali23 initUserModal(value.row); 432afc8a799Smiramurali23 break; 433afc8a799Smiramurali23 case 'Delete': 434afc8a799Smiramurali23 initRemoveModal([value.row]); 435afc8a799Smiramurali23 break; 436afc8a799Smiramurali23 default: 437afc8a799Smiramurali23 } 438afc8a799Smiramurali23 }; 439afc8a799Smiramurali23 440afc8a799Smiramurali23 /** 441afc8a799Smiramurali23 * Callback when batch action emitted from table 442afc8a799Smiramurali23 */ 443afc8a799Smiramurali23 $scope.onEmitBatchAction = (value) => { 444afc8a799Smiramurali23 switch (value.action) { 445afc8a799Smiramurali23 case 'delete': 446afc8a799Smiramurali23 initRemoveModal(value.filteredRows); 447afc8a799Smiramurali23 break; 448afc8a799Smiramurali23 case 'enable': 449afc8a799Smiramurali23 updateUserStatus(value.filteredRows, true) 450afc8a799Smiramurali23 break; 451afc8a799Smiramurali23 case 'disable': 452afc8a799Smiramurali23 updateUserStatus(value.filteredRows, false) 453afc8a799Smiramurali23 break; 454afc8a799Smiramurali23 default: 455afc8a799Smiramurali23 break; 456afc8a799Smiramurali23 } 457afc8a799Smiramurali23 }; 458afc8a799Smiramurali23 459afc8a799Smiramurali23 /** 460afc8a799Smiramurali23 * Callback when 'Account settings policy' button clicked 461afc8a799Smiramurali23 */ 462afc8a799Smiramurali23 $scope.onClickAccountSettingsPolicy = () => { 463afc8a799Smiramurali23 initAccountSettingsModal(); 464afc8a799Smiramurali23 }; 465afc8a799Smiramurali23 466afc8a799Smiramurali23 /** 467afc8a799Smiramurali23 * Callback when 'Add user' button clicked 468afc8a799Smiramurali23 */ 469afc8a799Smiramurali23 $scope.onClickAddUser = () => { 470afc8a799Smiramurali23 initUserModal(); 471afc8a799Smiramurali23 }; 472afc8a799Smiramurali23 473afc8a799Smiramurali23 /** 474afc8a799Smiramurali23 * Callback when controller view initially loaded 475afc8a799Smiramurali23 */ 476afc8a799Smiramurali23 $scope.$on('$viewContentLoaded', () => { 477afc8a799Smiramurali23 getLocalUsers(); 478afc8a799Smiramurali23 getUserRoles(); 479afc8a799Smiramurali23 getAccountSettings(); 480afc8a799Smiramurali23 }) 481afc8a799Smiramurali23 } 482afc8a799Smiramurali23 ]); 483afc8a799Smiramurali23})(angular); 484