Revision 0c32dd23
Von Moritz Bunkus vor mehr als 13 Jahren hinzugefügt
SL/Auth.pm | ||
---|---|---|
166 | 166 |
|
167 | 167 |
$main::lxdebug->message(LXDebug->DEBUG1, "Auth::dbconnect DSN: $dsn"); |
168 | 168 |
|
169 |
$self->{dbh} = DBI->connect($dsn, $cfg->{user}, $cfg->{password}, { pg_enable_utf8 => $::locale->is_utf8, AutoCommit => 0 });
|
|
169 |
$self->{dbh} = DBI->connect($dsn, $cfg->{user}, $cfg->{password}, { pg_enable_utf8 => $::locale->is_utf8, AutoCommit => 1 });
|
|
170 | 170 |
|
171 | 171 |
if (!$may_fail && !$self->{dbh}) { |
172 | 172 |
$main::form->error($main::locale->text('The connection to the authentication database failed:') . "\n" . $DBI::errstr); |
... | ... | |
306 | 306 |
|
307 | 307 |
my ($sth, $query, $user_id); |
308 | 308 |
|
309 |
$dbh->begin_work; |
|
310 |
|
|
309 | 311 |
$query = qq|SELECT id FROM auth."user" WHERE login = ?|; |
310 | 312 |
($user_id) = selectrow_query($form, $dbh, $query, $login); |
311 | 313 |
|
... | ... | |
426 | 428 |
my $form = $main::form; |
427 | 429 |
|
428 | 430 |
my $dbh = $self->dbconnect(); |
431 |
|
|
432 |
$dbh->begin_work; |
|
433 |
|
|
429 | 434 |
my $query = qq|SELECT id FROM auth."user" WHERE login = ?|; |
430 | 435 |
|
431 | 436 |
my ($id) = selectrow_query($form, $dbh, $query, $login); |
432 | 437 |
|
433 |
return $main::lxdebug->leave_sub() if (!$id); |
|
438 |
$dbh->rollback and return $main::lxdebug->leave_sub() if (!$id);
|
|
434 | 439 |
|
435 | 440 |
do_query($form, $dbh, qq|DELETE FROM auth.user_group WHERE user_id = ?|, $id); |
436 | 441 |
do_query($form, $dbh, qq|DELETE FROM auth.user_config WHERE user_id = ?|, $id); |
... | ... | |
512 | 517 |
if ($session_id) { |
513 | 518 |
my $dbh = $self->dbconnect(); |
514 | 519 |
|
520 |
$dbh->begin_work; |
|
521 |
|
|
515 | 522 |
do_query($main::form, $dbh, qq|DELETE FROM auth.session_content WHERE session_id = ?|, $session_id); |
516 | 523 |
do_query($main::form, $dbh, qq|DELETE FROM auth.session WHERE id = ?|, $session_id); |
517 | 524 |
|
... | ... | |
530 | 537 |
my $self = shift; |
531 | 538 |
|
532 | 539 |
my $dbh = $self->dbconnect(); |
540 |
|
|
541 |
$dbh->begin_work; |
|
542 |
|
|
533 | 543 |
my $query = |
534 | 544 |
qq|DELETE FROM auth.session_content |
535 | 545 |
WHERE session_id IN |
... | ... | |
575 | 585 |
$form = $main::form; |
576 | 586 |
$dbh = $self->dbconnect(); |
577 | 587 |
|
588 |
$dbh->begin_work; |
|
589 |
do_query($::form, $dbh, qq|LOCK auth.session_content|); |
|
590 |
|
|
578 | 591 |
$query = qq|SELECT id FROM auth.session WHERE id = ?|; |
579 | 592 |
|
580 | 593 |
($id) = selectrow_query($form, $dbh, $query, $session_id); |
... | ... | |
600 | 613 |
|
601 | 614 |
my $dbh = $provided_dbh || $self->dbconnect(); |
602 | 615 |
|
616 |
$dbh->begin_work unless $provided_dbh; |
|
617 |
|
|
618 |
do_query($::form, $dbh, qq|LOCK auth.session_content|); |
|
603 | 619 |
do_query($::form, $dbh, qq|DELETE FROM auth.session_content WHERE session_id = ?|, $session_id); |
604 | 620 |
|
605 | 621 |
if (%{ $self->{SESSION} }) { |
... | ... | |
821 | 837 |
my $form = $main::form; |
822 | 838 |
my $dbh = $self->dbconnect(); |
823 | 839 |
|
840 |
$dbh->begin_work; |
|
841 |
|
|
824 | 842 |
my ($query, $sth, $row, $rights); |
825 | 843 |
|
826 | 844 |
if (!$group->{id}) { |
... | ... | |
866 | 884 |
my $form = $main::from; |
867 | 885 |
|
868 | 886 |
my $dbh = $self->dbconnect(); |
887 |
$dbh->begin_work; |
|
869 | 888 |
|
870 | 889 |
do_query($form, $dbh, qq|DELETE FROM auth.user_group WHERE group_id = ?|, $id); |
871 | 890 |
do_query($form, $dbh, qq|DELETE FROM auth.group_rights WHERE group_id = ?|, $id); |
Auch abrufbar als: Unified diff
Bei Auth-DB-Verbindung nur Transaktionen starten, wenn tatsächlich Dinge verändert werden; dann explizit locken
Fix für Bug 1565.