X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=cgi-auth-hybrid.pm;h=35739b035ef967ba07023f1192bd6dc6a95b8f05;hb=4789f7d07668d1672aad1676070000284a4cf630;hp=6f66113d3c15713fb4a0534300ca896b7b2e0a12;hpb=f882801f168c4a822027a31f1a356a24167806c5;p=cgi-auth-flexible.git diff --git a/cgi-auth-hybrid.pm b/cgi-auth-hybrid.pm index 6f66113..35739b0 100644 --- a/cgi-auth-hybrid.pm +++ b/cgi-auth-hybrid.pm @@ -31,6 +31,7 @@ our @EXPORT_OK; use DBI; use CGI; +use Locale::Gettext; #---------- default callbacks ---------- @@ -42,6 +43,69 @@ sub has_a_param ($$) { return 0; } +sub get_param_list ($$) { + my ($c) = @_; + my @p = ( ); + foreach my $name ($c->param()) { + foreach my $val ($c->param($name)) { + push @p, $name, $val; + } + } + return @p; +} + +sub get_cookie_domain ($$$) { + my ($c,$r) = @_; + my $uri = new URI $r->_ch('get_url'); + return $uri->host(); +} + +sub construct_cookie ($$$) { + my ($c, $r, $cookv) = @_; + return $c->cookie(-name => $r->{S}{cookie_name}, + -value => $cookv, + -path => $r->{S}{cookie_path}, + -domain => $r->_ch('get_cookie_domain'), + -expires => '+'.$r->{S}{login_timeout}.'s', + -secure => $r->{S}{encrypted_only}); +} + +sub do_redirect_cgi ($$$$) { + my ($c, $r, $new_url, $cookie) = @_; + my @ha = ('text/html', + -status => '303 See other', + -location => $new_url); + push @ha, (-cookie => $cookie) if defined $cookie; + $r->_print($c->header(@ha), + $r->_ch('gen_start_html')($r->_gt('Redirection')), + '', + $r->_gt("If you aren't redirected, click to continue."), + "", + $c->_ch('gen_end_html')); +} + +sub gen_plain_login_form ($$) { + my ($c,$r, $params) = @_; + my @form; + push @form, ('