SHARE
TWEET

Untitled

a guest May 19th, 2017 36 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($login=NULL, $pass=NULL){
  44.         if($login){
  45.             $this->_login = $login;
  46.         }
  47.         if($pass){
  48.             $this->_pass = $pass;
  49.         }
  50.         $config = Config::read('config');
  51.         if($config['auth']['key'] !== $this->_key){
  52.             $this->_key = $config['auth']['key'];
  53.         }
  54.         if($config['auth']['checkSession']){
  55.             $this->_checkSession = TRUE;
  56.         }
  57.     }
  58.    
  59.     /**
  60.      * Realiza el proceso de identificacion.
  61.      *
  62.      * @param void
  63.      * @return bool
  64.      */
  65.     public function identify ()
  66.     {
  67.         if (self::isValid()) {
  68.             return TRUE;
  69.         } else {
  70.             // check
  71.             if (isset($_POST['mode']) && $_POST['mode'] === 'auth') {
  72.                 //data was posted.
  73.                 return $this->_check($_POST[$this->_login], $_POST[$this->_pass]);
  74.             } else {
  75.                 //FAIL
  76.                 return FALSE;
  77.             }
  78.         }
  79.     }
  80.    
  81.     /**
  82.      * check
  83.      * @param $username
  84.      * @param $password
  85.      * @return bool
  86.      */
  87.     abstract protected function _check ($username, $password);
  88.    
  89.     /**
  90.      * logout
  91.      *
  92.      * @param void
  93.      * @return void
  94.      */
  95.     public function logout ()
  96.     {
  97.         Session::set($this->_key, FALSE);
  98.         session_destroy();
  99.     }
  100.    
  101.     /**
  102.      * Verifica que exista una identidad vĂ¡lida para la session actual
  103.      *
  104.      * @return bool
  105.      */
  106.     public function isValid()
  107.     {
  108.         $this->_checkSession();
  109.         if(Session::has($this->_key) && Session::get($this->_key) === TRUE){
  110.             return TRUE;
  111.         }
  112.         return FALSE;
  113.     }
  114.    
  115.     /**
  116.      * @return void
  117.      */
  118.     private function _checkSession()
  119.     {
  120.         session_regenerate_id();
  121.         if(!$this->_checkSession){
  122.             return;
  123.         }
  124.         Session::set('USERAGENT', $_SERVER['HTTP_USER_AGENT']);
  125.         Session::set('REMOTEADDR', $_SERVER['REMOTE_ADDR']);
  126.        
  127.         if ($_SERVER['REMOTE_ADDR'] !== Session::get('REMOTEADDR') ||
  128.             $_SERVER['HTTP_USER_AGENT'] !== Session::get('USERAGENT')){
  129.             session_destroy();
  130.         }
  131.     }
  132.    
  133.     /**
  134.      * @param bool $check
  135.      */
  136.     public function setCheckSession($check)
  137.     {
  138.         $this->_checkSession = $check;
  139.     }
  140.    
  141.     /**
  142.      * Indica algoritmo de cifrado
  143.      * @param string $algos
  144.      */
  145.     public function setAlgos($algos, $salt=NULL)
  146.     {
  147.         $this->_algos = $algos;
  148.     }
  149.    
  150.     /**
  151.      * @return string
  152.      */
  153.     public function getError ()
  154.     {
  155.         return $this->_error;
  156.     }
  157.    
  158.     /**
  159.      * @param string $_error
  160.      */
  161.     public function setError ($error)
  162.     {
  163.         self::$this->_error = $error;
  164.     }
  165.    
  166.     /**
  167.      * Logger de las operaciones Auth
  168.      * @param $msg
  169.      */
  170.     public static function log($msg)
  171.     {
  172.         $date = date('Y-m-d', strtotime('now'));
  173.         Logger::custom('AUTH', $msj, "auth-$date");
  174.     }
  175.    
  176.     /**
  177.      * Obtiene el adaptador para Auth
  178.      *
  179.      * @param string $adapter (model, openid, oauth)
  180.      */
  181.     public static function factory($adapter = NULL)
  182.     {
  183.         if(!$adapter) {
  184.             $adapter = self::$_defaultAdapter;
  185.         }
  186.  
  187.         require_once CORE_PATH . "libs/auth/adapters/{$adapter}_auth.php";
  188.         $class = $adapter.'auth';
  189.        
  190.         return new $class;
  191.     }
  192.  
  193.     /**
  194.      * Cambia el adaptador por defecto
  195.      *
  196.      * @param string $adapter nombre del adaptador por defecto
  197.      */
  198.     public static function setDefault ($adapter = 'model')
  199.     {
  200.         self::$_defaultAdapter = $adapter;
  201.     }
  202. }
RAW Paste Data
Top