cidekar/laravel-tenantmagic

Laravel Passport的多租户包。

v1.0.1 2022-05-26 19:00 UTC

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_landlord
  • laravel_tenantmagic_tenant_1
  • laravel_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。保留所有权利。

Apache License 2.0