diff --git a/js.php b/js.php
index a922d28..fd226dc 100644
--- a/js.php
+++ b/js.php
@@ -99,6 +99,11 @@ function js_execute_callback() {
     // Undo magic quotes.
     fix_gpc_magic();
 
+    // Adds the "user" module as a depencency if access arguments were passed.
+    if (!empty($valid_callbacks[$callback]['access arguments'])) {
+      $info['dependencies'][] = 'user';
+    }
+
     // Load required modules.
     $modules = array($module => 0);
     if (isset($info['dependencies']) && is_array($info['dependencies'])) {
@@ -118,6 +123,13 @@ function js_execute_callback() {
     $locale = drupal_init_language();
     // Invoke implementations of hook_init().
     module_invoke_all('init');
+    
+    // Performs role based access checks if necessary.
+    if (!empty($valid_callbacks[$callback]['access arguments'])) {
+      if (!call_user_func_array('user_access', $valid_callbacks[$callback]['access arguments'])) {
+        return JS_ACCESS_DENIED;
+      }
+    }
   }
 
   // Invoke callback function.
