mirror of
https://github.com/pocket-id/pocket-id.git
synced 2025-12-07 13:53:00 +03:00
126 lines
3.8 KiB
SQL
126 lines
3.8 KiB
SQL
CREATE TABLE app_config_variables
|
|
(
|
|
key VARCHAR(100) NOT NULL PRIMARY KEY,
|
|
value TEXT NOT NULL,
|
|
type VARCHAR(20) NOT NULL,
|
|
is_public BOOLEAN DEFAULT FALSE NOT NULL,
|
|
is_internal BOOLEAN DEFAULT FALSE NOT NULL,
|
|
default_value TEXT
|
|
);
|
|
|
|
CREATE TABLE user_groups
|
|
(
|
|
id UUID NOT NULL PRIMARY KEY,
|
|
created_at TIMESTAMPTZ,
|
|
friendly_name VARCHAR(255) NOT NULL,
|
|
name VARCHAR(255) NOT NULL UNIQUE
|
|
);
|
|
|
|
CREATE TABLE users
|
|
(
|
|
id UUID NOT NULL PRIMARY KEY,
|
|
created_at TIMESTAMPTZ,
|
|
username VARCHAR(255) NOT NULL UNIQUE,
|
|
email VARCHAR(255) NOT NULL UNIQUE,
|
|
first_name VARCHAR(100),
|
|
last_name VARCHAR(100),
|
|
is_admin BOOLEAN DEFAULT FALSE NOT NULL
|
|
);
|
|
|
|
CREATE TABLE audit_logs
|
|
(
|
|
id UUID NOT NULL PRIMARY KEY,
|
|
created_at TIMESTAMPTZ,
|
|
event VARCHAR(100) NOT NULL,
|
|
ip_address INET NOT NULL,
|
|
data JSONB NOT NULL,
|
|
user_id UUID REFERENCES users ON DELETE SET NULL,
|
|
user_agent TEXT,
|
|
country VARCHAR(100),
|
|
city VARCHAR(100)
|
|
);
|
|
|
|
CREATE TABLE custom_claims
|
|
(
|
|
id UUID NOT NULL PRIMARY KEY,
|
|
created_at TIMESTAMPTZ,
|
|
key VARCHAR(255) NOT NULL,
|
|
value TEXT NOT NULL,
|
|
user_id UUID REFERENCES users ON DELETE CASCADE,
|
|
user_group_id UUID REFERENCES user_groups ON DELETE CASCADE,
|
|
CONSTRAINT custom_claims_unique UNIQUE (key, user_id, user_group_id),
|
|
CHECK (user_id IS NOT NULL OR user_group_id IS NOT NULL)
|
|
);
|
|
|
|
CREATE TABLE oidc_authorization_codes
|
|
(
|
|
id UUID NOT NULL PRIMARY KEY,
|
|
created_at TIMESTAMPTZ,
|
|
code VARCHAR(255) NOT NULL UNIQUE,
|
|
scope TEXT NOT NULL,
|
|
nonce VARCHAR(255),
|
|
expires_at TIMESTAMPTZ NOT NULL,
|
|
user_id UUID NOT NULL REFERENCES users ON DELETE CASCADE,
|
|
client_id UUID NOT NULL,
|
|
code_challenge VARCHAR(255),
|
|
code_challenge_method_sha256 BOOLEAN
|
|
);
|
|
|
|
CREATE TABLE oidc_clients
|
|
(
|
|
id UUID NOT NULL PRIMARY KEY,
|
|
created_at TIMESTAMPTZ,
|
|
name VARCHAR(255),
|
|
secret TEXT,
|
|
callback_urls JSONB,
|
|
image_type VARCHAR(10),
|
|
created_by_id UUID REFERENCES users ON DELETE SET NULL,
|
|
is_public BOOLEAN DEFAULT FALSE
|
|
);
|
|
|
|
CREATE TABLE one_time_access_tokens
|
|
(
|
|
id UUID NOT NULL PRIMARY KEY,
|
|
created_at TIMESTAMPTZ,
|
|
token VARCHAR(255) NOT NULL UNIQUE,
|
|
expires_at TIMESTAMPTZ NOT NULL,
|
|
user_id UUID NOT NULL REFERENCES users ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE user_authorized_oidc_clients
|
|
(
|
|
scope VARCHAR(255),
|
|
user_id UUID NOT NULL REFERENCES users ON DELETE CASCADE,
|
|
client_id UUID NOT NULL REFERENCES oidc_clients ON DELETE CASCADE,
|
|
PRIMARY KEY (user_id, client_id)
|
|
);
|
|
|
|
CREATE TABLE user_groups_users
|
|
(
|
|
user_id UUID NOT NULL REFERENCES users ON DELETE CASCADE,
|
|
user_group_id UUID NOT NULL REFERENCES user_groups ON DELETE CASCADE,
|
|
PRIMARY KEY (user_id, user_group_id)
|
|
);
|
|
|
|
CREATE TABLE webauthn_credentials
|
|
(
|
|
id UUID NOT NULL PRIMARY KEY,
|
|
created_at TIMESTAMPTZ,
|
|
name VARCHAR(255) NOT NULL,
|
|
credential_id BYTEA NOT NULL UNIQUE,
|
|
public_key BYTEA NOT NULL,
|
|
attestation_type VARCHAR(20) NOT NULL,
|
|
transport JSONB NOT NULL,
|
|
user_id UUID REFERENCES users ON DELETE CASCADE,
|
|
backup_eligible BOOLEAN DEFAULT FALSE NOT NULL,
|
|
backup_state BOOLEAN DEFAULT FALSE NOT NULL
|
|
);
|
|
|
|
CREATE TABLE webauthn_sessions
|
|
(
|
|
id UUID NOT NULL PRIMARY KEY,
|
|
created_at TIMESTAMPTZ,
|
|
challenge VARCHAR(255) NOT NULL UNIQUE,
|
|
expires_at TIMESTAMPTZ NOT NULL,
|
|
user_verification VARCHAR(255) NOT NULL
|
|
); |