diff --git time_sheet/time_sheet.module time_sheet/time_sheet.module
index 4740bb0..3abd78d 100644
--- time_sheet/time_sheet.module
+++ time_sheet/time_sheet.module
@@ -15,13 +15,32 @@ function time_sheet_init() {
  */
 function time_sheet_perm() {
   if (module_exists('casetracker')) {
-    return array('administer time sheet', 'view time sheet entries', 'enter time on time sheet for casetracker cases');
+    return array('administer time sheet', 'view all time sheet entries', 'view own time sheet entries', 'enter time on time sheet for casetracker cases');
   }
   else {
-    return array('administer time sheet', 'view time sheet entries');
+    return array('administer time sheet', 'view all time sheet entries', 'view own time sheet entries');
   }
 }
 
+/**
+ * Custom Access Control
+ */
+function time_sheet_view_access($account) {
+  // The user is not blocked and logged in at least once.
+  if (!$account->access || !$account->status) {
+    return false;
+  }
+  if ($account && $account->uid) {
+    if (user_access('view all time sheet entries') || user_access('administer users')) {
+      return true;
+    }
+    if (user_access('view own time sheet entries') && $GLOBALS['user']->uid == $account->uid) {
+      return true;
+    }
+  }
+  return false;
+}
+
 /*
  * Implementation of hook_menu().
  *
@@ -35,12 +54,13 @@ function time_sheet_menu() {
     'description' => 'My Time Sheet',
     'page callback' => 'time_sheet_page',
     'page arguments' => array(1),
-    'access arguments' => array('view time sheet entries'),
+    'access callback' => 'time_sheet_view_access',
+    'access arguments' => array(1),
     'type' => MENU_LOCAL_TASK,
   );
   $items['time_sheet/add_time'] = array(
     'page callback' => 'time_sheet_add_time',
-    'access arguments' => array('view time sheet entries'),
+    'access arguments' => array('view own time sheet entries'),
     'type' => MENU_CALLBACK,
   );
   $items['admin/settings/time_tracker/time_sheets'] = array(
diff --git time_tracker.module time_tracker.module
index 2db72e9..25fba5e 100644
--- time_tracker.module
+++ time_tracker.module
@@ -23,7 +23,7 @@ define('TIME_TRACKER_DEFAULT_DATE_FORMAT', 'Y-m-d h:i A');
  */
 function time_tracker_perm() {
   return array('administer time tracker', 'add time tracker entries',
-    'view time tracker entries', 'edit time tracker entries', 
+    'view all time tracker entries', 'view own time tracker entries', 'edit time tracker entries',
     'delete time tracker entires', 'administer time entries');
 }
 
@@ -96,8 +96,8 @@ function time_tracker_settings_form(&$form_state) {
   );
   $form['time_tracker_settings']['hide_comments'] = array(
     '#type' => 'checkbox',
-    '#title' => t("Hide comments with time tracker data entirely if user does not have 'view time tracker entries' permission"),
-    '#description' => t("Checking this setting will hide any comments that have time tracking data on them from any users without the 'view time tracker entries' permission"),
+    '#title' => t("Hide comments with time tracker data entirely if user does not have 'view all time tracker entries' or 'view own time tracker entries' permission"),
+    '#description' => t("Checking this setting will hide any comments that have time tracking data on them from any users without the 'view all time tracker entries' or 'view own time tracker entries' permission"),
     '#default_value' => variable_get('hide_comments', 0),
   );
   $form['time_tracker_settings']['allow_locked_time_entries'] = array(
@@ -389,7 +389,7 @@ function time_tracker_form_alter(&$form, $form_state, $form_id) {
 function time_tracker_nodeapi(&$node, $op) {
   switch ($op) {
     case 'view':
-      if (user_access('view time tracker entries')) {
+      if (user_access('view all time tracker entries') || (user_access('view own time tracker entries') && $GLOBALS['user']->uid == $comment->uid)) {
         // If case tracker exists then we can check if it's a project
         if (module_exists('casetracker') && casetracker_is_project($node->type)) {
           $case_results = db_query("SELECT * FROM {casetracker_case} WHERE pid = %d", $node->nid);
@@ -468,7 +468,7 @@ function time_tracker_comment(&$comment, $op) {
   switch ($op) {
     case 'view':
     // We only want to show time tracker data if user has permission
-      if (user_access('view time tracker entries')) {
+      if (user_access('view all time tracker entries') || (user_access('view own time tracker entries') && $GLOBALS['user']->uid == $comment->uid)) {
         // If this is a preview we won't have a cid yet.
         if (empty($comment->cid)) {
           $time_tracker_data = (object)$comment->time_tracker;
@@ -1106,7 +1106,7 @@ function theme_time_tracker_project_summary($total_time) {
  */
 function time_tracker_preprocess_comment(&$vars) {
   $comment = $vars['comment'];
-  if ($comment->status == 2 && variable_get('hide_comments', 0) && !user_access('view time tracker entries')) {
+  if (user_access('view all time tracker entries') || (user_access('view own time tracker entries') && $GLOBALS['user']->uid == $comment->uid)) {
     $vars['hide'] = TRUE;
   }
 }
