スパイスラボ神部です。
前々から、CakePHP に Web サイトの管理画面を作るモードに使っていそうな関数を見かけることが多かったので、どこかにそんな資料があるだろうな、とは思っていたのですが、遂につき当たりました!
-CakePHP 管理画面を作成する方法 | Sun Limited Mt.
少しこれについて読み解いてみたいと思います。
あと、上記情報は少し古いので、こちらもあわせて。
-プリフィックスルーティング(Prefix Routing) :: Routesの設定 :: 環境設定 :: CakePHPによる開発 :: マニュアル :: 1.2 Collection :: The Cookbook
admin モードについて
まず、キモはここですね。
define('CAKE_ADMIN', 'admin');
これで http://www.example.com/admin/controller/action という URL でアクセスできるようになります。
※といってもこれは CakePHP 1.1 の話で、1.2 では下記のようになっているようです。
Configure::write('Routing.admin', 'admin');
そうだったのか・・・!
これまでは実は管理者画面を自作していました。しかし、CakePHP はフレームワークであるが故に、その URL が予測しやすくなってしまいます。なので、ユーザには追加や編集、削除を行わせたくないモデルの管理には非常に悩んでいました。まず不要な admin ユーザを格納するデータベースを作り、そのユーザの認証がとれているときだけそのモデルに Admin モデルのメソッドから編集するという実に遠回りな方法をとっていました。
CGM的なサイトならともかく、Web サイトの CMS などを作るには、いまいち向かないし、CGM的サイトでも phpmyadmin などを使って管理するものだとばかり思っていた自分には目から鱗です(単に知識不足なだけだったわけですが…)
もちろん、admin という名前が推測されやすいと思われることもあるので、それも変更することが出来るようです。ここで注意したいのは、その名前を変更した場合は各コントローラで作成されるアクションの名前も変わってしまうと言うことです。これは注意です(大事なことなので二度書きました)。
あれっ、でも、結局この admin ユーザの定義や認証はどうするのでしょうね?
そのあたりはもう少し突き詰めて調べてみて、わかったら追記したいと思います。
追記
こちらの資料が参考になりそうです。
-CakePHP 管理者サイトでBasic認証を簡単に行うコンポーネント | Shin x blog
こちらをさらに拡張する案として、
* ハッシュ値では無くDBの値で認証
* HTTPからのアクセスはHTTPSへリダイレクト
* Basic認証を他の認証に変更
ここから読み取るとすると、この admin ルーティングはまさしくルーティングを提供するのみのもので、そこから先どのように認証をするかは実装に任されているようです。折角だからそこまで説明しておいてくれてもよさそうな気がしますけどね。
実際に使うには
ここまでを「初期設定」と「下ごしらえ」の段階とすると、次はいよいよ具体的な方法です。
※このあたりちょっと自信がないので、もし間違いがあるようでしたらガシガシつっこんでもらえればと思います!
流れを追うと、
1.ハッシュの値 ADMIN_AUTH_HASH を設定する。「下ごしらえ」の記事では core.php で定義しておくと便利とありましたが、自分の場合は他にも define で値を定義しているの bootstrap.php を定義しました。ハッシュ値の取得は書かれてあるとおり var_dump() のコメントをいったん外して取得したものを使うと便利です。
2.Basic 認証などを設定する。これにはこのブログの中の次の記事が参考になると思います。
-CakePHP 1.2 の Basic 認証設定があまりにも簡単すぎる ( ラボブログ )
ただし、$this->Security->requireLogin('index','add'); のようなログインを必要とするコントローラを設定する必要はありません。下ごしらえの記事ところで、admin ルーティングになっていると自動的に Basic 認証がフックされるようです。
※もし他の認証に変えたときは、env('PHP_AUTH_USER'); などで値が取得出来ないかもしれないのでそこは変更する必要があります。
とりあえずこんなところですかね。
追記2
こんなこともできるようです。
-CakePHP の AppController を複数作る - d.hetima
こちらも流れを掴むのに参考になりそう。
十分に使いおこなすには、もうちょっと深く知る必要もありそうですね。
-次世代リーダーを発掘し、育て上げる管理者養成マニュアル―「小さな会社」でもすぐ使える!が好き! - ILOVEIT(β)
関連記事


