123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- <?php
- /**
- * Clase para validar la sesión del usuario y que el usuario esté activo.
- *
- * @author Alejandro
- */
- class ValidaSesion {
- private $acceso, $edicion;//guarda si el usuario puede acceder y/o editar
- private $error, $hasError = false;
-
- /**
- * Constructor
- *
- * @param object $pdo Conexión activa a base de datos a través de PDO
- * @param int $submenu ID del submenú que se busca
- * @return boolean
- */
- function __construct($pdo, $submenu){
- if (session_status() == PHP_SESSION_NONE) {
- session_start();
- }
-
- $session_life = 1*60*60;//1 hora convertido a segundos
- // check to see if $_SESSION["timeout"] is set
- if (isset($_SESSION['timeout'])) {
- // calculate the session's "time to live"
- $sessionTTL = time() - $_SESSION['timeout'];
- if ($sessionTTL > $session_life) {
- $this->terminaSesion();
- }
- }else
- $this->terminaSesion();
- $_SESSION['timeout'] = time();
-
- if(!isset($_SESSION['usuario_id']) || $_SESSION['usuario_id'] == '') $this->terminaSesion();
-
- //existe id en sesión?
- if(array_key_exists('usuario_id', $_SESSION) && is_numeric($_SESSION['usuario_id']) && $_SESSION['usuario_id'] > 0){
- if(is_int($submenu)){
- //valida permisos
- $stmt = $pdo->prepare('Select * from cidit_fs_validapermisos(:usr, :sub)');//devuelve: permiso, edicion
- $stmt->bindParam(':usr', $_SESSION['usuario_id']);
- $stmt->bindParam(':sub', $submenu);
- if(!$stmt->execute()){
- $this->hasError = true;
- $this->error = $stmt->errorInfo();
- }else{
- $rs = $stmt->fetch();
- $stmt->closeCursor();
- $stmt = null;
- $this->acceso = (bool) $rs['permiso'];
- $this->edicion = (bool) $rs['edicion'];
- $rs = null;
- }
- } else {
- $this->hasError = true;
- $this->error = 'Dato no válido en validación de permisos';
- }
- } else{
- $this->error = 'No existe la llave en sesión';
- $this->hasError = true;
- $this->acceso = false;
- $this->edicion = false;
- }
- if($this->hasError){
- $this->acceso = false;
- $this->edicion = false;
- }
-
- }
-
- function tieneAcceso(){
- return $this->acceso;
- }
-
- function puedeEditar(){
- return $this->acceso && $this->edicion;
- }
-
- function tieneError(){
- return $this->hasError;
- }
-
- function getError(){
- return $this->error;
- }
-
-
- function terminaSesion(){
- $_SESSION = array();
- session_destroy();
- //$pag = $this->getFirstDirectory($_SERVER['PHP_SELF'])."/salir.php?expired=1";
- $pag = $_SERVER['SERVER_NAME'] . 'salir.php?expired=1';
- //header('Location: http://' . $pag);
- header('Location: salir.php?expired=1');
- exit();
- }
-
- public static function salirPagina(){
- $_SESSION = array();
- session_destroy();
- header('Location: salir.php');
- exit();
- }
- }
|