Laravel Auth多租户用户连接

时间:2016-04-20 14:36:37

标签: laravel-5.2 multi-tenant

我创建了一个包含多个数据库的Laravel 5.2 App。 在每个数据库中都有一个用户表。

登录信息如下: 用户@帐户和密码。

我创建了自己的身份验证方法。 auth方法工作正常,但我需要app / user Class中此用户的连接名称。

连接名称存储在用户行中。

这是我的登录信息:

public function postLogin(Request $request)
{
    //pass through validation rules
    $this->validate($request, ['username' => 'required', 'password' => 'required']);

    $usernameatacc = $request->get('username');
    $usernameatacc = explode('@', $usernameatacc);
    $username = $usernameatacc[0];
    $account = $usernameatacc[1];
    $password = $request->get('password');

    $acc_db = DB::table('accounts')->select('account_db')->where('accountname', $account)->first();


    $checkdb = DatabaseConnectorClass::checkDB($acc_db->account_db);
    if($checkdb){
        $test = DatabaseConnectorClass::createTenantConnection($acc_db->account_db);

    }
    DB::reconnect();


    $credentials = [
        'name' => trim($username),
        'password' => trim($password),
        'account_db' => trim($acc_db->account_db)
    ];

    $remember = $request->has('remember');

    //log in the user

    if (Auth::attempt($credentials, $remember)) {

        return redirect()->intended('home');
    }

    //show error if invalid data entered
    return redirect()->back()->withErrors('Login/Pass do not match')->withInput();
}

这很有效,他在正确的数据库中找到了合适的用户。现在我的问题是,如何将$ acc_db-> account_db传递给app / user Class?

在app / user类中我创建了一个函数:

    public function changeConnection($conn){

    DatabaseConnectorClass::createTenantConnection($conn);
    $this->connection = $conn;
}

当我在app / user中执行此操作时:

public function __construct()
{


    $this->changeConnection('test_91550_94');
}

这项工作,但登录后我需要动态...

0 个答案:

没有答案