Drupal 6: Restrict sections of a form to certain users and roles
At some point you might want to restrict sections of a form to certain users and roles. That can be accomplished relatively easy by creating a module that implements 2 Drupal hooks: hook_form_alter and hook_perm.
First I start by adding the hook_perm():
<?php
function MYMODULE_perm() {
// return an array of permissions,
// they can be named whatever you'd like.
// NOTE: avoid redeclaring permissions that are already set
return array('access secret section of my form');
}
?>
Next add a form_alter hook:
<?php
function MYMODULE_form_alter(&$form, $form_state, $form_id) {
// test for the form id you'd like to alter.
// if you are unsure of the it's exact name,
// you could add this: echo $form_id . "<BR>";
if ($form_id =='SOME_FORM_ID') {
// check if the user has access to the permission you defined
if (!user_access('access secret section of my form')) {
// deny access to the form element
// if you don't what what it's called,
// output the $form object:
// echo "<pre>" . print_r($form, true) . "</pre>";
$form['SOME_FORM_ELEMENT']['#access'] = false;
}
}
}
?>
Now if you enable you module you can restrict permissions by going here: /admin/user/permissions