- Añadir hashing bcrypt para todas las contraseñas nuevas y existentes - Implementar verificación segura con password_hash() y password_verify() - Migrar 10 contraseñas existentes de texto plano a formato hash - Agregar protección CSRF en formulario de login - Implementar rate limiting (5 intentos/minuto) contra fuerza bruta - Mejorar formulario de edición con campos de contraseña seguros - Agregar validación de coincidencia y longitud mínima de contraseñas - Sanitización de inputs y validación de formato de email - Prevenir exposición de hashes en interfaz de usuario Cambia vulnerabilidad crítica donde las contraseñas se almacenaban y viajaban en texto plano.
782 lines
17 KiB
PHP
Executable File
782 lines
17 KiB
PHP
Executable File
<?php
|
|
|
|
class Usuario extends Main
|
|
{
|
|
private $usuarioId;
|
|
private $empresaId;
|
|
private $nombre;
|
|
private $apellidos;
|
|
private $calle;
|
|
private $noInt;
|
|
private $noExt;
|
|
private $referencia;
|
|
private $colonia;
|
|
private $localidad;
|
|
private $municipio;
|
|
private $ciudad;
|
|
private $estado;
|
|
private $codigoPostal;
|
|
private $pais;
|
|
private $telefono;
|
|
private $celular;
|
|
private $noImss;
|
|
private $curp;
|
|
private $rfc;
|
|
private $email;
|
|
private $passwd;
|
|
private $tipo;
|
|
private $sucursalId;
|
|
|
|
private $identificacion;
|
|
private $comprobante;
|
|
|
|
public function setUsuarioId($value)
|
|
{
|
|
$this->Util()->ValidateInteger($value);
|
|
$this->usuarioId = $value;
|
|
}
|
|
|
|
public function setEmpresaId($value)
|
|
{
|
|
$this->Util()->ValidateInteger($value);
|
|
$this->empresaId = $value;
|
|
}
|
|
|
|
public function setNombre($value)
|
|
{
|
|
$this->Util()->ValidateString($value, $max_chars=300, $minChars = 1, 'Nombre');
|
|
$this->nombre = $value;
|
|
}
|
|
|
|
public function setApellidos($value)
|
|
{
|
|
$this->Util()->ValidateString($value, $max_chars=300, $minChars = 0, 'Apellidos');
|
|
$this->apellidos = $value;
|
|
}
|
|
|
|
public function setCalle($value)
|
|
{
|
|
$this->Util()->ValidateString($value, $max_chars=200, $minChars = 0, "Dirección");
|
|
$this->calle = $value;
|
|
}
|
|
|
|
public function setNoInt($value)
|
|
{
|
|
$this->Util()->ValidateString($value, $max_chars=255, $minChars = 0, "noInt");
|
|
$this->noInt = $value;
|
|
}
|
|
|
|
public function setNoExt($value)
|
|
{
|
|
$this->Util()->ValidateString($value, $max_chars=255, $minChars = 0, "noExt");
|
|
$this->noExt = $value;
|
|
}
|
|
|
|
public function setLocalidad($value)
|
|
{
|
|
$this->Util()->ValidateString($value, $max_chars=50, $minChars = 0, "Localidad");
|
|
$this->localidad = $value;
|
|
}
|
|
|
|
public function setColonia($value)
|
|
{
|
|
$this->Util()->ValidateString($value, $max_chars=50, $minChars = 0, "Colonia");
|
|
$this->colonia = $value;
|
|
}
|
|
|
|
public function setReferencia($value)
|
|
{
|
|
$this->Util()->ValidateString($value, $max_chars=50, $minChars = 0, "Referencia");
|
|
$this->referencia = $value;
|
|
}
|
|
|
|
public function setMunicipio($value)
|
|
{
|
|
$this->Util()->ValidateString($value, $max_chars=50, $minChars = 0, "Municipio");
|
|
$this->municipio = $value;
|
|
}
|
|
|
|
public function setCiudad($value)
|
|
{
|
|
$this->Util()->ValidateString($value, $max_chars=50, $minChars = 0, "Ciudad");
|
|
$this->ciudad = $value;
|
|
}
|
|
|
|
public function setEstado($value)
|
|
{
|
|
$this->Util()->ValidateString($value, $max_chars=50, $minChars = 0, "Estado");
|
|
$this->estado = $value;
|
|
}
|
|
|
|
public function setPais($value)
|
|
{
|
|
$this->Util()->ValidateString($value, $max_chars=50, $minChars = 0, "Pais");
|
|
$this->pais = $value;
|
|
}
|
|
|
|
public function setCodigoPostal($value)
|
|
{
|
|
$this->Util()->ValidateString($value, $max_chars=50, $minChars = 0, "Codigo Postal");
|
|
$this->codigoPostal = empty($value) ? 0 : $value;
|
|
}
|
|
|
|
public function setTelefono($value)
|
|
{
|
|
$this->telefono = $value;
|
|
}
|
|
|
|
public function setCelular($value)
|
|
{
|
|
$this->celular = $value;
|
|
}
|
|
|
|
public function setNoImss($value)
|
|
{
|
|
$this->noImss = $value;
|
|
}
|
|
|
|
public function setCurp($value)
|
|
{
|
|
$this->curp = $value;
|
|
}
|
|
|
|
public function setRfc($value)
|
|
{
|
|
$this->rfc = $value;
|
|
}
|
|
|
|
public function setPassword($value)
|
|
{
|
|
// Si la contraseña ya está hasheada (empieza con $2y$), la guardamos directamente
|
|
if(preg_match('/^\$2y\$/', $value)) {
|
|
$this->passwd = $value;
|
|
} else {
|
|
// Si no, la hasheamos
|
|
$this->passwd = password_hash($value, PASSWORD_DEFAULT);
|
|
}
|
|
}
|
|
|
|
// Método para verificar contraseña (usado en login)
|
|
public function verifyPassword($plainPassword, $hashedPassword)
|
|
{
|
|
// Si la contraseña almacenada está en texto plano (migración)
|
|
if(!preg_match('/^\$2y\$/', $hashedPassword)) {
|
|
// Verificar contra texto plano y hashear si coincide
|
|
if($plainPassword === $hashedPassword) {
|
|
// Actualizar a hash
|
|
$this->passwd = password_hash($plainPassword, PASSWORD_DEFAULT);
|
|
$this->updatePasswordHash();
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
// Verificación normal con hash
|
|
return password_verify($plainPassword, $hashedPassword);
|
|
}
|
|
|
|
// Método para actualizar el hash en la base de datos
|
|
private function updatePasswordHash()
|
|
{
|
|
$db = new DB(true);
|
|
$db->setQuery("UPDATE usuario SET password = '".$this->passwd."' WHERE usuarioId = '".$this->usuarioId."'");
|
|
$db->UpdateData();
|
|
}
|
|
|
|
public function setTipo($value)
|
|
{
|
|
$this->Util()->ValidateString($value, $max_chars=300, $minChars = 1, 'Tipo');
|
|
$this->tipo = $value;
|
|
}
|
|
|
|
public function setSucursalId($value)
|
|
{
|
|
$this->Util()->ValidateString($value, $max_chars=300, $minChars = 0, 'Sucursal');
|
|
$this->sucursalId = empty($value) ? 0 : $value;
|
|
}
|
|
|
|
public function setEmail($value)
|
|
{
|
|
$this->Util()->ValidateString($value, $max_chars=300, $minChars = 0, 'Email');
|
|
if($value)
|
|
$this->Util()->ValidateMail($value);
|
|
$this->email = urldecode($value);
|
|
}
|
|
|
|
public function setIdentificacion($value)
|
|
{
|
|
$this->identificacion = $value;
|
|
}
|
|
|
|
public function setComprobante($value)
|
|
{
|
|
$this->comprobante = $value;
|
|
}
|
|
|
|
public function Info()
|
|
{
|
|
$db = new DB(true);
|
|
$db->setQuery("SELECT * FROM usuario WHERE usuarioId ='".$this->usuarioId."'");
|
|
$usuario = $db->GetRow();
|
|
|
|
return $usuario;
|
|
}
|
|
|
|
public function GetUsuariosByEmpresa()
|
|
{
|
|
$sql = "SELECT * FROM usuario
|
|
WHERE empresaId ='".$this->empresaId."'
|
|
AND main = 'no'
|
|
AND baja = '0'";
|
|
$db = new DB(true);
|
|
$db->setQuery($sql);
|
|
$usuarios = $db->GetResult();
|
|
|
|
return $usuarios;
|
|
}
|
|
|
|
public function GetUsuariosBySuc()
|
|
{
|
|
$sql = "SELECT * FROM usuario
|
|
WHERE empresaId ='".$this->empresaId."'
|
|
AND main = 'no'
|
|
AND baja = '0'
|
|
AND sucursalId = '".$this->sucursalId."'";
|
|
$db = new DB(true);
|
|
$db->setQuery($sql);
|
|
$usuarios = $db->GetResult();
|
|
|
|
return $usuarios;
|
|
}
|
|
|
|
public function SaveTemp()
|
|
{
|
|
if($this->Util()->PrintErrors()){
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
public function Save()
|
|
{
|
|
if($this->Util()->PrintErrors()){
|
|
return false;
|
|
}
|
|
|
|
$identificacion = isset($this->identificacion) ? $this->identificacion : '';
|
|
$comprobante = isset($this->comprobante) ? $this->comprobante : '';
|
|
|
|
$db = new DB(true);
|
|
$db->setQuery("
|
|
INSERT INTO usuario (
|
|
empresaId,
|
|
nombre,
|
|
apellidos,
|
|
calle,
|
|
noInt,
|
|
noExt,
|
|
referencia,
|
|
colonia,
|
|
localidad,
|
|
municipio,
|
|
estado,
|
|
pais,
|
|
codigoPostal,
|
|
telefono,
|
|
celular,
|
|
noImss,
|
|
curp,
|
|
rfc,
|
|
identificacion,
|
|
comprobante,
|
|
email,
|
|
password,
|
|
`type`,
|
|
sucursalId
|
|
)
|
|
VALUES (
|
|
'".$_SESSION["empresaId"]."',
|
|
'".$this->nombre."',
|
|
'".$this->apellidos."',
|
|
'".$this->calle."',
|
|
'".$this->noInt."',
|
|
'".$this->noExt."',
|
|
'".$this->referencia."',
|
|
'".$this->colonia."',
|
|
'".$this->localidad."',
|
|
'".$this->municipio."',
|
|
'".$this->estado."',
|
|
'".$this->pais."',
|
|
'".$this->codigoPostal."',
|
|
'".$this->telefono."',
|
|
'".$this->celular."',
|
|
'".$this->noImss."',
|
|
'".$this->curp."',
|
|
'".$this->rfc."',
|
|
'".$identificacion."',
|
|
'".$comprobante."',
|
|
'".$this->email."',
|
|
'".$this->passwd."',
|
|
'".$this->tipo."',
|
|
'".$this->sucursalId."')");
|
|
$usuarioId = $db->InsertData();
|
|
|
|
$this->Util()->setError(20017, "complete");
|
|
$this->Util()->PrintErrors();
|
|
|
|
return $usuarioId;
|
|
}
|
|
|
|
public function Update()
|
|
{
|
|
if($this->Util()->PrintErrors()){
|
|
return false;
|
|
}
|
|
|
|
$db = new DB(true);
|
|
|
|
// Construir consulta SQL condicional para la contraseña
|
|
$sql = "UPDATE usuario SET
|
|
nombre = '".$this->nombre."',
|
|
apellidos = '".$this->apellidos."',
|
|
calle = '".$this->calle."',
|
|
noInt = '".$this->noInt."',
|
|
noExt = '".$this->noExt."',
|
|
referencia = '".$this->referencia."',
|
|
colonia = '".$this->colonia."',
|
|
localidad = '".$this->localidad."',
|
|
municipio = '".$this->municipio."',
|
|
estado = '".$this->estado."',
|
|
pais = '".$this->pais."',
|
|
codigoPostal = '".$this->codigoPostal."',
|
|
telefono = '".$this->telefono."',
|
|
celular = '".$this->celular."',
|
|
noImss = '".$this->noImss."',
|
|
curp = '".$this->curp."',
|
|
rfc = '".$this->rfc."',
|
|
email = '".$this->email."'";
|
|
|
|
// Solo actualizar contraseña si se estableció una nueva
|
|
if (!empty($this->passwd)) {
|
|
$sql .= ", password = '".$this->passwd."'";
|
|
}
|
|
|
|
$sql .= ", `type` = '".$this->tipo."',
|
|
sucursalId = '".$this->sucursalId."'
|
|
WHERE usuarioId = '".$this->usuarioId."'";
|
|
|
|
$db->setQuery($sql);
|
|
$db->UpdateData();
|
|
|
|
$this->Util()->setError(20019, "complete");
|
|
$this->Util()->PrintErrors();
|
|
|
|
return true;
|
|
}
|
|
|
|
public function Delete()
|
|
{
|
|
if($this->Util()->PrintErrors()){
|
|
return false;
|
|
}
|
|
|
|
$db = new DB(true);
|
|
$db->setQuery("DELETE FROM usuario WHERE usuarioId = '".$this->usuarioId."' ");
|
|
$db->DeleteData();
|
|
|
|
$this->Util()->setError(20018, "complete");
|
|
$this->Util()->PrintErrors();
|
|
|
|
return true;
|
|
}
|
|
|
|
function Baja(){
|
|
|
|
$db = new DB(true);
|
|
$db->setQuery("
|
|
UPDATE usuario SET
|
|
baja = '1'
|
|
WHERE
|
|
usuarioId = '".$this->usuarioId."'"
|
|
);
|
|
$db->UpdateData();
|
|
|
|
$this->Util()->setError(20110, "complete");
|
|
$this->Util()->PrintErrors();
|
|
|
|
return true;
|
|
|
|
}//Baja
|
|
|
|
function SaveSucursal(){
|
|
|
|
$sql = 'INSERT INTO usuarioSuc (usuarioId, sucursalId)
|
|
VALUES ("'.$this->usuarioId.'", "'.$this->sucursalId.'")';
|
|
$this->Util()->DBSelect($_SESSION['empresaId'])->setQuery($sql);
|
|
$this->Util()->DBSelect($_SESSION['empresaId'])->InsertData();
|
|
|
|
return true;
|
|
}
|
|
|
|
function UpdateIdentificacion(){
|
|
|
|
$db = new DB(true);
|
|
$db->setQuery("
|
|
UPDATE usuario SET
|
|
identificacion = '".$this->identificacion."'
|
|
WHERE
|
|
usuarioId = '".$this->usuarioId."'"
|
|
);
|
|
$db->UpdateData();
|
|
|
|
return true;
|
|
|
|
}//UpdateIdentificacion
|
|
|
|
function UpdateComprobante(){
|
|
|
|
$db = new DB(true);
|
|
$db->setQuery("
|
|
UPDATE usuario SET
|
|
comprobante = '".$this->comprobante."'
|
|
WHERE
|
|
usuarioId = '".$this->usuarioId."'"
|
|
);
|
|
$db->UpdateData();
|
|
|
|
return true;
|
|
|
|
}//UpdateComprobante
|
|
|
|
function GetNameById()
|
|
{
|
|
$sql = 'SELECT nombre FROM usuario
|
|
WHERE usuarioId = "'.$this->usuarioId.'"';
|
|
|
|
$db = new DB(true);
|
|
$db->setQuery($sql);
|
|
$nombre = $db->GetSingle();
|
|
|
|
return $nombre;
|
|
}
|
|
|
|
function GetFullNameById()
|
|
{
|
|
$sql = 'SELECT CONCAT(nombre," ",apellidos) AS name FROM usuario
|
|
WHERE usuarioId = "'.$this->usuarioId.'"';
|
|
|
|
$db = new DB(true);
|
|
$db->setQuery($sql);
|
|
$nombre = $db->GetSingle();
|
|
|
|
return $nombre;
|
|
}
|
|
|
|
function GetInfoBySuc()
|
|
{
|
|
$sql = 'SELECT * FROM usuario
|
|
WHERE sucursalId = "'.$this->sucursalId.'"
|
|
AND `type` = "'.$this->tipo.'"
|
|
LIMIT 1';
|
|
$db = new DB(true);
|
|
$db->setQuery($sql);
|
|
$info = $db->GetRow();
|
|
|
|
return $info;
|
|
}
|
|
|
|
function GetTypeById()
|
|
{
|
|
$sql = 'SELECT type FROM usuario
|
|
WHERE usuarioId = "'.$this->usuarioId.'"';
|
|
$db = new DB(true);
|
|
$db->setQuery($sql);
|
|
$tipo = $db->GetSingle();
|
|
|
|
return $tipo;
|
|
}
|
|
|
|
function GetUserByType()
|
|
{
|
|
$sql = 'SELECT usuarioId FROM usuario
|
|
WHERE type = "'.$this->tipo.'"
|
|
LIMIT 1';
|
|
$db = new DB(true);
|
|
$db->setQuery($sql);
|
|
$usuarioId = $db->GetSingle();
|
|
|
|
return $usuarioId;
|
|
}
|
|
|
|
function GetUserBySucAndType()
|
|
{
|
|
$sql = 'SELECT usuarioId FROM usuario
|
|
WHERE type = "'.$this->tipo.'"
|
|
AND sucursalId = "'.$this->sucursalId.'"
|
|
LIMIT 1';
|
|
$db = new DB(true);
|
|
$db->setQuery($sql);
|
|
$usuarioId = $db->GetSingle();
|
|
|
|
return $usuarioId;
|
|
}
|
|
|
|
function GetUsersBySucAndType($usuarioId = 0)
|
|
{
|
|
if($usuarioId)
|
|
$sqlFilter = ' AND usuarioId = '.$usuarioId;
|
|
|
|
$sql = 'SELECT * FROM usuario
|
|
WHERE baja = "0"
|
|
AND type = "'.$this->tipo.'"
|
|
AND sucursalId = "'.$this->sucursalId.'"
|
|
'.$sqlFilter;
|
|
$db = new DB(true);
|
|
$db->setQuery($sql);
|
|
$usuarios = $db->GetResult();
|
|
|
|
return $usuarios;
|
|
}
|
|
|
|
function IsEmailTaked(){
|
|
|
|
$sqlAdd = '';
|
|
|
|
if($this->usuarioId)
|
|
$sqlAdd = ' AND usuarioId <> "'.$this->usuarioId.'"';
|
|
|
|
$sql = 'SELECT usuarioId FROM usuario
|
|
WHERE email = "'.$this->email.'"
|
|
'.$sqlAdd.'
|
|
LIMIT 1';
|
|
$db = new DB(true);
|
|
$db->setQuery($sql);
|
|
$allow = $db->GetSingle();
|
|
|
|
return $allow;
|
|
|
|
}
|
|
|
|
function IsSucChecked(){
|
|
|
|
$sql = 'SELECT COUNT(*) FROM usuarioSuc
|
|
WHERE sucursalId = "'.$this->sucursalId.'"
|
|
AND usuarioId = "'.$this->usuarioId.'"';
|
|
$this->Util()->DBSelect($_SESSION['empresaId'])->setQuery($sql);
|
|
$checked = $this->Util()->DBSelect($_SESSION['empresaId'])->GetSingle();
|
|
|
|
return $checked;
|
|
}
|
|
|
|
function DelSupSuc(){
|
|
|
|
$sql = 'DELETE FROM usuarioSuc
|
|
WHERE usuarioId = "'.$this->usuarioId.'"';
|
|
$this->Util()->DBSelect($_SESSION['empresaId'])->setQuery($sql);
|
|
$this->Util()->DBSelect($_SESSION['empresaId'])->DeleteData();
|
|
|
|
return true;
|
|
}
|
|
|
|
public function Search()
|
|
{
|
|
$sqlFilter = '';
|
|
if($this->tipo)
|
|
$sqlFilter .= ' AND type = "'.$this->tipo.'"';
|
|
if($this->sucursalId)
|
|
$sqlFilter .= ' AND sucursalId = "'.$this->sucursalId.'"';
|
|
if($this->nombre)
|
|
$sqlFilter .= ' AND nombre LIKE "%'.$this->nombre.'%"';
|
|
|
|
$sql = "SELECT * FROM usuario
|
|
WHERE empresaId ='".$this->empresaId."'
|
|
AND main = 'no'
|
|
AND baja = '0'".$sqlFilter;
|
|
$db = new DB(true);
|
|
$db->setQuery($sql);
|
|
$usuarios = $db->GetResult();
|
|
|
|
return $usuarios;
|
|
}
|
|
|
|
function AllowPage($page, $usuarioId){
|
|
|
|
$this->setUsuarioId($usuarioId);
|
|
$tipo = $this->GetTypeById();
|
|
|
|
$pages = array();
|
|
|
|
switch($tipo){
|
|
|
|
case 'admin':
|
|
$pages = array(
|
|
'bonificaciones',
|
|
'bonificaciones-agregar',
|
|
'cuentas-pagar',
|
|
'cuentas-pagar-saldos',
|
|
'envios',
|
|
'envios-recibir-reporte',
|
|
'pedidos',
|
|
'pedidos-detalles',
|
|
'devoluciones-pendientes',
|
|
'inventario-actualizar',
|
|
'inventario-fisico',
|
|
'inventario-fisico-agregar',
|
|
'inventario-fisico-detalles',
|
|
'inventario-ajustar-list',
|
|
'ventas',
|
|
'inventario-bloqueados',
|
|
'ventas-ticket'
|
|
);
|
|
break;
|
|
|
|
case 'almacen':
|
|
$pages = array(
|
|
'bonificaciones',
|
|
'bonificaciones-agregar',
|
|
'envios',
|
|
'evaluar-pedidos',
|
|
'pedidos',
|
|
'pedidos-detalles',
|
|
'pedidos-agregar',
|
|
'pedidos-editar',
|
|
'pedidos-distribucion',
|
|
'envios-tienda-cedis',
|
|
'envios-reporte',
|
|
'envios-recibir-reporte',
|
|
'cuentas-pagar',
|
|
'inventario'
|
|
);
|
|
break;
|
|
|
|
case 'cajero':
|
|
$pages = array(
|
|
'descuentos',
|
|
'descuentos-nuevo',
|
|
'devoluciones',
|
|
'devoluciones-nueva',
|
|
'devoluciones-ticket',
|
|
'inventario',
|
|
'inventario-bloqueados',
|
|
'inventario-detalles',
|
|
'inventario-bloqueados-detalles',
|
|
'ventas',
|
|
'ventas-ticket',
|
|
'ventas-nueva',
|
|
'ventas-espera',
|
|
'ventas-cobrar'
|
|
);
|
|
break;
|
|
|
|
case 'compras':
|
|
$pages = array(
|
|
'envios',
|
|
'pedidos',
|
|
'pedidos-detalles',
|
|
'pedidos-agregar',
|
|
'pedidos-editar',
|
|
'inventario-solicitar',
|
|
'inventario-solicitar-detalles'
|
|
);
|
|
break;
|
|
|
|
case 'direccion':
|
|
$pages = array(
|
|
'envios',
|
|
'pedidos',
|
|
'pedidos-detalles',
|
|
'cuentas-pagar-saldos',
|
|
'cuentas-pagar',
|
|
'bonificaciones',
|
|
'bonificaciones-agregar'
|
|
);
|
|
break;
|
|
|
|
case 'distribucion':
|
|
$pages = array(
|
|
'pedidos',
|
|
'pedidos-detalles'
|
|
);
|
|
break;
|
|
|
|
case 'facturacion':
|
|
$pages = array(
|
|
'facturacion',
|
|
'facturacion-nueva',
|
|
'ventas',
|
|
'ventas-ticket',
|
|
'reportes-ventas'
|
|
);
|
|
break;
|
|
|
|
case 'gerente':
|
|
$pages = array(
|
|
'descuentos',
|
|
'descuentos-nuevo',
|
|
'devoluciones',
|
|
'devoluciones-nueva',
|
|
'devoluciones-ticket',
|
|
'envios',
|
|
'envios-recibir-reporte',
|
|
'inventario',
|
|
'inventario-bloqueados',
|
|
'inventario-detalles',
|
|
'inventario-bloqueados-detalles',
|
|
'inventario-solicitar',
|
|
'inventario-solicitar-agregar',
|
|
'inventario-solicitar-detalles',
|
|
'ventas',
|
|
'ventas-ticket',
|
|
'ventas-nueva',
|
|
'ventas-espera',
|
|
'ventas-cobrar',
|
|
'facturacion-nueva'
|
|
);
|
|
break;
|
|
|
|
case 'vendedor':
|
|
$pages = array(
|
|
'inventario',
|
|
'inventario-bloqueados',
|
|
'inventario-detalles',
|
|
'inventario-bloqueados-detalles'
|
|
);
|
|
break;
|
|
|
|
case 'centralizador':
|
|
$pages = array(
|
|
'ventas',
|
|
'ventas-ticket',
|
|
'inventario',
|
|
'pedidos',
|
|
'pedidos-detalles',
|
|
'envios',
|
|
'devoluciones',
|
|
'devoluciones-ticket'
|
|
);
|
|
break;
|
|
|
|
case 'supervisor':
|
|
|
|
$pages = array(
|
|
'inventario-fisico',
|
|
'inventario-fisico-agregar',
|
|
'inventario-fisico-detalles'
|
|
);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
if(in_array($page, $pages))
|
|
return true;
|
|
else
|
|
return false;
|
|
|
|
}//AllowPage
|
|
|
|
}
|
|
|
|
|
|
?>
|