KumbiaPHP  beta2
Framework PHP
 Todo Estructuras de Datos Namespaces Archivos Funciones Variables Páginas
auth2.php
Ir a la documentación de este archivo.
1 <?php
27 abstract class Auth2
28 {
29 
35  protected $_error = null;
41  protected $_login = 'login';
47  protected $_pass = 'password';
53  protected $_algos = 'md5';
59  protected $_key = 'jt2D14KIdRs7LA==';
65  protected $_checkSession = TRUE;
71  protected static $_defaultAdapter = 'model';
72 
78  public function setLogin($field)
79  {
80  $this->_login = $field;
81  }
82 
88  public function setPass($field)
89  {
90  $this->_pass = $field;
91  }
92 
98  public function setKey($key)
99  {
100  $this->_key = $key;
101  }
102 
111  public function identify($login=NULL, $pass=NULL, $mode=NULL)
112  {
113  if ($this->isValid()) {
114  return TRUE;
115  } else {
116  // check
117  if ( ($mode=='auth') or (isset($_POST['mode']) && $_POST['mode'] === 'auth') ) {
118  $login = empty($login) ? Input::post($this->_login) : $login;
119  $pass = empty($pass) ? Input::post($this->_pass) : $pass;
120  return $this->_check($login, $pass);
121  } else {
122  //FAIL
123  return FALSE;
124  }
125  }
126  }
127 
135  abstract protected function _check($username, $password);
136 
143  public function logout()
144  {
145  Session::set($this->_key, FALSE);
146  session_destroy();
147  }
148 
154  public function isValid()
155  {
156  session_regenerate_id(TRUE);
157 
158  if ($this->_checkSession) {
159  $this->_checkSession();
160  }
161 
162  return Session::has($this->_key) && Session::get($this->_key) === TRUE;
163  }
164 
169  private function _checkSession()
170  {
171  Session::set('USERAGENT', $_SERVER['HTTP_USER_AGENT']);
172  Session::set('REMOTEADDR', $_SERVER['REMOTE_ADDR']);
173 
174  if ($_SERVER['REMOTE_ADDR'] !== Session::get('REMOTEADDR') ||
175  $_SERVER['HTTP_USER_AGENT'] !== Session::get('USERAGENT')) {
176  session_destroy();
177  }
178  }
179 
185  public function setCheckSession($check)
186  {
187  $this->_checkSession = $check;
188  }
189 
195  public function setAlgos($algos, $salt = NULL)
196  {
197  $this->_algos = $algos;
198  }
199 
205  public function getError()
206  {
207  return $this->_error;
208  }
209 
215  public function setError($error)
216  {
217  $this->_error = $error;
218  }
219 
224  public static function log($msg)
225  {
226  $date = date('Y-m-d', strtotime('now'));
227  Logger::custom('AUTH', $msg, "auth-$date.log");
228  }
229 
235  public static function factory($adapter = NULL)
236  {
237  if (!$adapter) {
238  $adapter = self::$_defaultAdapter;
239  }
240 
241  require_once CORE_PATH . "libs/auth2/adapters/{$adapter}_auth.php";
242  $class = $adapter . 'auth';
243 
244  return new $class;
245  }
246 
252  public static function setDefault($adapter)
253  {
254  self::$_defaultAdapter = $adapter;
255  }
256 
257 }