Wie kann in Drupal 7 verhindert werden, dass Benutzer ohne Administratorrechte ein benutzerdefiniertes Benutzerprofilfeld ändern?
Anwendungsfall: Ich habe ein Benutzerfeld mit dem Namen "Kunden-ID" erstellt, das der Benutzer (einer meiner tatsächlichen Kunden) nicht ändern soll. Das Feld existiert zu meiner eigenen Referenz und zur programmatischen Verwendung in anderen Modulen. Ich habe nichts dagegen, dass der Benutzer die Kunden-ID sieht, aber er sollte sie nicht bearbeiten können.
Sollte ich die Seitenvorlage für die Benutzerprofilseite überschreiben? Wenn ja, wie wird die Vorlage geändert, um ein Feld schreibgeschützt oder unsichtbar zu machen?
Vielen Dank für Ihre Hilfe!
Chris
Field Permissions
funktioniert gut mit Drupal 8, aber Sie konnten nur benutzerdefinierte Felder verbergen, denke ich (ich musste auch Benutzername hyde)Um das Feld aus dem Benutzerprofilformular auszublenden, können Sie die
#access
Eigenschaft eines Felds mit auf FALSE setzenhook_form_FORMID_alter
.Das folgende Snippet verbirgt das Feld
field_organisation
vor dem Benutzerprofil für Nicht-Administratoren:Siehe auch diese ähnliche Frage zu Drupalanswers
Sie können das Feld auch mithilfe von template_preprocess_user_profile auf der Benutzerprofilseite (nicht im Formular) ausblenden
Das folgende Snippet verbirgt das Feld
field_organisation
vor der Benutzerseite für Nichtadministratoren:quelle
Anscheinend gibt es ein Modul mit dem Namen http://drupal.org/project/user_readonly. "Das Modul ermöglicht einem Administrator, das Ändern von Benutzerkonto- / Profilfeldern zu verhindern. Der Administrator kann auswählen, welche Felder nicht zulässig sind oder welche Felder nicht zulässig sind dürfen."
quelle