[Major] renamed defaultLocation to primaryLocation, added secondaryLocation

This commit is contained in:
Robert von Burg 2019-05-30 15:34:59 +02:00
parent 14f6fb47b6
commit d8b4df4ca0
3 changed files with 24 additions and 11 deletions

View File

@ -10,7 +10,8 @@ public class PrivilegeConstants {
public static final String REALM = "realm"; public static final String REALM = "realm";
public static final String LOCATION = "location"; public static final String LOCATION = "location";
public static final String DEFAULT_LOCATION = "defaultLocation"; public static final String PRIMARY_LOCATION = "primaryLocation";
public static final String SECONDARY_LOCATIONS = "secondaryLocations";
public static final String ROLES = "roles"; public static final String ROLES = "roles";
public static final String EMAIL = "email"; public static final String EMAIL = "email";
} }

View File

@ -121,7 +121,7 @@ public abstract class BaseLdapPrivilegeHandler extends DefaultPrivilegeHandler {
} }
} }
protected User buildUserFromSearchResult(String username, SearchResult sr) throws NamingException { protected User buildUserFromSearchResult(String username, SearchResult sr) throws Exception {
Attributes attrs = sr.getAttributes(); Attributes attrs = sr.getAttributes();
validateLdapUsername(username, attrs); validateLdapUsername(username, attrs);
@ -143,7 +143,7 @@ public abstract class BaseLdapPrivilegeHandler extends DefaultPrivilegeHandler {
} }
protected abstract Map<String, String> buildProperties(String username, Attributes attrs, Set<String> ldapGroups, protected abstract Map<String, String> buildProperties(String username, Attributes attrs, Set<String> ldapGroups,
Set<String> strolchRoles) throws NamingException; Set<String> strolchRoles) throws Exception;
protected void validateLdapUsername(String username, Attributes attrs) throws NamingException { protected void validateLdapUsername(String username, Attributes attrs) throws NamingException {
Attribute sAMAccountName = attrs.get("sAMAccountName"); Attribute sAMAccountName = attrs.get("sAMAccountName");

View File

@ -151,27 +151,39 @@ public class JsonConfigLdapPrivilegeHandler extends BaseLdapPrivilegeHandler {
@Override @Override
protected Map<String, String> buildProperties(String username, Attributes attrs, Set<String> ldapGroups, protected Map<String, String> buildProperties(String username, Attributes attrs, Set<String> ldapGroups,
Set<String> strolchRoles) throws NamingException { Set<String> strolchRoles) {
String defaultLocation = ""; String primaryLocation = "";
String secondaryLocations = "";
Set<String> locations = new HashSet<>(); Set<String> locations = new HashSet<>();
for (String ldapGroup : ldapGroups) { for (String ldapGroup : ldapGroups) {
JsonObject mappingJ = this.ldapGroupConfigs.get(ldapGroup).getAsJsonObject(); JsonObject mappingJ = this.ldapGroupConfigs.get(ldapGroup).getAsJsonObject();
mappingJ.get(LOCATION).getAsJsonArray().forEach(e -> locations.add(e.getAsString())); mappingJ.get(LOCATION).getAsJsonArray().forEach(e -> locations.add(e.getAsString()));
JsonElement defaultLocationJ = mappingJ.get(DEFAULT_LOCATION);
if (defaultLocationJ != null && !defaultLocationJ.isJsonNull()) { JsonElement primaryLocationJ = mappingJ.get(PRIMARY_LOCATION);
if (!defaultLocation.isEmpty()) if (primaryLocationJ != null && !primaryLocationJ.isJsonNull()) {
logger.warn("Default location already set by previous LDAP Group config, overriding for LDAP Group " if (!primaryLocation.isEmpty())
logger.warn("Primary location already set by previous LDAP Group config, overriding for LDAP Group "
+ ldapGroup); + ldapGroup);
defaultLocation = defaultLocationJ.getAsString(); primaryLocation = primaryLocationJ.getAsString();
}
JsonElement secondaryLocationsJ = mappingJ.get(SECONDARY_LOCATIONS);
if (secondaryLocationsJ != null && !secondaryLocationsJ.isJsonNull()) {
if (!secondaryLocations.isEmpty())
logger.warn(
"Secondary locations already set by previous LDAP Group config, overriding for LDAP Group "
+ ldapGroup);
secondaryLocations = secondaryLocationsJ.getAsString();
} }
} }
Map<String, String> properties = new HashMap<>(); Map<String, String> properties = new HashMap<>();
properties.put(REALM, this.realm); properties.put(REALM, this.realm);
properties.put(LOCATION, join(",", locations)); properties.put(LOCATION, join(",", locations));
properties.put(DEFAULT_LOCATION, defaultLocation); properties.put(PRIMARY_LOCATION, primaryLocation);
properties.put(SECONDARY_LOCATIONS, secondaryLocations);
return properties; return properties;
} }
} }