symfony1.4.9で自作認証機能

2011年3月19日 オフ 投稿者: KYO
Table of Contents

Symfony1.4.9で、sfGuardPluginを利用していたら、propel:build-modelが一切できなくなった。propel:build-sqlも同様。duplicateエラーを吐く。
そこで、簡単に自作してみた。

構成は、単純。

バックエンドへのアクセスを全て認証経由にするようにしただけ。

あくまでメモなので、全てを行って動作するかどうかは保証出来ません。。

 

$ symfony generate:module backend admin2

$ vim apps/backend/modules/admin2/templates/indexSuccess.php

[html]
login
ログインID:
パスワード:

[/html]

$ vim apps/backend/modules/admin2/templates/secureSuccess.php

[html]
Login: getAttribute(‘username’) ?>

Last Login: getAttribute(‘last_logined_at’) ?>

[/html]

$ vim apps/backend/modules/admin2/actions/actions.class.php

[php]
getParameter(‘uid’);
$password = $request->getParameter(‘password’);
$c = new Criteria();
$c->add(AuthPeer::UID, $uid);
$auth = AuthPeer::doSelectOne($c);
if ($auth && $auth->getValid()) {
if ($password == $auth->getPassword()) {
$this->getUser()->setAuthenticated(true);
$this->getUser()->addCredential(‘admin’);
$this->getUser()->setAttribute(‘uid’, $auth->getUid());
$this->getUser()->setAttribute(‘username’, $auth->getUserName());
$this->getUser()->setAttribute(‘last_logined_at’, $auth->getLastLoginedAt());
$auth->setLastLoginedAt(date(‘Y/m/d H:i:s’, time()));
$auth->save();
return $this->redirect($this->getRequestParameter(‘referer’, ‘@secure’));
}
}
return $this->redirect(‘enter_password’);
}
public function executeLogout(sfWebRequest $request)
{
$this->getUser()->setAuthenticated(false);
$this->getUser()->clearCredentials();
return $this->redirect(‘enter_password’);
}
public function executeIndex(sfWebRequest $request)
{
}
public function executeSecure(sfWebRequest $request)
{
}
}
[/php]

あとは、各設定ファイルをごにょごにょやっていく

 

[shell]
$ vim apps/backend/config/security.yml
default:

is_secure: on

.actions:

login_module:   admin2
login_action:   index
[/shell]

 

あとは、バックエンドモジュール全てにsecuriry.ymlを作って、templates/layout.phpを変更、ルーティングを設定する程度。

 

案外あっさり完了。