Pocket
LINEで送る

管理者の権限は色々ありますし、最終的にはメソッド単位で細かく管理できないといけないと思います。
あと、単にそのメソッドを実行できるか否かだけではなく、どのデータを扱うことができるかまで管理できる必要があります。
こういうのはどうもACLというらしいです。

すごく基本的な管理者権限を考えると、管理者のグループを作成して、そのグループがどのモデルに属するかを設定するといいのではないかと思いました。例外処理ができないと実用的ではありませんが、グループがモデルに属するのであれば、アソシエーションの状態から、自動的に実行可能なメソッドと、編集可能なデータを決定できるのではないかと思います。

例えば、roleのグループをrolesというテーブルで管理しつつ、その各グループに属するモデルもデータベース上で設定しておきます。role_idが1のグループは、Shopモデルに属するのであれば、Shopが持っているHasOneとかHasManyとかのテーブルのみ管理できるようにすればよいです。ShopがMovieを持っている場合、Movieのadmin_index,admin_view,admin_edit,admin_deleteへのアクセスが許可されて、admin_indexは自分が持っているMovieのみ表示されるといった感じになります。これをコンポーネント化しておけば、beforeFileterとかで$this->Auth->user(‘role_id’)をチェックして自動的に埋め込みが可能なんではないだろうかと思いました。

Pocket
LINEで送る

カテゴリー: プログラミング

コメントください

関連記事

プログラミング

Go言語によるビットコインのフルノード実装btcdを調べる(2)

btcdを実行した際のプログラムの流れを最初から確認してみます。 se 続きを読む …

プログラミング

Go – leveldb

Goで使えるLevelDB。 syndtr/goleveldb ドキュ 続きを読む …

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