[Revo]子オブジェクトへのパーミッション適用について

質問全般・改善要望
nomo@bluecoara.net
メンバー
メンバー
記事: 14
登録日時: 2011年2月18日(金) 01:48

[Revo]子オブジェクトへのパーミッション適用について

投稿記事by nomo@bluecoara.net » 2011年2月23日(水) 11:28

お世話になっております。中満と申します。

実は、本家のフォーラムでも
http://modxcms.com/forums/index.php/topic,61345.0.html
として質問していたのですが、誰からも返答がなく、もしこちらでご存じの方がいらっしゃればと思い投稿いたします。
(特にプラットフォームに依存しないようなので、詳しい環境は省いております)

Revo-2.0.8-pl-ja + CentOS-5.5-x86_64にて、リソースグループを使ったメンバーオンリーなフォルダやページを作っているのですが、
そこで、Evoとの挙動の違いに気がつきました。たとえば

コード: 全て選択

- index
- profile
- login
+ secrets (should be member only)
   +--test1 (should be member only)
   +--test2 (should be member only)
   +--test3 (should be member only)


というファイルツリーがある場合、Evoではsecretsオブジェクトにリソースグループを適用させることで、自動的に
全ての子オブジェクトにも同じ設定が適用されていました。一方、Revoでは、親の設定が子に引き継がれないようで、
全てのオブジェクトに対し設定を適用させなければならないようです。

さらに言えば、Evoと異なり、リソースグループに紐付いているフォルダやドキュメントのアイコンが通常のものと
変わらないため、見た目の判別や設定に困っておりました。(この件は、別途http://modxcms.com/forums/index.php/topic,61470.0.htmlとして挙げております)

本家フォーラムでは、「これが仕様なのであれば、JIRAにチケット作りたいので何か知っている人がいたら教えてね」というスタンスなのですが、
「仕様」と答えてくれる人も居ないため、まだチケットを作れずにおります。

日本のフォーラムの中で、本件について何らかの情報をお持ちの方がいらっしゃれば、アドバイスいただけませんでしょうか?
アバター
enogu
メンバー
メンバー
記事: 32
登録日時: 2009年9月02日(水) 23:56

Re: [Revo]子オブジェクトへのパーミッション適用について

投稿記事by enogu » 2011年2月23日(水) 11:55

はじめまして。

私も初心者なのであんまり詳しいことはわからないのですが、公式ドキュメントに詳しい言及がないので現状では仕様とかバグとか以前に"そこの互換性まで考えていなかった"という可能性が高いように思われます。

参考: http://rtfm.modx.com/display/revolution ... rce+Groups

フィーチャーとしてJIRAに提案してみたら対応してもらえるかもしれません。

ちなみにお話にあるようなメンバーオンリーのフォルダについてはコンテキストを分割することで当面は回避できるのではないかと存じます。
細かいアクセス制御をやろうとするとポリシーを追加する必要がありますが、そこは現状でもたぶんかわりないでしょうし。
sama55
メンバー
メンバー
記事: 816
登録日時: 2009年8月03日(月) 08:16

Re: [Revo]子オブジェクトへのパーミッション適用について

投稿記事by sama55 » 2011年2月23日(水) 13:07

ちょうど自分もEvoで困ってることと関係するので、Evo側から見た意見を言わせてください。
nomo@bluecoara.net さんが書きました:Revo-2.0.8-pl-ja + CentOS-5.5-x86_64にて、リソースグループを使ったメンバーオンリーなフォルダやページを作っているのですが、
そこで、Evoとの挙動の違いに気がつきました。たとえば

コード: 全て選択

- index
- profile
- login
+ secrets (should be member only)
   +--test1 (should be member only)
   +--test2 (should be member only)
   +--test3 (should be member only)

というファイルツリーがある場合、Evoではsecretsオブジェクトにリソースグループを適用させることで、自動的に全ての子オブジェクトにも同じ設定が適用されていました。一方、Revoでは、親の設定が子に引き継がれないようで、全てのオブジェクトに対し設定を適用させなければならないようです。

確かにEvoでは、親リソース(secrets)のアクセスを制限すると子リソース(testX)も一緒にアクセスできなくなりますが、私はこの挙動は柔軟性に欠けると思っています。例えば親リソース(secrets)コンテナがFirstChildRedirectなどのプログラム的なリソースでグループユーザーには触らせたくないと思っても、子リソース(testX)をツリーに表示させるためには、親もアクセス可能にしなければなりません。現状のEvoの十羽ひとからげ的なロール管理とグループ管理でこのようなケースに対応するためには結構無理をしなければなりません。正直Revoはよく分かりませんが、リソース単位に細かくアクセス権限が設定できれば、このようなケースにも柔軟に対応できそうな気がするので自分的には歓迎します。但し、権限設定に関する”操作性”は別な議論として、「子に継承」などのオプションなどが実装されてもよいとは思いますが。

enoguさんが仰るように、自分も、これは、そうしようとしてそうなったわけではなく、オブジェクト指向に組んだ結果、自然とそうなった(収まるところに収まった)のではないかと・・・
nomo@bluecoara.net
メンバー
メンバー
記事: 14
登録日時: 2011年2月18日(金) 01:48

Re: [Revo]子オブジェクトへのパーミッション適用について

投稿記事by nomo@bluecoara.net » 2011年2月23日(水) 13:29

中満です。

enoguさん、sama55さん、本家よりも活発なご意見、ありがとうございます(笑)
sama55さんが

> 但し、権限設定に関する”操作性”は別な議論として、「子に継承」などのオプションなどが実装されてもよいとは思いますが。

と仰るとおり、私も

> I believe if there is a checkbox like "Apply to all children", it'll be excellent.

という意見ですので、このような方向性でJIRAにあげてみようかと思います。「もっとこうしたほうが良い」というご意見があれば、
それも加味しますのでご意見があれば、ここに追記してください。

また、コンテキストを変えれば良い、というご意見ですが、この場合、

・DNSのゾーンを編集して(devのようなサブドメインを追加)
・httpd.confにもdev用の設定を追加して
・dev用のドキュメントルートを準備して(index.php, config.core.php, .htaccess)
・dev用のコンテキストを設定

という手順が必要になると理解していますので、実現は出来ても、大がかりすぎるかなぁ、という印象です。
もしかすると、サブドメインを追加せずとも、ディレクトリ単位でコンテキストの設定が出来るのかもしれませんが、構成が分かりにくくなりそうです。
(http://example.com/http://example.com/dev/ だと、/dev/hogeがどちらのコンテキストで管理されるのか分かりづらい)

間違いがあったらご指摘下さい
nomo@bluecoara.net
メンバー
メンバー
記事: 14
登録日時: 2011年2月18日(金) 01:48

Re: [Revo]子オブジェクトへのパーミッション適用について

投稿記事by nomo@bluecoara.net » 2011年2月23日(水) 13:45

サブドメイン無しのコンテキストについて、ちょっと実験してみたところ、想像と違い簡単に実装できちゃいました。

・従来のドキュメントルールの中にhogeディレクトリを作成
・index.php, config.core.php, .htaccessをlabにコピー
・index.phpの最終行付近の"web"をhogeに変更
・.htaccess内のindex.phpを/hoge/index.phpに修正

今回の用途は、本番用コンテンツと構築メモなどの内部用ドキュメントを可能な限り隔離することなので、
ここまで出来れば、modxのユーザグループでなく、.htaccess内でBasic認証させるのが最もお手軽かもしれません。

勉強になりました。