95 lines
2.4 KiB
PHP
95 lines
2.4 KiB
PHP
<?php defined('SYSPATH') or die('No direct access allowed.');
|
|
|
|
/**
|
|
* @package PTA
|
|
* @subpackage Auth
|
|
* @category Models
|
|
* @author Deon George
|
|
* @copyright (c) 2010 Deon George
|
|
* @license http://dev.leenooks.net/license.html
|
|
*/
|
|
class Model_Auth_UserDefault extends Model_Auth_User {
|
|
protected $_table_names_plural = FALSE;
|
|
protected $_disable_wild_select = TRUE;
|
|
protected $_disable_join_table_name = TRUE;
|
|
protected $_disable_limit = TRUE;
|
|
|
|
// Validation rules
|
|
protected $_rules = array(
|
|
'admin_name' => array(
|
|
'not_empty' => NULL,
|
|
'min_length' => array(4),
|
|
'max_length' => array(8),
|
|
),
|
|
'password' => array(
|
|
'not_empty' => NULL,
|
|
'min_length' => array(5),
|
|
'max_length' => array(16),
|
|
),
|
|
'password_confirm' => array(
|
|
'matches_ifset' => array('password'),
|
|
),
|
|
);
|
|
|
|
// Columns to ignore
|
|
protected $_ignored_columns = array('password_confirm');
|
|
|
|
// Field labels
|
|
protected $_labels = array(
|
|
'admin_name' => 'username',
|
|
'email' => 'email address',
|
|
'password' => 'password',
|
|
'password_confirm' => 'password confirmation',
|
|
);
|
|
|
|
/**
|
|
* Validates login information from an array, and optionally redirects
|
|
* after a successful login.
|
|
*
|
|
* @param array values to check
|
|
* @param string URI or URL to redirect to
|
|
* @return boolean
|
|
*/
|
|
public function login(array & $array, $redirect = FALSE) {
|
|
$fieldname = 'admin_name'; // @todo This should be defined in a config or database driver file
|
|
$array = Validate::factory($array)
|
|
->label('username', $this->_labels[$fieldname])
|
|
->label('password', $this->_labels['password'])
|
|
->filter(TRUE, 'trim')
|
|
->filter('username','strtoupper')
|
|
->rules('username', $this->_rules[$fieldname])
|
|
->rules('password', $this->_rules['password']);
|
|
|
|
// Get the remember login option
|
|
$remember = isset($array['remember']);
|
|
|
|
// Login starts out invalid
|
|
$status = FALSE;
|
|
|
|
if ($array->check())
|
|
{
|
|
// Attempt to load the user
|
|
$this->where($fieldname, '=', $array['username'])->find();
|
|
|
|
if ($this->loaded() AND Auth::instance()->login($this, $array['password'], $remember))
|
|
{
|
|
if (is_string($redirect))
|
|
{
|
|
// Redirect after a successful login
|
|
Request::instance()->redirect($redirect);
|
|
}
|
|
|
|
// Login is successful
|
|
$status = TRUE;
|
|
}
|
|
else
|
|
{
|
|
$array->error('admin_name', 'invalid');
|
|
}
|
|
}
|
|
|
|
return $status;
|
|
}
|
|
}
|
|
?>
|