aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2013-10-24 13:25:26 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2013-10-24 13:25:26 +0300
commit5769594665c28999ecbe76d8c9eda44adff27549 (patch)
treee271fe15eafd1b60fc229a1362517462df4b36fa
parent33ba97cd28f138b49697273e445b479d42bf42a9 (diff)
downloadgitaclhook-5769594665c28999ecbe76d8c9eda44adff27549.tar.gz
gitaclhook-5769594665c28999ecbe76d8c9eda44adff27549.tar.bz2
Take into account the user primary group.
* MANIFEST: Add new files. * lib/GitACL.pm (match_primary_group): New function. (match_user): Use match_primary_group. * lib/GitACL/File.pm (check_acl): Minor fix.
-rw-r--r--MANIFEST2
-rw-r--r--lib/GitACL.pm9
-rw-r--r--lib/GitACL/File.pm2
3 files changed, 12 insertions, 1 deletions
diff --git a/MANIFEST b/MANIFEST
index be26d52..4e26ac4 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -7 +7,3 @@ lib/GitACL/LDAP.pm
gitacl.schema
+META.yml Module YAML meta-data (added by MakeMaker)
+META.json Module JSON meta-data (added by MakeMaker)
diff --git a/lib/GitACL.pm b/lib/GitACL.pm
index 57b38b8..f1f792a 100644
--- a/lib/GitACL.pm
+++ b/lib/GitACL.pm
@@ -96,2 +96,10 @@ sub git_value(@) {
+sub match_primary_group($$) {
+ my ($user_name,$group_name) = @_;
+ my ($name,$passwd,$uid,$gid,$members) = getpwnam($user_name) or return 0;
+ ($name) = getgrgid($gid) or return 0;
+ return 1 if $name eq $group_name;
+ return 0;
+}
+
sub match_user($$) {
@@ -101,2 +109,3 @@ sub match_user($$) {
if ($expr =~ /^%(.+)/) {
+ return 1 if match_primary_group($self->{user_name}, $1);
my ($name,$passwd,$gid,$members) = getgrnam($1) or return 0;
diff --git a/lib/GitACL/File.pm b/lib/GitACL/File.pm
index 49378b0..8842ffd 100644
--- a/lib/GitACL/File.pm
+++ b/lib/GitACL/File.pm
@@ -26,3 +26,3 @@ sub check_acl {
my $filename = GitACL::git_value('config', 'hooks.aclfile');
- $self->allow("no ACL configured for $self->project_name")
+ $self->allow("no ACL configured for ".$self->project_name)
unless defined($filename);

Return to:

Send suggestions and report system problems to the System administrator.