web-dev-qa-db-ja.com

ユーザーポイントに基づいて権限を割り当てる方法は?

ユーザーにSOと同様の権限が与えられているサイトを構築しています。 2つのモデルで作業しています。

最初のモデルは、ポイントに基づいてユーザーにロールを割り当てます。私はおそらくルールを使用するか、そのためのモジュールをビルドできます。これの良い点は、Drupalのビルド許可システムを使用できることです。欠点は、おそらく新しい権限を付与する場合は、+ 10の役割をセットアップし、さらに追加する必要があることです。

2番目のモデルは、カスタムビルドモジュール(ビルドではない)に基づいており、ユーザーが意図することをすべて実行できるかどうかを確認します。このようにすれば、すべての役割を回避できますが、Drupalの許可システムを使用しないため、少し不快になります。一方、多くの役割は必要ありません。

では、多くの役割を持つことでパフォーマンスへの影響はありますか?その他の問題?

これについて何か考えはありますか?ユーザーポイントに基づいてユーザーにアクセス許可を与える他のアプローチは?

7
vogelsang

ロールを使用します。

10個以上のロールの唯一の問題は、権限テーブルが巨大になることですが、ロールごとに制限することでこれを解決でき(ロールリストのリンクを参照)、より高速な権限のようなモジュールを使用できます。

ロールのロードは、カスタムチェックを実行するよりもはるかに高速です。また、このようなことをすると、たとえばモジュール内の既存の権限チェックを回避しようとする場合など、問題が発生することになります。許可システムは、Drupalのコア要素の1つです。それを使用して、それと戦うことを試みないでください。それはうまくいきません。

http://drupal.org/project/userpoints_contrib にはUserpoints Roleモジュールがあります。これにより、特定のロールにユーザーが必要とするポイントの数を構成して、それが機能するようにすることができます。現在、いくつかのテストがあります。現在、ユーザーに十分なポイントがあるすべての権限が与えられていることに注意してください。これは期待したことではないかもしれませんが、各ロールが持つ追加の権限を指定するだけで十分であるという利点があります。

5
Berdir