chiark / gitweb /
new outputs
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 28 Oct 2012 21:22:53 +0000 (21:22 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 28 Oct 2012 21:22:53 +0000 (21:22 +0000)
cgi-auth-hybrid.pm

index 2993bc2..7da7565 100644 (file)
@@ -136,7 +136,7 @@ sub record_login ($$) {
     $r->{A} = $nassoc;
 }
 
-sub _check ($) {
+sub _check_core ($) {
     my ($r) = @_;
     my $qassoc = $r->_cm('get_param');
     my ($nassoc,$nmutate);
@@ -173,24 +173,18 @@ sub _check ($) {
     return ($nusername, $nassoc, $nmutate);
 }
 
-sub check ($) {
+sub _check ($) {
     my ($r) = @_;
 
-    my ($nusername, $nassoc, $nmutate) = $r->_check() or return undef;
-
-    $dbh->do("UPDATE $r->{S}{assocdb_table}".
-            " SET last = ?".
-            " WHERE associd = ?", {}, time, $nassoc);
-    $dbh->do("COMMIT");
-
-    $r->{Username} = $nusername;
-    $r->{Assoc} = $nassoc;
-    $r->{Mutate} = $nmutate;
-    return $nusername;
-}
+    return if exists $r->{Username};
+    ($r->{Username}, $r->{Assoc}, $r->{Mutate}) = $r->_check();
 
-sub check_mutate ($) {
-    my ($r) = @_;
+    if (defined $r->{Assoc}) {
+       $dbh->do("UPDATE $r->{S}{assocdb_table}".
+                " SET last = ?".
+                " WHERE associd = ?", {}, time, $nassoc);
+       $dbh->do("COMMIT");
+    }
 }
 
 sub logout ($) {
@@ -204,15 +198,31 @@ sub logout ($) {
     return $nusername;
 }
 
+sub check ($) {
+    my ($r) = @_;
+    $r->_check();
+    return !!defined $r->{Username};
+}
+
+sub check_mutate ($) {
+    my ($r) = @_;
+    $r->check();
+    return $r->{Mutate};
+}
+
 sub username ($) {
     my ($r) = @_;
+    $r->check();
     return $r->{Username};
 
 sub hidden_val ($) {
     my ($r) = @_;
+    $r->check();
     return defined $r->{Assoc} ? $r->{Assoc} : '';
 }
 
+#---------- simple wrappers ----------
+
 sub hidden_hargs ($) {
     my ($r) = @_;
     return (-name => $r->{S}{param_name},