cidekar / laravel-tenantmagic
Laravel Passport的多租户包。
Requires
- php: ^7.4|^8.0
- laravel/passport: ^9.3|^10.0
- spatie/laravel-multitenancy: ^2.3.3
Requires (Dev)
- laravel/legacy-factories: ^1.0.4
- orchestra/testbench: ^7.1.0
This package is auto-updated.
Last update: 2024-09-27 00:03:15 UTC
README
简介
Laravel Passport让您的API的密码授权客户端认证变得非常简单。Laravel 多租户让Laravel应用程序在几分钟内具备租户感知能力——感觉像作弊。Tenantmagic提供了一种让您的Passport密码授权客户端感知租户的方法。在阅读此文档的其余部分之前,请花时间阅读Laravel 多租户和Laravel Passport,如果您不熟悉。Tenantmagic建立在Laravel Passport和Laravel 多租户之上。
动机
多租户通常需要用户提供他们的认证凭据和子域名以获取令牌。Tenantmagic消除了在登录多租户应用程序时需要子域的需求;提供用户名和密码,该软件包将完成剩余的操作!
安装
此软件包可以使用Composer安装
$ composer require "cidekar/tenantmagic:^1.0"
发布配置
php artisan vendor:publish --provider="Cidekar\Tenantmagic\TenantmagicServiceProvider" --tag="config"
配置将发布到config/tenantmagic.php
用户模型必须使用UsesPassportModelMagic
use Cidekar\Tenantmagic\Models\Concerns\UsesPassportModelMagic; class User extends Authenticatable { use UsesPassportModelMagic; ...
请注意,此软件包假设授权客户端存储在房东数据库中。用户存储在租户数据库中。
将TenantmagicDomainTenantFinder添加到多租户配置中
return [ /* * This class is responsible for determining which tenant should be current * for the given request. * * This class should extend `Spatie\Multitenancy\TenantFinder\TenantFinder` * */ 'tenant_finder' => TenantmagicDomainTenantFinder::class, ...
将TenantmagicPassportTask添加到switch_tenant_tasks数组中
return [ /* * These tasks will be performed when switching tenants. * * A valid task is any class that implements Spatie\Multitenancy\Tasks\SwitchTenantTask */ 'switch_tenant_tasks' => [ SwitchTenantDatabaseTask::class, TenantmagicPassportTask::class ], ...
配置您的租户和房东数据库连接
return [ /* * The connection name to reach the tenant database. * * Set to `null` to use the default connection. */ 'tenant_database_connection_name' => 'tenant', /* * The connection name to reach the landlord database */ 'landlord_database_connection_name' => 'landlord', ...
X-Magictenant头
默认情况下,Tenantmagic在响应成功的授权请求时会返回x-magictenant头。要揭示域和租户名称,需要解码x-magictenant头值(即非扩展表示法,使用“引号字符串”)。
$response = $this->post($route); json_decode($response->headers->get('x-magictenant')); array:2 [ 0 => { "domain": "foo.com" "name": "Foo Dot Com" } 1 => { "domain": "bar.net" "name": "Bar Dot Net" }];
要求
测试
要开始,创建以下MySql数据库
laravel_tenantmagic_landlordlaravel_tenantmagic_tenant_1laravel_tenantmagic_tenant_2
现在,您可以运行软件包的测试
$ composer test # Runtime: PHP 7.4.0 # Configuration: /var/www/packages/cidekar/laravel-tenantmagic/phpunit.xml # Warning: Your XML configuration validates against a deprecated schema. # Suggestion: Migrate your XML configuration using "--migrate-configuration"! # ...
安全
请不要公开披露与安全相关的问题,请通过电子邮件packages@cidekar.com联系。安全问题将得到迅速解决。
许可证
版权所有2020 Cidekar, LLC。保留所有权利。
