Apache2-AUS

 view release on metacpan or  search on metacpan

examples/CGI/httpd.conf  view on Meta::CPAN

  $server->add_config(["Alias /test/apache2-aus-cgi $dir/htdocs"]);
</Perl>

<Files "*.cgi">
    SetHandler      cgi-script
</Files>

<Location /test/apache2-aus-cgi>
    Options         +ExecCGI
    
    AuthType        Cookie
    AuthName        "AUS Example"
    
    PerlInitHandler     Apache2::AUS->Init
    PerlAuthenHandler   Apache2::AUS->Authen
</Location>

<Location /test/apache2-aus-cgi/protected.cgi>
    require             valid-user
</Location>

lib/Apache2/AUS.pm  view on Meta::CPAN


return 1;

sub Init {
    my($class, $r) = @_;
    
    my $session = $r->aus_session || create_session($r);
    my $use_count = $session->param('_use_count');
    $use_count ++;
    $session->param('_use_count', $use_count);
    $r->headers_out->add('Set-Cookie', bake_session_cookie($r, $session));
    $r->aus_session($session);
    $r->push_handlers(PerlFixupHandler => \&_Fixup);

    if(my $u = $session->user) {
        $r->user($u->{id});
    }
    
    return OK;
}

lib/Apache2/AUS/Util.pm  view on Meta::CPAN

use warnings;
use Exporter;
use base q(Exporter);
use Apache2::RequestRec ();
use Apache2::RequestUtil ();
use Apache2::Connection ();
use Apache2::SubRequest ();
use Apache2::Log ();
use Apache2::Const qw(FORBIDDEN OK);
use CGI;
use CGI::Cookie;
use CGI::Session::AUS;
use Apache2::AUS::RequestRec;

our @EXPORT_OK = qw(
    create_session bake_session_cookie set_remote_user
    check_requirement auth_failure go
);

our %_requirements = (
    'valid-user'        =>      sub {

lib/Apache2/AUS/Util.pm  view on Meta::CPAN

    local $ENV{REMOTE_ADDR} = $r->connection->remote_ip();
    my $session = CGI::Session::AUS->new(undef, $init, undef);
    $session->param('_use_count', 0) unless $session->param('_use_count');
    return $session;
}

sub get_session_id {
    my $r = shift;
    my $key = session_cookie_key($r);
    
    if(my $cookie_jar = CGI::Cookie->fetch($r)) {
        if($cookie_jar->{$key}) {
            return $cookie_jar->{$key}->value;
        }
    }
    
    return;
}

sub bake_session_cookie {
    my($r, $session) = @_;
    my $key = session_cookie_key($r);
    return CGI::Cookie->new(-name => $key, -value => $session->id);
}

sub set_remote_user {
    my($r, $id) = @_;
    $r->main->user($id) if($r->main);
    $r->user($id);
    return $id;
}

# for an AND relationship, specify multiple "require" lines;

lib/Apache2/AUS/Util.pm  view on Meta::CPAN

    } else {
        $r->warn(qq{Unknown requirement "$req"; ignored.});
        return 1;
    }
}

sub auth_failure {
    my($r, $reason) = @_;
    $r->subprocess_env(AUS_AUTH_FAILURE => $reason);
    $r->log_reason($reason);
    $r->headers_out->set('WWW-Authenticate', "Cookie; uri=/");
    return FORBIDDEN;
}

sub go {
    my($r, $uri) = @_;
    $r->internal_redirect($uri);
    return OK;
}



( run in 0.631 second using v1.01-cache-2.11-cpan-e9199f4ba4c )