aboutsummaryrefslogtreecommitdiff
path: root/lib
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 /lib
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.
Diffstat (limited to 'lib')
-rw-r--r--lib/GitACL.pm9
-rw-r--r--lib/GitACL/File.pm2
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(@) {
94 return $_; 94 return $_;
95} 95}
96 96
97sub match_primary_group($$) {
98 my ($user_name,$group_name) = @_;
99 my ($name,$passwd,$uid,$gid,$members) = getpwnam($user_name) or return 0;
100 ($name) = getgrgid($gid) or return 0;
101 return 1 if $name eq $group_name;
102 return 0;
103}
104
97sub match_user($$) { 105sub match_user($$) {
98 my ($self, $expr) = @_; 106 my ($self, $expr) = @_;
99 return 1 if ($expr eq 'all'); 107 return 1 if ($expr eq 'all');
100 return 0 if ($expr eq 'none'); 108 return 0 if ($expr eq 'none');
101 if ($expr =~ /^%(.+)/) { 109 if ($expr =~ /^%(.+)/) {
110 return 1 if match_primary_group($self->{user_name}, $1);
102 my ($name,$passwd,$gid,$members) = getgrnam($1) or return 0; 111 my ($name,$passwd,$gid,$members) = getgrnam($1) or return 0;
103 my @a = split(/\s+/,$members); 112 my @a = split(/\s+/,$members);
104 for (my $i = 0; $i <= $#a; $i++) { 113 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 {
24 my @ret; 24 my @ret;
25 25
26 my $filename = GitACL::git_value('config', 'hooks.aclfile'); 26 my $filename = GitACL::git_value('config', 'hooks.aclfile');
27 $self->allow("no ACL configured for $self->project_name") 27 $self->allow("no ACL configured for ".$self->project_name)
28 unless defined($filename); 28 unless defined($filename);
29 29
30 open($fd, "<", $filename) 30 open($fd, "<", $filename)

Return to:

Send suggestions and report system problems to the System administrator.