--- protected_node.module	2008-10-14 11:35:29.000000000 +0200
+++ protected_node.module.bypass	2009-01-22 10:07:33.000000000 +0100
@@ -66,6 +66,7 @@
 function protected_node_perm( ) {
   $perms = array(
     'access protected content',
+    'bypass password protection'
     'edit protected content'
   );
   foreach ( array_keys( node_get_types() ) as $type ) {
@@ -152,7 +153,7 @@
       }
       break;
     case 'view' :
-      if ($node->is_protected) {
+      if ($node->is_protected  && !user_access('bypass password protection')) {
         // If we have been accessed from cron.php (f.e. search indexing)
         if (variable_get( 'cron_semaphore', FALSE )) {
           $node->title = '';
@@ -227,7 +228,7 @@
   global $user;
 
   $db_file = db_result( db_query( 'SELECT u.nid FROM {files} f, {upload} u, {protected_nodes} pn, {node} n WHERE pn.nid = u.nid AND u.nid = n.nid AND f.filename = \'%s\' AND u.fid = f.fid', $file ) );
-  if (db_error() || $db_file === FALSE || $user->uid == $db_file || $_SESSION['_protected_node']['passwords'][$db_file]) {
+  if (db_error() || $db_file === FALSE || $user->uid == $db_file || $_SESSION['_protected_node']['passwords'][$db_file] || user_access('bypass password protection')) {
     return array();
   }
   else {
