diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/com/gitblit/models/TeamModel.java | 11 | ||||
-rw-r--r-- | src/com/gitblit/models/UserModel.java | 11 |
2 files changed, 22 insertions, 0 deletions
diff --git a/src/com/gitblit/models/TeamModel.java b/src/com/gitblit/models/TeamModel.java index d185b9d6..0b9c5069 100644 --- a/src/com/gitblit/models/TeamModel.java +++ b/src/com/gitblit/models/TeamModel.java @@ -132,10 +132,21 @@ public class TeamModel implements Serializable, Comparable<TeamModel> { public AccessPermission getRepositoryPermission(RepositoryModel repository) {
AccessPermission permission = AccessPermission.NONE;
if (permissions.containsKey(repository.name.toLowerCase())) {
+ // exact repository permission specified
AccessPermission p = permissions.get(repository.name.toLowerCase());
if (p != null) {
permission = p;
}
+ } else {
+ // search for regex permission match
+ for (String key : permissions.keySet()) {
+ if (repository.name.matches(key)) {
+ AccessPermission p = permissions.get(key);
+ if (p != null) {
+ permission = p;
+ }
+ }
+ }
}
return permission;
}
diff --git a/src/com/gitblit/models/UserModel.java b/src/com/gitblit/models/UserModel.java index ee730257..a4a40245 100644 --- a/src/com/gitblit/models/UserModel.java +++ b/src/com/gitblit/models/UserModel.java @@ -175,10 +175,21 @@ public class UserModel implements Principal, Serializable, Comparable<UserModel> // and the permissions of teams of which the user belongs
AccessPermission permission = AccessPermission.NONE;
if (permissions.containsKey(repository.name.toLowerCase())) {
+ // exact repository permission specified
AccessPermission p = permissions.get(repository.name.toLowerCase());
if (p != null) {
permission = p;
}
+ } else {
+ // search for regex permission match
+ for (String key : permissions.keySet()) {
+ if (repository.name.matches(key)) {
+ AccessPermission p = permissions.get(key);
+ if (p != null) {
+ permission = p;
+ }
+ }
+ }
}
for (TeamModel team : teams) {
|