X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FAuth.pm;h=784b185b459d3412f62f65461d26484893eec62c;hb=72b340de2352eec7d3f99a00e2141a2df35f07f3;hp=adf58106e711f57236eae0388da5eece9ca1110f;hpb=9b327aff5a04853d1ca26132142cb76953705e09;p=kivitendo-erp.git diff --git a/SL/Auth.pm b/SL/Auth.pm index adf58106e..784b185b4 100644 --- a/SL/Auth.pm +++ b/SL/Auth.pm @@ -12,6 +12,7 @@ use SL::Auth::Constants qw(:all); use SL::Auth::DB; use SL::Auth::LDAP; +use SL::SessionFile; use SL::User; use SL::DBConnect; use SL::DBUpgrade2; @@ -555,6 +556,8 @@ sub destroy_session { $dbh->commit(); + SL::SessionFile->destroy_session($session_id); + $session_id = undef; $self->{SESSION} = { }; } @@ -571,24 +574,27 @@ sub expire_sessions { my $dbh = $self->dbconnect(); - $dbh->begin_work; + my $query = qq|SELECT id + FROM auth.session + WHERE (mtime < (now() - '$self->{session_timeout}m'::interval))|; - my $query = - qq|DELETE FROM auth.session_content - WHERE session_id IN - (SELECT id - FROM auth.session - WHERE (mtime < (now() - '$self->{session_timeout}m'::interval)))|; + my @ids = selectall_array_query($::form, $dbh, $query); - do_query($main::form, $dbh, $query); + if (@ids) { + $dbh->begin_work; - $query = - qq|DELETE FROM auth.session - WHERE (mtime < (now() - '$self->{session_timeout}m'::interval))|; + SL::SessionFile->destroy_session($_) for @ids; - do_query($main::form, $dbh, $query); + $query = qq|DELETE FROM auth.session_content + WHERE session_id IN (| . join(', ', ('?') x scalar(@ids)) . qq|)|; + do_query($main::form, $dbh, $query, @ids); - $dbh->commit(); + $query = qq|DELETE FROM auth.session + WHERE id IN (| . join(', ', ('?') x scalar(@ids)) . qq|)|; + do_query($main::form, $dbh, $query, @ids); + + $dbh->commit(); + } $main::lxdebug->leave_sub(); }