summaryrefslogtreecommitdiff
path: root/sql/modules/Session.sql
diff options
context:
space:
mode:
authoreinhverfr <einhverfr@4979c152-3d1c-0410-bac9-87ea11338e46>2008-09-18 18:38:09 +0000
committereinhverfr <einhverfr@4979c152-3d1c-0410-bac9-87ea11338e46>2008-09-18 18:38:09 +0000
commit8fc6c2094bfd5964c3c875c58407ed5f8820e90b (patch)
tree93a8d2b248ed15a7dff50a6f489f78893d203384 /sql/modules/Session.sql
parent9e2e27bda4a44c0303cea5bc774d566e2e9f40df (diff)
Adding unit tests to Session.sql and correcting logic that causes it to fail.
Adding a 90 min timeout to the sessions by default git-svn-id: https://ledger-smb.svn.sourceforge.net/svnroot/ledger-smb/trunk@2328 4979c152-3d1c-0410-bac9-87ea11338e46
Diffstat (limited to 'sql/modules/Session.sql')
-rw-r--r--sql/modules/Session.sql6
1 files changed, 5 insertions, 1 deletions
diff --git a/sql/modules/Session.sql b/sql/modules/Session.sql
index e0547c22..158c8c2e 100644
--- a/sql/modules/Session.sql
+++ b/sql/modules/Session.sql
@@ -30,6 +30,10 @@ RETURNS session AS
$$
DECLARE out_row session%ROWTYPE;
BEGIN
+ DELETE FROM session
+ WHERE last_used < now() - coalesce((SELECT value FROM defaults
+ WHERE setting_key = 'timeout')::interval,
+ '90 minutes'::interval);
UPDATE session
SET last_used = now()
WHERE session_id = in_session_id
@@ -39,7 +43,7 @@ BEGIN
AND users_id = (select id from users
where username = SESSION_USER);
IF FOUND THEN
- SELECT * INTO out_row WHERE session_id = in_session_id;
+ SELECT * INTO out_row FROM session WHERE session_id = in_session_id;
ELSE
DELETE FROM SESSION
WHERE users_id IN (select id from users