- 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.
289 lines
7.6 KiB
PHP
Executable File
289 lines
7.6 KiB
PHP
Executable File
<?php
|
|
|
|
include_once('../init.php');
|
|
include_once('../config.php');
|
|
include_once(DOC_ROOT.'/libraries.php');
|
|
|
|
if(isset($_POST['action']))
|
|
$_POST['type'] = $_POST['action'];
|
|
|
|
$Usr = $user->Info();
|
|
|
|
switch($_POST["type"])
|
|
{
|
|
case "saveUsuario":
|
|
|
|
$email = trim($_POST['email']);
|
|
|
|
$usuario->setTipo($_POST['tipo']);
|
|
$usuario->setNombre($_POST['nombre']);
|
|
$usuario->setApellidos($_POST['apellidos']);
|
|
$usuario->setCalle($_POST["calle"]);
|
|
$usuario->setNoExt($_POST["noExt"]);
|
|
$usuario->setNoInt($_POST["noInt"]);
|
|
$usuario->setReferencia($_POST["referencia"]);
|
|
$usuario->setColonia($_POST["colonia"]);
|
|
$usuario->setLocalidad($_POST["localidad"]);
|
|
$usuario->setMunicipio($_POST["municipio"]);
|
|
$usuario->setEstado($_POST["estado"]);
|
|
$usuario->setPais($_POST["pais"]);
|
|
$usuario->setCodigoPostal($_POST["codigoPostal"]);
|
|
$usuario->setTelefono($_POST['telefono']);
|
|
$usuario->setCelular($_POST['celular']);
|
|
$usuario->setNoImss($_POST['noImss']);
|
|
$usuario->setCurp($_POST['curp']);
|
|
$usuario->setRfc($_POST['rfc']);
|
|
$usuario->setEmail($email);
|
|
$usuario->setPassword($_POST['password']);
|
|
$usuario->setSucursalId($_POST['sucursalId']);
|
|
|
|
if(!$usuario->SaveTemp())
|
|
{
|
|
echo "fail[#]";
|
|
$smarty->display(DOC_ROOT.'/templates/boxes/status_on_popup.tpl');
|
|
}else{
|
|
|
|
if($email){
|
|
if($usuario->IsEmailTaked()){
|
|
$util->setError(20080,'error','','');
|
|
$util->PrintErrors();
|
|
echo "fail[#]";
|
|
$smarty->display(DOC_ROOT.'/templates/boxes/status_on_popup.tpl');
|
|
exit;
|
|
}
|
|
}
|
|
|
|
echo 'ok[#]';
|
|
}
|
|
|
|
break;
|
|
|
|
case "saveEditUsuario":
|
|
|
|
$email = trim($_POST['email']);
|
|
|
|
$usuario->setTipo($_POST['tipo']);
|
|
$usuario->setUsuarioId($_POST['usuarioId']);
|
|
$usuario->setNombre($_POST['nombre']);
|
|
$usuario->setApellidos($_POST['apellidos']);
|
|
$usuario->setCalle($_POST["calle"]);
|
|
$usuario->setNoExt($_POST["noExt"]);
|
|
$usuario->setNoInt($_POST["noInt"]);
|
|
$usuario->setReferencia($_POST["referencia"]);
|
|
$usuario->setColonia($_POST["colonia"]);
|
|
$usuario->setLocalidad($_POST["localidad"]);
|
|
$usuario->setMunicipio($_POST["municipio"]);
|
|
$usuario->setEstado($_POST["estado"]);
|
|
$usuario->setPais($_POST["pais"]);
|
|
$usuario->setCodigoPostal($_POST["codigoPostal"]);
|
|
$usuario->setTelefono($_POST['telefono']);
|
|
$usuario->setCelular($_POST['celular']);
|
|
$usuario->setNoImss($_POST['noImss']);
|
|
$usuario->setCurp($_POST['curp']);
|
|
$usuario->setRfc($_POST['rfc']);
|
|
$usuario->setEmail($_POST['email']);
|
|
$usuario->setPassword($_POST['password']);
|
|
$usuario->setSucursalId($_POST['sucursalId']);
|
|
|
|
if(!$usuario->SaveTemp())
|
|
{
|
|
echo "fail[#]";
|
|
$smarty->display(DOC_ROOT.'/templates/boxes/status_on_popup.tpl');
|
|
}else{
|
|
|
|
if($email){
|
|
if($usuario->IsEmailTaked()){
|
|
$util->setError(20080,'error','','');
|
|
$util->PrintErrors();
|
|
echo "fail[#]";
|
|
$smarty->display(DOC_ROOT.'/templates/boxes/status_on_popup.tpl');
|
|
exit;
|
|
}
|
|
}
|
|
|
|
echo 'ok[#]';
|
|
}
|
|
|
|
break;
|
|
|
|
case "_deleteUsuario":
|
|
|
|
$usuario->setUsuarioId($_POST['usuario']);
|
|
$info = $usuario->Info();
|
|
|
|
if($usuario->Delete())
|
|
{
|
|
@unlink(DOC_ROOT.'/images/identificacion/'.$info['identificacion']);
|
|
@unlink(DOC_ROOT.'/images/comprobante/'.$info['comprobante']);
|
|
|
|
echo "ok[#]";
|
|
$smarty->display(DOC_ROOT.'/templates/boxes/status.tpl');
|
|
echo "[#]";
|
|
|
|
$usuario->setEmpresaId($_SESSION["empresaId"]);
|
|
$resUsuarios = $usuario->GetUsuariosByEmpresa();
|
|
|
|
foreach($resUsuarios as $key => $res ){
|
|
$card = $res;
|
|
|
|
$card['nombre'] = utf8_encode($res['nombre']);
|
|
$card['apellidos'] = utf8_encode($res['apellidos']);
|
|
$card['type'] = $util->GetNameUsrType($res['type']);
|
|
|
|
if($res['sucursalId']){
|
|
$sucursal->setSucursalId($res['sucursalId'] );
|
|
$nomSucursal = $sucursal->GetNameById();
|
|
$card['sucursal'] = strtoupper(urldecode($nomSucursal));
|
|
}
|
|
|
|
$usuarios[] = $card;
|
|
}
|
|
|
|
$smarty->assign("usuarios", $usuarios);
|
|
$smarty->assign("DOC_ROOT", DOC_ROOT);
|
|
$smarty->display(DOC_ROOT.'/templates/lists/usuarios.tpl');
|
|
}
|
|
else
|
|
{
|
|
echo "fail[#]";
|
|
$smarty->display(DOC_ROOT.'/templates/boxes/status.tpl');
|
|
}
|
|
|
|
break;
|
|
|
|
case "bajaUsuario":
|
|
|
|
$usuario->setUsuarioId($_POST['usuario']);
|
|
$info = $usuario->Info();
|
|
|
|
if($usuario->Baja())
|
|
{
|
|
echo "ok[#]";
|
|
$smarty->display(DOC_ROOT.'/templates/boxes/status.tpl');
|
|
echo "[#]";
|
|
|
|
$usuario->setEmpresaId($_SESSION["empresaId"]);
|
|
|
|
if($Usr['type'] == 'gerente'){
|
|
$usuario->setSucursalId($Usr['sucursalId']);
|
|
$usuario->setTipo('vendedor');
|
|
$resUsuarios = $usuario->GetUsersBySucAndType();
|
|
}else{
|
|
$resUsuarios = $usuario->GetUsuariosByEmpresa();
|
|
}
|
|
|
|
$usuarios = array();
|
|
foreach($resUsuarios as $key => $res ){
|
|
$card = $res;
|
|
|
|
$card['nombre'] = utf8_encode($res['nombre']);
|
|
$card['apellidos'] = utf8_encode($res['apellidos']);
|
|
$card['type'] = $util->GetNameUsrType($res['type']);
|
|
|
|
if($res['sucursalId']){
|
|
$sucursal->setSucursalId($res['sucursalId'] );
|
|
$nomSucursal = $sucursal->GetNameById();
|
|
$card['sucursal'] = strtoupper(urldecode($nomSucursal));
|
|
} else {
|
|
$card['sucursal'] = '';
|
|
}
|
|
|
|
$usuarios[] = $card;
|
|
}
|
|
|
|
$pages = array(
|
|
'numbers' => array(),
|
|
'first' => false,
|
|
'prev' => false,
|
|
'next' => false,
|
|
'last' => false,
|
|
'current' => 1
|
|
);
|
|
|
|
$smarty->assign("pages", $pages);
|
|
$smarty->assign("usuarios", $usuarios);
|
|
$smarty->assign("DOC_ROOT", DOC_ROOT);
|
|
$smarty->display(DOC_ROOT.'/templates/lists/usuarios.tpl');
|
|
}
|
|
else
|
|
{
|
|
echo "fail[#]";
|
|
$smarty->display(DOC_ROOT.'/templates/boxes/status.tpl');
|
|
}
|
|
|
|
break;
|
|
|
|
case 'loadUsersVtas':
|
|
|
|
$usuario->setSucursalId($_POST['sucursalId']);
|
|
$usuario->setTipo('cajero');
|
|
$cajeros = $usuario->GetUsersBySucAndType();
|
|
|
|
$usuario->setTipo('gerente');
|
|
$gerentes = $usuario->GetUsersBySucAndType();
|
|
|
|
$usuarios = array_merge($cajeros, $gerentes);
|
|
|
|
echo 'ok[#]';
|
|
|
|
$smarty->assign("Usr", $Usr);
|
|
$smarty->assign("usuarios", $usuarios);
|
|
$smarty->assign("DOC_ROOT", DOC_ROOT);
|
|
$smarty->display(DOC_ROOT.'/templates/lists/enumUsers.tpl');
|
|
|
|
break;
|
|
|
|
case 'search':
|
|
|
|
$tipo = $_POST['tipo2'];
|
|
$sucursalId = $_POST['sucursalId2'];
|
|
$nombre = $_POST['nombre2'];
|
|
|
|
$usuario->setTipo($tipo);
|
|
$usuario->setSucursalId($sucursalId);
|
|
$usuario->setNombre($nombre);
|
|
|
|
$usuario->setEmpresaId($_SESSION["empresaId"]);
|
|
$resUsuarios = $usuario->Search();
|
|
|
|
$usuarios = array();
|
|
foreach($resUsuarios as $key => $res ){
|
|
$card = $res;
|
|
|
|
$card['nombre'] = utf8_encode($res['nombre']);
|
|
$card['apellidos'] = utf8_encode($res['apellidos']);
|
|
$card['type'] = $util->GetNameUsrType($res['type']);
|
|
|
|
if($res['sucursalId']){
|
|
$sucursal->setSucursalId($res['sucursalId'] );
|
|
$nomSucursal = $sucursal->GetNameById();
|
|
$card['sucursal'] = strtoupper(urldecode($nomSucursal));
|
|
} else {
|
|
$card['sucursal'] = '';
|
|
}
|
|
|
|
$usuarios[] = $card;
|
|
}
|
|
|
|
$pages = array(
|
|
'numbers' => array(),
|
|
'first' => false,
|
|
'prev' => false,
|
|
'next' => false,
|
|
'last' => false,
|
|
'current' => 1
|
|
);
|
|
|
|
echo 'ok[#]';
|
|
|
|
$smarty->assign("pages", $pages);
|
|
$smarty->assign("usuarios", $usuarios);
|
|
$smarty->assign("DOC_ROOT", DOC_ROOT);
|
|
$smarty->display(DOC_ROOT.'/templates/lists/usuarios.tpl');
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
?>
|