トップ  > メモ一覧  > カテゴリ「ユーザ権限・管理」の絞り込み結果 : 3件

3件中 1 〜 3 表示  1 

No.1981 sfDoctrineGuardPluginのREADME翻訳

sfDoctrineGuardPluginのREADME翻訳Add Star

翻訳を載せておきますが、微妙に内容が間違っている部分もあるっぽいです。今回はそういった部分は修正せずに単純に翻訳してあります。

翻訳ファイルはgithubに載せましたので、本家のライセンスにしたがってご自由に利用してください。

# sfGuardDoctrine plugin (for symfony 1.3) #

`sfDoctrineGuardPlugin` は、symfony の標準的なセキュリティ機能を使ってサイトの認
証と権限を管理できる symfony のプラグインです。

このプラグインにはカスタマイズ可能なモデル (ユーザーオブジェクト、グループオブジェ
クト、パーミッションオブジェクト)、モジュール (バックエンド、フロントエンド) があ
り、すぐに symfony アプリケーションをセキュアにできます。

## インストール ##

  * パッケージからプラグインをインストールします

        symfony plugin:install sfDoctrineGuardPlugin

  * または、Subversion からチェックアウトしてプラグインをインストールできます
  
        svn co http//svn.symfony-project.com/plugins/sfDoctrineGuardPlugin/trunk plugins/sfDoctrineGuardPlugin

  * 次に、`config/ProjectConfiguration.class.php` でプラグインを有効化します
  
        [php]
        class ProjectConfiguration extends sfProjectConfiguration
        {
          public function setup()
          {
            $this->enablePlugins(array(
              'sfDoctrinePlugin', 
              'sfDoctrineGuardPlugin',
              '...'
            ));
          }
        }

  * モデルを再構築します

        symfony doctrine:build-model
        symfony doctrine:build-sql

  * 次のコマンドでデータベースのテーブルを更新します (既存のデーブルを削除して、
    再作成します):

        symfony doctrine:insert-sql

    または、上記のすべてを次のコマンド 1 つで実行します

        symfony doctrine-build-all-reload frontend

    もしくは、`data/sql/plugins.sfGuardAuth.lib.model.schema.sql` に生成された
    SQL 文を使って新しいテーブルのみを作成できます。

  * デフォルトのフィクスチャーを読み込みます (この手順はオプションで、スーパー管
    理者ユーザーを作成します)

        mkdir data/fixtures/
        cp plugins/sfDoctrineGuardPlugin/data/fixtures/fixtures.yml.sample data/fixtures/sfGuard.yml

        symfony doctrine:data-load frontend # frontend は適切なアプリケーション名に置き換えてください

  * `settings.yml` で実際に使うモジュールを有効化します (オプション)
    * 管理用アプリケーション:  sfGuardUser、sfGuardGroup、sfGuardPermission を有
      効化できます

              all:
                .settings:
                  enabled_modules:      [default, sfGuardGroup, sfGuardUser, sfGuardPermission]

    * フロントエンドアプリケーション: sfGuardAuth を有効化できます

              all:
                .settings:
                  enabled_modules:      [default, sfGuardAuth]

  * キャッシュをクリアします

        symfony cc

  * オプションで、"Remember Me" フィルターを `filters.yml` のセキュリ
    ティフィルターの上に追加します:

        [yml]
        remember_me:
          class: sfGuardRememberMeFilter

        security: ~

### アプリケーションをセキュアにする ###

