mirror of
https://github.com/tiennm99/goclaw.git
synced 2026-10-12 20:15:42 +00:00
35 lines
1.6 KiB
SQL
35 lines
1.6 KiB
SQL
-- Migration 000069: selected browser cookie sync
|
|
-- Stores user-selected cookies for server-side browser contexts. Values are
|
|
-- AES-256-GCM ciphertext from internal/crypto/aes.go; cookie scope is tenant,
|
|
-- user, and agent to prevent cross-principal reuse.
|
|
|
|
CREATE TABLE IF NOT EXISTS browser_cookies (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
|
|
user_id VARCHAR(255) NOT NULL,
|
|
agent_id VARCHAR(255) NOT NULL,
|
|
domain TEXT NOT NULL,
|
|
name TEXT NOT NULL,
|
|
path TEXT NOT NULL DEFAULT '/',
|
|
encrypted_value TEXT NOT NULL,
|
|
secure BOOLEAN NOT NULL DEFAULT FALSE,
|
|
http_only BOOLEAN NOT NULL DEFAULT FALSE,
|
|
same_site VARCHAR(32) NOT NULL DEFAULT '',
|
|
expires_at TIMESTAMPTZ,
|
|
source VARCHAR(64) NOT NULL DEFAULT '',
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
CONSTRAINT browser_cookies_domain_not_empty CHECK (TRIM(domain) <> ''),
|
|
CONSTRAINT browser_cookies_name_not_empty CHECK (TRIM(name) <> ''),
|
|
CONSTRAINT browser_cookies_path_not_empty CHECK (TRIM(path) <> '')
|
|
);
|
|
|
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_browser_cookies_scope_unique
|
|
ON browser_cookies (tenant_id, user_id, agent_id, domain, path, name);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_browser_cookies_scope_domain
|
|
ON browser_cookies (tenant_id, user_id, agent_id, domain);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_browser_cookies_expires_at
|
|
ON browser_cookies (expires_at);
|