PageRenderTime 27ms CodeModel.GetById 15ms RepoModel.GetById 1ms app.codeStats 0ms

/cms/clases/Legacy/Login.php

https://github.com/bng5/CMS
PHP | 159 lines | 127 code | 8 blank | 24 comment | 29 complexity | 0cc2bfbbb52a2bd2dee9e263e29d1b01 MD5 | raw file
  1. <?php
  2. class Legacy_Login {
  3. public $respuesta;
  4. private $usuario, $clave;
  5. function __construct($accion, $usuario = false, $clave = false) {
  6. $this->respuesta->exito = false;
  7. $this->mensajes = array();
  8. $this->usuario = $usuario;
  9. $this->clave = $clave;
  10. if ($accion == "acceder" || $accion == "salir" || $accion == "recuperar")
  11. $this->$accion();
  12. else {
  13. $this->respuesta->errores->cuenta = 3; //array('cod' => 3, 'desc' => $this->sucesoDesc('errores', 3));
  14. $this->respuesta->mensajes[3] = 3;
  15. }
  16. }
  17. function cerrar_sesion() {
  18. if (!$_SESSION['usuario'])
  19. return false;
  20. $mysqli = BaseDatos::Conectar();
  21. $mysqli->query("UPDATE usuarios SET `pase` = NULL WHERE usuario = '{$_SESSION['usuario']}'");
  22. session_unset();
  23. setcookie("pase", "", 0, '/');
  24. setcookie("sesion", "", 0, '/');
  25. if (session_destroy ())
  26. return true;
  27. }
  28. function salir() {
  29. $this->respuesta->exito = $this->cerrar_sesion();
  30. return;
  31. //$this->cerrar_sesion();
  32. //header("Location: ".substr($_SERVER['PHP_SELF'], 0, -4));
  33. //exit;
  34. }
  35. function acceder() {
  36. //if($this->cerrar_sesion()) { }//session_start();
  37. $this->cerrar_sesion();
  38. if (!$this->usuario) {
  39. $this->respuesta->errores->usuario = 1; //array('cod' => 1, 'desc' => $this->sucesoDesc('errores', 1));
  40. $this->respuesta->mensajes[5] = 5; //] = $this->sucesoDesc('mensajes', 1);
  41. $error = true;
  42. }
  43. if (!$this->clave) {
  44. $this->respuesta->errores->clave = 1; //array('cod' => 1, 'desc' => $this->sucesoDesc('errores', 1));// ? $clave : $_POST['clave'];
  45. $this->respuesta->mensajes[5] = 5; //] = "Campo requerido";
  46. $error = true;
  47. }
  48. if ($error)
  49. return;
  50. //if(empty($this->usuario) || empty($this->clave))
  51. // return 1;
  52. $mysqli = BaseDatos::Conectar();
  53. $usuario = $mysqli->real_escape_string($this->usuario);
  54. //if(!
  55. $result = $mysqli->query("SELECT `id`, `usuario`, `estado_id`, leng_id, nombre_mostrar, clave FROM `usuarios` WHERE `usuario` = '{$usuario}' LIMIT 1"); //)
  56. if ($fila = $result->fetch_assoc()) {
  57. $result->close();
  58. if ($fila['clave'] != sha1($this->clave)) {
  59. $this->respuesta->mensajes[7] = 7;
  60. return;
  61. }
  62. if ($fila['estado_id'] != 1) {
  63. $this->respuesta->mensajes[8] = 8;
  64. return;
  65. }
  66. $mysqli->query("INSERT INTO usuarios_accesos (`usuario_id`, `sesion_id`, `ip`, `uri`) VALUES ({$fila['id']}, '" . session_id() . "', '{$_SERVER['REMOTE_ADDR']}', '{$_POST['ref']}')");
  67. $consultaperm = $mysqli->query("SELECT up.`area_id`, up.`item_id`, up.`permiso_id` FROM `usuarios_permisos` up JOIN admin_secciones ads ON up.item_id = ads.id WHERE up.`usuario_id` = {$fila["id"]} ORDER BY ads.sistema, up.`item_id`");
  68. if ($fila_perm = $consultaperm->fetch_row()) {
  69. session_start();
  70. $_SESSION['usuario'] = $fila['usuario'];
  71. $_SESSION['usuario_id'] = $fila['id'];
  72. $_SESSION['leng_id'] = $fila['leng_id'];
  73. $_SESSION['nombre_mostrar'] = $fila['nombre_mostrar'];
  74. $pase = md5(rand() . time());
  75. $mysqli->query("UPDATE usuarios SET `pase` = '{$pase}' WHERE id = {$fila['id']}");
  76. $expira = $_POST['recordarme'] ? time() + 2592000 : 0; //60*60*24*30
  77. setcookie("usuario", $fila['usuario'], $expira, "/"); //, ".".DOMINIO);
  78. setcookie("pase", $pase, $expira, "/", false, false, true); //, ".".DOMINIO);
  79. $areas = array(2 => 'admin_seccion', 3 => 'admin_seccion_c');
  80. do {
  81. $_SESSION['permisos'][$areas[$fila_perm[0]]][$fila_perm[1]] = $fila_perm[2];
  82. } while ($fila_perm = $consultaperm->fetch_row());
  83. $consultaperm->close();
  84. //$this->respuesta->mensajes[] = 1;
  85. $this->respuesta->exito = true;
  86. $this->respuesta->mensajes[1] = 1;
  87. $this->respuesta->respuesta['sesion'] = session_id();
  88. return;
  89. } else {
  90. $this->respuesta->mensajes[8] = 8;
  91. return;
  92. }
  93. } else {
  94. $this->respuesta->mensajes[7] = 7;
  95. return;
  96. }
  97. }
  98. function recuperar() {
  99. $this->pase = $_COOKIE['pase'];
  100. $mysqli = BaseDatos::Conectar();
  101. if (!$result = $mysqli->query("SELECT `id`, `usuario`, `estado_id`, leng_id, nombre_mostrar FROM `usuarios` WHERE `usuario` = '" . $this->usuario . "' AND `pase` = '" . $this->pase . "' LIMIT 1"))
  102. return 0; //) login_xml(0);
  103. if ($fila = $result->fetch_assoc()) {
  104. $result->close();
  105. if ($fila['estado_id'] != 1) {
  106. $this->respuesta->mensajes[8] = 8;
  107. return;
  108. }
  109. $consultaperm = $mysqli->query("SELECT upa.`area`, up.`item_id`, up.`permiso_id` FROM `usuarios_permisos` up JOIN `usuarios_permisos_areas` upa ON up.`area_id` = upa.`id` WHERE `usuario_id` = '" . $fila["id"] . "' ORDER BY up.`area_id`, `item_id`");
  110. if ($fila_perm = $consultaperm->fetch_row()) {
  111. session_start();
  112. $_SESSION['usuario'] = $fila['usuario'];
  113. $_SESSION['usuario_id'] = $fila['id'];
  114. $_SESSION['leng_id'] = $fila['leng_id'];
  115. $_SESSION['nombre_mostrar'] = $fila['nombre_mostrar'];
  116. $pase = md5(rand() . time());
  117. $mysqli->query("UPDATE usuarios SET `pase` = '{$pase}' WHERE id = {$fila['id']}");
  118. setcookie("pase", $pase, time() + 2592000, "/", false, false, true); //, ".".DOMINIO);
  119. do {
  120. $_SESSION['permisos'][$fila_perm[0]][$fila_perm[1]] = $fila_perm[2];
  121. } while ($fila_perm = $consultaperm->fetch_row());
  122. $consultaperm->close();
  123. } else {
  124. $this->respuesta->mensajes[8] = 8;
  125. return;
  126. }
  127. //$this->respuesta->mensajes[] = 1;
  128. $this->respuesta->exito = true;
  129. return;
  130. }
  131. else {
  132. $this->respuesta->mensajes[7] = 7;
  133. return;
  134. }
  135. }
  136. /*
  137. function sucesoTxt()
  138. {
  139. $this->sucesos_desc = array("No fue posible conectar con la base de datos.",
  140. 1 => "Debe completar ambos campos para ingresar.",
  141. 2 => "Los datos proporcionados no son correctos.",
  142. 3 => "Acceso aceptado.",
  143. 4 => "Su sesión ha sido cerrada satisfactoriamente.",
  144. 5 => "Sesión activa.",
  145. 6 => "Su sesión ha expirado o no ha iniciado una.",
  146. 7 => "El usuario no tiene permisos para acceder a este documento.",
  147. 8 => "El usuario no está habilitado.");
  148. return $this->sucesos_desc[$this->suceso];
  149. }
  150. */
  151. }