diff --git a/includes/registration.entity.inc b/includes/registration.entity.inc
index d8f971d..95b50ba 100644
--- a/includes/registration.entity.inc
+++ b/includes/registration.entity.inc
@@ -23,6 +23,7 @@ function registration_entity_info() {
         'id' => 'registration_id',
         'bundle' => 'type',
       ),
+      'access callback' => 'registration_entity_access',
       'bundle keys' => array(
         'bundle' => 'name',
       ),
@@ -271,6 +272,26 @@ function registration_save($registration) {
 }
 
 /**
+ * Access callback for the entity API.
+ */
+function registration_entity_access($op, $entity = NULL, $account = NULL, $entity_type = NULL) {
+  if (!$account) {
+    $account = $GLOBALS['user'];
+  }
+
+  switch ($op) {
+    case 'view':
+      return user_access('view registration', $account);
+    case 'update':
+      return ($entity->author->uid == $account->uid);
+    case 'create':
+      return user_access('add registration', $account);
+    case 'delete':
+      return ($entity->author->uid == $account->uid);
+  }
+}
+
+/**
  * Implements hook_field_extra_fields().
  */
 function registration_field_extra_fields() {
@@ -354,7 +375,7 @@ function registration_type_load($type) {
 /**
  * Access callback for the entity API.
  */
-function registration_type_access($op, $type = NULL, $account = NULL) {
+function registration_type_access($op, $entity = NULL, $account = NULL, $entity_type = NULL) {
   return user_access('administer registration types', $account);
 }
 
