70 lines
2.9 KiB
SQL
70 lines
2.9 KiB
SQL
-- =====================================================================================
|
||
-- Schema: 权限管理 (RBAC) 核心表
|
||
-- 位置:docs/sql/10_schema/user/ak_auth_system_v1.sql
|
||
-- 对象类型:TABLE
|
||
-- 版本:v1
|
||
-- 说明:包含角色表、权限/菜单表及用户角色关联表
|
||
-- =====================================================================================
|
||
|
||
-- 1. 角色表
|
||
CREATE TABLE IF NOT EXISTS public.ak_roles (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
name TEXT NOT NULL UNIQUE, -- 角色名称 (如: 超级管理员)
|
||
code TEXT NOT NULL UNIQUE, -- 角色编码 (如: super_admin)
|
||
description TEXT, -- 角色描述
|
||
is_active BOOLEAN NOT NULL DEFAULT TRUE,
|
||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||
);
|
||
|
||
-- 2. 权限/菜单表
|
||
CREATE TABLE IF NOT EXISTS public.ak_permissions (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
parent_id UUID REFERENCES public.ak_permissions(id) ON DELETE CASCADE,
|
||
|
||
name TEXT NOT NULL, -- 权限/菜单名称
|
||
code TEXT NOT NULL UNIQUE, -- 权限编码 (如: order_view)
|
||
type TEXT NOT NULL, -- 类型: menu(菜单), button(按钮/接口)
|
||
|
||
path TEXT, -- 前端路由路径 (仅针对 menu)
|
||
icon TEXT, -- 图标
|
||
sort_order INTEGER DEFAULT 0, -- 排序
|
||
|
||
is_visible BOOLEAN DEFAULT TRUE, -- 菜单是否在左侧可见
|
||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||
);
|
||
|
||
-- 3. 用户-角色关联表
|
||
-- 映射管理员 (ak_users) 与角色
|
||
CREATE TABLE IF NOT EXISTS public.ak_admin_roles (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
user_id UUID NOT NULL REFERENCES public.ak_users(id) ON DELETE CASCADE,
|
||
role_id UUID NOT NULL REFERENCES public.ak_roles(id) ON DELETE CASCADE,
|
||
|
||
assigned_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||
assigned_by UUID REFERENCES public.ak_users(id),
|
||
|
||
UNIQUE(user_id, role_id)
|
||
);
|
||
|
||
-- 4. 角色-权限关联表
|
||
CREATE TABLE IF NOT EXISTS public.ak_role_permissions (
|
||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
role_id UUID NOT NULL REFERENCES public.ak_roles(id) ON DELETE CASCADE,
|
||
permission_id UUID NOT NULL REFERENCES public.ak_permissions(id) ON DELETE CASCADE,
|
||
|
||
UNIQUE(role_id, permission_id)
|
||
);
|
||
|
||
-- 索引
|
||
CREATE INDEX IF NOT EXISTS idx_permissions_parent_id ON public.ak_permissions(parent_id);
|
||
CREATE INDEX IF NOT EXISTS idx_admin_roles_user_id ON public.ak_admin_roles(user_id);
|
||
CREATE INDEX IF NOT EXISTS idx_role_permissions_role_id ON public.ak_role_permissions(role_id);
|
||
|
||
-- 注释
|
||
COMMENT ON TABLE public.ak_roles IS '后台管理角色表';
|
||
COMMENT ON TABLE public.ak_permissions IS '功能权限与菜单定义表';
|
||
COMMENT ON TABLE public.ak_admin_roles IS '管理员角色分配表';
|
||
COMMENT ON TABLE public.ak_role_permissions IS '角色权限映射表';
|