From d4c6696bb7c54e8acc3c5faff70a415ed59ca780 Mon Sep 17 00:00:00 2001 From: Aryeh Gregor Date: Thu, 10 Dec 2009 01:05:13 +0000 Subject: [PATCH] Add new ExternalAuth mechanism, Hardcoded This just lets you enter the database by hand in LocalSettings.php, for testing. Now other people can actually test ExternalAuth without having a vBulletin license. 23 lines not counting whitespace/comments/closing braces, and took me ~20 minutes to write. --- includes/AutoLoader.php | 1 + includes/extauth/Hardcoded.php | 77 ++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 includes/extauth/Hardcoded.php diff --git a/includes/AutoLoader.php b/includes/AutoLoader.php index 66fe8ddede..3daa08b111 100644 --- a/includes/AutoLoader.php +++ b/includes/AutoLoader.php @@ -75,6 +75,7 @@ $wgAutoloadLocalClasses = array( 'ExternalStoreHttp' => 'includes/ExternalStoreHttp.php', 'ExternalStore' => 'includes/ExternalStore.php', 'ExternalUser' => 'includes/ExternalUser.php', + 'ExternalUser_Hardcoded' => 'includes/extauth/Hardcoded.php', 'ExternalUser_vB' => 'includes/extauth/vB.php', 'FatalError' => 'includes/Exception.php', 'FakeTitle' => 'includes/FakeTitle.php', diff --git a/includes/extauth/Hardcoded.php b/includes/extauth/Hardcoded.php new file mode 100644 index 0000000000..4d63f9d17b --- /dev/null +++ b/includes/extauth/Hardcoded.php @@ -0,0 +1,77 @@ + array( + * 'password' => 'literal string', + * 'emailaddress' => 'bob@example.com', + * ), + * ); + * + * Multiple names may be provided. The keys of the inner arrays can be either + * 'password', or the name of any preference. + */ +class ExternalUser_Hardcoded extends ExternalUser { + private $mName; + + protected function initFromName( $name ) { + global $wgExternalAuthConf; + + if ( isset( $wgExternalAuthConf[$name] ) ) { + $this->mName = $name; + return true; + } + return false; + } + + protected function initFromId( $id ) { + return $this->initFromName( $id ); + } + + public function getId() { + return $this->mName; + } + + public function getName() { + return $this->mName; + } + + public function authenticate( $password ) { + global $wgExternalAuthConf; + + return isset( $wgExternalAuthConf[$this->mName]['password'] ) + && $wgExternalAuthConf[$this->mName]['password'] == $password; + } + + public function getPref( $pref ) { + global $wgExternalAuthConf; + + if ( isset( $wgExternalAuthConf[$this->mName][$pref] ) ) { + return $wgExternalAuthConf[$this->mName][$pref]; + } + return null; + } + + # TODO: Implement setPref() via regex on LocalSettings. (Just kidding.) +} -- 2.20.1