diff --git a/sites/all/modules/viewsdisplaytabs/viewsdisplaytabs.module b/sites/all/modules/viewsdisplaytabs/viewsdisplaytabs.module
index 15a2ede..9740192 100644
--- a/sites/all/modules/viewsdisplaytabs/viewsdisplaytabs.module
+++ b/sites/all/modules/viewsdisplaytabs/viewsdisplaytabs.module
@@ -76,31 +76,33 @@ function viewsdisplaytabs_preprocess_views_view(&$vars) {
     // If no displays are selected, include all displays
     foreach ($view->display as $display_name => $display_data) {
       if (!$selected_displays || !count($selected_displays) || in_array($display_name, $selected_displays)) {
-
-        // Allow grouping of tabs with grouping separator in titles/names: group[sep]title
-        // If the separator is at position 0 or does not exist it all, do not group
-        $sep = $settings['view_group_separator'][$view->name];
-        if ($sep && strpos($display_data->display_title, $sep)) {
-          list($group, $title) = explode($sep, $display_data->display_title);
-        }
-        else {
-          $title = $display_data->display_title;
-          $group = 0;
-        }
-
-        // Set current tab as active based on URL query params
-        $current_view_display = _viewsdisplaytabs_get_current_views_display_from_url();
-        if ($current_view_display && $view->name == $current_view_display->view_name) {
-          $active = ( $display_name == $current_view_display->display_name );
+        if (viewsdisplaytabs_user_access_view($display_data))
+        {
+          // Allow grouping of tabs with grouping separator in titles/names: group[sep]title
+          // If the separator is at position 0 or does not exist it all, do not group
+          $sep = $settings['view_group_separator'][$view->name];
+          if ($sep && strpos($display_data->display_title, $sep)) {
+            list($group, $title) = explode($sep, $display_data->display_title);
+          }
+          else {
+            $title = $display_data->display_title;
+            $group = 0;
+          }
+
+          // Set current tab as active based on URL query params
+          $current_view_display = _viewsdisplaytabs_get_current_views_display_from_url();
+          if ($current_view_display && $view->name == $current_view_display->view_name) {
+            $active = ( $display_name == $current_view_display->display_name );
+          }
+          else {
+            $active = ( $display_name == $settings['view_displays_default'][$view->name] );
+          }
+
+          // Build a grouping array for later
+          // @TODO: Pass the path of the display as well, provided it has been set
+          // (true for page displays).
+          $displays[$group][] = theme('viewsdisplaytabs_tab', $title, $_GET['q'], $view->name, $display_name, $active);
         }
-        else {
-          $active = ( $display_name == $settings['view_displays_default'][$view->name] );
-        }
-
-        // Build a grouping array for later
-        // @TODO: Pass the path of the display as well, provided it has been set
-        // (true for page displays).
-        $displays[$group][] = theme('viewsdisplaytabs_tab', $title, $_GET['q'], $view->name, $display_name, $active);
       }
     }
 
@@ -124,6 +126,36 @@ function viewsdisplaytabs_preprocess_views_view(&$vars) {
   }
 }
 
+function viewsdisplaytabs_user_access_view($display_data) {
+  // This approach is not the preferred way of checking if a user has access to a view, but
+  // is a reasonable workaround.
+  // The main problem with this approach is that if other modules have defined their own access
+  // "types" for views (e.g. Spaces module does this), then this check will deny access to
+  // users who should have access to the view. (note the default is to deny rather than allow access)
+  // Ideally a views.module method should be invoked to check this.
+  
+  if (!$display_data->display_options['access'])
+  {
+    return true;
+  }
+  
+  switch ($display_data->display_options['access']['type']) {
+    case "none" :
+      return true;
+    
+    case "perm" :
+      return user_access($display_data->display_options['access']['perm']);
+    
+    case "role" :
+      $matching_roles = views_check_roles($display_data->display_options['access']['role']);
+      return count($matching_roles) > 0;
+    
+    default :
+      return false;
+  }
+}
+
+
 /**
  * Implementation of hook_views_pre_view()
  *
