簡體   English   中英

如何在Laravel 5.2中使用HipsterJazzbo / Landlord包 - 單個數據庫多租戶?

[英]How can I use HipsterJazzbo/Landlord package -single database multi-tenancy- in Laravel 5.2?

我正在為Laravel 5.2+使用https://github.com/HipsterJazzbo/Landlord單一數據庫多租戶解決方案。 我有一個公司表,所有其他表都有一個company_id列。

我不確定如何在全局中間件,auth系統或基本控制器的構造函數中實現調用Landlord :: addTenant($ tenantColumn,$ tenantId) ......我很困惑......

我怎么做?

參數$ tenantColumn是否等效於每個表的company_id列?

參數$ tenantId是否指的是company_id列中包含的每個公司的ID?

謝謝!

全局中間件不是好地方,因為您無權訪問經過身份驗證的用戶。 解決方案是創建路由中間件,例如:

<?php

namespace App\Http\Middleware;

use Closure;
use HipsterJazzbo\Landlord\Facades\Landlord;
use Illuminate\Support\Facades\Auth;

class LimitToCurrentCompany
{
    public function handle($request, Closure $next)
    {
        if (Auth::check()) {
            $tenant = Auth::user()->currentCompany;
            Landlord::addTenant($tenant);
        }

        return $next($request);
    }
}

將它添加到app / Http / Kernel.php中的$ routeMiddleware數組:

protected $routeMiddleware = [
    […]
    'limitToCurrentCompany' => \App\Http\Middleware\LimitToCurrentCompany::class,
];

然后在你的路線文件中:

Route::group(['middleware' => 'limitToCurrentCompany'], function () {
    // your routes
});

是的,就像評論中所說的那樣,$ tenantColumn是company_id,而$ tenantId是公司的id。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM