diff --git a/application-home/dictionary/manager-messages.properties b/application-home/dictionary/manager-messages.properties index 2105efc..34d0a42 100644 --- a/application-home/dictionary/manager-messages.properties +++ b/application-home/dictionary/manager-messages.properties @@ -135,6 +135,7 @@ lastLogin=Last login lastUpdated=Last updated latestRelease=Latest release latestSnapshot=Latest snapshot +ldap.disabled=LDAP Authentication is disabled. Set site property ''{0}'' to ''true'' to enable. ldap.users=LDAP Users ldap.settings=LDAP Settings ldap.not.working=Unable to connect to LDAP server at {0}, please check configuration! diff --git a/src/main/java/org/appng/application/manager/business/LdapUsers.java b/src/main/java/org/appng/application/manager/business/LdapUsers.java index ee10dd3..ac78450 100644 --- a/src/main/java/org/appng/application/manager/business/LdapUsers.java +++ b/src/main/java/org/appng/application/manager/business/LdapUsers.java @@ -77,23 +77,27 @@ public DataContainer getData(Site site, Application application, Environment env fp.addErrorMessage(request.getMessage(MessageConstants.LDAP_NOT_WORKING, ldapHost.getString())); } } else { - List users = new ArrayList<>(); - - List globalGroups = coreService.getSubjectsByType(UserType.GLOBAL_GROUP); - for (SubjectImpl globalGroup : globalGroups) { - List membersOfGroup = ldapService.getMembersOfGroup(site, globalGroup.getName()); - users.addAll(membersOfGroup.stream().map(s -> new LdapUser(s.getName(), s.getEmail(), s.getRealname(), - UserType.GLOBAL_GROUP, globalGroup.getName())).collect(Collectors.toList())); + if (site.getProperties().getBoolean(LdapService.LDAP_DISABLED)) { + fp.addInvalidMessage(request.getMessage(MessageConstants.LDAP_DISABLED, LdapService.LDAP_DISABLED)); + } else { + List globalGroups = coreService.getSubjectsByType(UserType.GLOBAL_GROUP); + for (SubjectImpl globalGroup : globalGroups) { + List membersOfGroup = ldapService.getMembersOfGroup(site, globalGroup.getName()); + users.addAll( + membersOfGroup.stream() + .map(s -> new LdapUser(s.getName(), s.getEmail(), s.getRealname(), + UserType.GLOBAL_GROUP, globalGroup.getName())) + .collect(Collectors.toList())); + } + List globalUsers = coreService.getSubjectsByType(UserType.GLOBAL_USER); + String userDn = siteProps.getString(LdapService.LDAP_ID_ATTRIBUTE) + "=%s," + + siteProps.getString(LdapService.LDAP_USER_BASE_DN); + users.addAll(globalUsers.stream().map(s -> { + return new LdapUser(s.getName(), s.getEmail(), s.getRealname(), s.getUserType(), + String.format(userDn, s.getName())); + }).collect(Collectors.toList())); } - List globalUsers = coreService.getSubjectsByType(UserType.GLOBAL_USER); - String userDn = siteProps.getString(LdapService.LDAP_ID_ATTRIBUTE) + "=%s," - + siteProps.getString(LdapService.LDAP_USER_BASE_DN); - users.addAll(globalUsers.stream().map(s -> { - return new LdapUser(s.getName(), s.getEmail(), s.getRealname(), s.getUserType(), - String.format(userDn, s.getName())); - }).collect(Collectors.toList())); - dataContainer.setPage(users, fp.getPageable(), true); } return dataContainer; diff --git a/src/test/java/org/appng/application/manager/business/LdapUsersTest.java b/src/test/java/org/appng/application/manager/business/LdapUsersTest.java index 5600eb2..103a73a 100644 --- a/src/test/java/org/appng/application/manager/business/LdapUsersTest.java +++ b/src/test/java/org/appng/application/manager/business/LdapUsersTest.java @@ -53,6 +53,7 @@ protected List getSiteProperties(String prefix) { siteProperties.add(new SimpleProperty(prefix + LdapService.LDAP_START_TLS, "false")); siteProperties.add(new SimpleProperty(prefix + LdapService.LDAP_HOST, "ldap://localhost:389")); siteProperties.add(new SimpleProperty(prefix + LdapService.LDAP_PRINCIPAL_SCHEME, "DN")); + siteProperties.add(new SimpleProperty(prefix + LdapService.LDAP_DISABLED, "true")); return siteProperties; }