diff --git a/casetracker.module b/casetracker.module
index 99672e5..e07c96c 100755
--- a/casetracker.module
+++ b/casetracker.module
@@ -41,6 +41,30 @@ function casetracker_permission() {
       'title' => t('Assign cases'),
       'description' => t('Assign cases to users.'),
     ),
+    'change own case project' => array(
+      'title' => t('Change own case project'),
+    ),
+    'change any case project' => array(
+      'title' => t('change any case project'),
+    ),
+    'change own case priority' => array(
+      'title' => t('Change own case priority'),
+    ),
+    'change any case priority' => array(
+      'title' => t('Change any case priority'),
+    ),
+    'change own case status' => array(
+      'title' => t('Change own case status'),
+    ),
+    'change any case status' => array(
+      'title' => t('Change any case status'),
+    ),
+    'change own case type' => array(
+      'title' => t('Change own case type'),
+    ),
+    'change any case type' => array(
+      'title' => t('Change any case type')
+    ),
   );
 
 }
@@ -574,6 +598,7 @@ function casetracker_case_form_common(&$form, $default_project = NULL) {
         '#description' => 'Select self if leave empty.',
         '#default_value' => $default_project,
         '#options' => $project_options,
+        '#disabled' => !user_access('change any case project')&& !(user_access('change any case project') && $node->uid == $user->uid),
       );
     } else {
       $form['casetracker']['pid'] = array(
@@ -581,6 +606,7 @@ function casetracker_case_form_common(&$form, $default_project = NULL) {
         '#type' => 'select',
         '#default_value' => $default_project,
         '#options' => $project_options,
+        '#disabled' => !user_access('change any case project')&& !(user_access('change any case project') && $node->uid == $user->uid),
       );
     }
   }
@@ -633,6 +659,7 @@ function casetracker_case_form_common(&$form, $default_project = NULL) {
     '#title' => t('Status'),
     '#options' => $case_status_options,
     '#default_value' => $default_status,
+    '#disabled' => !user_access('change any case status') && !(user_access('change own case status') && $node->uid == $user->uid),
   );
 
   $case_priority_options = casetracker_realm_load('priority');
@@ -642,6 +669,7 @@ function casetracker_case_form_common(&$form, $default_project = NULL) {
     '#title' => t('Priority'),
     '#options' => $case_priority_options,
     '#default_value' => $default_priority,
+    '#disabled' => !user_access('change any case priority') && !(user_access('change own case priority') && $node->uid == $user->uid),
   );
 
   $case_type_options = casetracker_realm_load('type');
@@ -651,6 +679,7 @@ function casetracker_case_form_common(&$form, $default_project = NULL) {
     '#title' => t('Type'),
     '#options' => $case_type_options,
     '#default_value' => $default_type,
+    '#disabled' => !user_access('change any case type') && !(user_access('change own case type') && $node->uid == $user->uid),
   );
 
   return $form;
diff --git a/casetracker_basic.module b/casetracker_basic.module
index 2089140..6f17ffc 100755
--- a/casetracker_basic.module
+++ b/casetracker_basic.module
@@ -19,9 +19,15 @@ function casetracker_basic_permission() {
     'edit own projects' => array(
       'title' => t('Edit own projects'),
     ),
+    'edit any projects' => array(
+      'title' => t('Edit any projects'),
+    ),
     'edit own cases' => array(
       'title' => t('Edit own cases'),
     ),
+    'edit any cases' => array(
+      'title' => t('Edit any cases'),
+    )
   );
 }
 
@@ -69,7 +75,7 @@ function casetracker_basic_project_node_access($node, $op, $account) {
       break;
     case 'update':
     case 'delete':
-      if (user_access('edit own projects', $account) && ($account->uid == $node->uid)) {
+    if (user_access('edit any project') || (user_access('edit own projects', $account) && ($account->uid == $node->uid))) {
         return TRUE;
       }
       break;
@@ -87,7 +93,7 @@ function casetracker_basic_case_node_access($node, $op) {
       return user_access('create cases');
     case 'update':
     case 'delete':
-      if (user_access('edit own cases') && ($user->uid == $node->uid)) {
+      if (user_access('edit any case') || (user_access('edit own cases') && ($user->uid == $node->uid))) {
         return TRUE;
       }
       break;
