diff --git a/modules/entity.eval.inc b/modules/entity.eval.inc
index 6ae5331..86f534b 100644
--- a/modules/entity.eval.inc
+++ b/modules/entity.eval.inc
@@ -157,3 +157,11 @@ function rules_condition_entity_has_field($wrapper, $field_name, $settings, $sta
 function rules_condition_entity_is_of_type($wrapper, $type) {
   return $wrapper->type() == $type;
 }
+
+/**
+ * Condition: User has access to field.
+ */
+function rules_condition_user_has_field_access($account, EntityDrupalWrapper $entity, $field_name, $op) {
+  $field = field_info_field($field_name);
+  return !empty($field) && field_access($op, $field, $entity->type(), $entity->value(), $account);
+}
diff --git a/modules/entity.rules.inc b/modules/entity.rules.inc
index 4d16907..b50409b 100644
--- a/modules/entity.rules.inc
+++ b/modules/entity.rules.inc
@@ -348,6 +348,40 @@ function rules_entity_condition_info() {
       'group' => t('Entities'),
       'base' => 'rules_condition_entity_is_of_type',
     ),
+    'user_has_field_access' => array(
+      'label' => t('User has field access'),
+      'parameter' => array(
+        'account' => array(
+          'type' => 'user',
+          'label' => t('User account'),
+          'description' => t('Specifies the user account for which to evaluate the condition.'),
+          'restriction' => 'selector',
+        ),
+        'entity' => array(
+          'type' => 'entity',
+          'label' => t('Entity'),
+          'description' => t('Specifies the entity for which to evaluate the condition.'),
+          'restriction' => 'selector',
+          'wrapped' => TRUE,
+        ),
+        'field' => array(
+          'type' => 'text',
+          'label' => t('Field'),
+          'description' => t('The name of the field to check for.'),
+          'options list' => 'rules_condition_entity_has_field_options',
+          'restriction' => 'input',
+        ),
+        'op' => array(
+          'type' => 'text',
+          'label' => t('Access operation'),
+          'options list' => 'rules_condition_entity_field_access_op_options',
+          'restriction' => 'input',
+          'default value' => 'view',
+        ),
+      ),
+      'group' => t('Entities'),
+      'base' => 'rules_condition_user_has_field_access',
+    ),
   );
 }
 
@@ -370,6 +404,16 @@ function rules_condition_entity_has_field_options(RulesAbstractPlugin $element)
 }
 
 /**
+ * Returns options for choosing a field_access() operation.
+ */
+function rules_condition_entity_field_access_op_options(RulesAbstractPlugin $element) {
+  return array(
+    'view' => t('View'),
+    'edit' => t('Edit'),
+  );
+}
+
+/**
  * Assert that the entity has the field, if there is metadata for the field.
  */
 function rules_condition_entity_has_field_assertions($element) {
