From e5bf58760e5f25b9e66a595a7c12300a3a1c4d3b Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Thu, 13 Sep 2018 18:05:01 +0200 Subject: [PATCH] configuration parameter for default custom overlays privilege --- .../model/user/ConfigurationElementType.java | 2 ++ .../services/impl/ProjectService.java | 1 + .../mapviewer/services/impl/UserService.java | 26 ++++++++++++++++++- .../services/interfaces/IUserService.java | 1 + .../services/impl/UserServiceTest.java | 20 +++++++++++++- 5 files changed, 48 insertions(+), 2 deletions(-) diff --git a/model/src/main/java/lcsb/mapviewer/model/user/ConfigurationElementType.java b/model/src/main/java/lcsb/mapviewer/model/user/ConfigurationElementType.java index 5250a89749..4d03acc44e 100644 --- a/model/src/main/java/lcsb/mapviewer/model/user/ConfigurationElementType.java +++ b/model/src/main/java/lcsb/mapviewer/model/user/ConfigurationElementType.java @@ -224,6 +224,8 @@ public enum ConfigurationElementType { LDAP_FILTER("LDAP filter ", "(memberof=cn=minerva,cn=groups,cn=accounts,dc=uni,dc=lu)", ConfigurationElementEditType.STRING, true, ConfigurationElementTypeGroup.LDAP_CONFIGURATION), // + DEFAULT_CUSTOM_LAYOUTS("Default user privilege for: " + PrivilegeType.CUSTOM_LAYOUTS.getCommonName(), "0", + ConfigurationElementEditType.INTEGER, true, ConfigurationElementTypeGroup.DEFAULT_USER_PRIVILEGES), ; /** diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java b/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java index fd3fdeb116..dfc0e41528 100644 --- a/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java +++ b/service/src/main/java/lcsb/mapviewer/services/impl/ProjectService.java @@ -475,6 +475,7 @@ public class ProjectService implements IProjectService { for (User user : userDao.getAll()) { if (!processedUser.contains(user)) { processedUser.add(user); + userService.createDefaultBasicPrivilegesForUser(user); userService.createDefaultProjectPrivilegesForUser(project, user); } } diff --git a/service/src/main/java/lcsb/mapviewer/services/impl/UserService.java b/service/src/main/java/lcsb/mapviewer/services/impl/UserService.java index cfabf12b2a..633bee5d8c 100644 --- a/service/src/main/java/lcsb/mapviewer/services/impl/UserService.java +++ b/service/src/main/java/lcsb/mapviewer/services/impl/UserService.java @@ -10,6 +10,7 @@ import java.util.List; import java.util.Map; import java.util.Random; +import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.authority.AuthorityUtils; @@ -30,6 +31,7 @@ import lcsb.mapviewer.model.Project; import lcsb.mapviewer.model.log.LogType; import lcsb.mapviewer.model.user.BasicPrivilege; import lcsb.mapviewer.model.user.ConfigurationElementType; +import lcsb.mapviewer.model.user.ConfigurationOption; import lcsb.mapviewer.model.user.ObjectPrivilege; import lcsb.mapviewer.model.user.PrivilegeType; import lcsb.mapviewer.model.user.User; @@ -538,6 +540,7 @@ public class UserService implements IUserService { user.setEmail(ldapUserData.getEmail()); user.setConnectedToLdap(true); addUser(user); + createDefaultBasicPrivilegesForUser(user); for (Project project : projectDao.getAll()) { createDefaultProjectPrivilegesForUser(project, user); } @@ -572,9 +575,30 @@ public class UserService implements IUserService { } } ObjectPrivilege privilege = new ObjectPrivilege(project, level, type, user); - setUserPrivilege(user, privilege); + updateUserPrivilegesWithoutDbModification(user, privilege); } } + updateUser(user); + } + + @Override + public void createDefaultBasicPrivilegesForUser(User user) { + for (PrivilegeType type : PrivilegeType.values()) { + if (BasicPrivilege.class.equals(type.getPrivilegeClassType())) { + int level = 0; + ConfigurationOption option = configurationService.getValue(type); + if (option != null) { + if (option.getValue().equalsIgnoreCase("true")) { + level = 1; + } else if (StringUtils.isNumeric(option.getValue())) { + level = Integer.valueOf(option.getValue()); + } + BasicPrivilege privilege = new BasicPrivilege(level, type, user); + updateUserPrivilegesWithoutDbModification(user, privilege); + } + } + } + updateUser(user); } @Override diff --git a/service/src/main/java/lcsb/mapviewer/services/interfaces/IUserService.java b/service/src/main/java/lcsb/mapviewer/services/interfaces/IUserService.java index 66bc88d312..49f5ad04bc 100644 --- a/service/src/main/java/lcsb/mapviewer/services/interfaces/IUserService.java +++ b/service/src/main/java/lcsb/mapviewer/services/interfaces/IUserService.java @@ -184,6 +184,7 @@ public interface IUserService { void setLdapService(ILdapService ldapService); void createDefaultProjectPrivilegesForUser(Project project, User user); + void createDefaultBasicPrivilegesForUser(User user); Map<String, Boolean> ldapAccountExistsForLogin(Collection<User> logins); } diff --git a/service/src/test/java/lcsb/mapviewer/services/impl/UserServiceTest.java b/service/src/test/java/lcsb/mapviewer/services/impl/UserServiceTest.java index 64bc23211d..73c5cb4846 100644 --- a/service/src/test/java/lcsb/mapviewer/services/impl/UserServiceTest.java +++ b/service/src/test/java/lcsb/mapviewer/services/impl/UserServiceTest.java @@ -85,7 +85,8 @@ public class UserServiceTest extends ServiceTestFunctions { private LdapService createMockLdapService(String filename, String login, String passwd) throws LDAPException { configurationService.setConfigurationValue(ConfigurationElementType.LDAP_BASE_DN, "dc=uni,dc=lu"); configurationService.setConfigurationValue(ConfigurationElementType.LDAP_OBJECT_CLASS, "person"); - configurationService.setConfigurationValue(ConfigurationElementType.LDAP_FILTER, "memberof=cn=gitlab,cn=groups,cn=accounts,dc=uni,dc=lu"); + configurationService.setConfigurationValue(ConfigurationElementType.LDAP_FILTER, + "memberof=cn=gitlab,cn=groups,cn=accounts,dc=uni,dc=lu"); LdapService ldapService = Mockito.spy(LdapService.class); ldapService.setConfigurationService(configurationService); @@ -226,4 +227,21 @@ public class UserServiceTest extends ServiceTestFunctions { throw e; } } + + @Test + public void testCreateDefaultBasicPrivilegesForUser() throws Exception { + String originalValue = configurationService.getConfigurationValue(ConfigurationElementType.DEFAULT_CUSTOM_LAYOUTS); + try { + configurationService.setConfigurationValue(ConfigurationElementType.DEFAULT_CUSTOM_LAYOUTS, "127"); + createUser(); + userService.createDefaultBasicPrivilegesForUser(user); + assertEquals(127, userService.getUserPrivilegeLevel(user, PrivilegeType.CUSTOM_LAYOUTS)); + + } catch (Exception e) { + e.printStackTrace(); + throw e; + } finally { + configurationService.setConfigurationValue(ConfigurationElementType.DEFAULT_CUSTOM_LAYOUTS, originalValue); + } + } } -- GitLab