yiiのアクセス制御を学ぶ yii-rightsを導入するの巻
前エントリのロール管理はこれでもロール管理かという代物でした。今回はyii-rightsを使いGUIで管理できるようにします。
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 が追加されている。