--- community_tags.module.old	2010-01-02 18:52:55.000000000 +0200
+++ community_tags.module	2010-03-31 18:02:53.081305067 +0300
@@ -175,7 +175,7 @@ function community_tags_vids_for_node($n
  * Implementation of hook_perm().
  */
 function community_tags_perm() {
-  return array('tag content', 'edit own tags');
+  return array('tag content', 'edit own tags', 'edit tags on node edit');
 }
 
 /**
@@ -218,6 +218,16 @@ function community_tags_nodeapi(&$node, 
  * Implementation of hook_form_alter().
  */
 function community_tags_form_alter(&$form, &$form_state, $form_id) {
+  if (strpos($form_id, '_node_form') !== FALSE) {
+    if (!user_access('edit tags on node edit')) {
+      $vid = array_shift(community_tags_vids_for_node($form['#node']));
+      if ($vid) {
+        $form['taxonomy']['tags'][$vid]['#type'] = 'hidden';
+        $form['taxonomy']['tags'][$vid]['#value'] = $form['taxonomy']['tags'][$vid]['#default_value'];
+        unset($form['taxonomy']['tags'][$vid]['#default_value']);
+      }
+    }
+  }
   // Provide option to enable Community Tags per node type.
   if ($form_id == 'node_type_form' && isset($form['identity']['type'])) {
     $modes = array(
