Author: echatellier Date: 2014-06-09 23:04:09 +0200 (Mon, 09 Jun 2014) New Revision: 168 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/168 Log: Gestion des droits Modified: trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/configuration-input.jsp trunk/faxtomail-ui-web/src/main/webapp/js/configuration.js Modified: trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/configuration-input.jsp =================================================================== --- trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/configuration-input.jsp 2014-06-09 20:28:16 UTC (rev 167) +++ trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/configuration-input.jsp 2014-06-09 21:04:09 UTC (rev 168) @@ -682,64 +682,87 @@ </tr> </thead> <tbody> - <tr ng-repeat="user in parentScopeValues.writeRightUsers" class="parentInfos"> + <tr ng-repeat="group in parentScopeValues.rightGroups" class="parentInfos"> <td> - <span class="fa fa-user"></span> {{user.firstName}} {{user.lastName}} + <span class="fa fa-users"></span> {{group.fullPath}} </td> <td> - <label><input type="checkbox" disabled> Lecture</label> - <label><input type="checkbox" disabled> Écriture</label> - <label><input type="checkbox" disabled> Déplacement</label> + <label><input type="checkbox" ng-checked="parentScopeValues.readRightGroups.indexOf(group) != -1" disabled> Lecture</label> + <label><input type="checkbox" ng-checked="parentScopeValues.writeRightGroups.indexOf(group) != -1" disabled> Écriture</label> + <label><input type="checkbox" ng-checked="parentScopeValues.moveRightGroups.indexOf(group) != -1" disabled> Déplacement</label> </td> </tr> - <tr ng-repeat="group in parentScopeValues.writeRightGroups" class="parentInfos"> + <tr ng-repeat="user in parentScopeValues.rightUsers" class="parentInfos"> <td> - <span class="fa fa-users"></span> {{group.fullPath}} + <span class="fa fa-user"></span> {{user.firstName}} {{user.lastName}} </td> <td> - <label><input type="checkbox" disabled> Lecture</label> - <label><input type="checkbox" disabled> Écriture</label> - <label><input type="checkbox" disabled> Déplacement</label> + <label><input type="checkbox" ng-checked="parentScopeValues.readRightUsers.indexOf(user) != -1" disabled> Lecture</label> + <label><input type="checkbox" ng-checked="parentScopeValues.writeRightUsers.indexOf(user) != -1" disabled> Écriture</label> + <label><input type="checkbox" ng-checked="parentScopeValues.moveRightUsers.indexOf(user) != -1" disabled> Déplacement</label> </td> </tr> </tbody> <tbody> - <tr ng-repeat="user in selectedMailFolder.writeRightUsers"> + <tr ng-repeat="group in selectedMailFolder.rightGroups"> <td> - <span class="fa fa-user"></span> {{user.firstName}} {{user.lastName}} - <a class="pull-right btn btn-danger btn-xs pull-right" ng-click="removeWriteRightUser($index)"> + <span class="fa fa-users"></span> {{group.fullPath}} + <a class="pull-right btn btn-danger btn-xs pull-right" ng-click="removeWriteRightGroup($index)"> <span class="glyphicon glyphicon-remove"></span> </a> </td> <td> - <label><input type="checkbox"> Lecture</label> - <label><input type="checkbox"> Écriture</label> - <label><input type="checkbox"> Déplacement</label> + <label><input type="checkbox" + ng-model="readRightGroup" + ng-checked="selectedMailFolder.readRightGroups.indexOf(group) != -1" + ng-disabled="parentScopeValues.readRightGroups.indexOf(group) != -1" + ng-change="changeReadRightGroup(group)"> Lecture</label> + <label><input type="checkbox" + ng-model="writeRightGroup" + ng-checked="selectedMailFolder.writeRightGroups.indexOf(group) != -1" + ng-disabled="parentScopeValues.writeRightGroups.indexOf(group) != -1" + ng-change="changeWriteRightGroup(group)"> Écriture</label> + <label><input type="checkbox" + ng-model="moveRightGroup" + ng-checked="selectedMailFolder.moveRightGroups.indexOf(group) != -1" + ng-disabled="parentScopeValues.moveRightGroups.indexOf(group) != -1" + ng-change="changeMoveRightGroup(group)"> Déplacement</label> </td> </tr> - <tr ng-repeat="group in selectedMailFolder.writeRightGroups"> + <tr ng-repeat="user in selectedMailFolder.rightUsers"> <td> - <span class="fa fa-users"></span> {{group.fullPath}} - <a class="pull-right btn btn-danger btn-xs pull-right" ng-click="removeWriteRightGroup($index)"> + <span class="fa fa-user"></span> {{user.firstName}} {{user.lastName}} + <a class="pull-right btn btn-danger btn-xs pull-right" ng-click="removeWriteRightUser($index)"> <span class="glyphicon glyphicon-remove"></span> </a> </td> <td> - <label><input type="checkbox"> Lecture</label> - <label><input type="checkbox"> Écriture</label> - <label><input type="checkbox"> Déplacement</label> + <label><input type="checkbox" + ng-model="readRightUser" + ng-checked="selectedMailFolder.readRightUsers.indexOf(user) != -1" + ng-disabled="parentScopeValues.readRightUsers.indexOf(user) != -1" + ng-change="changeReadRightUser(user)"> Lecture</label> + <label><input type="checkbox" + ng-model="writeRightUser" + ng-checked="selectedMailFolder.writeRightUsers.indexOf(user) != -1" + ng-disabled="parentScopeValues.writeRightUsers.indexOf(user) != -1" + ng-change="changeWriteRightUser(user)"> Écriture</label> + <label><input type="checkbox" + ng-model="moveRightUser" + ng-checked="selectedMailFolder.moveRightUsers.indexOf(user) != -1" + ng-disabled="parentScopeValues.moveRightUsers.indexOf(user) != -1" + ng-change="changeMoveRightUser(user)"> Déplacement</label> </td> </tr> </tbody> </table> - <div class="form-inline"> <div class="form-group"> <label for="newRightUserField" class="control-label">Nouveau utilisateur :</label> <select id="newRightUserField" class="form-control" - ng-model="newWriteRightUser" ng-options="user as user.firstName + ' ' + user.lastName for user in users"> + ng-model="newRightUser" ng-options="user as user.firstName + ' ' + user.lastName for user in users"> </select> - <a class="btn btn-success btn-xs" ng-click="addWriteRightUser()" ng-disabled="!newWriteRightUser"> + <a class="btn btn-success btn-xs" ng-click="addRightUser()" ng-disabled="!newRightUser"> <span class="glyphicon glyphicon-plus"></span> </a> </div> @@ -749,9 +772,9 @@ <div class="form-group"> <label for="newRightGroupField" class="control-label">Nouveau groupe :</label> <select id="newRightGroupField" class="form-control" - ng-model="newWriteRightGroup" ng-options="group as group.fullPath for group in groups"> + ng-model="newRightGroup" ng-options="group as group.fullPath for group in groups"> </select> - <a class="btn btn-success btn-xs" ng-click="addWriteRightGroup()" ng-disabled="!newWriteRightGroup"> + <a class="btn btn-success btn-xs" ng-click="addRightGroup()" ng-disabled="!newRightGroup"> <span class="glyphicon glyphicon-plus"></span> </a> </div> Modified: trunk/faxtomail-ui-web/src/main/webapp/js/configuration.js =================================================================== --- trunk/faxtomail-ui-web/src/main/webapp/js/configuration.js 2014-06-09 20:28:16 UTC (rev 167) +++ trunk/faxtomail-ui-web/src/main/webapp/js/configuration.js 2014-06-09 21:04:09 UTC (rev 168) @@ -322,6 +322,25 @@ if (!$scope.selectedMailFolder.etatAttentes) { $scope.selectedMailFolder.etatAttentes = []; } + if (!$scope.selectedMailFolder.readRightUsers) { + $scope.selectedMailFolder.readRightUsers = []; + } + if (!$scope.selectedMailFolder.writeRightUsers) { + $scope.selectedMailFolder.writeRightUsers = []; + } + if (!$scope.selectedMailFolder.moveRightUsers) { + $scope.selectedMailFolder.moveRightUsers = []; + } + if (!$scope.selectedMailFolder.readRightGroups) { + $scope.selectedMailFolder.readRightGroups = []; + } + if (!$scope.selectedMailFolder.writeRightGroups) { + $scope.selectedMailFolder.writeRightGroups = []; + } + if (!$scope.selectedMailFolder.moveRightGroups) { + $scope.selectedMailFolder.moveRightGroups = []; + } + // initialise la liste des colonnes pour le dossier courant $scope.folderTableColumns = []; @@ -344,6 +363,40 @@ }); $scope.selectedMailFolder.etatAttentes = newArray; } + + // right + $scope.selectedMailFolder.rightUsers = []; + $scope.selectedMailFolder.rightGroups = []; + angular.forEach($scope.selectedMailFolder.readRightUsers, function(user) { + if ($scope.selectedMailFolder.rightUsers.indexOf(user) == -1) { + $scope.selectedMailFolder.rightUsers.push(user); + } + }); + angular.forEach($scope.selectedMailFolder.writeRightUsers, function(user) { + if ($scope.selectedMailFolder.rightUsers.indexOf(user) == -1) { + $scope.selectedMailFolder.rightUsers.push(user); + } + }); + angular.forEach($scope.selectedMailFolder.moveRightUsers, function(user) { + if ($scope.selectedMailFolder.rightUsers.indexOf(user) == -1) { + $scope.selectedMailFolder.rightUsers.push(user); + } + }); + angular.forEach($scope.selectedMailFolder.readRightGroups, function(group) { + if ($scope.selectedMailFolder.rightGroups.indexOf(group) == -1) { + $scope.selectedMailFolder.rightGroups.push(group); + } + }); + angular.forEach($scope.selectedMailFolder.writeRightGroups, function(group) { + if ($scope.selectedMailFolder.rightGroups.indexOf(group) == -1) { + $scope.selectedMailFolder.rightGroups.push(group); + } + }); + angular.forEach($scope.selectedMailFolder.moveRightGroups, function(group) { + if ($scope.selectedMailFolder.rightGroups.indexOf(group) == -1) { + $scope.selectedMailFolder.rightGroups.push(group); + } + }); }; // on doit faire ca par l'ordre des watch angular et ne pas l'appeler dans le edit @@ -359,7 +412,7 @@ $scope.selectedMailFolder.rejectUnknownSender = $scope.selectedMailFolder.rejectUnknownSender || false; } - // initilaisation des valeurs du parent + // initialisation des valeurs du parent $scope.parentScopeValues = { customerResponsibles: [], replyAddresses: [], @@ -387,6 +440,40 @@ }); }); } + + // parent rigths + $scope.parentScopeValues.rightUsers = []; + $scope.parentScopeValues.rightGroups = []; + angular.forEach($scope.parentScopeValues.readRightUsers, function(user) { + if ($scope.parentScopeValues.rightUsers.indexOf(user) == -1) { + $scope.parentScopeValues.rightUsers.push(user); + } + }); + angular.forEach($scope.parentScopeValues.writeRightUsers, function(user) { + if ($scope.parentScopeValues.rightUsers.indexOf(user) == -1) { + $scope.parentScopeValues.rightUsers.push(user); + } + }); + angular.forEach($scope.parentScopeValues.moveRightUsers, function(user) { + if ($scope.parentScopeValues.rightUsers.indexOf(user) == -1) { + $scope.parentScopeValues.rightUsers.push(user); + } + }); + angular.forEach($scope.parentScopeValues.readRightGroups, function(group) { + if ($scope.parentScopeValues.rightGroups.indexOf(group) == -1) { + $scope.parentScopeValues.rightGroups.push(group); + } + }); + angular.forEach($scope.parentScopeValues.writeRightGroups, function(group) { + if ($scope.parentScopeValues.rightGroups.indexOf(group) == -1) { + $scope.parentScopeValues.rightGroups.push(group); + } + }); + angular.forEach($scope.parentScopeValues.moveRightGroups, function(group) { + if ($scope.parentScopeValues.rightGroups.indexOf(group) == -1) { + $scope.parentScopeValues.rightGroups.push(group); + } + }); } }); @@ -622,30 +709,80 @@ }; // add user write right - $scope.addWriteRightUser = function() { - $scope.selectedMailFolder.writeRightUsers.push($scope.newWriteRightUser); + $scope.addRightUser = function() { + $scope.selectedMailFolder.rightUsers.push($scope.newRightUser); delete $scope.newWriteRightUser; }; // remove user write right - $scope.removeWriteRightUser = function(index) { + $scope.removeRightUser = function(index) { if ($window.confirm("Êtes-vous sur de vouloir supprimer les droits de cet utilisateur ?")) { - $scope.selectedMailFolder.writeRightUsers.splice(index, 1); + $scope.selectedMailFolder.rightUsers.splice(index, 1); } }; // add group write right - $scope.addWriteRightGroup = function() { - $scope.selectedMailFolder.writeRightGroups.push($scope.newWriteRightGroup); - delete $scope.newWriteRightGroup; + $scope.addRightGroup = function() { + $scope.selectedMailFolder.rightGroups.push($scope.newRightGroup); + delete $scope.newRightGroup; }; // remove group write right $scope.removeWriteRightGroup = function(index) { if ($window.confirm("Êtes-vous sur de vouloir supprimer les droits de ce groupe ?")) { + $scope.selectedMailFolder.rightGroups.splice(index, 1); + } + }; + + // + $scope.changeReadRightGroup = function(group) { + var index = $scope.selectedMailFolder.readRightGroups.indexOf(group); + if (index != -1) { + $scope.selectedMailFolder.readRightGroups.splice(index, 1); + } else { + $scope.selectedMailFolder.readRightGroups.push(group); + } + }; + $scope.changeWriteRightGroup = function(group) { + var index = $scope.selectedMailFolder.writeRightGroups.indexOf(group); + if (index != -1) { $scope.selectedMailFolder.writeRightGroups.splice(index, 1); + } else { + $scope.selectedMailFolder.writeRightGroups.push(group); } }; + $scope.changeMoveRightGroup = function(group) { + var index = $scope.selectedMailFolder.moveRightGroups.indexOf(group); + if (index != -1) { + $scope.selectedMailFolder.moveRightGroups.splice(index, 1); + } else { + $scope.selectedMailFolder.moveRightGroups.push(group); + } + }; + $scope.changeReadRightUser = function(user) { + var index = $scope.selectedMailFolder.readRightUsers.indexOf(user); + if (index != -1) { + $scope.selectedMailFolder.readRightUsers.splice(index, 1); + } else { + $scope.selectedMailFolder.readRightUsers.push(user); + } + }; + $scope.changeWriteRightUser = function(user) { + var index = $scope.selectedMailFolder.writeRightUsers.indexOf(user); + if (index != -1) { + $scope.selectedMailFolder.writeRightUsers.splice(index, 1); + } else { + $scope.selectedMailFolder.writeRightUsers.push(user); + } + }; + $scope.changeMoveRightUser = function(user) { + var index = $scope.selectedMailFolder.moveRightUsers.indexOf(user); + if (index != -1) { + $scope.selectedMailFolder.moveRightUsers.splice(index, 1); + } else { + $scope.selectedMailFolder.moveRightUsers.push(user); + } + }; }]);