Expiration timestamp instead of valid bit

This commit is contained in:
Gent Semaj 2024-09-07 13:04:45 -04:00
parent 810ccffd9e
commit 8845138d63
Signed by untrusted user: ycc
GPG Key ID: 2D76C57BF6BEADC4
3 changed files with 5 additions and 4 deletions

View File

@ -8,7 +8,7 @@ BEGIN TRANSACTION;
CREATE TABLE Auth ( CREATE TABLE Auth (
AccountID INTEGER NOT NULL, AccountID INTEGER NOT NULL,
Cookie TEXT NOT NULL, Cookie TEXT NOT NULL,
Valid INTEGER NOT NULL, Expires INTEGER DEFAULT 0 NOT NULL,
FOREIGN KEY(AccountID) REFERENCES Accounts(AccountID) ON DELETE CASCADE, FOREIGN KEY(AccountID) REFERENCES Accounts(AccountID) ON DELETE CASCADE,
UNIQUE (AccountID) UNIQUE (AccountID)
); );

View File

@ -163,7 +163,7 @@ CREATE TABLE IF NOT EXISTS RedeemedCodes (
CREATE TABLE IF NOT EXISTS Auth ( CREATE TABLE IF NOT EXISTS Auth (
AccountID INTEGER NOT NULL, AccountID INTEGER NOT NULL,
Cookie TEXT NOT NULL, Cookie TEXT NOT NULL,
Valid INTEGER DEFAULT 0 NOT NULL, Expires INTEGER DEFAULT 0 NOT NULL,
FOREIGN KEY(AccountID) REFERENCES Accounts(AccountID) ON DELETE CASCADE, FOREIGN KEY(AccountID) REFERENCES Accounts(AccountID) ON DELETE CASCADE,
UNIQUE (AccountID) UNIQUE (AccountID)
); );

View File

@ -104,12 +104,12 @@ bool Database::checkCookie(int accountId, const char *tryCookie) {
const char* sql_get = R"( const char* sql_get = R"(
SELECT Cookie SELECT Cookie
FROM Auth FROM Auth
WHERE AccountID = ? AND Valid = 1; WHERE AccountID = ? AND Expires > ?;
)"; )";
const char* sql_invalidate = R"( const char* sql_invalidate = R"(
UPDATE Auth UPDATE Auth
SET Valid = 0 SET Expires = 0
WHERE AccountID = ?; WHERE AccountID = ?;
)"; )";
@ -117,6 +117,7 @@ bool Database::checkCookie(int accountId, const char *tryCookie) {
sqlite3_prepare_v2(db, sql_get, -1, &stmt, NULL); sqlite3_prepare_v2(db, sql_get, -1, &stmt, NULL);
sqlite3_bind_int(stmt, 1, accountId); sqlite3_bind_int(stmt, 1, accountId);
sqlite3_bind_int(stmt, 2, getTimestamp());
int rc = sqlite3_step(stmt); int rc = sqlite3_step(stmt);
if (rc != SQLITE_ROW) { if (rc != SQLITE_ROW) {
sqlite3_finalize(stmt); sqlite3_finalize(stmt);