summaryrefslogtreecommitdiffstats
path: root/src/com/gitblit/models
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2012-10-10 16:47:11 -0400
committerJames Moger <james.moger@gitblit.com>2012-10-10 16:47:11 -0400
commit5d7545652a6529c9076f67acd75f7a977c8a44a6 (patch)
treeac886b9bd5c14965bbb9a110b354bb29a4d4b546 /src/com/gitblit/models
parentffbd6e70d1cdc2638f31860e810c17ad3d006fd6 (diff)
downloadgitblit-5d7545652a6529c9076f67acd75f7a977c8a44a6.tar.gz
gitblit-5d7545652a6529c9076f67acd75f7a977c8a44a6.zip
Try regex permission matching if exact permission is not found (issue 36)
Diffstat (limited to 'src/com/gitblit/models')
-rw-r--r--src/com/gitblit/models/TeamModel.java11
-rw-r--r--src/com/gitblit/models/UserModel.java11
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) {