diff options
author | James Moger <james.moger@gitblit.com> | 2012-10-10 16:47:11 -0400 |
---|---|---|
committer | James Moger <james.moger@gitblit.com> | 2012-10-10 16:47:11 -0400 |
commit | 5d7545652a6529c9076f67acd75f7a977c8a44a6 (patch) | |
tree | ac886b9bd5c14965bbb9a110b354bb29a4d4b546 /src/com/gitblit/models | |
parent | ffbd6e70d1cdc2638f31860e810c17ad3d006fd6 (diff) | |
download | gitblit-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.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) {
|