diff --git a/antispam.module b/antispam.module
index 26aa2f3..08d4f58 100644
--- a/antispam.module
+++ b/antispam.module
@@ -2014,10 +2014,13 @@ function antispam_content_publish_operation($content_type, $content, $op, $log_a
     // This code snippet is based on node.module::node_admin_nodes_submit().
     // Only the node record is updated, no other hooks are invoked.
 
+    $node = node_load($content->nid);
+    $node->status = $op == 'publish' ? 1 : 0;
+
     // Perform the update action.
     db_update('node')
       ->fields(array(
-        'status' => ($op == 'publish' ? 1 : 0)
+        'status' => $node->status
       ))
       ->condition('nid', $content->nid)
       ->execute();
@@ -2025,12 +2028,15 @@ function antispam_content_publish_operation($content_type, $content, $op, $log_a
     // Perform the update action of the revision.
     db_update('node_revision')
       ->fields(array(
-        'status' => ($op == 'publish' ? 1 : 0)
+        'status' => $node->status
       ))
       ->condition('nid', $content->nid)
       ->condition('vid', $content->vid)
       ->execute();
 
+    // need to update user access to the node
+    node_access_acquire_grants($node);
+
     // Reset the cache for the updated node in order to update the dmin views.
     entity_get_controller('node')->resetCache(array($content->nid));
 
