chiark
/
gitweb
/
~ian
/
cgi-auth-flexible.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
wip, fixes
[cgi-auth-flexible.git]
/
cgi-auth-hybrid.pm
diff --git
a/cgi-auth-hybrid.pm
b/cgi-auth-hybrid.pm
index a5499a33b4517129df489a5f7af90a6180bba190..a80ab852063f0ca652d7e1d1feb39ecf38811f23 100644
(file)
--- a/
cgi-auth-hybrid.pm
+++ b/
cgi-auth-hybrid.pm
@@
-39,6
+39,7
@@
our @EXPORT_OK;
use DBI;
use CGI;
use Locale::gettext;
use DBI;
use CGI;
use Locale::gettext;
+use URI;
#---------- public utilities ----------
#---------- public utilities ----------
@@
-58,7
+59,7
@@
sub flatten_params ($) {
sub has_a_param ($$) {
my ($r,$cn) = @_;
foreach my $pn (@{ $r->{S}{$cn} }) {
sub has_a_param ($$) {
my ($r,$cn) = @_;
foreach my $pn (@{ $r->{S}{$cn} }) {
- return 1 if $r->_c
m
('get_param',$pn);
+ return 1 if $r->_c
h
('get_param',$pn);
}
return 0;
}
}
return 0;
}
@@
-205,13
+206,16
@@
sub _dbopen ($) {
my $u = umask 077;
$dbh = DBI->connect($dsn, $v->{S}{assocdb_user},
$v->{S}{assocdb_password}, {
my $u = umask 077;
$dbh = DBI->connect($dsn, $v->{S}{assocdb_user},
$v->{S}{assocdb_password}, {
- AutoCommit => 0, RaiseError => 1,
+ AutoCommit => 0,
+ RaiseError => 1,
+ ShowErrorStatement => 1,
});
die "$dsn $! ?" unless $dbh;
$v->{Dbh} = $dbh;
eval {
$v->_db_transaction(sub {
});
die "$dsn $! ?" unless $dbh;
$v->{Dbh} = $dbh;
eval {
$v->_db_transaction(sub {
+ local ($dbh->{PrintError}) = 0;
$dbh->do("CREATE TABLE $v->{S}{assocdb_table} (".
" associd VARCHAR PRIMARY KEY,".
" username VARCHAR,".
$dbh->do("CREATE TABLE $v->{S}{assocdb_table} (".
" associd VARCHAR PRIMARY KEY,".
" username VARCHAR,".
@@
-287,6
+291,7
@@
sub _print ($$) { my ($r, @t) = @_; return $r->_ch('print', join '', @t); }
sub construct_cookie ($$$) {
my ($r, $cookv) = @_;
sub construct_cookie ($$$) {
my ($r, $cookv) = @_;
+ return undef unless $cookv;
return $r->{Cgi}->cookie(-name => $r->{S}{cookie_name},
-value => $cookv,
-path => $r->{S}{cookie_path},
return $r->{Cgi}->cookie(-name => $r->{S}{cookie_name},
-value => $cookv,
-path => $r->{S}{cookie_path},
@@
-603,7
+608,7
@@
sub check_ok ($) {
my ($r) = @_;
my ($divert) = $r->check_divert();
my ($r) = @_;
my ($divert) = $r->check_divert();
- return 1 if $divert;
+ return 1 if
!
$divert;
my $handled = $r->_ch('handle_divert',$divert);
return 0 if $handled;
my $handled = $r->_ch('handle_divert',$divert);
return 0 if $handled;
@@
-669,9
+674,14
@@
sub _fresh_cookie ($) {
return $r->_random($bytes);
}
return $r->_random($bytes);
}
-sub
check_mutate
($) {
+sub
_assert_checked
($) {
my ($r) = @_;
die "unchecked" unless exists $r->{Divert};
my ($r) = @_;
die "unchecked" unless exists $r->{Divert};
+}
+
+sub check_mutate ($) {
+ my ($r) = @_;
+ $r->_assert_checked();
die if $r->{Divert};
my $meth = $r->_ch('get_method');
die "mutating non-POST" if $meth ne 'POST';
die if $r->{Divert};
my $meth = $r->_ch('get_method');
die "mutating non-POST" if $meth ne 'POST';
@@
-681,7
+691,7
@@
sub check_mutate ($) {
sub secret_val ($) {
my ($r) = @_;
sub secret_val ($) {
my ($r) = @_;
- $r->
check
();
+ $r->
_assert_checked
();
return defined $r->{Assoc} ? $r->{Assoc} : '';
}
return defined $r->{Assoc} ? $r->{Assoc} : '';
}