fuelphpのsimpleAuthで、運営者、ユーザー、店舗など、対象となるDBテーブルの異なる、ログイン認証を実現する方法が知りたいです。独自で認証ドライバを作成するのではなく、簡単な方法はありませんでしょうか?
以下の方法はいかがでしょうか。
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でテーブル名を差し替える。という方法です。
回答ありがとうございます。それだと、セッション名が重複してしまい、ログイン後にどのテーブルを参照すれば良いかの判断ができなくなりませんか?
先に Config::load(’session’, true); して Config::set(’session.xxx’, ’yyy’); してやるとどうでしょうか。認証テーブルの切り分けと同じ感じです。この場合、Sessionクラスの拡張は必要ないと思います。(Config::loadの第三、第四引数の関係です。)
ありがとうございます。調べてみます。
ACLで分けるのはダメなの? プロフィールテーブルはそれぞれに作って user テーブルから $_has_one しといて分けて使えば。
回答ありがとうございます。すみません。ACLとは何ですか?
SimpleAuthのマニュアルを読めい。
みんなの回答 2 件
以下の方法はいかがでしょうか。
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でテーブル名を差し替える。という方法です。
ACLで分けるのはダメなの? プロフィールテーブルはそれぞれに作って user テーブルから $_has_one しといて分けて使えば。
関連するトピックス