X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;ds=sidebyside;f=cgi-auth-flexible.pm;h=940e5dc2223fcbcb47042c84aa02afa22644d66c;hb=28a91929befb605f10c4136b426ffcc09950ebf9;hp=4b4823a7362df6dd3bc4733e7796eb1fb4c15aca;hpb=0cc7c93091dc8700032bf5eef81120d46633d65f;p=cgi-auth-flexible.git diff --git a/cgi-auth-flexible.pm b/cgi-auth-flexible.pm index 4b4823a..940e5dc 100644 --- a/cgi-auth-flexible.pm +++ b/cgi-auth-flexible.pm @@ -32,7 +32,7 @@ BEGIN { @EXPORT = qw(); %EXPORT_TAGS = ( ); # eg: TAG => [ qw!name1 name2! ], - @EXPORT_OK = qw(); + @EXPORT_OK = qw(@default_db_setup_stmts); } our @EXPORT_OK; @@ -202,6 +202,18 @@ sub gen_plain_footer_html ($$) { ''); } +our @default_db_setup_stmts = + ("CREATE TABLE $v->{S}{assocdb_table} (". + " assochash VARCHAR PRIMARY KEY,". + " username VARCHAR NOT NULL,". + " last INTEGER NOT NULL". + ")" + , + "CREATE INDEX $v->{S}{assocdb_table}_timeout_index". + " ON $v->{S}{assocdb_table}". + " (last)" + ); + #---------- licence and source code ---------- sub srcdump_dump ($$$) { @@ -427,6 +439,7 @@ sub new_verifier { assocdb_user => '', assocdb_password => '', assocdb_table => 'caf_assocs', + assocdb_setup_stmts => [@_default_db_setup_statements], random_source => '/dev/urandom', secretbits => 128, # bits hash_algorithm => "SHA-256", @@ -543,14 +556,9 @@ sub _dbopen ($) { } $v->{Dbh} = $dbh; - $v->_db_setup_do("CREATE TABLE $v->{S}{assocdb_table} (". - " assochash VARCHAR PRIMARY KEY,". - " username VARCHAR NOT NULL,". - " last INTEGER NOT NULL". - ")"); - $v->_db_setup_do("CREATE INDEX $v->{S}{assocdb_table}_timeout_index". - " ON $v->{S}{assocdb_table}". - " (last)"); + foreach my $stmt (@default_db_setup_stmts) { + $v->_db_setup_do($stmt); + } return $dbh; } @@ -832,7 +840,7 @@ sub _check_divert_core ($) { " enabled. You must enable cookies". " as we use them for login."), CookieSecret => $r->_fresh_secret(), - Params => $r->chain_params() }) + Params => $r->_chain_params() }) } if (!$cookt || $cookt eq 'n' || $cookh ne $parmh) { $r->_db_revoke($cookh); @@ -850,13 +858,13 @@ sub _check_divert_core ($) { return ({ Kind => 'LOGIN-BAD', Message => $login_errormessage, CookieSecret => $cooks, - Params => $r->chain_params() }) + Params => $r->_chain_params() }) } $r->_db_record_login_ok($parmh,$username); return ({ Kind => 'REDIRECT-LOGGEDIN', Message => $r->_gt("Logging in..."), CookieSecret => $cooks, - Params => $r->chain_params() }); + Params => $r->_chain_params() }); } if ($cookt eq 't') { $cookt = ''; @@ -876,7 +884,7 @@ sub _check_divert_core ($) { return ({ Kind => 'LOGIN-INCOMINGLINK', Message => $r->_gt("You need to log in."), CookieSecret => $news, - Params => $r->chain_params() }); + Params => $r->_chain_params() }); } else { $r->_db_revoke($parmh); return ({ Kind => 'LOGIN-FRESH', @@ -910,7 +918,14 @@ sub _check_divert_core ($) { return undef; } -sub chain_params ($) { +sub _chain_params ($) { +# =item C<< $authreq->_chain_params() >> +# +# Returns a hash of the "relevant" parameters to this request, in a form +# used by C. This is all of the query parameters +# which are not related to CGI::Auth::Flexible. The PATH_INFO from the +# request is returned as the parameter C<< '' >>. + my ($r) = @_; my %p = %{ $r->_ch('get_params') }; foreach my $pncn (keys %{ $r->{S} }) {