diff -r dc8741857bde -r 4d87aad3c4c0 includes/pageprocess.php --- a/includes/pageprocess.php Thu Jun 28 15:26:40 2007 -0400 +++ b/includes/pageprocess.php Sun Jul 01 14:08:39 2007 -0400 @@ -60,6 +60,13 @@ var $perms = null; /** + * The SHA1 hash of the user-inputted password for the page + * @var string + */ + + var $password = ''; + + /** * Switch to track if redirects are allowed. Defaults to true. * @var bool */ @@ -143,6 +150,15 @@ $this->send_headers = false; $strict_no_headers = true; } + if ( $paths->pages[$pathskey]['password'] != '' && $paths->pages[$pathskey]['password'] != sha1('') ) + { + $password =& $paths->pages[$pathskey]['password']; + if ( $this->password != $password ) + { + $this->err_wrong_password(); + return false; + } + } } if ( $this->namespace == 'Special' || $this->namespace == 'Admin' ) { @@ -472,6 +488,7 @@ function _handle_userpage() { global $db, $session, $paths, $template, $plugins; // Common objects + global $email; if ( $this->page_id == $paths->cpage['urlname_nons'] && $this->namespace == $paths->namespace ) { @@ -689,7 +706,6 @@ if ( $userdata['email_public'] == 1 ) { $class = ( $class == 'row1' ) ? 'row3' : 'row1'; - global $email; $email_link = $email->encryptEmail($userdata['email']); echo 'E-mail address: ' . $email_link . ''; } @@ -808,6 +824,36 @@ } /** + * Inform the user of an incorrect or absent password + * @access private + */ + + function err_wrong_password() + { + global $db, $session, $paths, $template, $plugins; // Common objects + + $title = 'Password required'; + $message = ( empty($this->password) ) ? '

Access to this page requires a password. Please enter the password for this page below:

' : '

The password you entered for this page was incorrect. Please enter the password for this page below:

'; + $message .= '
+

+    +

+
'; + if ( $this->send_headers ) + { + $template->tpl_strings['PAGE_NAME'] = $title; + $template->header(); + echo "$message"; + $template->footer(); + } + else + { + echo "

$title

+ $message"; + } + } + + /** * Send the error message to the user complaining that there weren't any rows. * @access private */