From 3d699cb14d6c891338567c562f7fe8d81e318b1c Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 24 Apr 2012 07:48:39 -0500 Subject: Allow for admin teams with spaces in their name. --- src/com/gitblit/LdapUserService.java | 22 +++++++++++----------- src/com/gitblit/utils/StringUtils.java | 32 ++++++++++++++++++-------------- 2 files changed, 29 insertions(+), 25 deletions(-) (limited to 'src/com') diff --git a/src/com/gitblit/LdapUserService.java b/src/com/gitblit/LdapUserService.java index 9fcef9d6..86b61364 100644 --- a/src/com/gitblit/LdapUserService.java +++ b/src/com/gitblit/LdapUserService.java @@ -20,6 +20,7 @@ import java.io.File; import java.net.URI; import java.net.URISyntaxException; import java.security.GeneralSecurityException; +import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -174,17 +175,16 @@ public class LdapUserService extends GitblitUserService { } private void setAdminAttribute(UserModel user) { - String adminString = settings.getString(Keys.realm.ldap_admins, ""); - String[] admins = adminString.split(" "); - user.canAdmin = false; - for (String admin : admins) { - if (admin.startsWith("@")) { // Team - if (user.getTeam(admin.substring(1)) != null) - user.canAdmin = true; - } else - if (user.getName().equalsIgnoreCase(admin)) - user.canAdmin = true; - } + user.canAdmin = false; + List admins = settings.getStrings(Keys.realm.ldap_admins); + for (String admin : admins) { + if (admin.startsWith("@")) { // Team + if (user.getTeam(admin.substring(1)) != null) + user.canAdmin = true; + } else + if (user.getName().equalsIgnoreCase(admin)) + user.canAdmin = true; + } } private void getTeamsFromLdap(LDAPConnection ldapConnection, String simpleUsername, SearchResultEntry loggingInUser, UserModel user) { diff --git a/src/com/gitblit/utils/StringUtils.java b/src/com/gitblit/utils/StringUtils.java index 0460ac9f..2c357241 100644 --- a/src/com/gitblit/utils/StringUtils.java +++ b/src/com/gitblit/utils/StringUtils.java @@ -327,20 +327,24 @@ public class StringUtils { * @return list of strings */ public static List getStringsFromValue(String value, String separator) { - List strings = new ArrayList(); - try { - String[] chunks = value.split(separator); - for (String chunk : chunks) { - chunk = chunk.trim(); - if (chunk.length() > 0) { - strings.add(chunk); - } - } - } catch (PatternSyntaxException e) { - throw new RuntimeException(e); - } - return strings; - } + List strings = new ArrayList(); + try { + String[] chunks = value.split(separator + "(?=([^\"]*\"[^\"]*\")*[^\"]*$)"); + for (String chunk : chunks) { + chunk = chunk.trim(); + if (chunk.length() > 0) { + if (chunk.charAt(0) == '"' && chunk.charAt(chunk.length() - 1) == '"') { + // strip double quotes + chunk = chunk.substring(1, chunk.length() - 1).trim(); + } + strings.add(chunk); + } + } + } catch (PatternSyntaxException e) { + throw new RuntimeException(e); + } + return strings; + } /** * Validates that a name is composed of letters, digits, or limited other -- cgit v1.2.3