refactor: improved table structure
This commit is contained in:
@@ -25,7 +25,8 @@ type LoginInformation struct {
|
|||||||
PasswordHash string
|
PasswordHash string
|
||||||
TotpEncrypted pgtype.Text
|
TotpEncrypted pgtype.Text
|
||||||
Email2faEnabled pgtype.Bool
|
Email2faEnabled pgtype.Bool
|
||||||
PasswordChangeTime pgtype.Timestamp
|
PasswordChangeDate pgtype.Timestamp
|
||||||
|
PasswordTimesChanged pgtype.Int4
|
||||||
}
|
}
|
||||||
|
|
||||||
type Profile struct {
|
type Profile struct {
|
||||||
|
|||||||
@@ -1,20 +1,20 @@
|
|||||||
-- TODO: login information must exist too
|
|
||||||
CREATE TABLE IF NOT EXISTS "users" (
|
CREATE TABLE IF NOT EXISTS "users" (
|
||||||
id BIGSERIAL PRIMARY KEY,
|
id BIGSERIAL PRIMARY KEY,
|
||||||
username VARCHAR(20) UNIQUE NOT NULL,
|
username VARCHAR(20) UNIQUE NOT NULL,
|
||||||
verified BOOLEAN,
|
verified BOOLEAN DEFAULT FALSE,
|
||||||
banned BOOLEAN,
|
banned BOOLEAN DEFAULT FALSE,
|
||||||
registration_date TIMESTAMP NOT NULL
|
registration_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS "login_informations" (
|
CREATE TABLE IF NOT EXISTS "login_informations" (
|
||||||
id BIGSERIAL PRIMARY KEY,
|
id BIGSERIAL PRIMARY KEY,
|
||||||
user_id BIGINT UNIQUE NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
user_id BIGINT UNIQUE NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||||
email VARCHAR(75),
|
email VARCHAR(75) UNIQUE,
|
||||||
password_hash VARCHAR(512) NOT NULL,
|
password_hash VARCHAR(512) NOT NULL,
|
||||||
totp_encrypted VARCHAR(512),
|
totp_encrypted VARCHAR(512),
|
||||||
email_2fa_enabled BOOLEAN,
|
email_2fa_enabled BOOLEAN DEFAULT FALSE,
|
||||||
password_change_time TIMESTAMP
|
password_change_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
password_times_changed INTEGER DEFAULT 0
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS "confirmation_codes" (
|
CREATE TABLE IF NOT EXISTS "confirmation_codes" (
|
||||||
@@ -22,9 +22,9 @@ CREATE TABLE IF NOT EXISTS "confirmation_codes" (
|
|||||||
user_id BIGINT UNIQUE NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
user_id BIGINT UNIQUE NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||||
type INTEGER NOT NULL,
|
type INTEGER NOT NULL,
|
||||||
code VARCHAR(36) NOT NULL,
|
code VARCHAR(36) NOT NULL,
|
||||||
expires_at TIMESTAMP NOT NULL,
|
expires_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP + INTERVAL '10 minutes',
|
||||||
used BOOLEAN,
|
used BOOLEAN DEFAULT FALSE,
|
||||||
deleted BOOLEAN
|
deleted BOOLEAN DEFAULT FALSE
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS "sessions" (
|
CREATE TABLE IF NOT EXISTS "sessions" (
|
||||||
@@ -34,9 +34,9 @@ CREATE TABLE IF NOT EXISTS "sessions" (
|
|||||||
name VARCHAR(100),
|
name VARCHAR(100),
|
||||||
platform VARCHAR(32),
|
platform VARCHAR(32),
|
||||||
latest_ip VARCHAR(16),
|
latest_ip VARCHAR(16),
|
||||||
login_time TIMESTAMP NOT NULL,
|
login_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
last_seen_date TIMESTAMP NOT NULL,
|
last_seen_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
terminated BOOLEAN
|
terminated BOOLEAN DEFAULT FALSE
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS "profiles" (
|
CREATE TABLE IF NOT EXISTS "profiles" (
|
||||||
|
|||||||
Reference in New Issue
Block a user