Open SourceFeatured

View User Email

Ein von mir erstelltes Drupal-Modul, um ein häufiges Admin-Problem zu lösen.

DrupalPHPAccess Control

Dies begann als Lösung für ein Problem, auf das ich bei Drupal-Websites immer wieder stieß. Administratoren benötigten selektiven Zugriff auf Benutzer-E-Mails. Was als einfache Korrektur begann, hat sich zu einem Modul entwickelt, das von Hunderten von Websites genutzt wird. Es war großartig zu sehen, wie es sich über Drupal 8, 9 und 10 entwickelt hat.

Das Problem

Drupal 8 bis 9.1 hatte keine eingebaute Möglichkeit, Nicht-Admin-Rollen selektiv E-Mail-Adressen von Benutzern anzeigen zu lassen. Seiten benötigten Moderatoren oder Support-Mitarbeiter, um E-Mails einzusehen, ohne volle Admin-Rechte zu gewähren. Die einzigen Optionen waren benutzerdefinierter Code oder übermäßiges Teilen von Berechtigungen.

Der Ansatz

Ein kleines Drupal-Modul, das eine Berechtigung hinzufügt und hook_entity_field_access() verwendet, um die Sichtbarkeit von E-Mail-Feldern zur Zugriffsprüfungszeit zu filtern. Keine Konfigurations-UI, kein Schema, kein überraschendes Verhalten. Die Berechtigung kann pro Rolle über das native RBAC von Drupal zugewiesen werden.

Bemerkenswerte Entscheidungen

  • Berechtigungen zuerst. Nutzt die bestehende rollenbasierte Zugriffskontrolle von Drupal, sodass Administratoren keine weitere Konfigurationsoberfläche erlernen müssen.
  • Hook auf Feldebene. Filtert auf der Entitäts- und Feldebene, sodass die Regel einheitlich für REST, GraphQL, die Admin-UI und Benutzerseiten gilt.
  • Null Zeremonie. Eine Berechtigung, ein Hook, kein Einstellungsformular. Das Modul ist klein genug, um in wenigen Minuten geprüft zu werden.

Status

Funktionalität in Drupal Core ab Version 9.2 integriert, was das beste Ergebnis ist, das sich ein Beitragsmodul erhoffen kann. Wird weiterhin für Websites mit Drupal 8 und 9.0 bis 9.1 gepflegt. Hunderte von Websites haben es übernommen, bevor Core nachgezogen hat. Veröffentlicht auf Drupal.org.

Want similar work for your team?

AI-native senior engineering for AI, cloud, and web. Open to consulting engagements and full-time roles.