Contentfulでユーザーに複数ロールを付与する場合の優先順位
CMSのContentfulでは、ユーザーに細かくロールを付与することで、ダッシュボードにおける各種操作や、APIへのリクエストにおける権限を制御することができます。
1ユーザーには複数のロールを付与することができますが、各ロール間での同一アクションに対する許可/拒否が矛盾/重複する場合、どのような優先順位でそれらが適用されるかを調べてみました。
先に結論。
明示的な「拒否」 > 明示的な「許可」 > 暗黙的な「拒否」
という優先度です。
詳しく。
まず前提として、Contentfulのロール(カスタムロール含む)では 明示的に許可されていないアクションは全て拒否 されます。
あるロールに Action: [記事の編集] を許可したい場合、それらを明示的に許可する必要があります。
一方で、特定のアクションに対して明示的に「拒否」を設定することもできます。通常これは過剰な設定になりますが、複数ロールを付与したい場合は有効です。
■ケース1. いずれかのロールで明示的に「拒否」されている
例えば Action: [記事の編集] に対して下記2つのロールがあるとする
- ロールA: 「許可」
- ロールB: 「拒否」
→ A, B を同一ユーザーに付与した場合、[編集]への「拒否」が優先される
■ケース2. いずれかのロールで明示的に「許可」されている
- ロールA: 「許可」
- ロールB: 「編集に明示的な許可を付与していない」が「拒否もしていない」
→ この場合 [編集] は「許可」される(= 明示的な「許可」は暗黙的な「拒否」に優先する)