[PHP-users 23913] PEAR::AuthでSmartyを使う方法
丸山 宏徳
kutsugi @ avis.ne.jp
2004年 12月 15日 (水) 10:43:53 JST
お世話様です、丸山です。
ズバリ%表題%の件、自分でもある程度工夫してみて、先が見えたところで、この
MLで「昔やったよ」という投稿を見つけてorzとなっているところですが(^^;、
「継承してdrawLoginをオーバーライド」という一文を読み、下記のように実装
してみました。こんな考え方でいいのでしょうか? 何か見逃している点があれ
ば御指摘ください。
>USHIRO Kaori様&ALL
……call_user_funcって、静的メソッドは呼べるけどインスタンスメソッドは呼
べないんですよねぇ……(T_T)>PEAR::Auth
出来ればロール制御もしたかったのでPEAR::LiveUserも検討したのですが、まぁ
日本語資料の少ないこと少ないこと、途中で断念しました(T_T)
現在、ストレージドライバに無理矢理ロール認証を乗っけるか、ログインとは分
けて別口でロール認証だけ実装してしまうかを検討中です。
------------------------------------
<?php
//for PHP5
//writen by H.Maruyama
require_once 'Auth/Auth.php';
class smarty_auth extends Auth
{
//Smartyオブジェクト
protected $SMARTY_OBJECT;
//Smarty用テンプレート名
protected $SMARTY_TEMPLATE;
//usernameのテンプレート側変数名
protected $LOGIN_USERNAME_ATTRIBUTE = "username";
//エラーメッセージ
protected $LOGIN_MESSAGE = array();
//エラーメッセージ領域のテンプレート側変数名
protected $LOGIN_MESSAGE_ATTRIBUTE = "message";
//コンストラクタ
function __construct( $storageDriver, //ストレージドライバ
$smartyObject = null, //Smartyオブジェクト(省略可)
$smartyTemplate = "", //Smartyテンプレート名
$options = '', //PEAR:Auth用オプション
$loginFunction = '', //PEAR:Auth用ログイン関数名
$showLogin = true) //ログインがオプションかどうかの定義(……ふつーTrueだよな(^^;))
{
//Smarty関連の設定
$this->SMARTY_OBJECT = $smartyObject;
$this->SMARTY_TEMPLATE = $smartyTemplate;
//ログインメッセージ関係の設定
$this->LOGIN_MESSAGE[AUTH_EXPIRED] = "設定されたセッション持続時間が経過ぎました。再度ログインしてください。";
$this->LOGIN_MESSAGE[AUTH_IDLED] = "設定された待機時間が経過しました。再度ログインしてください。";
$this->LOGIN_MESSAGE[AUTH_WRONG_LOGIN] = "ユーザ名もしくはパスワードの誤りです。";
//基底クラスのコンストラクタを呼び出す
$this->Auth($storageDriver, $options, $loginFunction, $showLogin);
}
//ログイン画面描写
function drawLogin($username = '')
{
//Smartyオブジェクトが設定されていれば、テンプレートからログイン画面を描写
if($this->SMARTY_OBJECT != null)
{
if($this->SMARTY_OBJECT instanceof Smarty)
{
$this->SMARTY_OBJECT->assign($this->LOGIN_MESSAGE_ATTRIBUTE, $this->LOGIN_MESSAGE[$this->status]);
$this->SMARTY_OBJECT->assign($this->LOGIN_USERNAME_ATTRIBUTE, $username);
$this->SMARTY_OBJECT->display($this->SMARTY_TEMPLATE);
return;
}
else
{
//Smartyオブジェクトでなければ、その旨メッセージを表示して通常のログイン画面を描写
echo '<i>Wrong SmartyObject! Draw default LoginForm.</i>'."\n";
}
}
//通常のログイン画面描写を呼び出す
parent::drawLogin($username);
}
}
?>
丸山 宏徳
E-Mail:kutsugi @ avis.ne.jp
PHP-users メーリングリストの案内