chiark / gitweb /
password check, logout button
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 27 Jan 2013 19:14:30 +0000 (19:14 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 27 Jan 2013 19:14:30 +0000 (19:14 +0000)
mason/autohandler
run-mason.cgi

index 469f4820f8691a23470c9e0c3ed5b62930fa4c31..933ed622e7c260a071f835be9241bea298c627fd 100644 (file)
@@ -7,18 +7,34 @@ sub do_redirect_mason ($$$$) {
     CGI::Auth::Flexible::do_redirect_cgi($c,$ar,$new_url,$cookie);
 }
 
     CGI::Auth::Flexible::do_redirect_cgi($c,$ar,$new_url,$cookie);
 }
 
-my $verifier = CGI::Auth::Flexible->new_verifier(
+sub login_ok_self ($$) {
+    my ($c, $ar) = @_;
+    my $password = $c->param('password');
+    return $password eq 'sesame' ? ('self',undef) : (undef,'wrong');
+}
+
+my $ar = CGI::Auth::Flexible->new_verifier(
     dir => "$ENV{'NJAWAYMSG'}/data",
 #    do_redirect => \&do_redirect_mason,
     handle_divert => sub { $m->auto_send_headers(0); return 0; },
 #    print => sub { my ($c,$ar,@t) = @_; $m->print(@t); },
     encrypted_only => 0,
     dir => "$ENV{'NJAWAYMSG'}/data",
 #    do_redirect => \&do_redirect_mason,
     handle_divert => sub { $m->auto_send_headers(0); return 0; },
 #    print => sub { my ($c,$ar,@t) = @_; $m->print(@t); },
     encrypted_only => 0,
+    username_param_names => [],
+    login_ok => \&login_ok_self,
     );
 </%once>
 <%perl>
 my $cgi = $m->cgi_object();
     );
 </%once>
 <%perl>
 my $cgi = $m->cgi_object();
-my $ar = $verifier->new_request($cgi);
+print STDERR ">".$cgi->url()."<\n";
+my $ar = $ar->new_request($cgi);
 if ($ar->check_ok()) {
 if ($ar->check_ok()) {
-   $m->call_next();   
+   $m->call_next();
+</%perl>
+<hr>
+<form method="POST" action="<% $cgi->url() %>">
+<% $ar->secret_hidden_html() %>
+<input type="submit" name="caf_logout" value="Logout">
+</form>
+<%perl>
 }
 </%perl>
 }
 </%perl>
index 91916cc0c507c05e3f801d1d8f00d08d59000799..d39bb834f9f4ec244901f6c6a70dbfc70e4195bf 100755 (executable)
@@ -15,8 +15,8 @@ unshift @INC, $perllib;
 my $pathsofar = $comp_root;
 die "$pathsofar $!" unless stat $pathsofar;
 
 my $pathsofar = $comp_root;
 die "$pathsofar $!" unless stat $pathsofar;
 
+$ENV{'PATH_INFO'} ||= '/main';
 my $path_info = $ENV{'PATH_INFO'};
 my $path_info = $ENV{'PATH_INFO'};
-$path_info='' if !defined $path_info;
 
 foreach my $pathcomp (split m#/#, $path_info) {
     next if $pathcomp eq '';
 
 foreach my $pathcomp (split m#/#, $path_info) {
     next if $pathcomp eq '';