1
0
Fork 0
MySQLDumper/library/Msd/Auth/Adapter/Ini.php
2011-06-10 21:55:32 +00:00

116 Zeilen
2,6 KiB
PHP

<?php
/**
* This file is part of MySQLDumper released under the GNU/GPL 2 license
* http://www.mysqldumper.net
*
* @package MySQLDumper
* @subpackage Auth_adapter
* @version SVN: $Rev$
* @author $Author$
*/
/**
* Adapter to use Zend_Auth with INI files.
*
* @package MySQLDumper
* @subpackage Auth_adapter
*/
class Msd_Auth_Adapter_Ini implements Zend_Auth_Adapter_Interface
{
/**
* User database
*
* @var array
*/
private $_users = null;
/**
* Username for authentication.
*
* @var string
*/
private $_username = null;
/**
* Password for authentication.
*
* @var string
*/
private $_password = null;
/**
* Class constructor
*
* @param string $iniFilename Filename for registered users
*
* @return void
*/
public function __construct($iniFilename)
{
if (!file_exists($iniFilename)) {
throw new Msd_Exception(
'INI file with authentication information doesn\'t exists!'
);
}
$this->_users = parse_ini_file($iniFilename, true);
}
/**
* set the username, which is used for authentication.
*
* @return void
*/
public function setUsername($username)
{
$this->_username = (string) $username;
}
/**
* Set the password, which is used for authentication.
*
* @return void
*/
public function setPassword($password)
{
$this->_password = (string) $password;
}
/**
* Authenticate with the given credentials.
*
* @return Zend_Auth_Result
*/
public function authenticate()
{
if ($this->_username == null || $this->_password == null) {
throw new Msd_Exception(
'You must set the username and password first!'
);
}
$authResult = false;
foreach ($this->_users as $userId => $user) {
if (
$this->_username == $user['name'] &&
md5($this->_password) == $user['pass']
) {
$authResult = array(
'id' => $userId,
'name' => $user['name'],
);
}
}
if ($authResult === false) {
return new Zend_Auth_Result(
Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID,
array(),
array('L_LOGIN_INVALID_USER')
);
}
return new Zend_Auth_Result(
Zend_Auth_Result::SUCCESS,
$authResult
);
}
}