Skip to Content
🚀 Drubase One v1.1 - 基于 Drupal 11 的多租户后端即服务平台
Docs模块BaaS Tenant

BaaS Tenant 模块

租户管理模块 - 实现多租户架构和数据隔离。

📦 模块信息

  • 依赖: Drupal Core
  • 位置: web/modules/custom/baas_tenant/

🏗️ 架构设计

核心概念

租户(Tenant)是多租户架构的基础:

  • 每个租户拥有独立的数据空间
  • 租户之间完全隔离
  • 支持租户级别的配置和限制

数据库表

baas_tenant_config

CREATE TABLE baas_tenant_config ( id SERIAL PRIMARY KEY, tenant_id VARCHAR(255) UNIQUE NOT NULL, name VARCHAR(255) NOT NULL, description TEXT, owner_uid INTEGER NOT NULL, status INTEGER DEFAULT 1, settings TEXT, created INTEGER NOT NULL, updated INTEGER NOT NULL );

🔧 主要类和方法

TenantManager

租户管理服务 - src/Service/TenantManager.php

主要方法:

// 创建租户 public function createTenant(array $tenant_data): array // 获取租户 public function getTenant(string $tenant_id): ?array // 更新租户 public function updateTenant(string $tenant_id, array $updates): bool // 删除租户 public function deleteTenant(string $tenant_id): bool // 获取用户的所有租户 public function getUserTenants(int $user_id): array

TenantService

租户业务逻辑 - src/Service/TenantService.php

// 验证租户访问权限 public function validateTenantAccess(int $user_id, string $tenant_id): bool // 获取租户统计 public function getTenantStats(string $tenant_id): array // 获取租户配置 public function getTenantSettings(string $tenant_id): array

TenantController

租户 API 控制器 - src/Controller/TenantController.php

API 端点:

// GET /api/tenant/{tenant_id} public function getTenant(string $tenant_id): JsonResponse // POST /api/tenant public function createTenant(Request $request): JsonResponse // PUT /api/tenant/{tenant_id} public function updateTenant(string $tenant_id, Request $request): JsonResponse // DELETE /api/tenant/{tenant_id} public function deleteTenant(string $tenant_id): JsonResponse

📖 使用示例

创建租户

$tenant_manager = \Drupal::service('baas_tenant.manager'); $tenant = $tenant_manager->createTenant([ 'tenant_id' => 'tenant_' . bin2hex(random_bytes(4)), 'name' => '示例租户', 'description' => '这是一个示例租户', 'owner_uid' => 1, 'status' => 1, ]);

检查访问权限

$tenant_service = \Drupal::service('baas_tenant.service'); if ($tenant_service->validateTenantAccess($user_id, $tenant_id)) { // 用户有权访问此租户 }

🔌 服务注册

baas_tenant.services.yml:

services: baas_tenant.manager: class: Drupal\baas_tenant\Service\TenantManager arguments: - '@database' - '@event_dispatcher' baas_tenant.service: class: Drupal\baas_tenant\Service\TenantService arguments: - '@database' - '@baas_tenant.manager'

📋 配置选项

暂无配置界面,通过代码配置。

🔗 相关文档

Last updated on