abstract Auth
› Kohana_Auth
Class Contents
Constants
- None
Properties
- None
Class declared in MODPATH/auth/classes/auth.php on line 3.
Methods
public __construct( )
› Kohana_Auth
Source Code
public function __construct($config = array())
{
// Clean up the salt pattern and split it into an array
$config['salt_pattern'] = preg_split('/,\s*/', Kohana::config('auth')->get('salt_pattern'));
// Save the config in the object
$this->_config = $config;
$this->_session = Session::instance();
}
abstract protected _login( )
› Kohana_Auth
Source Code
abstract protected function _login($username, $password, $remember);
abstract public check_password( )
› Kohana_Auth
Source Code
abstract public function check_password($password);
protected complete_login( )
› Kohana_Auth
Source Code
protected function complete_login($user)
{
// Regenerate session_id
$this->_session->regenerate();
// Store username in session
$this->_session->set($this->_config['session_key'], $user);
return TRUE;
}
public static factory( )
› Kohana_Auth
Source Code
public static function factory($config = array())
{
return new Auth($config);
}
public find_salt( )
› Kohana_Auth
Source Code
public function find_salt($password)
{
$salt = '';
foreach ($this->_config['salt_pattern'] as $i => $offset)
{
// Find salt characters, take a good long look...
$salt .= substr($password, $offset + $i, 1);
}
return $salt;
}
public get_user( )
› Kohana_Auth
Source Code
public function get_user()
{
return $this->_session->get($this->_config['session_key'], FALSE);
}
public hash( )
› Kohana_Auth
Source Code
public function hash($str)
{
return hash($this->_config['hash_method'], $str);
}
public hash_password( )
› Kohana_Auth
Source Code
public function hash_password($password, $salt = FALSE)
{
if ($salt === FALSE)
{
// Create a salt seed, same length as the number of offsets in the pattern
$salt = substr($this->hash(uniqid(NULL, TRUE)), 0, count($this->_config['salt_pattern']));
}
// Password hash that the salt will be inserted into
$hash = $this->hash($salt.$password);
// Change salt to an array
$salt = str_split($salt, 1);
// Returned password
$password = '';
// Used to calculate the length of splits
$last_offset = 0;
foreach ($this->_config['salt_pattern'] as $offset)
{
// Split a new part of the hash off
$part = substr($hash, 0, $offset - $last_offset);
// Cut the current part out of the hash
$hash = substr($hash, $offset - $last_offset);
// Add the part to the password, appending the salt character
$password .= $part.array_shift($salt);
// Set the last offset to the current offset
$last_offset = $offset;
}
// Return the password, with the remaining hash appended
return $password.$hash;
}
public static instance( )
› Kohana_Auth
Source Code
public static function instance()
{
if ( ! isset(Auth::$_instance))
{
// Load the configuration for this type
$config = Kohana::config('auth');
if ( ! $type = $config->get('driver'))
{
$type = 'ORM';
}
// Set the session class name
$class = 'Auth_'.ucfirst($type);
// Create a new session instance
Auth::$_instance = new $class($config);
}
return Auth::$_instance;
}
public logged_in( )
› Kohana_Auth
Source Code
public function logged_in($role = NULL)
{
return FALSE !== $this->get_user();
}
public login( )
› Kohana_Auth
Source Code
public function login($username, $password, $remember = FALSE)
{
if (empty($password))
return FALSE;
if (is_string($password))
{
// Get the salt from the stored password
$salt = $this->find_salt($this->password($username));
// Create a hashed password using the salt from the stored password
$password = $this->hash_password($password, $salt);
}
return $this->_login($username, $password, $remember);
}
public logout( )
› Kohana_Auth
Source Code
public function logout($destroy = FALSE, $logout_all = FALSE)
{
if ($destroy === TRUE)
{
// Destroy the session completely
$this->_session->destroy();
}
else
{
// Remove the user from the session
$this->_session->delete($this->_config['session_key']);
// Regenerate session_id
$this->_session->regenerate();
}
// Double check
return ! $this->logged_in();
}