こんにちは。小山です。
サイトで、カテゴリ毎に担当者が異なるような運用はよくあるかと思います。
今回はSitecoreでカテゴリ毎に担当者分けするような権限設定について書きたいとおもいます。
こちらの記事はSitecore Advent Calender 2014の12月19日の記事です。
Home配下にいくつかカテゴリがあるサイトを例にあげます。
今回は説明を簡略化するために「読み取り」に限定します。
上記は、ユーザーAさんのデフォルトの権限状態とします。Home配下のカテゴリ(company、news、solutions)それぞれ全部見えている状態です。
各カテゴリには別々の担当部署があり、コンテンツの管理を受け持つ運用をするため、それぞれカテゴリー用にロールを用意します。
Site Solutions User(ソリューション担当) ・・・ solutions 配下のみ参照可能
Site News User(ニュース担当) ・・・ news 配下のみ参照可能
Site Company User(企業情報担当) ・・・ company 配下のみ参照可能
それぞれの担当者は、自分の担当する範囲のコンテンツのみ参照ができて
担当外のコンテンツは参照できない(ツリー上みえない)という内容です。
各ロールに対する権限設定を上記の内容にそってシンプルに設定してみましょう。
Site Solutions User(ソリューション担当)
Site News User(ニュース担当)
Site Company User(企業情報担当)
それぞれ、担当するカテゴリについては読み取り○、担当外は読み取り×としています。
ユーザーAに対して個別にロールを設定してアクセスビューワーで確認するときちんと担当のカテゴリのみが見えるように制御できていそうです。
ソリューション担当ロールを継承したユーザーAの権限状態(ソリューション配下が読み取り○で、その他が×)
ニュース担当ロールを継承したユーザーAの権限状態(ニュース配下が読み取り○で、その他が×)
ところが、ユーザーAが、ソリューション担当とニュース担当を兼任することになったとしたらどうでしょうか?
ソリューション担当ロールとニュース担当ロールの両方をユーザーAに継承した権限状態
両方のカテゴリに対して読み取りできるようになることを期待していましたが、結果は solutions、newsどちらも見えなくなってしまいました。
Sitecoreの権限は否定勝ちなので、片方のロールで参照○になっていても、もう片方のロールで参照×が設定されていると×が有効になってしまうためです。
兼任できるようにロールの権限を設定するには
今回例であげているロールを、兼任できるように権限設定してみます。
Site Solutions User(ソリューション担当)
Site News User(ニュース担当)
Site Company User(企業情報担当)
まず、上位アイテム(Home)側で、「階層下のすべてのサブアイテム」に読み取り×を設定しています。
これにより、Home配下のカテゴリはすべて見えなくなります。
次に、担当するカテゴリについて読み取り○を設定しています。担当外のカテゴリに対しては権限設定しません。
この内容の権限設定した状態では、
ユーザーAに対して個別にロールをつけた場合は、先に記述した内容で権限設定したときと同じ結果になりますが、2つのロールを合わせて継承した場合は以下のように両方許可するような状態にできます。
ソリューション担当ロールとニュース担当ロールの両方をユーザーAに継承した権限状態
今度はきちんと、solutions、newsどちらも見えるようになっています。
権限の優先順位として
1.アイテム直に権限設定されている権限同士では否定勝ち。
2.アイテム直に権限設定されていない場合は上位アイテムの下位に対する権限設定に準じます。
となっているため、Homeで配下に対して読み取り×にしていてもカテゴリ側で読み取り○にしている事で継承したロール範囲がすべて見えるようになります。
ロールを設計しているときには気づかずに、実際の運用担当者のユーザーリストが出てきたときに同一人物による”兼任”が発覚して気づく。。
そんなことが無い様に、初期段階で考慮して設計したいですね。