Skip to content

Commit 2051f14

Browse files
committed
Refactor admin user and group handling
1 parent 948cc92 commit 2051f14

3 files changed

Lines changed: 12 additions & 11 deletions

File tree

src/main/java/eu/openanalytics/containerproxy/service/RuntimeValueService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353

5454
import javax.annotation.PostConstruct;
5555
import javax.inject.Inject;
56+
import java.util.List;
5657
import java.util.Map;
5758
import java.util.Optional;
5859

@@ -103,7 +104,7 @@ public Proxy addRuntimeValuesBeforeSpel(Authentication user, ProxySpec spec, Pro
103104
proxyBuilder.addRuntimeValue(new RuntimeValue(RealmIdKey.inst, identifierService.realmId), false);
104105
}
105106
proxyBuilder.addRuntimeValue(new RuntimeValue(UserIdKey.inst, proxy.getUserId()), false);
106-
String[] groups = UserService.getGroups(user);
107+
List<String> groups = UserService.getGroups(user);
107108
proxyBuilder.addRuntimeValue(new RuntimeValue(UserGroupsKey.inst, String.join(",", groups)), true);
108109
proxyBuilder.addRuntimeValue(new RuntimeValue(CreatedTimestampKey.inst, Long.toString(proxy.getCreatedTimestamp())), false);
109110

src/main/java/eu/openanalytics/containerproxy/service/UserService.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ public String getCurrentUserId() {
8888
return getUserId(getCurrentAuth());
8989
}
9090

91-
public String[] getAdminGroups() {
91+
public Set<String> getAdminGroups() {
9292
Set<String> adminGroups = new HashSet<>();
9393

9494
// Support for old, non-array notation
@@ -105,10 +105,10 @@ public String[] getAdminGroups() {
105105
adminGroups.add(groupName.toUpperCase());
106106
}
107107

108-
return adminGroups.toArray(new String[adminGroups.size()]);
108+
return adminGroups;
109109
}
110110

111-
public String[] getAdminUsers() {
111+
public Set<String> getAdminUsers() {
112112
Set<String> adminUsers = new HashSet<>();
113113

114114
// Support for old, non-array notation
@@ -125,14 +125,14 @@ public String[] getAdminUsers() {
125125
adminUsers.add(userName);
126126
}
127127

128-
return adminUsers.toArray(new String[adminUsers.size()]);
128+
return adminUsers;
129129
}
130130

131-
public String[] getGroups() {
131+
public List<String> getGroups() {
132132
return getGroups(getCurrentAuth());
133133
}
134134

135-
public static String[] getGroups(Authentication auth) {
135+
public static List<String> getGroups(Authentication auth) {
136136
List<String> groups = new ArrayList<>();
137137
if (auth != null) {
138138
for (GrantedAuthority grantedAuth: auth.getAuthorities()) {
@@ -141,15 +141,15 @@ public static String[] getGroups(Authentication auth) {
141141
groups.add(authName);
142142
}
143143
}
144-
return groups.toArray(new String[groups.size()]);
144+
return groups;
145145
}
146146

147147
public boolean isAdmin() {
148148
return isAdmin(getCurrentAuth());
149149
}
150150

151151
public boolean isAdmin(Authentication auth) {
152-
if (!authBackend.hasAuthorization()) {
152+
if (!authBackend.hasAuthorization() || auth == null) {
153153
return false;
154154
}
155155

@@ -161,7 +161,7 @@ public boolean isAdmin(Authentication auth) {
161161

162162
String userName = getUserId(auth);
163163
for (String adminUser: getAdminUsers()) {
164-
if (userName != null && userName.equals(adminUser)) {
164+
if (userName != null && userName.equalsIgnoreCase(adminUser)) {
165165
return true;
166166
}
167167
}

src/main/java/eu/openanalytics/containerproxy/spec/expression/SpecExpressionContext.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ public static SpecExpressionContext create(SpecExpressionContextBuilder builder,
135135
builder.ldapUser = (LdapUserDetails) o;
136136
}
137137
if (o instanceof Authentication) {
138-
builder.groups = Arrays.asList(UserService.getGroups((Authentication) o));
138+
builder.groups = UserService.getGroups((Authentication) o);
139139
builder.userId = UserService.getUserId(((Authentication) o));
140140
}
141141
}

0 commit comments

Comments
 (0)