diff --git content_profile.module content_profile.module
index 5095ddb..575c041 100644
--- content_profile.module
+++ content_profile.module
@@ -78,6 +78,17 @@ function content_profile_menu_alter(&$items) {
 
 
 function content_profile_page_access($type, $account) {
+  $valid_role = FALSE;
+  $valid_roles = variable_get('content_profile_roles_'. $type, array());
+  foreach($valid_roles as $role_id) {
+    if(isset($account->roles[$role_id])) {
+      $valid_role = TRUE;
+      break;
+    }
+  }
+  if(!$valid_role) {
+    return FALSE;
+  }
   if ($node = content_profile_load($type, $account->uid)) {
     return node_access('update', $node);
   }
@@ -256,6 +267,12 @@ function content_profile_form_alter(&$form, $form_state, $form_id) {
       '#title' => t('Use this content type as a content profile for users'),
       '#default_value' => variable_get('content_profile_use_'. $form['#node_type']->type, FALSE),
     );
+    $form['content_profile']['content_profile_roles'] = array(
+      '#type' => 'checkboxes',
+      '#title' => t('For what roles should this profile be used'),
+      '#options' => _content_profile_valid_roles(),
+      '#default_value' => variable_get('content_profile_roles_'. $form['#node_type']->type, array()),
+    );
   }
   elseif (isset($form['#node']) && $form['#node']->type .'_node_form' == $form_id && is_content_profile($form['#node'])) {
     // Customize the redirect target and buttons of our own node forms.
@@ -585,3 +602,8 @@ function content_profile_simpletest() {
   $tests = file_scan_directory(drupal_get_path('module', 'content_profile') .'/tests', '\.test');
   return array_keys($tests);
 }
+
+function _content_profile_valid_roles() {
+  $roles = user_roles(TRUE);
+  return $roles;
+}
