This is an automated email from the git hooks/post-receive script. New commit to branch develop-1.1.x in repository faxtomail. See http://git.codelutin.com/faxtomail.git commit 5602d1e6c947a0831f31b9084b5e1379d8fe3df1 Author: Kevin Morin <morin@codelutin.com> Date: Tue Nov 10 10:48:53 2015 +0100 retour en arrière sur l'héritage des droits de lecture --- .../persistence/entities/EmailTopiaDao.java | 1 - .../persistence/entities/MailFolderTopiaDao.java | 9 +------ .../services/service/ConfigurationServiceImpl.java | 6 ----- .../services/service/EmailServiceImpl.java | 29 +++++++++++++++++++++- .../services/service/MailFolderService.java | 2 -- .../services/service/MailFolderServiceImpl.java | 12 +++------ .../src/main/webapp/js/configuration.js | 14 ----------- 7 files changed, 32 insertions(+), 41 deletions(-) diff --git a/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java b/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java index 3c4c215..2e61f5c 100644 --- a/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java +++ b/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java @@ -447,7 +447,6 @@ public class EmailTopiaDao extends AbstractEmailTopiaDao<Email> { // Email.PROPERTY_HISTORY + "." + History.PROPERTY_FIELDS, // Email.PROPERTY_EMAIL_GROUP + "." + EmailGroup.PROPERTY_EMAIL) for (Email email : result.getElements()) { - Hibernate.initialize(email.getMailFolder()); //Hibernate.initialize(email.getPriority()); //Hibernate.initialize(email.getDemandType()); //Hibernate.initialize(email.getClient()); diff --git a/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/MailFolderTopiaDao.java b/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/MailFolderTopiaDao.java index 61180f7..47738fa 100644 --- a/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/MailFolderTopiaDao.java +++ b/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/MailFolderTopiaDao.java @@ -55,14 +55,7 @@ public class MailFolderTopiaDao extends AbstractMailFolderTopiaDao<MailFolder> { } public Collection<MailFolder> getReadableFolders(FaxToMailUser user) { - return getReadableFolders(user, true); - } - - public Collection<MailFolder> getReadableFolders(FaxToMailUser user, boolean filterArchiveFoldes) { - String query = newFromClause("mf") + " where (:user in elements(mf.readRightUsers) or exists (from mf.readRightGroups g where g in (:groups)))"; - if (filterArchiveFoldes) { - query += " and mf.archiveFolder = false"; - } + String query = newFromClause("mf") + " where (:user in elements(mf.readRightUsers) or exists (from mf.readRightGroups g where g in (:groups))) and mf.archiveFolder = false"; HashMap<String, Object> map = Maps.newHashMap(); map.put("user", user); map.put("groups", user.getUserGroups()); diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationServiceImpl.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationServiceImpl.java index 9a2e02b..4a10c85 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationServiceImpl.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationServiceImpl.java @@ -312,12 +312,6 @@ public class ConfigurationServiceImpl extends FaxToMailServiceSupport implements currentMailFolder.setCompany(parent.getCompany()); } - // set the reading rights on all the children for the search to be easier - if (parent != null) { - currentMailFolder.addAllReadRightUsers(parent.getReadRightUsers()); - currentMailFolder.addAllReadRightGroups(parent.getReadRightGroups()); - } - if (!currentMailFolder.isPersisted()) { currentMailFolder = dao.create(currentMailFolder); } diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java index 61fbda9..8a4c670 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java @@ -943,10 +943,37 @@ public class EmailServiceImpl extends FaxToMailServiceSupport implements EmailSe } } + /** + * Calcule recursivement l'ensemble des répertoires lisible par un utilisateur récursivement. + * + * @param readMailFolders result mail folders + * @param mailFolders mail folder to allow + */ + protected void computeUserReadableFolder(Set<MailFolder> readMailFolders, Iterable<MailFolder> mailFolders) { + if (mailFolders != null) { + for (MailFolder mailFolder : mailFolders) { + readMailFolders.add(mailFolder); + computeUserReadableFolder(readMailFolders, mailFolder.getChildren()); + } + } + } + @Override public PaginationResult<Email> search(SearchFilter emailFilter, FaxToMailUser user, PaginationParameter pagination) { - Set<MailFolder> readMailFolders = getMailFolderService().getAllMailFoldersWithReadingRights(user); + // compute rigths + MailFolderTopiaDao mailFolderDao = getPersistenceContext().getMailFolderDao(); + Set<MailFolder> readMailFolders = new HashSet<MailFolder>(); + // read rights for user + Iterable<MailFolder> mailFolders = mailFolderDao.forReadRightUsersContains(user).findAll(); + computeUserReadableFolder(readMailFolders, mailFolders); + // read rigths for groups + if (user.getUserGroups() != null) { + for (FaxToMailUserGroup group : user.getUserGroups()) { + mailFolders = mailFolderDao.forReadRightGroupsContains(group).findAll(); + computeUserReadableFolder(readMailFolders, mailFolders); + } + } // compute search EmailTopiaDao emailDao = getPersistenceContext().getEmailDao(); diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderService.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderService.java index 69789fe..94d126c 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderService.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderService.java @@ -53,8 +53,6 @@ public interface MailFolderService extends FaxToMailService { List<MailFolder> getRootMailFoldersWithReadingRights(FaxToMailUser user); - Set<MailFolder> getAllMailFoldersWithReadingRights(FaxToMailUser user); - List<MailFolder> getRootMailFoldersWithMoveRights(FaxToMailUser user); List<MailFolder> getMailFolders(Collection<String> ids); diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderServiceImpl.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderServiceImpl.java index b89d4c0..6f1f27e 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderServiceImpl.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderServiceImpl.java @@ -129,19 +129,13 @@ public class MailFolderServiceImpl extends FaxToMailServiceSupport implements Ma } if (folder != null) { - browseReadableFolders(folder, user, false); + browseReadableFolders(folder, result, user, false); } } return result; } - @Override - public Set<MailFolder> getAllMailFoldersWithReadingRights(FaxToMailUser user) { - MailFolderTopiaDao dao = getPersistenceContext().getMailFolderDao(); - return new HashSet<>(dao.getReadableFolders(user, false)); - } - - protected void browseReadableFolders(MailFolder folder, FaxToMailUser user, boolean writable) { + protected void browseReadableFolders(MailFolder folder, List<MailFolder> readableRoots, FaxToMailUser user, boolean writable) { folder.setFolderReadable(true); if (!writable && folder.sizeWriteRightGroups() > 0) { @@ -154,7 +148,7 @@ public class MailFolderServiceImpl extends FaxToMailServiceSupport implements Ma if (folder.isChildrenNotEmpty()) { for (MailFolder child : folder.getChildren()) { - browseReadableFolders(child, user, writable); + browseReadableFolders(child, readableRoots, user, writable); } } diff --git a/faxtomail-ui-web/src/main/webapp/js/configuration.js b/faxtomail-ui-web/src/main/webapp/js/configuration.js index ed5cadc..3ed2b2e 100644 --- a/faxtomail-ui-web/src/main/webapp/js/configuration.js +++ b/faxtomail-ui-web/src/main/webapp/js/configuration.js @@ -92,20 +92,6 @@ ConfigurationModule.controller('ConfigurationController', ['$scope', 'Configurat mailFolder.$cumulativeCount = folderCount; cumulativeCount += folderCount; - // et on supprime les droits de lecture qui sont déjà dans les parents - angular.forEach(mailFolder.readRightUsers, function(user) { - if (parent.readRightUsers.containsByTopiaId(user)) { - var index = mailFolder.readRightUsers.indexOfByTopiaId(user); - mailFolder.readRightUsers.splice(index, 1); - } - }); - - angular.forEach(mailFolder.readRightGroups, function(group) { - if (parent.readRightGroups.containsByTopiaId(group)) { - var index = mailFolder.readRightGroups.indexOfByTopiaId(group); - mailFolder.readRightGroups.splice(index, 1); - } - }); }); } return cumulativeCount; -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.