yiiのアクセス制御を学ぶ yii-rightsを導入するの巻

前エントリのロール管理はこれでもロール管理かという代物でした。今回はyii-rightsを使いGUIで管理できるようにします。

f:id:tjtjtjofthedead:20120328071108p:image

blogデモにyii-rightsを組み込んだソースやデモも用意されている。手っ取り早く確認したいならはここから。

導入

  • とりあえずドキュメント参照
  • ロール関連のテーブルをドロップ (DROP TABLE `authassignment`, `authitem`, `authitemchild`;)
  • ダウンロードして protected/modules/rights へ展開
  • main.php 修正 ドキュメント参照
  • adminロールをつけたいユーザーでログイン
  • http://path/to/index.php/rights へアクセスしインストールする( rights/components/RInstaller.php参照)
  • main.php 'install'=true を削除
  • adminロールを持つユーザーでロール管理する

前エントリの権限を回復したい場合、http://path/to/index.php/site/loadroles へアクセスする。これで簡易ロール管理は不要になる。あるいは、yii-rightsインストール手順をせずにrightsテーブル(rights/data/schema.sql参照)をcreateする。デフォルトでは管理者権限はadminとなっているので異なる場合は注意。

yii-rights管理ページにはdescriptionが表示されるが、前エントリのロールに説明を設定していなかったので加えておく。
protected/coltrollers/SiteController.php

        $role=$auth->createRole('reader', 'reader');
        ...                               ↑↑↑↑
        $role=$auth->createRole('author', 'author');
        ...                               ↑↑↑↑
        $role=$auth->createRole('editor', 'editor');
        ...                               ↑↑↑↑
        $role=$auth->createRole('admin', 'admin');
        ...                               ↑↑↑↑

yii-rightsのクラス

書きかけ。後で書き加えたい。

RDbAuthManager

CDbAuthManager を継承している。rightsテーブル weight カラムを使っている

RWebUser

isSuperuser が追加されている。

参考

感謝。

ようやくyii-rightsに辿りついた。CakePHPaclと同じレベルのことをしようとするとacl - yii extensionsを導入することになるかな。