diff options
-rw-r--r-- | lib/VNDB/DB/Users.pm | 13 | ||||
-rw-r--r-- | lib/VNDB/Util/Auth.pm | 2 | ||||
-rw-r--r-- | util/dump.sql | 4 | ||||
-rw-r--r-- | util/updates/update_2.6.sql | 6 |
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; |