[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 メーリングリストの案内

AltStyle によって変換されたページ (->オリジナル) /