Apache-AuthenN2
view release on metacpan or search on metacpan
AuthenN2.pm view on Meta::CPAN
unless ($pwd_table){
$r->note_basic_auth_failure;
$r->log_reason($self . ': cannot get nis+ passwd table', $r->uri);
return AUTH_REQUIRED;
}
my $pwd = '';
my $group = '';
# look for name match
foreach ($pwd_table->lookup('[name=' . $name . ']')){
$pwd = $_->{'passwd'};
$group = $_->{'gid'};
last;
}
# stash group id lookup for authorization check
$r->notes($name . 'Group', $group);
unless($pwd){
$r->note_basic_auth_failure;
$r->log_reason(
$self . ': user ' . $name .
' failed to authenticate in the nt domain(s) ' .
join(' ', @domains) . ', and is not in ' . $passwd_table .
AuthenN2.pm view on Meta::CPAN
# ok if user is member of a required group. warning: this will fail
# if user is not in the nis+ domain, because there is no current
# concept of nt domain groups in Authen::Smb
elsif($require eq 'group') {
my $group_table = Net::NISPlus::Table->new($group_table);
unless ($group_table){
$r->note_basic_auth_failure;
$r->log_reason($self . ': cannot get nis+ group table', $r->uri);
return AUTH_REQUIRED;
}
my %groups_to_gids;
foreach ($group_table->list()){$groups_to_gids{@{$_}[0]} = @{$_}[2]}
for my $group (@rest) {
next unless exists $groups_to_gids{$group};
return OK if $r->notes($name . 'Group') == $groups_to_gids{$group};
}
}
}
$r->note_basic_auth_failure;
$r->log_reason(
$self . ': user ' . $name .
' not member of required group in ' . $group_table, $r->uri
);
return AUTH_REQUIRED;
( run in 0.790 second using v1.01-cache-2.11-cpan-5735350b133 )