summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/VNDB/DB/Users.pm13
-rw-r--r--lib/VNDB/Util/Auth.pm2
-rw-r--r--util/dump.sql4
-rw-r--r--util/updates/update_2.6.sql6
4 files changed, 16 insertions, 9 deletions
diff --git a/lib/VNDB/DB/Users.pm b/lib/VNDB/DB/Users.pm
index 07ccaf1e..eaed1234 100644
--- a/lib/VNDB/DB/Users.pm
+++ b/lib/VNDB/DB/Users.pm
@@ -112,11 +112,18 @@ sub dbUserDel {
}
-# uid, 40 character session token, expiration time (int)
+# Adds a session to the database
+# If no expiration is supplied the database default is used
+# uid, 40 character session token, expiration time (timestamp)
sub dbSessionAdd {
my($s, @o) = @_;
- $s->dbExec(q|INSERT INTO sessions (uid, token, expiration) VALUES(?, ?, ?)|,
- @o[0..2]);
+ if (defined $o[2]) {
+ $s->dbExec(q|INSERT INTO sessions (uid, token, expiration) VALUES(?, ?, ?)|,
+ @o);
+ } else {
+ $s->dbExec(q|INSERT INTO sessions (uid, token) VALUES(?, ?)|,
+ @o);
+ }
}
diff --git a/lib/VNDB/Util/Auth.pm b/lib/VNDB/Util/Auth.pm
index 3b7b052a..9d14c5ae 100644
--- a/lib/VNDB/Util/Auth.pm
+++ b/lib/VNDB/Util/Auth.pm
@@ -39,7 +39,7 @@ sub authLogin {
my $token = sha1_hex(join('', Time::HiRes::gettimeofday()) . join('', map chr(rand(93)+33), 1..9));
my $expiration = time + 31536000; # 1yr
my $cookie = $token . $self->{_auth}{id};
- $self->dbSessionAdd($self->{_auth}{id}, $token, $expiration);
+ $self->dbSessionAdd($self->{_auth}{id}, $token);
my $expstr = strftime("%a, %d %b %Y %H:%M:%S GMT", gmtime($expiration));
$self->resRedirect($to, 'post');
diff --git a/util/dump.sql b/util/dump.sql
index e69947f6..e1a3aee4 100644
--- a/util/dump.sql
+++ b/util/dump.sql
@@ -165,7 +165,7 @@ CREATE TABLE screenshots (
CREATE TABLE sessions (
uid integer NOT NULL,
token character(40) NOT NULL,
- expiration bigint DEFAULT 0 NOT NULL,
+ expiration timestamp without time zone NOT NULL DEFAULT (now() + '1 year'::interval),
PRIMARY KEY (uid, token)
);
@@ -385,7 +385,7 @@ ALTER TABLE releases_vn ADD FOREIGN KEY (rid) REFERENCES releases_r
ALTER TABLE releases_vn ADD FOREIGN KEY (vid) REFERENCES vn (id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE rlists ADD FOREIGN KEY (uid) REFERENCES users (id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE rlists ADD FOREIGN KEY (rid) REFERENCES releases (id) DEFERRABLE INITIALLY DEFERRED;
-ALTER TABLE sessions ADD FOREIGN KEY (uid) REFERENCES users (id) DEFERRABLE INITIALLY DEFERRED;
+ALTER TABLE sessions ADD FOREIGN KEY (uid) REFERENCES users (id);
ALTER TABLE tags ADD FOREIGN KEY (addedby) REFERENCES users (id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE tags_aliases ADD FOREIGN KEY (tag) REFERENCES tags (id) DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE tags_parents ADD FOREIGN KEY (tag) REFERENCES tags (id) DEFERRABLE INITIALLY DEFERRED;
diff --git a/util/updates/update_2.6.sql b/util/updates/update_2.6.sql
index e631039e..25b7782e 100644
--- a/util/updates/update_2.6.sql
+++ b/util/updates/update_2.6.sql
@@ -2,13 +2,13 @@
-- Create table for session data storage
CREATE TABLE sessions (
- uid integer NOT NULL REFERENCES users(id) DEFERRABLE INITIALLY DEFERRED;
+ uid integer NOT NULL REFERENCES users(id);
token character(40) NOT NULL,
- expiration bigint DEFAULT 0 NOT NULL,
+ expiration timestamp without time zone DEFAULT (NOW() + '1 year'::interval) NOT NULL,
PRIMARY KEY (uid, token)
);
-- Add column to users for salt storage
-ALTER TABLE users ADD COLUMN salt character(9) NOT NULL DEFAULT '';
+ALTER TABLE users ADD COLUMN salt character(9) NOT NULL DEFAULT ''::bpchar;