diff --git a/relatedlinks.module b/relatedlinks.module
index 9642670..2818986 100644
--- a/relatedlinks.module
+++ b/relatedlinks.module
@@ -277,15 +277,48 @@ function relatedlinks_node_access($node, $op, $account) {
   if (_relatedlinks_nodetype_enabled($node)) {
     switch ($op) {
       case 'create':
-      case 'update':
-      case 'insert': // TODO: will this one actually work?
-        if (user_access('add related links')) {
-          return NODE_ACCESS_ALLOW;
+      case 'insert':
+        if (user_access('create ' . $node . ' content')) {
+          if (user_access('add related links')) {
+            return NODE_ACCESS_ALLOW;
+          }
+          else {
+            watchdog('relatedlinks', 'user can create @node content, but can\'t add related links', array('node' => $node), WATCHDOG_CRITICAL);
+            return NODE_ACCESS_DENY;
+          }
         }
         else {
           return NODE_ACCESS_DENY;
         }
-        break;
+      case 'update':
+        if ($node->uid == $account->uid) {
+          if (user_access('edit own ' . $node->type . ' content')) {
+            if (user_access('add related links')) {
+              return NODE_ACCESS_ALLOW;
+            }
+            else {
+              watchdog('relatedlinks', 'user can edit own @node content, but can\'t add related links', array('node' => $node), WATCHDOG_CRITICAL);
+              return NODE_ACCESS_DENY;
+            }
+          }
+          else {
+            return NODE_ACCESS_DENY;
+          }
+        }
+        else {
+          if (user_access('edit any ' . $node->type . ' content')) {
+            if (user_access('add related links')) {
+              return NODE_ACCESS_ALLOW;
+            }
+            else {
+              watchdog('relatedlinks', 'user can edit any @node content, but can\'t add related links', array('node' => $node), WATCHDOG_CRITICAL);
+              return NODE_ACCESS_DENY;
+            }
+          }
+          else {
+            return NODE_ACCESS_DENY;
+          }
+        }
     }
   }
 }
