En Drupal 7, ¿cuál es la mejor manera de evitar que un usuario no administrativo cambie un campo de perfil de usuario personalizado?
Caso de uso: he creado un campo de usuario llamado "ID de cliente" que no quiero que cambie el usuario (ninguno de mis clientes reales). El campo existe para mi propia referencia y para uso programático en otros módulos. No me importa que el usuario vea la identificación del cliente, pero no debería poder editarla.
¿Debo anular la plantilla de página para la página de perfil de usuario? Si es así, ¿cómo se cambia la plantilla para hacer que un campo sea de solo lectura o invisible?
¡Muchas gracias por su ayuda!
Chris
Field Permissions
funciona bien con Drupal 8, pero creo que solo puede ocultar campos personalizados (necesitaba hyde también el nombre de usuario)Para ocultar el campo del formulario de perfil de usuario, puede establecer la
#access
propiedad de un campo en FALSO utilizandohook_form_FORMID_alter
.El siguiente fragmento oculta el campo
field_organisation
del formulario de perfil de usuario para no administradores:Ver también esta pregunta similar en drupalanswers
También puede ocultar el campo desde la página de perfil de usuario (no el formulario) usando template_preprocess_user_profile
El siguiente fragmento oculta el campo
field_organisation
de la página del usuario para los no administradores:fuente
Parece que hay un módulo llamado http://drupal.org/project/user_readonly "El módulo permite que un administrador evite la modificación de los campos de cuenta / perfil de usuario. El administrador puede seleccionar qué campos serán rechazados o cuáles serán permitido."
fuente