/usr/local/CPAN/Pushmi/Pushmi/Apache/AuthCache.pm
package Pushmi::Apache::AuthCache;
use strict;
use warnings;
use Apache2::Access ();
use Apache2::RequestUtil ();
use Apache2::RequestRec ();
use Apache2::Const -compile => qw(FORBIDDEN OK HTTP_UNAUTHORIZED DECLINED);
my $logger;
my $memd;
sub handler {
my $r = shift;
my $method = $r->method;
unless ($memd) {
my $config = $r->dir_config('PushmiConfig');
$ENV{PUSHMI_CONFIG} = $config;
require Pushmi::Config;
$memd = Pushmi::Config->memcached;
$logger = Pushmi::Config->logger('pushmi.authcache');
}
my ( $status, $password ) = $r->get_basic_auth_pw;
return $status unless $status == Apache2::Const::OK;
$logger->debug("cache authn information for ".$r->user);
$memd->set($r->user, $password, 30);
return Apache2::Const::DECLINED;
}
1;