mirror of
https://github.com/pocket-id/pocket-id.git
synced 2026-07-20 03:31:27 +02:00
103 lines
3.6 KiB
PL/PgSQL
103 lines
3.6 KiB
PL/PgSQL
PRAGMA foreign_keys= OFF;
|
|
BEGIN;
|
|
|
|
CREATE TABLE oidc_authorization_codes
|
|
(
|
|
id TEXT NOT NULL PRIMARY KEY,
|
|
created_at INTEGER,
|
|
code TEXT NOT NULL UNIQUE,
|
|
scope TEXT NOT NULL,
|
|
nonce TEXT,
|
|
expires_at INTEGER NOT NULL,
|
|
user_id TEXT NOT NULL REFERENCES users ON DELETE CASCADE,
|
|
client_id TEXT NOT NULL REFERENCES oidc_clients ON DELETE CASCADE,
|
|
code_challenge TEXT,
|
|
code_challenge_method_sha256 NUMERIC,
|
|
authentication_method TEXT NOT NULL DEFAULT ''
|
|
);
|
|
|
|
CREATE INDEX idx_oidc_authorization_codes_expires_at ON oidc_authorization_codes (expires_at);
|
|
|
|
CREATE TABLE oidc_refresh_tokens (
|
|
id TEXT NOT NULL PRIMARY KEY,
|
|
created_at INTEGER,
|
|
token TEXT NOT NULL UNIQUE,
|
|
expires_at INTEGER NOT NULL,
|
|
scope TEXT NOT NULL,
|
|
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
client_id TEXT NOT NULL REFERENCES oidc_clients(id) ON DELETE CASCADE,
|
|
authentication_method TEXT NOT NULL DEFAULT '',
|
|
id_token_jti TEXT
|
|
);
|
|
|
|
CREATE INDEX idx_oidc_refresh_tokens_expires_at ON oidc_refresh_tokens (expires_at);
|
|
CREATE INDEX idx_oidc_refresh_tokens_id_token_jti
|
|
ON oidc_refresh_tokens(user_id, client_id, id_token_jti);
|
|
|
|
CREATE TABLE oidc_device_codes
|
|
(
|
|
id TEXT NOT NULL PRIMARY KEY,
|
|
created_at INTEGER,
|
|
device_code TEXT NOT NULL UNIQUE,
|
|
user_code TEXT NOT NULL UNIQUE,
|
|
scope TEXT NOT NULL,
|
|
expires_at INTEGER NOT NULL,
|
|
is_authorized BOOLEAN NOT NULL DEFAULT FALSE,
|
|
user_id TEXT REFERENCES users ON DELETE CASCADE,
|
|
client_id TEXT NOT NULL REFERENCES oidc_clients ON DELETE CASCADE,
|
|
authentication_method TEXT NOT NULL DEFAULT '',
|
|
nonce TEXT
|
|
);
|
|
|
|
CREATE TABLE oidc_pushed_authorization_requests (
|
|
id TEXT NOT NULL PRIMARY KEY,
|
|
created_at INTEGER NOT NULL,
|
|
request_uri TEXT NOT NULL UNIQUE,
|
|
client_id TEXT NOT NULL REFERENCES oidc_clients(id) ON DELETE CASCADE,
|
|
parameters TEXT NOT NULL DEFAULT '{}',
|
|
expires_at INTEGER NOT NULL
|
|
);
|
|
|
|
CREATE INDEX idx_oidc_par_expires_at ON oidc_pushed_authorization_requests (expires_at);
|
|
|
|
CREATE TABLE user_authorized_oidc_clients_new (
|
|
scope TEXT,
|
|
user_id TEXT NOT NULL REFERENCES users ON DELETE CASCADE,
|
|
client_id TEXT NOT NULL REFERENCES oidc_clients ON DELETE CASCADE,
|
|
last_used_at DATETIME NOT NULL,
|
|
PRIMARY KEY (user_id, client_id)
|
|
);
|
|
|
|
INSERT INTO user_authorized_oidc_clients_new (scope, user_id, client_id, last_used_at)
|
|
SELECT CASE
|
|
WHEN scope IS NULL THEN NULL
|
|
WHEN json_valid(CAST(scope AS TEXT)) AND json_type(CAST(scope AS TEXT)) = 'array' THEN (
|
|
SELECT group_concat(value, ' ')
|
|
FROM json_each(CAST(scope AS TEXT))
|
|
)
|
|
ELSE CAST(scope AS TEXT)
|
|
END,
|
|
user_id,
|
|
client_id,
|
|
last_used_at
|
|
FROM user_authorized_oidc_clients;
|
|
|
|
DROP TABLE user_authorized_oidc_clients;
|
|
ALTER TABLE user_authorized_oidc_clients_new RENAME TO user_authorized_oidc_clients;
|
|
|
|
DROP INDEX IF EXISTS idx_interaction_sessions_client_id;
|
|
DROP INDEX IF EXISTS idx_interaction_sessions_user_id;
|
|
DROP TABLE IF EXISTS interaction_sessions;
|
|
|
|
DROP INDEX IF EXISTS idx_oauth2_jtis_expires_at;
|
|
DROP TABLE IF EXISTS oauth2_jtis;
|
|
|
|
DROP INDEX IF EXISTS idx_oauth2_sessions_expires_at;
|
|
DROP INDEX IF EXISTS idx_oauth2_sessions_kind_request;
|
|
DROP INDEX IF EXISTS idx_oauth2_sessions_kind_key;
|
|
DROP TABLE IF EXISTS oauth2_sessions;
|
|
|
|
COMMIT;
|
|
PRAGMA foreign_keys= ON;
|
|
|