root/lang/perl/Catalyst-Controller-RequestToken/trunk/lib/Catalyst/Controller/RequestToken/Action/CreateToken.pm @ 13221

Revision 13221, 1.2 kB (checked in by hidek, 5 years ago)

initial import

Line 
1package Catalyst::Controller::RequestToken::Action::CreateToken;
2
3use strict;
4use warnings;
5
6use base qw(Catalyst::Action);
7
8use Catalyst::Exception;
9use Digest();
10
11sub execute {
12    my $self = shift;
13    my ( $controller, $c, @args ) = @_;
14
15    $c->log->debug("create token") if $c->debug;
16    my $digest = _find_digest();
17    my $seed = join( time, rand(10000), $$, {} );
18    $digest->add($seed);
19    my $token = $digest->hexdigest;
20    $c->log->debug("token is created: $token") if $c->debug;
21
22    my $conf = $controller->config;
23    $c->session->{ $conf->{session_name} } = $token;
24    $c->request->params->{ $conf->{request_name} } = $token;
25
26    return $self->NEXT::execute(@_);
27}
28
29# following code is from Catalyst::Plugin::Session
30my $usable;
31
32sub _find_digest () {
33    unless ($usable) {
34        foreach my $alg (qw/SHA-256 SHA-1 MD5/) {
35            if ( eval { Digest->new($alg) } ) {
36                $usable = $alg;
37                last;
38            }
39        }
40        Catalyst::Exception->throw(
41                  "Could not find a suitable Digest module. Please install "
42                . "Digest::SHA1, Digest::SHA, or Digest::MD5" )
43            unless $usable;
44    }
45
46    return Digest->new($usable);
47}
48
491;
50
Note: See TracBrowser for help on using the browser.