chiark / gitweb /
db_prefix setting: change from assocdb_table
[cgi-auth-flexible.git] / cgi-auth-flexible.pm
index 1197f868fa2fce022a5f06b83e661a92360a3626..65a929fda48af18210b7f45c7509298df6353299 100644 (file)
@@ -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 ($$) {
            '</address>');
 }
 
+our @default_db_setup_stmts =
+    ("CREATE TABLE $v->{S}{db_prefix}_assocs (".
+     " assochash VARCHAR PRIMARY KEY,".
+     " username VARCHAR NOT NULL,".
+     " last INTEGER NOT NULL".
+     ")"
+     ,
+     "CREATE INDEX $v->{S}{db_prefix}_assocs_timeout_index".
+     " ON $v->{S}{db_prefix}_assocs".
+     " (last)"
+    );
+
 #---------- licence and source code ----------
 
 sub srcdump_dump ($$$) {
@@ -426,7 +438,8 @@ sub new_verifier {
            assocdb_dsn => undef,
            assocdb_user => '',
            assocdb_password => '',
-           assocdb_table => 'caf_assocs',
+           db_prefix => 'caf',
+           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;
 }
 
@@ -956,12 +964,12 @@ sub _identify ($$) {
 
     my $dbh = $r->{Dbh};
 
-    $dbh->do("DELETE FROM $r->{S}{assocdb_table}".
+    $dbh->do("DELETE FROM $r->{S}{db_prefix}_assocs".
              " WHERE last < ?", {},
              time - $r->{S}{login_timeout});
 
     my $row = $dbh->selectrow_arrayref("SELECT username, last".
-                             " FROM $r->{S}{assocdb_table}".
+                             " FROM $r->{S}{db_prefix}_assocs".
                              " WHERE assochash = ?", {}, $h);
     if (defined $row) {
 #print STDERR "_identify h=$h s=$s YES @$row\n";
@@ -1002,7 +1010,7 @@ sub _db_revoke ($$) {
 
     my $dbh = $r->{Dbh};
 
-    $dbh->do("DELETE FROM $r->{S}{assocdb_table}".
+    $dbh->do("DELETE FROM $r->{S}{db_prefix}_assocs".
             " WHERE assochash = ?", {}, $h);
 }
 
@@ -1010,7 +1018,7 @@ sub _db_record_login_ok ($$$) {
     my ($r,$h,$user) = @_;
     $r->_db_revoke($h);
     my $dbh = $r->{Dbh};
-    $dbh->do("INSERT INTO $r->{S}{assocdb_table}".
+    $dbh->do("INSERT INTO $r->{S}{db_prefix}_assocs".
             " (assochash, username, last) VALUES (?,?,?)", {},
             $h, $user, time);
 }