SHARE
TWEET

Untitled

a guest May 19th, 2017 35 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2. abstract class AuthAdapter
  3. {
  4.     /**
  5.      * Adaptador por defecto
  6.      *
  7.      * @var string
  8.      */
  9.     protected static $_defaultAdapter = 'model';
  10.  
  11.     /**
  12.      * Mensaje de Error
  13.      *
  14.      * @var String
  15.      */
  16.     protected $_error = null;
  17.    
  18.     /**
  19.      * Campo de la BD donde se guarda el nombre de usuario
  20.      * @var String
  21.      */
  22.     protected $_login = 'login';
  23.    
  24.     /**
  25.      * Campo de la BD donde se guarda la clave/pass
  26.      * @var String
  27.      */
  28.     protected $_pass = 'password';
  29.    
  30.     /**
  31.      * Algoritmo de cifrado de la clave/pass
  32.      * @var String
  33.      */
  34.     protected $_algos = 'md5';
  35.    
  36.     protected $_key = 'jt2D14KIdRs7LA==';
  37.    
  38.     protected $_checkSession = TRUE;
  39.    
  40.     /**
  41.      * Constructor
  42.      */
  43.     public function __construct()
  44.     {
  45.         $config = Config::read('config');
  46.         if($config['auth']['key'] !== $this->_key){
  47.             $this->_key = $config['auth']['key'];
  48.         }
  49.         if($config['auth']['checkSession']){
  50.             $this->_checkSession = TRUE;
  51.         }
  52.     }
  53.    
  54.     /**
  55.      * Asigna el nombre de campo para el campo de nombre de usuario
  56.      *
  57.      * @param string $field nombre de campo que recibe por POST
  58.      */
  59.     public function setLogin($field)
  60.     {
  61.         $this->_login = $field;
  62.     }
  63.    
  64.     /**
  65.      * Asigna el nombre de campo para el campo de clave
  66.      *
  67.      * @param string $field nombre de campo que recibe por POST
  68.      */
  69.     public function setPass($field)
  70.     {
  71.         $this->_pass = $field;
  72.     }
  73.    
  74.     /**
  75.      * Realiza el proceso de identificacion.
  76.      *
  77.      * @param void
  78.      * @return bool
  79.      */
  80.     public function identify ()
  81.     {
  82.         if ($this->isValid()) {
  83.             return TRUE;
  84.         } else {
  85.             // check
  86.             if (isset($_POST['mode']) && $_POST['mode'] === 'auth') {
  87.                 //data was posted.
  88.                 return $this->_check($_POST[$this->_login], $_POST[$this->_pass]);
  89.             } else {
  90.                 //FAIL
  91.                 return FALSE;
  92.             }
  93.         }
  94.     }
  95.    
  96.     /**
  97.      * check
  98.      * @param $username
  99.      * @param $password
  100.      * @return bool
  101.      */
  102.     abstract protected function _check ($username, $password);
  103.    
  104.     /**
  105.      * logout
  106.      *
  107.      * @param void
  108.      * @return void
  109.      */
  110.     public function logout ()
  111.     {
  112.         Session::set($this->_key, FALSE);
  113.         session_destroy();
  114.     }
  115.    
  116.     /**
  117.      * Verifica que exista una identidad vĂ¡lida para la session actual
  118.      *
  119.      * @return bool
  120.      */
  121.     public function isValid()
  122.     {
  123.         $this->_checkSession();
  124.         if(Session::has($this->_key) && Session::get($this->_key) === TRUE){
  125.             return TRUE;
  126.         }
  127.         return FALSE;
  128.     }
  129.    
  130.     /**
  131.      * @return void
  132.      */
  133.     private function _checkSession()
  134.     {
  135.         session_regenerate_id();
  136.         if(!$this->_checkSession){
  137.             return;
  138.         }
  139.         Session::set('USERAGENT', $_SERVER['HTTP_USER_AGENT']);
  140.         Session::set('REMOTEADDR', $_SERVER['REMOTE_ADDR']);
  141.        
  142.         if ($_SERVER['REMOTE_ADDR'] !== Session::get('REMOTEADDR') ||
  143.             $_SERVER['HTTP_USER_AGENT'] !== Session::get('USERAGENT')){
  144.             session_destroy();
  145.         }
  146.     }
  147.    
  148.     /**
  149.      * @param bool $check
  150.      */
  151.     public function setCheckSession($check)
  152.     {
  153.         $this->_checkSession = $check;
  154.     }
  155.    
  156.     /**
  157.      * Indica algoritmo de cifrado
  158.      * @param string $algos
  159.      */
  160.     public function setAlgos($algos, $salt=NULL)
  161.     {
  162.         $this->_algos = $algos;
  163.     }
  164.    
  165.     /**
  166.      * @return string
  167.      */
  168.     public function getError ()
  169.     {
  170.         return $this->_error;
  171.     }
  172.    
  173.     /**
  174.      * @param string $_error
  175.      */
  176.     public function setError ($error)
  177.     {
  178.         self::$this->_error = $error;
  179.     }
  180.    
  181.     /**
  182.      * Logger de las operaciones Auth
  183.      * @param $msg
  184.      */
  185.     public static function log($msg)
  186.     {
  187.         $date = date('Y-m-d', strtotime('now'));
  188.         Logger::custom('AUTH', $msj, "auth-$date");
  189.     }
  190.    
  191.     /**
  192.      * Obtiene el adaptador para Auth
  193.      *
  194.      * @param string $adapter (model, openid, oauth)
  195.      */
  196.     public static function factory($adapter = NULL)
  197.     {
  198.         if(!$adapter) {
  199.             $adapter = self::$_defaultAdapter;
  200.         }
  201.  
  202.         require_once CORE_PATH . "libs/auth/adapters/{$adapter}_auth.php";
  203.         $class = $adapter.'auth';
  204.        
  205.         return new $class;
  206.     }
  207.  
  208.     /**
  209.      * Cambia el adaptador por defecto
  210.      *
  211.      * @param string $adapter nombre del adaptador por defecto
  212.      */
  213.     public static function setDefault ($adapter = 'model')
  214.     {
  215.         self::$_defaultAdapter = $adapter;
  216.     }
  217. }
RAW Paste Data
Top