From 14ea955fa31eb9c01d7f05f6afdbb57455190c6a Mon Sep 17 00:00:00 2001 From: Ben Roberts Date: Wed, 4 Jan 2012 13:45:43 +0000 Subject: [PATCH] Added None and Config auth plugins --- .../Auth/Plugin/Config.class.php | 79 +++++++++++++++++++ .../Auth/Plugin/Config/User.class.php | 77 ++++++++++++++++++ .../Auth/Plugin/None.class.php | 37 +++++++++ 3 files changed, 193 insertions(+) create mode 100644 source/lib/SihnonFramework/Auth/Plugin/Config.class.php create mode 100644 source/lib/SihnonFramework/Auth/Plugin/Config/User.class.php create mode 100644 source/lib/SihnonFramework/Auth/Plugin/None.class.php diff --git a/source/lib/SihnonFramework/Auth/Plugin/Config.class.php b/source/lib/SihnonFramework/Auth/Plugin/Config.class.php new file mode 100644 index 0000000..5bc46e6 --- /dev/null +++ b/source/lib/SihnonFramework/Auth/Plugin/Config.class.php @@ -0,0 +1,79 @@ +config = $config; + + Sihnon_Auth_Plugin_Config_User::init($config); + } + + /* + * IPlugin methods + */ + + public static function create(SihnonFramework_Config $config) { + return new self($config); + } + + public function userExists($username) { + return Sihnon_Auth_Plugin_Config_User::exists($username); + } + + public function listUsers() { + return array( + Sihnon_Auth_Plugin_Config_User::loadAdmin(), + ); + } + + public function authenticate($username, $password) { + $user = Sihnon_Auth_Plugin_Config_User::load($username); + + if ( ! $user->checkPassword($password)) { + throw new Sihnon_Exception_IncorrectPassword(); + } + + return $user; + } + + public function authenticateSession($username) { + return Sihnon_Auth_Plugin_Config_User::load($username); + } + + /* + * IUpdateable methods + */ + + public function addUser($username, $password) { + throw new Sihnon_Exception_NotImplemented(); + } + + public function removeUser(Sihnon_Auth_IUser $user) { + throw new Sihnon_Exception_NotImplemented(); + } + + public function changePassword(Sihnon_Auth_IUser $user, $new_password) { + $user->changePassword($new_password); + } + + /* + * IPermissionable methods + */ + + public function isAdministrator(Sihnon_Auth_IUser $user) { + return $user->isAdministrator(); + } + + public function hasPermission(Sihnon_Auth_IUser $user, $permission) { + return $user->isAdministrator(); + } + +} + +?> \ No newline at end of file diff --git a/source/lib/SihnonFramework/Auth/Plugin/Config/User.class.php b/source/lib/SihnonFramework/Auth/Plugin/Config/User.class.php new file mode 100644 index 0000000..8c93dfb --- /dev/null +++ b/source/lib/SihnonFramework/Auth/Plugin/Config/User.class.php @@ -0,0 +1,77 @@ +username = static::$config->get('auth.Config.admin-username'); + $user->password = static::$config->get('auth.Config.admin-password'); + + return $user; + } + + public static function loadAdmin() { + return static::load(static::administratorUsername()); + } + + public function username() { + return $this->username; + } + + public function checkPassword($password) { + var_dump($password, sha1($password), $this->password); + return ($this->password == sha1($password)); + } + + public function changePassword($new_password) { + $this->password = sha1($new_password); + static::$config->set('auth.Config.admin-password', $this->password); + } + + public function isAdministrator() { + return true; + } + + protected static function administratorUsername() { + if ( ! static::$config->exists('auth.Config.admin-username')) { + return 'admin'; + } + + return static::$config->get('auth.Config.admin-username'); + } + + public function __get($name) { + switch ($name) { + case 'username': { + return $this->username; + } break; + + default: { + throw new Sihnon_Exception_InvalidProperty($name); + } break; + } + } + + public function __set($name, $value) { + throw new Sihnon_Exception_NotImplemented(); + } +} + +?> \ No newline at end of file diff --git a/source/lib/SihnonFramework/Auth/Plugin/None.class.php b/source/lib/SihnonFramework/Auth/Plugin/None.class.php new file mode 100644 index 0000000..ca02176 --- /dev/null +++ b/source/lib/SihnonFramework/Auth/Plugin/None.class.php @@ -0,0 +1,37 @@ + \ No newline at end of file