12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- <?php if (!defined('PmWiki')) exit();
- /* Copyright 2004-2005 Patrick R. Michaud (pmichaud@pobox.com)
- This file is part of PmWiki; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version. See pmwiki.php for full details.
- This file defines an alternate authentication scheme based on the
- HTTP Basic authentication protocol (i.e., the scheme used by default
- in PmWiki 1).
- */
- ## If the webserver has already authenticated someone, then use
- ## that identifier for our authorization id. We also disable
- ## the use of the browser's Basic Auth form later, since it tends
- ## to confuse webservers.
- if (IsEnabled($EnableRemoteUserAuth, 1) && @$_SERVER['REMOTE_USER']) {
- SDV($EnableHTTPBasicAuth, 0);
- SDV($AuthId, $_SERVER['REMOTE_USER']);
- }
- ## If the browser supplied a password, add that password to the
- ## list of passwords used for authentication
- if (@$_SERVER['PHP_AUTH_PW']) {
- @session_start();
- @$_SESSION['authpw'][$_SERVER['PHP_AUTH_PW']]++;
- $_REQUEST[session_name()] = 1;
- }
- ## $EnableHTTPBasicAuth tells PmWikiAuth to use the browser's
- ## HTTP Basic protocol prompt instead of a form-based prompt.
- if (IsEnabled($EnableHTTPBasicAuth, 1))
- SDV($AuthPromptFmt, 'function:HTTPBasicAuthPrompt');
- ## HTTPBasicAuthPrompt replaces PmWikiAuth's form-based password
- ## prompt with the browser-based HTTP Basic prompt.
- function HTTPBasicAuthPrompt($pagename) {
- global $AuthRealmFmt, $AuthDeniedFmt;
- SDV($AuthRealmFmt,$GLOBALS['WikiTitle']);
- SDV($AuthDeniedFmt,'A valid password is required to access this feature.');
- $realm=FmtPageName($AuthRealmFmt,$pagename);
- header("WWW-Authenticate: Basic realm=\"$realm\"");
- header("Status: 401 Unauthorized");
- header("HTTP-Status: 401 Unauthorized");
- PrintFmt($pagename,$AuthDeniedFmt);
- exit;
- }
|