diff -urp taxonomy_theme/taxonomy_theme_admin.inc taxonomy_theme_modified/taxonomy_theme_admin.inc
--- taxonomy_theme/taxonomy_theme_admin.inc	2007-02-25 17:49:08.000000000 +0100
+++ taxonomy_theme_modified/taxonomy_theme_admin.inc	2007-12-29 20:03:26.000000000 +0100
@@ -116,6 +116,7 @@ function taxonomy_theme_admin_taxonomy_f
   $options[TAXOTHEME_VOCAB]     = t('Vocab-based');
   $options[TAXOTHEME_ALLTAXO]   = t('All Taxonomy');
   $options[TAXOTHEME_NODETYPE]  = t('NodeType-based');
+  $options[TAXOTHEME_USER]      = t('User role-based');
   $method = variable_get('taxonomy_theme_method', TAXOTHEME_SKIP);
   $form['taxonomy']['taxonomy_theme_method'] = array(
     '#type' => 'select',
@@ -138,6 +139,9 @@ function taxonomy_theme_admin_taxonomy_f
     case TAXOTHEME_NODETYPE:
       $form['taxonomy'][] = _taxonomy_theme_admin_nodetype_form($options_themes);
       break;
+    case TAXOTHEME_USER:
+      $form['taxonomy'][] = _taxonomy_theme_admin_user_form($options_themes);
+      break;
     default:
   }
   
@@ -285,6 +289,36 @@ function _taxonomy_theme_admin_nodetype_
   return $form;
 }
 
+function _taxonomy_theme_admin_user_form($options_themes) {
+  $form['taxonomy_theme_select'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Roles => Themes'),
+    '#collapsible' => FALSE,
+    '#collapsed' => FALSE,
+  );
+  $userroles = user_roles();
+  if (count($userroles)) {
+    $rows = array();
+    $header = array(t('Role'), t('Assigned to Theme'));
+    $form['taxonomy_theme_select']['table'] = array('#theme' => 'taxonomy_theme_table');
+    $form['taxonomy_theme_select']['table']['header'] = array('#data' => $header);
+    $form['taxonomy_theme_select']['table']['type'] = array('#value' => 'taxonomy_theme_user|');
+    foreach ($userroles as $roleid => $role) {
+      $template_type = variable_get('taxonomy_theme_user|'.$roleid, '');
+      $form['taxonomy_theme_select']['table'][$roleid]['title'] = array('#value' => $role);
+      $form['taxonomy_theme_select']['table'][$roleid]['taxonomy_theme_user|'.$roleid] = array(
+        '#type' => 'select',
+        '#default_value' => $template_type,
+        '#options' => $options_themes,
+      );
+    }
+  }
+  else {
+    $form['taxonomy_theme_select']['text'] = array('#value' => t('<strong>Your site has no roles defined. Strange indeed...</strong>'));
+  }
+  return $form;
+}
+
 /**
  * function taxonomy_theme_admin_forum_form().
  * (forum administration form)
diff -urp taxonomy_theme/taxonomy_theme.module taxonomy_theme_modified/taxonomy_theme.module
--- taxonomy_theme/taxonomy_theme.module	2007-02-25 17:49:08.000000000 +0100
+++ taxonomy_theme_modified/taxonomy_theme.module	2007-12-29 19:52:20.000000000 +0100
@@ -139,6 +139,9 @@ function _taxonomy_theme_assign() {
       case TAXOTHEME_NODETYPE:
         _taxonomy_theme_select_nodetype($theme_method, $custom_theme, $default_theme, $uri);
         break;
+      case TAXOTHEME_USER:
+        _taxonomy_theme_select_user($theme_method, $custom_theme, $default_theme, $uri);
+        break;
       default:
         // TAXOTHEME_SKIP or nothing to do
     }
diff -urp taxonomy_theme/taxonomy_theme_taxonomy.inc taxonomy_theme_modified/taxonomy_theme_taxonomy.inc
--- taxonomy_theme/taxonomy_theme_taxonomy.inc	2006-10-18 12:01:56.000000000 +0200
+++ taxonomy_theme_modified/taxonomy_theme_taxonomy.inc	2007-12-29 19:52:20.000000000 +0100
@@ -6,6 +6,7 @@ define('TAXOTHEME_TERM',     1);
 define('TAXOTHEME_VOCAB',    2);
 define('TAXOTHEME_ALLTAXO',  3);
 define('TAXOTHEME_NODETYPE', 4);
+define('TAXOTHEME_USER', 5);
 
 /**
  * function _taxonomy_theme_select_forum().
@@ -194,4 +195,13 @@ function _taxonomy_theme_select_nodetype
   }
 }
 
+function _taxonomy_theme_select_user(&$theme_method, &$custom_theme, $default_theme, $uri) {
+  global $user;
+  $roles = $user->roles;
+  foreach ($roles as $rid => $role){
+    $role_id = $rid;
+  }
+    $custom_theme = variable_get('taxonomy_theme_user|'.$role_id, $default_theme);
+}
+
 ?>
