CakePHP 2.0 RC3でブログのサンプル、ACLを設定した後に、各コントローラーでアクセス権限をViewのテンプレートファイル内(View/Posts/index.ctpなど)でチェックするためのコードメモです。

ブログのサンプル、ACLについてはCakePHPマニュアルページの中にあるチュートリアルを参考に設定してみました。(ACLチュートリアルの説明は難解ですね。かなり苦戦しました・・・。)
CakePHPブログチュートリアル(英語)
ACL を制御するシンプルなアプリケーション(英語)

チュートリアルで作成したブログのコントローラ「PostsController.php」のbeforeFilter()の中に下記のコードを記述することで、閲覧しているユーザーのアクセス権限をチェックし、「create」「read」「update」「delete」の各アクションの権限の有無を配列にして、Viewへ渡すデータにセットするようにしています。

1
2
3
4
5
6
7
8
function beforeFilter() {
	$acl = array();
	$action = array('create', 'read', 'update', 'delete');
	foreach ($action as $value) {
		$acl[$value] = $this->Acl->check($this->Auth->user('username'), 'posts', $value);
	}
	$this->set('acl', $acl);
}

Viewのテンプレート上では次のように利用できます。

1
2
3
if ($acl['create']) {
	echo $this->Html->link('Add Post', array('action' => 'add'));
}

ユーザーの権限によって、編集や削除のリンクを、表示/非表示にしたい場合などに使えるかなと思います。
他にもっと良い方法があるかもしれませんが・・・。