21 lines
926 B
SQL
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);
|