I will continue the Ajax example which we did in
Drupal 7 – Simple Ajax implementation @ 1
So this time we will add some access control on the above example. In Drupal 7 & 8 development, we could create new permissions by implementing the hook_permission(). After that we could modify the access arguments in the hook_menu().
Let’s add the hook_permission() and modified the hook_menu() as follow.
eureka_ajax.module
<?php
/**
* Implementation of hook_init().
*/
function eureka_ajax_init() {
// Include the js file
drupal_add_js(drupal_get_path('module', 'eureka_ajax') . '/eureka_ajax.js');
}
/**
* Implementation of hook_permission().
*/
function eureka_ajax_permission() {
// Restrict access to either of your new URLs.
return array(
'access eureka page' => array(
'title' => t('Access eureka page'),
'description' => t('Allow users to access eureka/page.'),
),
'access eureka ajax' => array(
'title' => t('Access eureka ajax'),
'description' => t('Allow users to access the eureka ajax callback at eureka/ajax.'),
),
);
}
/**
* Implementation of hook_menu().
*/
function eureka_ajax_menu() {
$items = array();
// Create a Drupal page to display our AJAX link.
$items['eureka/page'] = array(
'title' => 'Test Page',
'page callback' => 'test_page_callback',
'access arguments' => array('access eureka page'),
'type' => MENU_NORMAL_ITEM,
);
// Create a path to send our AJAX request to.
$items['eureka/ajax'] = array(
'title' => 'Ajax Request',
'page callback' => 'ajax_request_callback',
'access arguments' => array('access eureka ajax'),
'type' => MENU_CALLBACK,
);
return $items;
}
/**
* Callback function for /eureka/page.
*/
function test_page_callback() {
return theme('ajax_link');
}
/**
* Implementation of hook_theme().
*/
function eureka_ajax_theme() {
return array(
'ajax_link' => array(),
);
}
/**
* Implementation of theme_ajax_link().
*/
function theme_ajax_link() {
return l(t('What is the date and time?'), 'eureka/ajax', array(
'attributes' => array(
'id' => 'eureka-ajax')
)
);
}
/**
* Callback function for /eureka/ajax.
*/
function ajax_request_callback() {
if ($_POST['from_js']) {
// Return the time if the from_js request para is set to true
$response = array(
'message' => t('It is approximately !date', array('!date' => date('M j Y h:i:s'))),
);
drupal_json_output($response);
exit;
} else {
// Return an empty json array for incorrect request
drupal_json_output(array());
exit;
}
}
Clear the cache after update the eureka_ajax.module. Then you will get Access denied when you access eureka/page or eureka/ajax.
The next thing is to configure the permissions such that some roles could access those callbacks. Go to admin/people/permissions/list and allow authenticated users to access the two new permissions.

Now only logged in users could enjoy the Ajax feature.
Done =)
Next: Drupal 7 – Simple Ajax implementation @ 3
Reference:

2 thoughts on “Drupal 7 – Simple Ajax implementation @ 2”