Show
Ignore:
Timestamp:
11/10/07 12:31:02 (6 years ago)
Author:
lopnor
Message:

lang/perl/Apache2-AuthenOpenID: made inheritable

Location:
lang/perl/Apache2-AuthenOpenID/trunk
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • lang/perl/Apache2-AuthenOpenID/trunk/Changes

    r1196 r1263  
    11Revision history for Perl extension Apache2::AuthenOpenID. 
     2 
     30.04  Sat Nov 10 12:21:00 JST 2007 
     4    - made inheritable 
    25 
    360.03  Mon Oct 16 09:30:00 2007 
  • lang/perl/Apache2-AuthenOpenID/trunk/Makefile.PL

    r476 r1263  
    99        mod_perl2 => 2.000001, 
    1010        CGI => 0, 
    11         Net::OpenID::Consumer => 0.14,, 
     11        Net::OpenID::Consumer => 0.14, 
    1212        Digest::HMAC_SHA1 => 1.01, 
    1313        LWPx::ParanoidAgent => 1.03, 
     14        Class::Data::Inheritable => 0, 
    1415    }, # e.g., Module::Name => 1.1 
    1516    ($] >= 5.005 ?     ## Add these new keywords supported since 5.005 
  • lang/perl/Apache2-AuthenOpenID/trunk/lib/Apache2/AuthenOpenID.pm

    r1196 r1263  
    1616use Digest::HMAC_SHA1; 
    1717use LWPx::ParanoidAgent; 
    18  
    19 our $VERSION = '0.03'; 
    20  
    21 my @directives = ( 
    22     { 
    23         name            => 'AuthType', 
    24         func            => __PACKAGE__ . '::AuthType', 
    25         req_override    => Apache2::Const::OR_AUTHCFG, 
    26         args_how        => Apache2::Const::TAKE1, 
    27     }, 
    28     { 
    29         name            => 'return_to', 
    30         func            => __PACKAGE__ . '::return_to', 
    31         req_override    => Apache2::Const::OR_AUTHCFG, 
    32         args_how        => Apache2::Const::TAKE1, 
    33         errmsg          => 'return_to http://sample.com/trust_root/callback', 
    34     }, 
    35     { 
    36         name            => 'trust_root', 
    37         func            => __PACKAGE__ . '::trust_root', 
    38         req_override    => Apache2::Const::OR_AUTHCFG, 
    39         args_how        => Apache2::Const::TAKE1, 
    40         errmsg          => 'return_to http://sample.com/trust_root/', 
    41     }, 
    42     { 
    43         name            => 'consumer_secret', 
    44         func            => __PACKAGE__ . '::consumer_secret', 
    45         req_override    => Apache2::Const::OR_AUTHCFG, 
    46         args_how        => Apache2::Const::TAKE1, 
    47         errmsg          => 'consumer_secret "Your consumer secret goes here"', 
    48     }, 
    49 ); 
    50  
    51 eval { Apache2::Module::add(__PACKAGE__, \@directives); }; 
     18use base qw( Class::Data::Inheritable ); 
     19 
     20our $VERSION = '0.04'; 
     21 
     22__PACKAGE__->mk_classdata( auth_type => 'openid' ); 
     23__PACKAGE__->init; 
     24 
     25 
     26sub init { 
     27    my $self = shift; 
     28 
     29    my @directives = ( 
     30        { 
     31            name            => 'AuthType', 
     32            req_override    => Apache2::Const::OR_AUTHCFG, 
     33            args_how        => Apache2::Const::TAKE1, 
     34        }, 
     35        { 
     36            name            => 'return_to', 
     37            req_override    => Apache2::Const::OR_AUTHCFG, 
     38            args_how        => Apache2::Const::TAKE1, 
     39            errmsg          => 'return_to http://sample.com/trust_root/callback', 
     40        }, 
     41        { 
     42            name            => 'trust_root', 
     43            req_override    => Apache2::Const::OR_AUTHCFG, 
     44            args_how        => Apache2::Const::TAKE1, 
     45            errmsg          => 'return_to http://sample.com/trust_root/', 
     46        }, 
     47        { 
     48            name            => 'consumer_secret', 
     49            req_override    => Apache2::Const::OR_AUTHCFG, 
     50            args_how        => Apache2::Const::TAKE1, 
     51            errmsg          => 'consumer_secret "Your consumer secret goes here"', 
     52        }, 
     53    ); 
     54 
     55    eval {  
     56        Apache2::Module::add($self, \@directives);  
     57    }; 
     58} 
    5259 
    5360sub AuthType { 
    54     my ($i, $params, $arg) = @_; 
    55     if ($arg =~ /^OpenID$/i) { 
     61    my ($self, $params, $arg) = @_; 
     62    my $class = ref $self; 
     63    if (lc $arg eq lc $self->auth_type) { 
    5664        Apache2::ServerUtil->server->push_handlers( 
    57             PerlAuthenHandler => __PACKAGE__, 
     65            PerlAuthenHandler => $class, 
    5866        ); 
    5967    } 
     
    6169 
    6270sub return_to { 
    63     my ($i, $params, $arg) = @_; 
    64     $i = Apache2::Module::get_config(__PACKAGE__, $params->server); 
     71    my ($self, $params, $arg) = @_; 
     72    my $class = ref $self; 
     73    my $i = Apache2::Module::get_config($class, $params->server); 
    6574    $i->{'return_to'} = $arg; 
    6675} 
    6776 
    6877sub trust_root { 
    69     my ($i, $params, $arg) = @_; 
    70     $i = Apache2::Module::get_config(__PACKAGE__, $params->server); 
     78    my ($self, $params, $arg) = @_; 
     79    my $class = ref $self; 
     80    my $i = Apache2::Module::get_config($class, $params->server); 
    7181    $i->{'trust_root'} = $arg; 
    7282} 
    7383 
    7484sub consumer_secret { 
    75     my ($i, $params, $arg) = @_; 
    76     $i = Apache2::Module::get_config(__PACKAGE__, $params->server); 
     85    my ($self, $params, $arg) = @_; 
     86    my $class = ref $self; 
     87    my $i = Apache2::Module::get_config($class, $params->server); 
    7788    $i->{'consumer_secret'} = $arg; 
    7889} 
     
    8091sub handler : method { 
    8192    my ($self, $r) = @_; 
    82 warn $self; 
    83 warn __PACKAGE__; 
    84     $r->auth_type =~ m{^OpenID$}i or return Apache2::Const::DECLINED; 
    85  
    86     my $cf = Apache2::Module::get_config(__PACKAGE__, $r->server); 
     93    lc $r->auth_type eq lc $self->auth_type or return Apache2::Const::DECLINED; 
     94    my $cf = Apache2::Module::get_config($self, $r->server); 
    8795    unless ($cf->{'trust_root'} && $cf->{'return_to'} && $cf->{'consumer_secret'}) { 
    8896        $r->log_error("You need to specify trust_root, return_to, and consumer_secret."); 
    8997        die; 
    9098    } 
    91  
    92     (my $cookie_name = __PACKAGE__."-".$r->auth_name) =~ s/(::|\s+)/-/g; 
     99    (my $cookie_name = $self."-".$r->auth_name) =~ s/(::|\s+)/-/g; 
    93100    my $cookie_dest_name = $cookie_name.'-destination'; 
    94101    $self->set_custom_response($r); 
     
    172179 
    173180sub set_custom_response { 
    174     my $self = shift; 
    175     my $r = shift; 
    176     my $cf = Apache2::Module::get_config(__PACKAGE__, $r->server); 
     181    my ($self, $r) = @_; 
     182    my $cf = Apache2::Module::get_config($self, $r->server); 
    177183    my $auth_name = $r->auth_name; 
    178184    my $html = <<END; 
     
    220226 
    221227sub calc_token { 
    222     my ($url, $time, $consumer_secret) = @_; 
     228    my ($self, $url, $time, $consumer_secret) = @_; 
    223229    my $context = Digest::HMAC_SHA1->new($consumer_secret); 
    224230    $context->add($url);