Files
glchat/internal/database/migrations/00019_phase7_oauth.sql
T

24 lines
1.1 KiB
SQL
Raw Normal View History

-- +goose Up
-- Фаза 7: OAuth-провайдеры (AGENT.md 7.1).
--
-- Связь внешнего аккаунта с пользователем инстанса. Внешний идентификатор
-- (subject) хранится только как blind index (HMAC-SHA-256 от
-- "provider:subject"), email — тоже индексом: сырых PII в таблице нет
-- (AGENT.md 9.2). Токены провайдеров не сохраняются вовсе: они нужны только
-- на время обмена кода на профиль.
CREATE TABLE oauth_accounts (
id INTEGER PRIMARY KEY,
user_id INTEGER NOT NULL REFERENCES users (id) ON DELETE CASCADE,
provider TEXT NOT NULL,
subject_index TEXT NOT NULL,
email_index TEXT NOT NULL DEFAULT '',
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
last_login_at TEXT,
UNIQUE (provider, subject_index)
);
CREATE INDEX oauth_accounts_user_idx ON oauth_accounts (user_id);
-- +goose Down
DROP TABLE oauth_accounts;