Symfony1.4で認証機能をつける

Doctrineを利用している場合。

# symfony generate:project frontend
# symfony generate:app myApp
# symfony plugin:install sfDoctrineGuardPlugin
# symfony doctrine:build --all --and-load --no-confirmation
# symfony cc

apps/myApp/config/security.yml

default:
  is_secure: true

に変更。
http://www.symfony-project.org/reference/1_4/en/08-Security

apps/myApp/lib/myUser.class.php
sfBasicSecurityUserからsfGuardSecurityUserに変更

class myUser extends sfGuardSecurityUser
{
}

setting.ymlに追加
# apps/myApp/config/settings.yml

    enabled_modules: [default, sfGuardAuth]
  .actions:
    login_module:    sfGuardAuth
    login_action:    signin

sfGuardAuth(ログイン機能), sfGuardUser(ユーザ管理), sfGuardGroup(グループ管理), sfGuardPermission(権限管理) のモジュールの種類があります。frontend/backendに合わせて利用します。


テストユーザの追加

# symfony guard:create-user user@localhost.com username password
# symfony guard:promote username

これで基本的なログイン構造は完成です。

apps/myApp/templates/layout.phpなどで
ログアウトリンクを追加します。

<?php echo link_to('Logout', 'sf_guard_signout') ?>

apps/myApp/config/routing.ymlを編集することでログイン・ログアウトのリンクを設定変更できます。

sf_guard_signin:
  url:   /login
  param: { module: sfGuardAuth, action: signin }

sf_guard_signout:
  url:   /logout
  param: { module: sfGuardAuth, action: signout }

sf_guard_password:
  url:   /request_password
  param: { module: sfGuardAuth, action: password }

参考:
http://www.symfony-project.org/plugins/sfDoctrineGuardPlugin
http://www.symfony-project.org/jobeet/1_4/Doctrine/ja/13