Author: echatellier Date: 2014-06-06 11:16:16 +0200 (Fri, 06 Jun 2014) New Revision: 142 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/142 Log: refs #4662: Manage write rigth for user and groups Modified: trunk/faxtomail-persistence/src/main/xmi/faxtomail.zargo trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailService.java trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java 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-persistence/src/main/xmi/faxtomail.zargo =================================================================== (Binary files differ) Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailService.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailService.java 2014-06-06 08:10:52 UTC (rev 141) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailService.java 2014-06-06 09:16:16 UTC (rev 142) @@ -192,11 +192,23 @@ rangeDao.create(Range.PROPERTY_LABEL, "FSI FMI") ); + // user groups + FaxToMailUserGroupTopiaDao userGroupDao = getPersistenceContext().getFaxToMailUserGroupDao(); + userGroupDao.create(FaxToMailUserGroup.PROPERTY_NAME, "Chargés de clientèle", + FaxToMailUserGroup.PROPERTY_FULL_PATH, "Franciaflex/Chargés de clientèle"); + FaxToMailUserGroup commerciaux = userGroupDao.create(FaxToMailUserGroup.PROPERTY_NAME, "Commerciaux", + FaxToMailUserGroup.PROPERTY_FULL_PATH, "Franciaflex/Commerciaux"); + userGroupDao.create(FaxToMailUserGroup.PROPERTY_NAME, "SAV", + FaxToMailUserGroup.PROPERTY_FULL_PATH, "Franciaflex/SAV"); + userGroupDao.create(FaxToMailUserGroup.PROPERTY_NAME, "Administrateurs", + FaxToMailUserGroup.PROPERTY_FULL_PATH, "Franciaflex/Administrateurs"); + FaxToMailUserTopiaDao userDao = getPersistenceContext().getFaxToMailUserDao(); FaxToMailUser marc = userDao.create(FaxToMailUser.PROPERTY_LAST_NAME, "Lefèbvre", FaxToMailUser.PROPERTY_FIRST_NAME, "Marc", FaxToMailUser.PROPERTY_LOGIN, "mlefebvre", - FaxToMailUser.PROPERTY_TRIGRAPH, "MLE"); + FaxToMailUser.PROPERTY_TRIGRAPH, "MLE", + FaxToMailUser.PROPERTY_FAX_TO_MAIL_USER_GROUP, Collections.singletonList(commerciaux)); FaxToMailUser cyril = userDao.create(FaxToMailUser.PROPERTY_LAST_NAME, "Baillet", FaxToMailUser.PROPERTY_FIRST_NAME, "Cyril", FaxToMailUser.PROPERTY_LOGIN, "cbaillet", @@ -204,7 +216,8 @@ FaxToMailUser frederic = userDao.create(FaxToMailUser.PROPERTY_LAST_NAME, "Viala", FaxToMailUser.PROPERTY_FIRST_NAME, "Frédéric", FaxToMailUser.PROPERTY_LOGIN, "fviala", - FaxToMailUser.PROPERTY_TRIGRAPH, "FVI"); + FaxToMailUser.PROPERTY_TRIGRAPH, "FVI", + FaxToMailUser.PROPERTY_FAX_TO_MAIL_USER_GROUP, Collections.singletonList(commerciaux)); FaxToMailUser claire = userDao.create(FaxToMailUser.PROPERTY_LAST_NAME, "Marquis", FaxToMailUser.PROPERTY_FIRST_NAME, "Claire", FaxToMailUser.PROPERTY_LOGIN, "cmarquis", @@ -216,7 +229,8 @@ FaxToMailUser jeanne = userDao.create(FaxToMailUser.PROPERTY_LAST_NAME, "Bourgoin", FaxToMailUser.PROPERTY_FIRST_NAME, "Jeanne", FaxToMailUser.PROPERTY_LOGIN, "jbourgoin", - FaxToMailUser.PROPERTY_TRIGRAPH, "JBO"); + FaxToMailUser.PROPERTY_TRIGRAPH, "JBO", + FaxToMailUser.PROPERTY_FAX_TO_MAIL_USER_GROUP, Collections.singletonList(commerciaux)); MailFolderTopiaDao folderDao = getPersistenceContext().getMailFolderDao(); Map<String, MailFolder> folders = new HashMap<>(); @@ -308,13 +322,6 @@ log.error("error getting the email filters", e); } - // user groups - FaxToMailUserGroupTopiaDao userGroupDao = getPersistenceContext().getFaxToMailUserGroupDao(); - userGroupDao.create(FaxToMailUserGroup.PROPERTY_NAME, "Chargés de clientèle"); - userGroupDao.create(FaxToMailUserGroup.PROPERTY_NAME, "Commerciaux"); - userGroupDao.create(FaxToMailUserGroup.PROPERTY_NAME, "SAV"); - userGroupDao.create(FaxToMailUserGroup.PROPERTY_NAME, "Administrateurs"); - // clients and emails File clientFile = new File(demoDirectory, "fx_clients.csv"); try { Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java =================================================================== --- trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java 2014-06-06 08:10:52 UTC (rev 141) +++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ConfigurationAction.java 2014-06-06 09:16:16 UTC (rev 142) @@ -39,11 +39,12 @@ import com.franciaflex.faxtomail.persistence.entities.EmailProtocol; import com.franciaflex.faxtomail.persistence.entities.EtatAttente; import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; +import com.franciaflex.faxtomail.persistence.entities.FaxToMailUserGroup; import com.franciaflex.faxtomail.persistence.entities.FolderAction; +import com.franciaflex.faxtomail.persistence.entities.MailAction; import com.franciaflex.faxtomail.persistence.entities.MailField; import com.franciaflex.faxtomail.persistence.entities.MailFilter; import com.franciaflex.faxtomail.persistence.entities.MailFolder; -import com.franciaflex.faxtomail.persistence.entities.MailAction; import com.franciaflex.faxtomail.services.service.ConfigurationService; import com.franciaflex.faxtomail.services.service.MailFolderService; import com.franciaflex.faxtomail.services.service.ReferentielService; @@ -77,10 +78,12 @@ protected List<MailFilter> mailFilters; - protected List<FaxToMailUser> users; - protected List<EmailAccount> emailAccounts; + protected List<FaxToMailUser> users; + + protected List<FaxToMailUserGroup> groups; + @Override public void prepare() throws Exception { @@ -93,10 +96,11 @@ demandTypes = referentielService.getAllDemandType(); mailFolders = mailFolderService.getRootMailFolders(); mailFoldersUsage = mailFolderService.getMailFoldersUsage(); - users = configurationService.getAllUsers(); emailAccounts = configurationService.getEmailAccounts(); mailFilters = configurationService.getMailFilters(); configuration = configurationService.getConfiguration(); + users = configurationService.getAllUsers(); + groups = configurationService.getAllGroups(); return INPUT; } @@ -162,11 +166,7 @@ Type type = new TypeToken<List<MailFolder>>() {}.getType(); this.mailFolders = getGson().fromJson(json, type); } - - public List<FaxToMailUser> getUsers() { - return users; - } - + public List<MailFilter> getMailFilters() { return mailFilters; } @@ -189,6 +189,14 @@ this.emailAccounts = getGson().fromJson(json, type); } + public List<FaxToMailUser> getUsers() { + return users; + } + + public List<FaxToMailUserGroup> getGroups() { + return groups; + } + public Map<MailAction, String> getMailActions() { return getEnumAsMap(MailAction.values()); } 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-06 08:10:52 UTC (rev 141) +++ trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/configuration-input.jsp 2014-06-06 09:16:16 UTC (rev 142) @@ -46,9 +46,11 @@ 'mailFolders': <s:property value="toJson(mailFolders)" escapeHtml="false"/>, 'mailFoldersUsage': <s:property value="toJson(mailFoldersUsage)" escapeHtml="false"/>, 'searchDisplayColumns': <s:property value="toJson(configuration.searchDisplayColumns)" escapeHtml="false"/>, + 'mailFilters': <s:property value="toJson(mailFilters)" escapeHtml="false"/>, + 'emailAccounts': <s:property value="toJson(emailAccounts)" escapeHtml="false"/>, + // referentiels 'users': <s:property value="toJson(users)" escapeHtml="false"/>, - 'mailFilters': <s:property value="toJson(mailFilters)" escapeHtml="false"/>, - 'emailAccounts': <s:property value="toJson(emailAccounts)" escapeHtml="false"/> + 'groups': <s:property value="toJson(groups)" escapeHtml="false"/> }); </script> </head> @@ -497,17 +499,19 @@ <thead> <tr> <th>Utilisateur ou groupe</th> - <th>Type</th> + <th>Droits</th> <th>Action</th> </tr> </thead> <tbody> <tr ng-repeat="user in selectedMailFolder.writeRightUsers"> <td> - {{user.firstName}} {{user.lastName}} + <span class="glyphicon glyphicon-user"></span> {{user.firstName}} {{user.lastName}} </td> <td> - Ecriture + <label><input type="checkbox"> Lecture</label> + <label><input type="checkbox"> Écriture</label> + <label><input type="checkbox"> Déplacement</label> </td> <td> <a class="pull-right btn btn-danger btn-xs" ng-click="removeWriteRightUser($index)"> @@ -515,6 +519,21 @@ </a> </td> </tr> + <tr ng-repeat="group in selectedMailFolder.writeRightGroups"> + <td> + <span class="glyphicon glyphicon-folder-open"></span> {{group.fullPath}} + </td> + <td> + <label><input type="checkbox"> Lecture</label> + <label><input type="checkbox"> Écriture</label> + <label><input type="checkbox"> Déplacement</label> + </td> + <td> + <a class="pull-right btn btn-danger btn-xs" ng-click="removeWriteRightGroup($index)"> + <span class="glyphicon glyphicon-remove"></span> + </a> + </td> + </tr> </tbody> </table> @@ -528,10 +547,10 @@ <div class="form-group"> Nouveau groupe : - <select ng-model="newWriteAccessGroup" ng-options="groupName for groupName in groupNames"> + <select ng-model="newWriteRightGroup" ng-options="group as group.fullPath for group in groups"> <option></option> </select> - <a class="btn btn-success btn-xs" ng-click="addReplyAddress()" ng-disabled="!newWriteAccessGroup"> + <a class="btn btn-success btn-xs" ng-click="addWriteRightGroup()" ng-disabled="!newWriteRightGroup"> <span class="glyphicon glyphicon-ok"></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-06 08:10:52 UTC (rev 141) +++ trunk/faxtomail-ui-web/src/main/webapp/js/configuration.js 2014-06-06 09:16:16 UTC (rev 142) @@ -228,6 +228,8 @@ function($scope, $window, ConfigurationData) { // {Array} Users $scope.users = ConfigurationData.users; + // {Array} Groups + $scope.groups = ConfigurationData.groups; // {Object} selected mail folder $scope.selectedMailFolder; // {String} add new customer responsible form value @@ -307,6 +309,12 @@ if (!$scope.selectedMailFolder.writeRightUsers) { $scope.selectedMailFolder.writeRightUsers = []; } + if (!$scope.selectedMailFolder.writeRightGroups) { + $scope.selectedMailFolder.writeRightGroups = []; + } + if (!$scope.selectedMailFolder.etatAttente) { + $scope.selectedMailFolder.etatAttente = []; + } // initialise la liste des colonnes pour le dossier courant $scope.folderTableColumns = []; @@ -383,9 +391,25 @@ // remove customer responsible $scope.removeWriteRightUser = function(index) { - $scope.selectedMailFolder.writeRightUsers.splice(index, 1); + if ($window.confirm("Êtes-vous sur de vouloir supprimer les droits de cet utilisateur ?")) { + $scope.selectedMailFolder.writeRightUsers.splice(index, 1); + } }; + + // add reply address + $scope.addWriteRightGroup = function() { + console.log("dd") + $scope.selectedMailFolder.writeRightGroups.push($scope.newWriteRightGroup); + delete $scope.newWriteRightGroup; + }; + // remove customer responsible + $scope.removeWriteRightGroup = function(index) { + if ($window.confirm("Êtes-vous sur de vouloir supprimer les droits de ce groupe ?")) { + $scope.selectedMailFolder.writeRightGroups.splice(index, 1); + } + }; + // selection/deselection d'un état d'attente possible pour ce dossier $scope.changeFolderEtatAttente = function(etatAttente) { var index = $scope.selectedMailFolder.etatAttente.indexOf(etatAttente);