diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2013-10-24 13:25:26 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2013-10-24 13:25:26 +0300 |
commit | 5769594665c28999ecbe76d8c9eda44adff27549 (patch) | |
tree | e271fe15eafd1b60fc229a1362517462df4b36fa | |
parent | 33ba97cd28f138b49697273e445b479d42bf42a9 (diff) | |
download | gitaclhook-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-- | MANIFEST | 2 | ||||
-rw-r--r-- | lib/GitACL.pm | 9 | ||||
-rw-r--r-- | lib/GitACL/File.pm | 2 |
3 files changed, 12 insertions, 1 deletions
@@ -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); |