shonen/genesis

使用passport和graphql为多租户项目的基本设置

dev-master 2020-10-15 21:20 UTC

This package is auto-updated.

Last update: 2024-09-16 06:13:19 UTC


README

使用passport和graphql为多租户项目的基本设置

依赖

  • laravel/passport : "^9.3"
  • laravel/framework: "^7.0",
  • laravel/ui: "^2.1",
  • mll-lab/laravel-graphql-playground: "^2.3",
  • nuwave/lighthouse: "^4.16",
  • stancl/tenancy: "^3.1"

安装

composer require shonen/genesis

快速入门指南

要发布所有文件,请运行以下命令

php artisan genesis:public

然后,您需要在您的 config/app.php 文件中包含提供者

'providers' => [
    ...,
    App\Providers\SchemaLighthouseServiceProvider::class,
    App\Providers\TenancyServiceProvider::class,
]

之后,您需要在 app/Http/Kernel.php 文件中注册passport的通用路由

protected $middlewareGroups = [
        ...
        ,
        'universal' => [],
    ];

此外,您还需要在 config/auth.php 文件中添加您的守卫

    'guards' => [
        ...
        'api' => [  //central
            'driver' => 'passport',
            'provider' => 'users',
            'hash' => false,
        ],
        'tenant' => [
            'driver' => 'passport',
            'provider' => 'tenantUsers',
        ],
    ],

    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\Models\Central\User::class,
        ],
        'tenantUsers' => [
            'driver' => 'eloquent',
            'model' => App\Models\Tenant\User::class,
        ]
    ],

进一步地,您需要在 app/Providers/AppServiceProvider 文件中添加

    use App\Models\Central\Tenant;
    use App\Observers\Central\TenantObserver;
    use Laravel\Passport\Passport;
    use Laravel\Passport\Console\ClientCommand;
    use Laravel\Passport\Console\InstallCommand;
    use Laravel\Passport\Console\KeysCommand;
    ...
    public function register()
    {
        Passport::ignoreMigrations();
        Passport::routes(null, ['middleware' => 'universal']);
    }

    public function boot()
    {
        Tenant::observe(TenantObserver::class);

        $this->commands([
            InstallCommand::class,
            ClientCommand::class,
            KeysCommand::class,
        ]);
    }

最后,您需要在 config.tenancy.php 文件中更改您的中心域名

    'central_domains' => [
        'test', // your central domain here...
    ],