X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=cgi-auth-flexible.git;a=blobdiff_plain;f=cgi-auth-hybrid.pm;h=422d7a31b357e6d18cd2052d128501a5a3b7aa39;hp=f21a02645f3a2d8f81325d9efb69e16b9956694e;hb=a3eb016136dc3782b103c06fca9762012469d711;hpb=4c4f297e0af6d1eae07dfd8f2f61858a1f13b064 diff --git a/cgi-auth-hybrid.pm b/cgi-auth-hybrid.pm index f21a026..422d7a3 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 ---------- @@ -75,12 +76,27 @@ sub do_redirect_cgi ($$$$) { -status => '303 See other', -location => $new_url); push @ha, (-cookie => $cookie) if defined $cookie; - $r->_ch('print')($c->header(@ha). - $c->start_html('Redirection'). - $c->a({href=>$new_url}, - "If you aren't redirected, click to continue."). - $c->end_html()); -} + $r->_print($c->header(@ha), + $r->_ch('gen_start_html')($r->__('Redirection')), + '', + $r->__("If you aren't redirected, click to continue."), + "", + $c->_ch('gen_end_html')); +} + +sub gen_plain_login_form ($$) { + my ($c,$r) = @_; + my @form; + push @form, ('
'. #---------- verifier object methods ---------- @@ -98,6 +114,8 @@ sub new_verifier { login_timeout => 86400, # seconds assoc_param_name => 'cah_associd', password_param_name => 'password', + username_param_names => [qw(username)], + form_entry_size => 60, logout_param_names => [qw(cah_logout)], loggedout_param_names => [qw(cah_loggedout)], promise_check_mutate => 0, @@ -116,6 +134,10 @@ sub new_verifier { cookie_path => "/", get_cookie_domain => \&get_cookie_domain, encrypted_only => 0, + gen_start_html => sub { $_[0]->start_html($_[2]); }, + gen_end_html => sub { $_[0]->end_html(); }, + gen_login_form => \&gen_plain_login_form, + gettext => sub { gettext($_[2]); }, }; }, Dbh => undef, @@ -186,6 +208,9 @@ sub _rp ($$@) { my $p = scalar $r->_ch('get_param',$pn) } +sub __ ($$) { my ($r, $t) = @_; return $r->_ch('gettext')($t); } +sub _print ($$) { my ($r, @t) = @_; return $r->_ch('print')(join '', @t); } + # pages/param-sets are # n normal non-mutating page # r retrieval of information for JS, non-mutating @@ -498,7 +523,21 @@ sub check_ok ($) { $r->_ch('do_redirect')($new_url, $cookie); return 0; } - if ($kind =~ m/ + $kind =~ m/^SMALLPAGE|^LOGIN/ or die; + + my ($title, @body); + if ($kind =~ m/^LOGIN-/) { + $title = $r->__('Login'); + push @body, $r->__($divert->{Message}); + push @body, $r->_ch('gen_login_form'); + $body .= $r->_ch( + + $r->_print( + $r->_ch('start_html')($title), + + + + if ($kind =~ m/^SMALLPAGE if (defined $cookie) { $r->_ch('header_out')($cookie);