sanicode / elastik-tenancy
基于 Laravel Jetstream 的入门级应用程序,支持多租户平台。
Requires
- php: ^8.2
- laravel/framework: ^11.9
- laravel/jetstream: ^5.1
- laravel/sanctum: ^4.0
- laravel/tinker: ^2.9
- livewire/livewire: ^3.0
- predis/predis: ^2.2
- stancl/tenancy: ^3.8
Requires (Dev)
- fakerphp/faker: ^1.23
- laravel/pint: ^1.13
- laravel/sail: ^1.26
- mockery/mockery: ^1.6
- nunomaduro/collision: ^8.0
- phpunit/phpunit: ^11.0.1
README
关于 Elastik Tenancy
Laravel Jetstream 是一个强大的 Laravel 应用程序脚手架,提供用户认证、注册、电子邮件验证、双因素认证、会话管理、通过 Laravel Sanctum 提供的 API 支持,以及可选的团队管理等功能。与 Elastik Tenancy 结合使用,并且使用 TenancyForLaravel(由 Stancl 开发的提供 Laravel 应用程序多租户支持的包),可以构建一个功能强大的多租户 SaaS 应用程序,同时保持租户数据和配置的隔离。
概览
-
Laravel Jetstream:提供用户认证、注册、电子邮件验证、双因素认证、会话管理和团队管理等功能的基本脚手架。
-
TenancyForLaravel:一个灵活的多租户包,支持租户识别、数据库分离和租户特定配置。
结合 Jetstream 和 TenancyForLaravel 的好处
可扩展性:组合设置允许您有效地扩展应用程序以支持多个租户。功能丰富:您可以获得两个世界的最佳结合——Jetstream 的用户管理功能和 TenancyForLaravel 的强大多租户支持。
灵活性:该架构可以适应各种用例,从小型 SaaS 应用程序到大型企业解决方案。
将多租户与 Laravel Jetstream 集成
租户识别
-
子域名:每个租户可以通过唯一的子域名(例如,tenant1.yourapp.com)来识别。可以使用中间件来检测子域名并加载相应的租户配置。
-
域名:每个租户都可以有自己的域名(例如,tenant1.com),应用程序将根据域名将请求路由到正确的租户。
-
查询字符串或路径:租户可以通过 URL 路径或查询字符串中的唯一标识符(例如,yourapp.com/tenant1)来识别。
用户认证
-
Jetstream 的用户认证系统可以通过将用户与特定租户关联来扩展以支持多租户。例如,每个用户可以在数据库中有一个 tenant_id 字段,将其链接到适当的租户。
-
可以调整认证逻辑,以确保用户只能登录到其各自的租户。
数据库分离
- 根据您的多租户方法,您可能使用具有 tenant_id 列的共享数据库来分离数据或使用多个数据库,其中每个租户都有自己的数据库。
- Laravel 的数据库连接可以根据租户动态配置,确保每个请求使用正确的数据库。
中间件
- 可以使用自定义中间件来识别当前租户并相应地配置应用程序。这包括设置数据库连接、加载租户特定配置和确保认证用户属于正确的租户。
路由和控制器
- 可以根据租户对路由进行分组,允许在应用程序中实现特定于租户的功能。控制器可以调整以确保它们在当前租户的上下文中处理数据。
Elastik Tenancy 特性
- Laravel Jetstream:提供认证、注册、电子邮件验证、双因素认证、会话管理、API 支持、可选的团队管理等。
- 多租户:支持通过子域名、域名或基于路径的路由来识别租户。
- 租户数据隔离:确保每个租户的数据安全分离,可以使用共享数据库加租户特定标识符,或者使用多个数据库。
- 动态租户配置:根据当前租户的环境自动配置应用程序。
- 可伸缩性:构建用于高效处理多个租户同时保持性能。
安装
要开始使用此项目,请按照以下步骤操作
1. 克隆仓库
git clone git@github.com:sanicode/elastik-tenancy.git
cd elastik-tenancy
2. 使用Composer的替代安装
composer create-project sanicode/elastik-tenancy
cd elastik-tenancy
3. 安装依赖项
composer update
4. 接下来,请确保编译您的资产
npm install && npm run build
5. 设置环境变量
将 .env.example 文件复制到 .env,并配置必要的环境变量,包括您的数据库连接和租户识别方法。
cp .env.example .env
6. 生成应用程序密钥
php artisan key:generate
重要
如果您使用了Laravel安装程序并将 sqlite
作为您的数据库,迁移可能已经运行。在这种情况下,您就可以开始了 🎉 另一方面,您需要连接数据库并运行以下命令 👇
7. 运行数据库迁移
php artisan migrate
8. 配置租户
如果您正在使用子域名或多个数据库,请确保您的服务器已正确配置以处理租户路由。这可能涉及设置通配符子域名或配置额外的数据库。
9. 提供应用程序服务
php artisan serve
10. 在浏览器中打开您的第一个页面
用法
在设置项目后,您可以在注册表单中的域名/子域名字段中注册新租户,并以用户身份登录。每个用户域名/子域名将关联到特定的租户,所有操作都将限定在租户范围内。对于基本用法,您可以在输入子域名名称时无需添加点[.]作为后缀,例如:tenant1,tenant2等。
示例路由
- https://tenant1.yourapp.com/dashboard - 租户1的控制台
- https://tenant2.yourapp.com/dashboard - 租户2的控制台
访问您的应用程序主页,您应该可以开始了 🤘
贡献
欢迎贡献!请随时提交拉取请求或打开一个问题。
许可
Elastik Tenancy 是开源软件,使用 MIT 许可证许可。