KumbiaPHP beta2-dev
Framework PHP en español
|
00001 <?php 00022 class ModelAuth extends Auth2 00023 { 00029 protected $_model = 'users'; 00030 00036 protected $_sessionNamespace = 'default'; 00037 00043 protected $_fields = array('id'); 00044 00050 public function setModel($model) 00051 { 00052 $this->_model = $model; 00053 } 00054 00060 public function setSessionNamespace($namespace) 00061 { 00062 $this->_sessionNamespace = $namespace; 00063 } 00064 00070 public function setFields($fields) 00071 { 00072 $this->_fields = $fields; 00073 } 00074 00082 protected function _check ($username, $password) 00083 { 00084 // TODO $_SERVER['HTTP_HOST'] puede ser una variable por si quieren ofrecer autenticacion desde cualquier host indicado 00085 if(strpos($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST']) === FALSE){ 00086 self::log('INTENTO HACK IP '.$_SERVER['HTTP_REFERER']); 00087 $this->setError('Intento de Hack!'); 00088 return FALSE; 00089 } 00090 00091 // TODO: revisar seguridad 00092 $password = hash($this->_algos, $password); 00093 //$username = addslashes($username); 00094 $username = filter_var($username, FILTER_SANITIZE_MAGIC_QUOTES); 00095 00096 $Model = Load::model($this->_model); 00097 if ($user = $Model->find_first("$this->_login = '$username' AND $this->_pass = '$password'")) { 00098 // Carga los atributos indicados en sesion 00099 foreach($this->_fields as $field) { 00100 Session::set($field, $user->$field, $this->_sessionNamespace); 00101 } 00102 00103 Session::set($this->_key, TRUE); 00104 return TRUE; 00105 } 00106 00107 $this->setError('Error Login!'); 00108 Session::set($this->_key, FALSE); 00109 return FALSE; 00110 } 00111 }