symfony アプリケーションをセキュアにするには:

  * `settings.yml` で `sfGuardAuth` モジュールを有効にします

        all:
          .settings:
            enabled_modules: [..., sfGuardAuth]

  * `settings.yml` で、デフォルトのログインモジュール、セキュアモジュールを変更
    します

        login_module:           sfGuardAuth
        login_action:           signin
        
        secure_module:          sfGuardAuth
        secure_action:          secure

  * `myUser.class.php` で親クラスを変更します

        class myUser extends sfGuardSecurityUser
        {
        }

  * `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 }

    各ルートの `url` パラメーターはカスタマイズできます。
    注意: `@homepage` という名前のルーティングは必須です。サインアウト時にこのル
          ートが使われます。

    これらのルートは、`sfGuardAuth` モジュールが有効になっている場合は、
    `routing.yml` に定義していなくても自動的に追加されます。
    ただし、`app.yml` 設定ファイルで次のように `sf_guard_plugin_routes_register`
    を false に設定すると、自動追加を無効にできます:

        all:
          sf_guard_plugin:
            routes_register: false

  * 個別のモジュール、またはアプリケーション全体の `security.yml` でセキュアにし
    ます

        default:
          is_secure: true

  * これで完了です。セキュアなページにアクセスしようとすると、ログインページへリ
    ダイレクトされます。
    デフォルトのフィクスチャーファイルをロードした場合は、ユーザー名 `admin`、パ
    スワード `admin` でログインしてみてください。

## ユーザー、パーミッション、グループの管理 ##

ユーザー、パーミッション、グループを管理できるように、`sfDoctrineGuardPlugin` で
はバックエンドアプリケーションに統合可能な 3 つのモジュールを用意しています。
これらのモジュールは symfony の Admin ジェネレーターで自動生成されたものです。

  * `settings.yml` でモジュールを有効化します

        all:
          .settings:
            enabled_modules: [..., sfGuardGroup, sfGuardPermission, sfGuardUser]

  * 次のようにデフォルトのルートでモジュールにアクセスできます:

    http://www.example.com/backend.php/sfGuardUser

## sfGuardAuth モジュールのテンプレートのカスタマイズ ##

デフォルトでは、`sfGuardAuth` モジュールはとてもシンプルな次の 2 つのテンプレー
トを使います:

  * `signinSuccess.php`
  * `secureSuccess.php`

これらのテンプレートをカスタマイズする場合は:

  * アプリケーション内に `sfGuardAuth` モジュールを作成します (`init-module` タ
    スクを使ってはいけません。直接 `sfGuardAuth` ディレクトリのみを作成してください)

  * `sfGuardAuth/templates` ディレクトリに、カスタマイズしたいテンプレートと同じ
    名前のテンプレートファイルを作成します

  * これで、デフォルトのテンプレートではなく、新しく作成したテンプレートファイル
    を使ってレンダリングされます

## `sfGuardAuth` モジュールのアクションのカスタマイズ ##

sfGuardAuth のメソッドをカスタマイズ、または追加したい場合は:

  * アプリケーションに `sfGuardAuth` モジュール用のディレクトリを作成します
    (ディレクトリのみを作成します)

  * モジュールの `actions` ディレクトリに `actions.class.php` ファイルを作成し、
    `BasesfGuardAuthActions` クラスを継承するようにします。
    (`BasesfGuardAuthActions` は symfony でオートロードされないので、インクルー
    ドしてください)

        <?php
    
        require_once(sfConfig::get('sf_plugins_dir').'/sfDoctrineGuardPlugin/modules/sfGuardAuth/lib/BasesfGuardAuthActions.class.php');
    
        class sfGuardAuthActions extends BasesfGuardAuthActions
        {
          public function executeNewAction()
          {
            return $this->renderText('This is a new sfGuardAuth action.');
          }
        }

## `sfGuardSecurityUser` クラス ##

このクラスは symfony の `sfBasicSecurityUser` クラスを継承し、symfony アプリケー
ションで `user` オブジェクトとして使われます。(インストールの手順で `myUser` の
基底クラスを変更しました)

このオブジェクトにアクセスするには、アクションでは `$this->getUser()`、テンプ
レートでは `$sf_user` を使います。

`sfGuardSecurityUser` にはいくつかの追加のメソッドがあります:

  * `signIn()` および `signOut()` メソッド
  * `getGuardUser()` メソッドは、`sfGuardUser` オブジェクトを返します
  * `sfGuardUser` オブジェクトに直接アクセスする一連のプロキシメソッド

たとえば、現在のユーザー名を取得するには次のようにします:

    $this->getUser()->getGuardUser()->getUsername()

    // プロキシメソッドを使うと
    $this->getUser()->getUsername()

## スーパー管理者フラグ ##

`sfDoctrineGuardPlugin` にはスーパー管理者という概念があります。スーパー管理者に
設定されているユーザーの場合は、すべての権限チェックがバイパスされます。

スーパー管理者フラグはウェブからは設定できず、データベースで直接変更するか、次の
タスクを使います:

    symfony guard:promote admin

## バリデーター ##

`sfDoctrineGuardPlugin` に用意されているバリデーター `sfGuardUserValidator` は、
自分のモジュールで使うことができます。

このバリデーターは、`sfGuardAuth` におけるユーザー名とパスワードの検証、およびユ
ーザーの自動サインインに使われています。

## 外部メソッドでユーザーのパスワードをチェックする ##

LDAP サーバーや .htaccess ファイルを使っているためデータベースにパスワードを保存
したくない場合や、別のテーブルにパスワードを保存したい場合、独自の呼び出し可能な
`checkPassword` (static メソッド、または関数) を用意して `app.yml` に設定します:

    all:
      sf_guard_plugin:
        check_password_callable: [MyLDAPClass, checkPassword]

symfony が `$this->getUser()->checkPassword()` メソッドを呼び出す時に、設
定したメソッドまたは関数を呼び出します。関数は 2 つの引数をとります。1 つ目はユ
ーザー名で、2 つ目はパスワードです。関数からは true または false を返すようにし
ます。関数のテンプレートは次のようになります:

    function checkLDAPPassword($username, $password)
    {
      $user = LDAP::getUser($username);
      if ($user->checkPassword($password))
      {
        return true;
      }
      else
      {
        return false;
      }
    }

## パスワード保存用のアルゴリズムを変更する ##

デフォルトでは、パスワードは `sha1()` ハッシュで保存されます。呼び出し可能なメソ
ッドまたは関数を `app.yml` することで、任意のアルゴリズムに変更できます:

    all:
      sf_guard_plugin:
        algorithm_callable: [MyCryptoClass, MyCryptoMethod]

または:

    all:
      sf_guard_plugin:
        algorithm_callable: md5

アルゴリズムはユーザーごとに保存されるため、後からアルゴリズムを変更する場合に既
存のユーザーのパスワードを再生成する必要はありません。

## "Remember Me" Cookie の名前や有効期限を変更する ##

デフォルトでは、"Remember Me" 機能により `sfRemember` という名前の
Cookie が 15 日間保存されます。これは `app.yml` で変更できます:

    all:
      sf_guard_plugin:
         remember_key_expiration_age:  2592000   # 秒単位で 30 日
         remember_cookie_name:         myAppRememberMe

## `sfGuardAuth` のリダイレクト処理をカスタマイズする ##

ユーザーがログインに成功した後、ユーザーのプロフィールページへリダイレクトしたり、
ログアウトサイトを定義できます。

`app.yml` でリダイレクトの設定を変更します:

    all:
      sf_guard_plugin:
        success_signin_url:      @my_route?param=value # デフォルトではリファラーが使われます
        success_signout_url:     module/action         # デフォルトではリファラーが使われます

引用元

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

No.1980 sfDoctrineGuardPluginの日本語用辞書ファイル

sfDoctrineGuardPluginの日本語用辞書ファイルAdd StarbrtRiver

sfDoctrineGuardPluginのユーザー向け画面(管理画面を除く)のリソースを日本語化するための辞書ファイルです。

次の内容を「sf_guard.ja.xml」という名前で、/plugins/sfDoctrineGuardPlugin/i18n ディレクトリに保存してください。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE xliff PUBLIC "-//XLIFF//DTD XLIFF//EN" "http://www.oasis-open.org/committees/xliff/documents/xliff.dtd" >
<xliff version="1.0">
  <file original="global" source-language="en" datatype="plaintext">
    <header/>
    <body>
      <trans-unit>
        <source>Username</source>
        <target>ユーザー名</target>
      </trans-unit>
      <trans-unit>
        <source>Password</source>
        <target>パスワード</target>
      </trans-unit>
      <trans-unit>
        <source>Username or E-Mail</source>
        <target>ユーザー名またはE メール</target>
      </trans-unit>
      <trans-unit>
        <source>First name</source>
        <target>姓</target>
      </trans-unit>
      <trans-unit>
        <source>Last name</source>
        <target>名</target>
      </trans-unit>
      <trans-unit>
        <source>Password again</source>
        <target>パスワード (確認)</target>
      </trans-unit>
      <trans-unit>
        <source>Required.</source>
        <target>必須</target>
      </trans-unit>
      <trans-unit>
        <source>Change</source>
        <target>変更</target>
      </trans-unit>
      <trans-unit>
        <source>Email address</source>
        <target>E メール</target>
      </trans-unit>
      <trans-unit>
        <source>Remember</source>
        <target>次回からの入力を省略</target>
      </trans-unit>
      <trans-unit>
        <source>Signin</source>
        <target>サインイン</target>
      </trans-unit>
      <trans-unit>
        <source>Register</source>
        <target>登録</target>
      </trans-unit>
      <trans-unit>
        <source>Request</source>
        <target>パスワードのリセット情報をリクエスト</target>
      </trans-unit>
      <trans-unit>
        <source>Hi %first_name%</source>
        <target>%first_name% さんのパスワードの設定</target>
      </trans-unit>
      <trans-unit>
        <source>Hello %name%</source>
        <target>%name% さんのパスワードの設定</target>
      </trans-unit>
      <trans-unit>
        <source>Forgot your password?</source>
        <target>パスワードをお忘れですか?</target>
      </trans-unit>
      <trans-unit>
        <source>Want to register?</source>
        <target>登録しますか?</target>
      </trans-unit>
      <trans-unit>
        <source>The two passwords must be the same.</source>
        <target>パスワードの入力が一致しません。</target>
      </trans-unit>
      <trans-unit>
        <source>Enter your new password in the form below.</source>
        <target>新しいパスワードを入力してください。</target>
      </trans-unit>
      <trans-unit>
        <source>You don't have the required permission to access this page.</source>
        <target>このページにアクセスする権限がありません。</target>
      </trans-unit>
      <trans-unit>
        <source>Do not worry, we can help you get back in to your account safely!</source>
        <target>アカウントに登録されている E メールアドレスを入力して送信してください。</target>
      </trans-unit>
      <trans-unit>
        <source>Fill out the form below to request an e-mail with information on how to reset your password.</source>
        <target>パスワードをリセットするための URL を E メールでお送りします。</target>
      </trans-unit>
    </body>
  </file>
</xliff>

また、この日本語リソースを有効にするために、次の手順が必要です。

  • アプリケーションi18nを有効にします。
    • settings.ymlにて、「i18n: true」「default_culture: ja」の設定を追加します。
    • この後symfony ccします。
    • デフォルトカルチャーが有効にならない場合は、ブラウザCookie を削除してください。
  • sf_guard辞書が使われるように以下のファイルに setup() メソッドを追加します。
    • /plugins/sfDoctrineGuardPlugin/lib/form/doctrine 配下の
      • sfGuardChangeUserPasswordForm.class
      • sfGuardFormSignin.class
      • sfGuardRegisterForm.class
    • /plugins/sfDoctrineGuardPlugin/lib/form 配下の
      • sfGuardRequestForgotPasswordForm.class
<?php
  public function setup()
  {
    parent::setup();

    $this->widgetSchema->getFormFormatter()->setTranslationCatalogue('sf_guard');
  }

プラグイン内のコードを直接変更するのはややためらわれますが、プラグイン内にのみ影響する処理なのであえてここで変更しています。

※上記カタログの指定は、setup()メソッドではなくてconfigure()メソッドでもOKです。

引用元

更新:2010/01/10 13:50 カテゴリ: 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  > ユーザ権限・管理 ▲トップ
3件中 1 〜 3 表示  1 

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