»2017年1月27日CakePHP2.xでACL制御Webアプリ開発を行う上では必須の機能といっても過言ではないACL(アクセスコントロールリスト)での制御。一度やれと言われても覚えてられないほど作業工程が多い。基本的にはcookbookを見ながら対応。https://book.cakephp.org/2.0/ja/tutorials-and-examples/simple-acl-controlled-application/simple-acl-controlled-application.html今回は簡単なチャットシステムを構築する予定なので、以下のテーブルを作成。DATETIME);groups、posts、widgetsはACLで必要らしいテーブル。その他はチャットシステム用。次に各テーブルをそれぞれbake。allで各テーブルをガシガシbake。ここからはコツコツとカキカキ。UsersController.phpにログインするためのFunctionを記述。{}login.ctpを追加。$this->Form->end('Login');?>User.phpにパスワードのハッシュ化を追記。true;}サイト全体にACL化を行うためAppController.phpにAuth認証を追記。'add');}とりあえず、認証がかかると面倒なのでAppController.phpに全体的に認証なしの記述を追記(あとで削除)。{$this->Auth->allow();}ACL用テーブルを作るためにシェルを実行。いつも通りappフォルダにcdしてコマンドプロンプトで以下を実行。DbAclコマンドプロンプトで聞かれる質問は2つともYを答える。モデルとACLテーブルを紐づけるためにAclBehaviorを使用。(このへんはよくわからないのでチュートリアル通りにする)User.phpに以下を追記。$groupId));}}Group.phpに以下を追記。null;}次に実際の画面でグループを登録します。チュートリアルでは3つのグループになっていますが、今回のシステムではユーザーと管理者の2種類でいいのでadministratorsusersを登録します。http://localhost/xxxxx/groups/addにアクセスし登録。すると、以下のようなエラー画面が。実はエラーを吐き出しているものの、データの登録は無事終了しています。http://localhost/xxxxx/groups/で一覧を確認すると、確かに登録されています。フラッシュメッセージの表示エラーのようで、コントローラーでコンポーネント設定をすれば解消されるとのこと。array('Paginator');こう変えればエラーがでません。array('Paginator','Flash');私は各コントローラーごとに入れるのが面倒なので、AppController.phpに設定しました。bake時に対応してくれると楽なんですけどね。次に、またまたよくわかりませんがACOなるものの作成が必要です。ACO(アクセスコントロールオブジェクト)とはアクセスを制御される対象物のことのようです。チュートリアル通りにシェルを実行してコントローラーを作成。いつも通りコマンドプロンプトでaapにcdし以下を実行。controllers今日はここまで。(required)メールアドレス(required)URL。