diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/GitACL.pm | 9 | ||||
-rw-r--r-- | lib/GitACL/File.pm | 2 |
2 files changed, 10 insertions, 1 deletions
diff --git a/lib/GitACL.pm b/lib/GitACL.pm index 57b38b8..f1f792a 100644 --- a/lib/GitACL.pm +++ b/lib/GitACL.pm @@ -94,11 +94,20 @@ sub git_value(@) { return $_; } +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($$) { my ($self, $expr) = @_; return 1 if ($expr eq 'all'); return 0 if ($expr eq 'none'); if ($expr =~ /^%(.+)/) { + return 1 if match_primary_group($self->{user_name}, $1); my ($name,$passwd,$gid,$members) = getgrnam($1) or return 0; my @a = split(/\s+/,$members); for (my $i = 0; $i <= $#a; $i++) { 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 @@ -24,7 +24,7 @@ sub check_acl { my @ret; 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); open($fd, "<", $filename) |