Skip to Content
开源权限内核

MTPC

业务无关、可嵌入、可组合的多租户权限内核
为现代 SaaS 应用提供强大而灵活的权限控制

TypeScript • 框架无关 • 插件化扩展 • 类型安全
🏗️

业务无关

核心不包含具体业务模型,仅提供抽象与派生能力,适用于各种业务场景

📐

Schema 驱动

Resource Definition 是唯一权威来源,其它一切均由其派生

编译期优先

能在编译期生成的内容绝不推迟到运行期,确保类型安全与一致性

📦

库而非服务

以内嵌库方式运行,不是独立微服务,易于集成到现有项目

🔌

可扩展设计

所有企业级能力通过插件、钩子与策略扩展,而非硬编码

🔒

默认拒绝

权限校验失败即拒绝访问,不存在'隐式放行',确保安全性

5 分钟快速上手

从安装到第一个权限检查,只需几个简单步骤

终端
$npm install @mtpc/core zod
$pnpm add @mtpc/core zod
$yarn add @mtpc/core zod
import { createMTPC, defineResource } from '@mtpc/core'
import { z } from 'zod'

// 创建 MTPC 实例
const mtpc = createMTPC()

// 定义资源
const userResource = defineResource({
  name: 'user',
  schema: z.object({
    id: z.string(),
    name: z.string(),
    email: z.string().email()
  }),
  features: {
    creatable: true,
    readable: true,
    updatable: true,
    deletable: true
  }
})

// 注册资源并初始化
mtpc.registerResource(userResource)
await mtpc.init()

// 检查权限
const result = await mtpc.checkPermission({
  tenant: { id: 'tenant-001' },
  subject: { id: 'user-123', type: 'user' },
  resource: 'user',
  action: 'create'
})

console.log(result.allowed) // true/false

完整的生态系统

丰富的扩展包和适配器,满足各种业务需求

核心包

@mtpc/core
@mtpc/rbac
@mtpc/shared

提供基础的权限控制能力

框架适配器

@mtpc/adapter-hono
@mtpc/adapter-drizzle
@mtpc/adapter-react
@mtpc/adapter-vue

支持多种 Web 框架和数据库

官方扩展

@mtpc/policy-cache
@mtpc/audit
@mtpc/data-scope
@mtpc/soft-delete

企业级功能扩展

准备开始了吗?

加入我们,为你的应用构建强大而灵活的权限系统