No Drupal 7, qual é a melhor maneira de impedir que um usuário não administrativo altere um campo de perfil de usuário personalizado?
Caso de uso: criei um campo de usuário chamado "ID do cliente" que não quero que o usuário (nenhum dos meus clientes reais) mude. O campo existe para minha própria referência e para uso programático em outros módulos. Não me importo que o usuário veja o ID do cliente, mas ele não deve poder editá-lo.
Devo substituir o modelo de página da página de perfil do usuário? Em caso afirmativo, como o modelo é alterado para tornar um campo somente leitura ou invisível?
Muito obrigado pela sua ajuda!
Chris
Field Permissions
funciona bem com Drupal 8, mas que poderia se esconder campos Eu acho que (i necessário para Hyde nome de usuário também), apenas sob encomendaPara ocultar o campo do formulário de perfil do usuário, você pode definir a
#access
propriedade de um campo como FALSE usandohook_form_FORMID_alter
.O seguinte snippet oculta o campo
field_organisation
do formulário de perfil de usuário para não administradores:Veja também esta pergunta semelhante sobre drupalanswers
Você também pode ocultar o campo da página de perfil do usuário (não do formulário) usando template_preprocess_user_profile
O seguinte snippet oculta o campo
field_organisation
da página do usuário para não administradores:fonte
Parece haver um módulo chamado http://drupal.org/project/user_readonly "O módulo permite que um administrador impeça a modificação dos campos de conta / perfil de usuário. O administrador pode selecionar quais campos serão desaprovados ou quais serão permitido."
fonte