Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- abstract class AuthAdapter
- {
- /**
- * Adaptador por defecto
- *
- * @var string
- */
- protected static $_defaultAdapter = 'model';
- /**
- * Mensaje de Error
- *
- * @var String
- */
- protected $_error = null;
- /**
- * Campo de la BD donde se guarda el nombre de usuario
- * @var String
- */
- protected $_login = 'login';
- /**
- * Campo de la BD donde se guarda la clave/pass
- * @var String
- */
- protected $_pass = 'password';
- /**
- * Algoritmo de cifrado de la clave/pass
- * @var String
- */
- protected $_algos = 'md5';
- protected $_key = 'jt2D14KIdRs7LA==';
- protected $_checkSession = TRUE;
- /**
- * Constructor
- */
- public function __construct()
- {
- $config = Config::read('config');
- if($config['auth']['key'] !== $this->_key){
- $this->_key = $config['auth']['key'];
- }
- if($config['auth']['checkSession']){
- $this->_checkSession = TRUE;
- }
- }
- /**
- * Asigna el nombre de campo para el campo de nombre de usuario
- *
- * @param string $field nombre de campo que recibe por POST
- */
- public function setLogin($field)
- {
- $this->_login = $field;
- }
- /**
- * Asigna el nombre de campo para el campo de clave
- *
- * @param string $field nombre de campo que recibe por POST
- */
- public function setPass($field)
- {
- $this->_pass = $field;
- }
- /**
- * Realiza el proceso de identificacion.
- *
- * @param void
- * @return bool
- */
- public function identify ()
- {
- if ($this->isValid()) {
- return TRUE;
- } else {
- // check
- if (isset($_POST['mode']) && $_POST['mode'] === 'auth') {
- //data was posted.
- return $this->_check($_POST[$this->_login], $_POST[$this->_pass]);
- } else {
- //FAIL
- return FALSE;
- }
- }
- }
- /**
- * check
- * @param $username
- * @param $password
- * @return bool
- */
- abstract protected function _check ($username, $password);
- /**
- * logout
- *
- * @param void
- * @return void
- */
- public function logout ()
- {
- Session::set($this->_key, FALSE);
- session_destroy();
- }
- /**
- * Verifica que exista una identidad válida para la session actual
- *
- * @return bool
- */
- public function isValid()
- {
- $this->_checkSession();
- if(Session::has($this->_key) && Session::get($this->_key) === TRUE){
- return TRUE;
- }
- return FALSE;
- }
- /**
- * @return void
- */
- private function _checkSession()
- {
- session_regenerate_id();
- if(!$this->_checkSession){
- return;
- }
- Session::set('USERAGENT', $_SERVER['HTTP_USER_AGENT']);
- Session::set('REMOTEADDR', $_SERVER['REMOTE_ADDR']);
- if ($_SERVER['REMOTE_ADDR'] !== Session::get('REMOTEADDR') ||
- $_SERVER['HTTP_USER_AGENT'] !== Session::get('USERAGENT')){
- session_destroy();
- }
- }
- /**
- * @param bool $check
- */
- public function setCheckSession($check)
- {
- $this->_checkSession = $check;
- }
- /**
- * Indica algoritmo de cifrado
- * @param string $algos
- */
- public function setAlgos($algos, $salt=NULL)
- {
- $this->_algos = $algos;
- }
- /**
- * @return string
- */
- public function getError ()
- {
- return $this->_error;
- }
- /**
- * @param string $_error
- */
- public function setError ($error)
- {
- self::$this->_error = $error;
- }
- /**
- * Logger de las operaciones Auth
- * @param $msg
- */
- public static function log($msg)
- {
- $date = date('Y-m-d', strtotime('now'));
- Logger::custom('AUTH', $msj, "auth-$date");
- }
- /**
- * Obtiene el adaptador para Auth
- *
- * @param string $adapter (model, openid, oauth)
- */
- public static function factory($adapter = NULL)
- {
- if(!$adapter) {
- $adapter = self::$_defaultAdapter;
- }
- require_once CORE_PATH . "libs/auth/adapters/{$adapter}_auth.php";
- $class = $adapter.'auth';
- return new $class;
- }
- /**
- * Cambia el adaptador por defecto
- *
- * @param string $adapter nombre del adaptador por defecto
- */
- public static function setDefault ($adapter = 'model')
- {
- self::$_defaultAdapter = $adapter;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement