質問: ### 前提・実現したいこと 車両管理システムの事由マスタ画面を作っています。 営業所マスタのファイルを元に、コピーしてファイル名と中身を変更しています。 変更したファイルは、コントローラーとビューとdefault.ctpとindex.cssとindex.jsの5つです。 全てのファイルのファイル名と中身を事由マスタ画面用に変更した後にエラーが起こりました。 ### 発生している問題・エラーメッセージ ``` 警告(512):DbAcl :: check()-権限チェックでACOノードの検索に失敗しました。 Aco:controllers / MtWorkReasons / index [ CORE \ Cake \ Model \ Permission.php、行103 ] と画面に表示されていて コンソールでは A cookie associated with a cross-site resource at http://google.com/ was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at https://www.chromestatus.com/feature/5088147346030592 and https://www.chromestatus.com/feature/5633521622188032. MtWorkReasons:1 A cookie associated with a cross-site resource at https://google.com/ was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at https://www.chromestatus.com/feature/5088147346030592 and https://www.chromestatus.com/feature/5633521622188032. MtWorkReasons:1 A cookie associated with a resource at http://google.com/ was set with `SameSite=None` but without `Secure`. A future release of Chrome will only deliver cookies marked `SameSite=None` if they are also marked `Secure`. You can review cookies in developer tools under Application>Storage>Cookies and see more details at https://www.chromestatus.com/feature/5633521622188032. と表示されています。 ``` ### 該当のソースコード ``` 載せようとしましたが、文字数オーバーでした。 ですので、もし必要でしたらコメントに投稿します。 ``` ### 試したこと 変更した名前が間違っていないかの確認したが間違いは無さそうだった、エラー文を検索してみたがわからず エラー文を翻訳したが意味が分からず ### 補足情報(FW/ツールのバージョンなど) 初心者のため、わかる範囲で情報を載せました。 もし、解決の過程で必要な情報がありましたら、おいえていただけると幸いです。 コメントと補足情報に追加いたします。
回答: はじめに、アクセス権限リスト(ACL)は理解するのが難しい、かつアプリケーションにより実装や運用方法が異なるため、**前任者に聞くのが一番よい解決方法です。** 一般的な構成による構築での対処方法なら回答できますが、そのアプリケーションでの正解とは限りませんし、正答でない場合、セキュリティに穴が空くことになります。 以上を踏まえた上で、エラーの解説と参考すべきCakePHPのドキュメントを示しておきます。 > > DbAcl :: check()-権限チェックでACOノードの検索に失敗しました。 > > Aco:controllers / MtWorkReasons / index [ CORE \ Cake \ Model \ Permission.php、行103 ] > > > このエラーメッセージから、ACLはデータベースによるコントロール(DbAcl)を行っていること、Access Control Object (ACO) に `controllers/MtWorkReasons/index` が存在していないためのエラーであることがわかります。 CakePHP 2.xにおけるACLの仕組みは以下のドキュメントを読んでください * ACLを制御するシンプルなアプリケーション - 2.x * ACL を制御するシンプルなアプリケーション - パート2 - 2.x * アクセス制御リスト - 2.x * ACLShell - 2.x 必要な作業は、ACLのAcoとして、`controllers/MtWorkReasons/index` を登録すること、さらに、そのAcoに対してログインユーザー(Aro)がアクセスできるよう許可を定義することです。 ACLの操作は、ACLShellを通じてコンソールで行うのが基本ですが、AclExtraなどの便利なプラグインもあります。 設定方法については、アプリケーションごとにルールがあるかと思いますのでそちらに従いましょう。