veylant/migrations/000006_users.up.sql
2026-02-23 13:35:04 +01:00

21 lines
926 B
SQL

-- Migration 000006: Users table for internal user management (E3-08).
-- Users in Keycloak are the authoritative source for authentication.
-- This table stores per-tenant user metadata (department, role, status)
-- managed via the admin API. Keycloak sub is used as external reference.
CREATE TABLE IF NOT EXISTS users (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
tenant_id TEXT NOT NULL,
email TEXT NOT NULL,
name TEXT NOT NULL,
department TEXT,
role TEXT NOT NULL DEFAULT 'user'
CHECK (role IN ('admin','manager','user','auditor')),
is_active BOOLEAN NOT NULL DEFAULT TRUE,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
UNIQUE(tenant_id, email)
);
CREATE INDEX IF NOT EXISTS idx_users_tenant ON users(tenant_id, is_active);