diff options
Diffstat (limited to 'modules/auth/libraries/Auth.php')
-rw-r--r-- | modules/auth/libraries/Auth.php | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/modules/auth/libraries/Auth.php b/modules/auth/libraries/Auth.php new file mode 100644 index 00000000..9bc59ec7 --- /dev/null +++ b/modules/auth/libraries/Auth.php @@ -0,0 +1,93 @@ +<?php defined("SYSPATH") or die("No direct script access."); +/** + * Gallery - a web based photo album viewer and editor + * Copyright (C) 2000-2008 Bharat Mediratta + * + * This program is free software; 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. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. + */ +/** + * Implement the Authentication. + * + * This code was heavily influenced by code from: + * - http://code.google.com/p/kohana-mptt/ + * - http://code.google.com/p/kohana-mptt/wiki/Documentation + * - http://code.google.com/p/s7ncms/source/browse/trunk/modules/s7ncms/libraries/ORM_MPTT.php + * + * It was extended to allow configurable drivers + */ +class Auth_Core implements Auth_Driver { + + // Session singleton + private static $instance; + + // Configuration and driver + protected $_config; + protected $_driver; + + /** + * Singleton instance of Session. + */ + public static function instance($config = array()) { + if (self::$instance == NULL) { + // Create a new instance + self::$instance = new Auth($config); + } + + return self::$instance; + } + + /** + * On first instance creation, sets up the driver. + */ + protected function __construct($config = array()) { + // Load config + $config += Kohana::config('auth'); + + // Set the driver class name + $driver = "Auth_{$config['driver']}_Driver"; + if (!Kohana::auto_load($driver)) { + // @todo change to gallery specific exceptions + throw new Kohana_Exception("Specified Driver: '{$config['driver']}' has not been defined."); + } + + // Load the driver + $driver = new $driver(); + + if (!($driver instanceof Auth_Driver)) { + // @todo change to gallery specific exceptions + throw new Kohana_Exception( + "Specified Driver: '{$config['driver']}' has not implemented 'Auth_Driver'."); + } + + $this->_driver = $driver; + $this->_config = $config; + + Kohana::log('debug', 'Auth Library initialized'); + } + + /** + * @see Auth_Driver::set_user_password + */ + public function set_user_password($user_id, $password) { + return $this->_driver->set_user_password($user_id, $password); + } + + /** + * @see Auth_Driver::is_valid_password + */ + public function is_valid_password($user_id, $password) { + return $this->_driver->is_valid_password($user_id, $password); + } +} |