mirror of
https://github.com/pocket-id/pocket-id.git
synced 2026-07-20 19:51:27 +02:00
84 lines
3.3 KiB
SQL
84 lines
3.3 KiB
SQL
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 TEXT NOT NULL REFERENCES oidc_clients (id) ON DELETE CASCADE,
|
|
code_challenge VARCHAR(255),
|
|
code_challenge_method_sha256 BOOLEAN,
|
|
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 UUID NOT NULL PRIMARY KEY,
|
|
created_at TIMESTAMPTZ,
|
|
token VARCHAR(255) NOT NULL UNIQUE,
|
|
expires_at TIMESTAMPTZ NOT NULL,
|
|
scope TEXT NOT NULL,
|
|
user_id UUID NOT NULL REFERENCES users ON DELETE CASCADE,
|
|
client_id TEXT NOT NULL REFERENCES oidc_clients ON DELETE CASCADE,
|
|
authentication_method TEXT NOT NULL DEFAULT '',
|
|
id_token_jti UUID
|
|
);
|
|
|
|
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 UUID NOT NULL PRIMARY KEY,
|
|
created_at TIMESTAMPTZ,
|
|
device_code TEXT NOT NULL UNIQUE,
|
|
user_code TEXT NOT NULL UNIQUE,
|
|
scope TEXT NOT NULL,
|
|
expires_at TIMESTAMPTZ NOT NULL,
|
|
is_authorized BOOLEAN NOT NULL DEFAULT FALSE,
|
|
user_id UUID REFERENCES users ON DELETE CASCADE,
|
|
client_id TEXT NOT NULL REFERENCES oidc_clients ON DELETE CASCADE,
|
|
authentication_method TEXT NOT NULL DEFAULT '',
|
|
nonce VARCHAR(255)
|
|
);
|
|
|
|
CREATE TABLE oidc_pushed_authorization_requests (
|
|
id UUID NOT NULL PRIMARY KEY,
|
|
created_at TIMESTAMPTZ NOT NULL,
|
|
request_uri TEXT NOT NULL UNIQUE,
|
|
client_id TEXT NOT NULL REFERENCES oidc_clients(id) ON DELETE CASCADE,
|
|
parameters JSONB NOT NULL DEFAULT '{}',
|
|
expires_at TIMESTAMPTZ NOT NULL
|
|
);
|
|
|
|
CREATE INDEX idx_oidc_par_expires_at ON oidc_pushed_authorization_requests (expires_at);
|
|
|
|
ALTER TABLE user_authorized_oidc_clients ADD COLUMN scope_text TEXT;
|
|
UPDATE user_authorized_oidc_clients
|
|
SET scope_text = CASE
|
|
WHEN scope IS NULL THEN NULL
|
|
WHEN jsonb_typeof(scope) = 'array' THEN (
|
|
SELECT string_agg(scope_value.value, ' ')
|
|
FROM jsonb_array_elements_text(scope) AS scope_value(value)
|
|
)
|
|
ELSE scope #>> '{}'
|
|
END;
|
|
ALTER TABLE user_authorized_oidc_clients DROP COLUMN scope;
|
|
ALTER TABLE user_authorized_oidc_clients RENAME COLUMN scope_text TO scope;
|
|
|
|
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;
|