X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/9e4289087585b2e1688992e79c2ea4c76f1db1b1..05fce3a92d3f4efbf13c110f17296d2aa38a1290:/SL/Auth.pm diff --git a/SL/Auth.pm b/SL/Auth.pm index 67c8eed71..8b8d859ae 100644 --- a/SL/Auth.pm +++ b/SL/Auth.pm @@ -256,7 +256,7 @@ sub create_database { my $encoding = $Common::charset_to_db_encoding{$charset}; $encoding ||= 'UNICODE'; - my $dbh = SL::DBConnect->connect($dsn, $params{superuser}, $params{superuser_password}, { pg_enable_utf8 => $charset =~ m/^utf-?8$/i }); + my $dbh = SL::DBConnect->connect($dsn, $params{superuser}, $params{superuser_password}, { pg_enable_utf8 => scalar($charset =~ m/^utf-?8$/i) }); if (!$dbh) { $main::form->error($main::locale->text('The connection to the template database failed:') . "\n" . $DBI::errstr); @@ -598,52 +598,33 @@ sub _create_session_id { } sub create_or_refresh_session { - $main::lxdebug->enter_sub(); - - my $self = shift; - - $session_id ||= $self->_create_session_id(); - - my ($form, $dbh, $query, $sth, $id); - - $form = $main::form; - $dbh = $self->dbconnect(); - - $dbh->begin_work; - do_query($::form, $dbh, qq|LOCK auth.session_content|); - - $query = qq|SELECT id FROM auth.session WHERE id = ?|; - - ($id) = selectrow_query($form, $dbh, $query, $session_id); - - if ($id) { - do_query($form, $dbh, qq|UPDATE auth.session SET mtime = now() WHERE id = ?|, $session_id); - - } else { - do_query($form, $dbh, qq|INSERT INTO auth.session (id, ip_address, mtime) VALUES (?, ?, now())|, $session_id, $ENV{REMOTE_ADDR}); - - } - - $self->save_session($dbh); - - $dbh->commit(); - - $main::lxdebug->leave_sub(); + $session_id ||= shift->_create_session_id; } sub save_session { + $::lxdebug->enter_sub; my $self = shift; my $provided_dbh = shift; my $dbh = $provided_dbh || $self->dbconnect(1); - return unless $dbh; + $::lxdebug->leave_sub && return unless $dbh; $dbh->begin_work unless $provided_dbh; do_query($::form, $dbh, qq|LOCK auth.session_content|); do_query($::form, $dbh, qq|DELETE FROM auth.session_content WHERE session_id = ?|, $session_id); + my $query = qq|SELECT id FROM auth.session WHERE id = ?|; + + my ($id) = selectrow_query($::form, $dbh, $query, $session_id); + + if ($id) { + do_query($::form, $dbh, qq|UPDATE auth.session SET mtime = now() WHERE id = ?|, $session_id); + } else { + do_query($::form, $dbh, qq|INSERT INTO auth.session (id, ip_address, mtime) VALUES (?, ?, now())|, $session_id, $ENV{REMOTE_ADDR}); + } + if (%{ $self->{SESSION} }) { my $query = qq|INSERT INTO auth.session_content (session_id, sess_key, sess_value) VALUES (?, ?, ?)|; my $sth = prepare_query($::form, $dbh, $query); @@ -656,6 +637,7 @@ sub save_session { } $dbh->commit() unless $provided_dbh; + $::lxdebug->leave_sub; } sub set_session_value {