-- +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;