Wie kann ich Berechtigungen basierend auf Benutzerpunkten zuweisen?

7

Ich erstelle eine Site, auf der Benutzer ähnliche Berechtigungen wie SO erhalten. Ich arbeite mit zwei Modellen.

Das erste Modell weist Benutzern Rollen basierend auf Punkten zu. Ich kann wahrscheinlich Regeln verwenden oder ein Modul dafür erstellen. Das Schöne daran ist, dass ich das Build-Berechtigungssystem von Drupal verwenden kann. Der Nachteil ist, dass ich wahrscheinlich +10 Rollen einrichten und noch mehr hinzufügen muss, wenn ich neue Berechtigungen erteilen möchte.

Das zweite Modell basiert auf einem benutzerdefinierten Build-Modul (nicht Build), das prüft, ob ein Benutzer das tun darf, was er beabsichtigt. Auf diese Weise können alle Rollen vermieden werden, es wird jedoch nicht das Berechtigungssystem von Drupal verwendet, was mich etwas unbehaglich macht. Auf der anderen Seite sind nicht viele Rollen erforderlich.

Gibt es also einen Leistungseinbruch, wenn man viele Rollen hat? Andere Probleme?

Irgendwelche Gedanken dazu? Andere Ansätze, um Benutzern Berechtigungen basierend auf Benutzerpunkten zu erteilen?

Vogelsang
quelle

Antworten:

5

Verwenden Sie Rollen.

Das einzige Problem mit mehr als 10 Rollen ist, dass Ihre Berechtigungstabelle sehr groß wird. Sie können dies jedoch lösen, indem Sie sie pro Rolle einschränken (siehe Link in der Rollenliste) oder ein Modul wie schnellere Berechtigungen verwenden.

Das Laden von Rollen ist höchstwahrscheinlich viel schneller als das Ausführen von benutzerdefinierten Überprüfungen. Wenn Sie so etwas tun, werden Sie sicherlich auf Probleme stoßen, beispielsweise wenn Sie versuchen, vorhandene Berechtigungsprüfungen in Modulen zu umgehen, und so weiter. Das Berechtigungssystem ist eines der Kernelemente von Drupal. Verwenden Sie es und versuchen Sie nicht, es zu bekämpfen. Das wird nicht funktionieren.

Unter http://drupal.org/project/userpoints_contrib gibt es ein Modul für Benutzerpunkte-Rollen , mit dem Sie konfigurieren können, wie viele Punkte Benutzer für eine bestimmte Rolle benötigen, und das sollte einfach funktionieren. Dort gibt es jetzt sogar ein paar Tests. Beachten Sie, dass Sie derzeit alle Berechtigungen erhalten, für die der Benutzer genügend Punkte hat. Dies ist möglicherweise nicht das, was Sie erwarten würden, hat jedoch den Vorteil, dass es ausreicht, nur die zusätzlichen Berechtigungen anzugeben, über die jede Rolle verfügt.

Berdir
quelle