RSS

ACLに挑戦。

10 11月

ACLを早急にしらないといけない、ってことで必死に情報収集。で、わからないながらも手を動かさないと始まらない。ってことで
・情報をさがす
・一番簡単そうにやってるところをみつけて、まずそれをやってみる
・動いてから、中身をみる…

というグダグダな展開、でもやらないと「これだめじゃーん」なのか「結構つかえる」なのかわかんないので。
まずは参考サイト。こちらです。まずこちらを10回くらいよんでみた…。そしてそのとおりにやってみることにします。

・んもう、書いてあるとおり!書いてあるとおりにとりあえずやってみる。
というのを実践してみた。「えー動かなかったらどうしよう」とかいろいろありましたけど、まず最後までやってみよう。これって結構大事ですよね。私みたいなタイプは「…難しいなあ、できるかなあ」って考える時間が長いのです。「グダグダいわずにやれ!手をうごかせ!」っていうのが大事なので、やってみます。

・テーブル&モデルの作成(ユーザ、グループ)
・コントローラーの作成(ACLの読み込み)
・ビューのページ作成
・グループ作成
・ユーザ作成
ここまでは順調。
…さてここです。コンソール。コンソールだよねやっぱ。これだよこれが全部悪いの><
でももうやります、やらせていただきますっ!
上記作業の後、コマンドプロンプトで、
xampp\htdocs\cake\cake\console上で

「cake acl initdb」
って打ちましたら、Your database configuration was not found. Take a moment to create one.
「はい…?」
ええと、私だけかもしれませんが設定ファイルを読み込んでくれないのですね。現在私はVM環境で構築したCentOS上のデータベースを参照して開発をしているため、ローカルにあるcakephpの設定ファイルはVM上のmysqlを参照するように設定されています。多分だけど…。ただ上記のコマンドをうっただけだとローカルのデータベースに対して「何か」をしようとしてるんじゃないかな、と思ったので。
こちらを参考に、現在のローカルにある設定ファイル(VM上のデータベース情報)をみるように、app配下の設定ファイルをみるように指定します。上記URLのように。

%php /home/[SakuraAccount]/cake125/cake/console/cake.php -app /home/[SakuraAccount]/www/foo.bar.com/app/ acl initdb

私はWindows環境で上記を行ったので若干書き方は違いますが、/home/[SakuraAccount]/www/foo.bar.com/app/ここまでが設定ファイルのある場所を指定しています。昨日、自宅でこれをやったらできたんだけど、今日職場のXampp環境でやったら(パス設定は同じ)ちょっと違ったのか、cakeコマンドは実行できないだのphpコマンドは実行できないだのガタガタいわれました。んもーパス通すとか、全然やってない。
・xampp\phpにパスを通す
・xampp\htdocs\cake\cake\consoleにパスを通す
ことで
>cake -app [appまでのパス] acl initdb
で無事ACL関係のテーブルが作成されました。あーここを解消したURLをブックマークするのをわすれてたか。

先ほどのこちらのサイトをすべて「順番とおり」にやれば、できます。順番まちがえるといろいろ面倒なので順番は守ったほうが良いw私はこの後、
cake acl grant User.1 Users/view all
なんかを追加して管理権限を有するユーザでログインし、ユーザの表示ができていることを確かめました。
結論からいうと(まだ結論まで達してないが)
やってしまえば簡単。っていうか実際の権限管理のテーブルも同じような構成のテーブルを作ることになる。
initdbコマンドは実はテーブルを作るだけのスクリプトのようで、動かなかったらphpmyadminで作ればいいだけ。

ここまではいいんだけど、実際、データを入れるところで、当然なんですけどデータをいれるのもコマンドなんですね。
これもいいんだけど、これはちょっと正直微妙だなあ。
特定のコントローラー/アクション をグループやユーザーに対して付与するわけなんだけど、このデータを作成する、っていう手順のコマンド操作はちょっと微妙かも。たとえば、パッケージで社内で使う社内ウェブサーバで動作するアプリとして売り出すものを作った場合には
この処理をパッケージを買った人にしてもらうか、自動的に作成するスクリプトを作る必要がある。

それと重要なことをわすれていたのだけど、ACLでカバーするのはいわゆる縦の「機能」に関連したルールということ。今回私が目指しているのは当然、その機能もほしいんだけど、もう一つは横(データの違い)でも権限を設定しないといけないということ。
同じユーザーでも、Aというデータについては参照を許可し、Bというデータについては参照と編集を許可する、というもの。いまのところ、ACLの機能でこの横のデータについての権限を設定できる要素はないみたい(そりゃカスタマイズすればできると思うけどさー)ということでちょっと保留。でも権限設定についてはACL、それほど難しくないんじゃない?という印象。
(生成されるテーブルもacosとかarosとか、しょうがないのかなあ、cakephpのネーミングルールにあわせたものとかにしたほうがいいんじゃないのか?って気がしましたw。システムで使用するからわざとこういうネーミング?なのかなあ)

今回、cakematsuriでACLが話題になって、「結構使ってない」「わかりずらい」っていううわさがあったし、実際使用してるひとも少なかった。cakematsuriが今回ACLをやってみるべ!と私の背中を押してくれたと思います。もっとじっくり勉強して自分でカスタマイズできたらいいかな、という気持ちもありますが、現状の業務との兼ね合いがあるから難しいなあー。上記SLYWALKERさんのサイトは続きがあって、初期化するコンポーネントもあるので、そちらも時間があるときに挑戦してみようかなあ、と思っています。
先人のブログ記事に毎回助けられております。感謝感謝。ほんと、今の時代に生まれててよかったよ…。内部的なもうちょっと深いところを今後もうちょっと情報収集できたらいいかなあ、と思っていますが、いつになるかなあ・・・。

しかし、Authcompornent,ACLと一応斜め読みして実際に動かしてみました。あとは…なんだろうな。楽しいけどネ!

※11月12日追記。パスの設定をメモしてたところがわからなかったので上記に追記。
cakeコマンドとphpコマンドが実行できないので、暫定的に設定する(windowsVista,xampp環境での例)。
C:\xampp\php >SET PATH=%PATH%;%CD%
C:\…\console >SET PATH=%PATH%;%CD%

広告
 
コメントする

投稿者: : 11月 10, 2009 投稿先 cakephp

 

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

 
%d人のブロガーが「いいね」をつけました。