トップ  > symfony  > ユーザ権限・管理  > 記事

No.1979 sfDoctrineGuardPluginについてのメモ

sfDoctrineGuardPluginについてのメモ

symfonyには次のようなサイトのユーザー管理機能をまとめたプラグインがあります

それが「sfDoctrineGuardPlugin」です。

プラグインに付属しているREADMEの翻訳も合わせて参照してください。


sfDoctrineGuardPlugin で使えるコマンド(タスク)一覧

guard
  :add-group                   ユーザーにグループを追加する
  :add-permission              ユーザーにパーミッションを追加する
  :change-password             ユーザーのパスワードを変更する
  :create-user                 ユーザーを作成する
  :promote                     ユーザーをスーパー管理者に設定する

symfony guard:add-group [--application[="..."]] [--env="..."] username group
symfony guard:add-permission [--application[="..."]] [--env="..."] username permission
symfony guard:change-password [--application[="..."]] [--env="..."] username password
symfony guard:create-user [--is-super-admin] [--application[="..."]] [--env="..."] email_address username password [first_name] [last_name]
symfony guard:promote [--application[="..."]] [--env="..."] username

sfDoctrineGuardPlugin のデフォルト URL 一覧

sfDoctrineGuardPlugin はルーティングを内部で自前で追加します。これは次のような URL になっています。

  • サインイン(ログイン) /guard/login
  • サインアウト(ログアウト) /guard/logout
  • ユーザー登録 /guard/register
  • パスワード再発行 /guard/forgot_password
  • ユーザー管理 /guard/users
  • グループ管理 /guard/groups
  • パーミッション管理 /guard/permission

なお、このルーティングの自動登録は、プラグインコンフィギュレーションで ある sfDoctrineGuardPluginConfiguration クラスの initialize() 内で、routing.load_configuration イベントを監視して、実際の処理は sfDoctrineGuardPlugin/lib/routing/sfGuardRouting.class.php 内で行われています。

URLカスタマイズする場合は、README にあるように routing.yml に手作業で各ルーティングを追加することもできますが、上記ファイルのコードを参考にして、自動で自前 URL のルーティングを追加するようにもできます。

※パフォーマンス的には、routing.yml に書いた方が良いと思われます。


エンドユーザー用の画面のリソースを翻訳する

プラグインテンプレートi18n対応しているので、翻訳ファイルを用意することで日本語で表示できます。

の最後の方に手順を書いておきました。


ログイン状態を Cookie に記憶

ログイン画面で Cookie への記憶にチェックできますが、この機能を有効にするには sfGuardRememberMeFilter フィルターを有効にしておく必要があります。

README の手順では「オプション」と書いてあるので注意が必要です。

また、sfGuardRememberMeFilter のコードはそのままではエラーになります。

以下の 2 点を修正する必要があるようです。

<?php
-            ->innerJoin('r.sfGuardUser u')
+            ->innerJoin('r.User u')
<?php
-       $this->context->getUser()->signIn($q->fetchOne()->sfGuardUser);
+       $this->context->getUser()->signIn($q->fetchOne()->User);

スキーマでリレーションのエイリアスを「User」と定義しているためです。


パスワードの再発行時のメール

パスワードの再発行を行う場合、再発行用の URL の通知と、変更後のパスワードの通知の 2 つのメールが送信されます。

このうち、変更後のパスワード通知メールにはパスワードが平文で記載されていますので、変更した方がよいかと思います。

メールの本文を変更する場合は、該当するテンプレートファイルをカスタマイズします。手順はREADMEに記載されていますので、参照してください。

引用元

更新:2010/01/10 13:48 カテゴリ: symfony  > ユーザ権限・管理 ▲トップ

FuelPHP

Mac

フロントエンド開発

web開発

プロマネ

マネタイズ

プレゼン

webサービス運用

webサービス

Linux

サーバ管理

MySQL

ソース・開発

svn・git

PHP

HTML・CSS

JavaScript

ツール, ライブラリ

ビジネス

テンプレート

負荷・チューニング

Windows

メール

メール・手紙文例

CodeIgniter

オブジェクト指向

UI・フロントエンド

cloud

マークアップ・テキスト

Flash

デザイン

DBその他

Ruby

PostgreSQL

ユーティリティ・ソフト

Firefox

ハードウェア

Google

symfony

OpenPNE全般

OpenPNE2

Hack(賢コツ)

OpenPNE3

リンク

個人開発

その他

未確認

KVS

ubuntu

Android

負荷試験

オープンソース

社会

便利ツール

マネー

Twig

食品宅配

WEB設計

オーディオ

一般常識

アプリ開発

Python

サイトマップ

うずら技術ブログ

たませんSNS

rss2.0