-
ID:FuLRc1 さんの質問

fuelphpのsimpleAuthで、運営者、ユーザー、店舗など、対象となるDBテーブルの異なる、ログイン認証を実現する方法が知りたいです。
独自で認証ドライバを作成するのではなく、簡単な方法はありませんでしょうか?

みんなの回答 2 件

ID:7xk4FV さんの回答

以下の方法はいかがでしょうか。

app/classes/auth/login/simpleauth.php
--
<?php

class Auth_Login_SimpleAuth extends \Auth\Auth_Login_SimpleAuth
{
public static function _init()
{
}
}
--

app/bootstrap.php
--
Autoloader::add_classes(array(
// Add classes you want to override here
// Example: ’View’ => APPPATH.’classes/view.php’,
’Auth_Login_SimpleAuth’ => APPPATH.’classes/auth/login/simpleauth.php’,
));
--

基底コントローラ等で使用するテーブルをセットします。
--
Config::load(’simpleauth’, true, true, true);
if (条件1) {
Config::set(’simpleauth.table_name’, ’table1’);
} elseif (条件2) {
Config::set(’simpleauth.table_name’, ’table2’);
}
...
--

Config::load(’simpleauth’, true, true, true)は、もともとAuth_Login_SimpleAuthのinit()で行われています。

この処理は設定をリロードするので、テーブル名をセットした後に実行されると、設定したテーブル名は元に戻ります。

上記の方法はinit()を空処理にする拡張を行い、代わりに自分でConfig::loadを行った後、Config::setでテーブル名を差し替える。という方法です。

ID:FuLRc1

回答ありがとうございます。それだと、セッション名が重複してしまい、ログイン後にどのテーブルを参照すれば良いかの判断ができなくなりませんか?

ID:7xk4FV

先に Config::load(’session’, true); して Config::set(’session.xxx’, ’yyy’); してやるとどうでしょうか。認証テーブルの切り分けと同じ感じです。
この場合、Sessionクラスの拡張は必要ないと思います。(Config::loadの第三、第四引数の関係です。)

ID:tbSkRu

ありがとうございます。調べてみます。

ID:TgGFl8 さんの回答

ACLで分けるのはダメなの? プロフィールテーブルはそれぞれに作って user テーブルから $_has_one しといて分けて使えば。

ID:FuLRc1

回答ありがとうございます。すみません。ACLとは何ですか?

ID:TgGFl8

SimpleAuthのマニュアルを読めい。

ID:tbSkRu

ありがとうございます。調べてみます。

最終更新日:2013-07-23 (6,053 views)

関連するトピックス

ページ上部に戻る