37 lines
1.9 KiB
SQL
37 lines
1.9 KiB
SQL
|
|
-- +goose Up
|
||
|
|
-- Фаза 7: passkeys (WebAuthn), AGENT.md 7.1.
|
||
|
|
--
|
||
|
|
-- Таблица webauthn_credentials создана в 00002 «на вырост» и до Фазы 7 не
|
||
|
|
-- использовалась ни одной строкой кода, поэтому пересобираем её в том виде,
|
||
|
|
-- который нужен рабочей реализации: полная запись credential хранится в JSON
|
||
|
|
-- (credential_json) — так структура не разъезжается с версиями библиотеки
|
||
|
|
-- go-webauthn, а отдельные колонки нужны только для списка ключей.
|
||
|
|
-- PII здесь нет: имя ключа задаёт сам пользователь.
|
||
|
|
|
||
|
|
DROP TABLE webauthn_credentials;
|
||
|
|
CREATE TABLE webauthn_credentials (
|
||
|
|
id INTEGER PRIMARY KEY,
|
||
|
|
user_id INTEGER NOT NULL REFERENCES users (id) ON DELETE CASCADE,
|
||
|
|
credential_id TEXT NOT NULL UNIQUE,
|
||
|
|
name TEXT NOT NULL DEFAULT '',
|
||
|
|
credential_json TEXT NOT NULL,
|
||
|
|
sign_count INTEGER NOT NULL DEFAULT 0,
|
||
|
|
transports TEXT NOT NULL DEFAULT '',
|
||
|
|
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
|
||
|
|
updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
|
||
|
|
last_used_at TEXT
|
||
|
|
);
|
||
|
|
CREATE INDEX webauthn_credentials_user_idx ON webauthn_credentials (user_id);
|
||
|
|
|
||
|
|
-- +goose Down
|
||
|
|
DROP TABLE webauthn_credentials;
|
||
|
|
CREATE TABLE webauthn_credentials (
|
||
|
|
id INTEGER PRIMARY KEY,
|
||
|
|
user_id INTEGER NOT NULL REFERENCES users (id) ON DELETE CASCADE,
|
||
|
|
credential_id TEXT NOT NULL UNIQUE,
|
||
|
|
public_key BLOB NOT NULL,
|
||
|
|
sign_count INTEGER NOT NULL DEFAULT 0,
|
||
|
|
transports TEXT NOT NULL DEFAULT '',
|
||
|
|
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
|
||
|
|
);
|