|
// +----------------------------------------------------------------------+
//
// $Id: index.html,v 1.49 2010-07-22 16:55:10 ed Exp $
/**
* Da acceso al Usaurio, y logea conexiones logradas y no logradas
* Ojo con las del exterior.
*/
require_once ('funciones.php');
require_once ('config.php');
require_once ('libs/conexion.php');
require_once ('DB.php');
require_once ('revo/conexion.php');
require_once ('revo/Usuario.php');
require_once ('Sesion.php');
require_once ('Pass.php');
require_once 'gestor_divisa/TiposCambio.php';
// si al mero inicio encontramos esta variable, desregistramos
if (isset($_SESSION['usuario'])) {
Sesion::registra(0);
$_SESSION = array();
}
if (ATP_GRUPO == 'Consorcio') {
$leyenda_agencia = "CMA's Traffic Project";
$img_logo = 'images/cma2.png';
$img_icon = 'images/cma_icon.png';
} else {
$leyenda_agencia = "America's Traffic Project";
$img_logo = 'images/logo_def.png';
$img_icon = 'images/mundoaaaico.png';
}
//global $ATP_SCHEMA;
$db = &$GLOBALS['_ATP_db'];
$ATP_SCHEMA = strtoupper($GLOBALS['ATP_SCHEMA']);
if (!isset($_POST['ingresa']) or (isset($_SESSION['ingresa']) && $_SESSION['ingresa'] == 1)) {
$especial = null;
if (ATP_PRODUCCION != true) {
if (ATP_PRUEBAS == true) {
$especial = "
";
} else if (ATP_DEBUG == true) {
$especial = "
";
}
}
echo "
$ATP_SCHEMA $leyenda_agencia
$especial
";
}
if (isset($_POST['ingresa']) && $_POST['ingresa'] == 1) {
if (!is_numeric($_POST['usuario'])) {
imprimeError('Usuario inválido');
exit;
}
//Aplicamos una restriccion para que los usuarios con un rango entre 9000 y 10000 (americalogisticsnl) no puedan acceder
if ($_POST['usuario'] > '9000' && $_POST['usuario'] <= '10000') {
imprimeError('Usuario inválido');
exit;
}
$usuario = new Usuario;
try {
$user = $_POST['usuario'];
//print_r($_SESSION['usuario']);print_r('oscar');print_r($_POST['usuario']);
$contra = $_POST['password'];
$todo = $usuario->dame($user);
$esquema_nuevo = $todo['nuevo_esquema'];
$fecha_cambio = $todo['fecha_ultimo_cambio_pass'];
$pas = new Pass($user);
$salt = $pas->dameSaltActual();
$alert = $pas->alerta();
if ($esquema_nuevo == 't' && $salt != null) {
$vali = $pas->autenticaUsuario($contra);
$arr_usu = $usuario->valida($user, $vali, $contra);
$contra = $vali;
} else {
$arr_usu = $usuario->valida($user, $contra, $contra);
}
} catch (Exception $e) {
trigger_error('Error al validar usuario');
}
if (!isset($arr_usu)) {
session_destroy();
$envio_pass = "
Si no recuerda su contrasena oprima el boton enviar contrasenai
para que se envie al correo registrado
Regresar a la pagina principal
";
$espe = '3000';
$usuario->registraBitacora($user, $contra, 'N');
$estatus = $usuario->verifica_intentos(addslashes($_POST['usuario']));
if ($estatus == -3) {
$msn = 'Lleva tres intentos de autenticacion fallidos al quinto fallido su usuario quedara bloqueado Si tiene dudas comunicarse a Sistemas al siguiente correo ti@aaamerica.com.mx' . '
' . $envio_pass;
$espe = '9000';
} else {
if ($estatus == 0) {
$msn = 'Acceso bloqueado. Excedio el numero maximo de intentos fallidos, Comuniquese a Sistemas al siguiente correo ti@aaamerica.com.mx' . '
';
exit;
}
$remoto = $usuario->accesoRemoto();
if (!$remoto) {
$msg = 'No está configurado para acceso fuera de la intranet, ';
$msg .= 'por favor solicitelo a sistemas. ';
$msg .= "($_SERVER[REMOTE_ADDR], $_POST[usuario])";
trigger_error($msg, E_USER_ERROR);
exit;
}
// Validamos si el usuario tiene asignado un ROL y le asignamos los documentos asociados
if (defined(ATP_ROLES_CENTRAL) && ATP_ROLES_CENTRAL == true) {
$permisos = $usuario->asignaDocumentosISO($_POST['usuario']);
if (!$permisos) {
$msg = 'Su usuario no cuenta con un ROL asignado ';
$msg .= 'por favor solicitelo a sistemas. ';
echo $msg;
exit;
}
}
// Actualizamos su acceso
$usuario->actualizaAcceso($_POST['usuario']);
$_SESSION['usuario'] = $_POST['usuario'];
session_destroy();//destruimos sesion iniciada
session_start();//iniciamos sesion
$_SESSION['usuario'] = $_POST['usuario'];
session_regenerate_id(TRUE);//regeneramos el id de la variable de sesion
$_SESSION['bodega'] = ($GLOBALS['TIPOADUANA'] == 'TERRESTRE' && $arr_usu['ejecutivo'] == 'B') ? true : false;
// Se mantiene la session de la mobile en caso de que haya sido iniciada el dia de hoy
if (!empty($arr_usu['ip_mobile']) && $arr_usu['ultimo_acceso_date'] == date('Y-m-d')) {
$_SESSION['mobile'] = true;
}
$esquema_nuevo = ($esquema_nuevo == null || $esquema_nuevo == 'f') ? 'f' : "t";
if (($esquema_nuevo == 't' && $salt == null) || ($alert == -2)) {
$condicion = true;
} else {
$condicion = false;
}
// para el esquema actual, luego del login registramos en la base
Sesion::registra();
if ($condicion == true) {
$nom_user = $arr_usu['nombre'] . ' ' . $arr_usu['apellidop'] . ' ' . $arr_usu['apellidom'];
$html = "";
$atp = ATP_SCHEMA;
$html .= "";
$html .= "
" . _('Bienvenido') . " $nom_user
";
$html .= "\n";
$html .= "
Cambio de Contraseña
Para ingresar es necesario cambiar su contraseña
Contraseña Nueva:
Su contraseña debe de cumplir lo siguiente :
○ Incluir caracteres en mayúscula y minuscula
○ Incluir al menos un número (0-9)
○ Incluir los siguientes caracteres especiales |#$%/()=?[]@*
○ Longitud minima 10.
Esta usando IE sí tiene problemas para cambiar el password se recomienda usar Chrome o Firefox
";
echo $html;
} else {
if (checa_privilegios() == 1) {
//*
//* Inicia Avisos Usuarios
//*
//$test = array(1,4899,9,5427,4660);
//if(in_array($_SESSION['usuario'],$test)){
$db =& $GLOBALS['_ATP2_db'];
$sqlAvisoVigente = "SELECT * FROM central.avisos
WHERE estatus = 'A'
AND esquema in ('2','3')
AND fecha_publicacion::DATE <= CURRENT_DATE::DATE
AND (fecha_vigencia::DATE >= CURRENT_DATE::DATE OR fecha_vigencia::DATE IS NULL)
AND id NOT IN(
SELECT id_aviso FROM avisos_usuario WHERE usuario = " . $_SESSION['usuario'] . "
)
ORDER BY orden, tipo desc, fecha_alta LIMIT 1";
if (DB::isError($rowAvisoVigente = $db->getRow($sqlAvisoVigente, array(), DB_FETCHMODE_ASSOC))) {
trigger_error(_('Error al consultar los Vigentes.'), E_USER_WARNING);
}
$sqlNombreUsuario = "SELECT nombre, apellidop, apellidom FROM usuario WHERE cveusuario = $_SESSION[usuario]";
if (DB::isError($rowNombreUsuario = $db->getRow($sqlNombreUsuario, array(), DB_FETCHMODE_ASSOC))) {
trigger_error(_('Error al consultar el nombre del usuario.'), E_USER_WARNING);
}
if (isset($rowAvisoVigente)) {
if ($rowAvisoVigente['tipo'] == 2) {
$aceptar = "y aceptar ";
$input = "
Antes de continuar sírvase a leer $aceptar el siguiente documento.
$rowAvisoVigente[aviso]
$input
$boton
";
}
//}
genera_menu(0, 1, true);
// Creamos una bitacora de acceso para
// ver el comportamiento
$usuario->registraBitacora($user, $contra, 'S');
//$datos = pg_fetch_row($query,0);
$refs_sin_tracking = '';
$_SESSION['relacion_cliente'] = $arr_usu['relacion_cliente'];
//$Rfcs = $db->getCol("select id from cliente where ejecutivo_trafico='$_SESSION[usuario]'");
if (ATP_SCHEMA != 'logistics') {
$Rfcs = $db->getCol("SELECT id_cliente FROM clientes_ejecutivos WHERE id_ejecutivo='{$_SESSION['usuario']}'");
}
//$usuarios_todas = array(0, 1); //aqui se ponen los usuarios que pueden ver todas las referencias
$usuarios_todas = array();
checa_privilegios('ver_tracking_completo.php') ? array_push($usuarios_todas, $_SESSION['usuario']) : "";
/*
* Se cambia el switch por el permiso ver_tracking_completo.php
*
switch ($GLOBALS['ADUANA']) {
case 240:
array_push($usuarios_todas, 302, 324, 328, 2911);
break;
case 430:
array_push($usuarios_todas, 205);
break;
case 510:
array_push($usuarios_todas, 2894);
break;
case 160:
array_push($usuarios_todas, 25);
break;
}
*/
// meteré el arreglo usuarios_todas en la sesión para poder usarlo en referencias_sin_tracking
$_SESSION['usuarios_todas'] = $usuarios_todas;
if ($GLOBALS['VERSION_DOCS'] == 2) {
if (sizeOf($Rfcs) > 0 or in_array($_SESSION['usuario'], $usuarios_todas)) { // si el usuario tiene clientes o si es de los "masters"
$rfcs = '';
foreach ($Rfcs as $indice => $rfc) {
$Rfcs[$indice] = "'$rfc'";
}
$rfcs = implode(", ", $Rfcs);
$and = (!in_array($_SESSION['usuario'], $usuarios_todas)) ? "and t.cliente in($rfcs)" : "";
$virtual = "";
if ($GLOBALS['TIPOADUANA'] == 'TERRESTRE') {
$virtual = "t.virtual = 'f' and ";
}
if (in_array($_SESSION['usuario'], $usuarios_todas)) { // si es de los "masters", se le muestra todititita... la lista...
$sql = "SELECT t.cliente, c.nombre_cliente, COUNT(DISTINCT t.referencia) ";
$sql .= "FROM trafico t, cliente c ";
$sql .= "WHERE t.cliente=c.id AND ";
$sql .= "fecha_liberacion_mercancia IS NULL AND t.status_trafico >= 100 AND ";
$sql .= "t.tipo_operacion IN ('I', 'E') AND ";
$sql .= "$virtual ";
$sql .= "t.referencia NOT IN (select referencia ";
$sql .= "FROM documentos_2 ";
$sql .= "WHERE fecha_modificacion::DATE = CURRENT_DATE) $and ";
$sql .= "GROUP BY 1, 2 ORDER BY 3 DESC ";
} else { // a los mortales cualesquiera se les muestra sólo los suyos
$sql = "SELECT t.cliente, c.nombre_cliente, COUNT(DISTINCT t.referencia) ";
$sql .= "FROM trafico t JOIN cliente c ON (t.cliente = c.id) ";
$sql .= "JOIN clientes_ejecutivos ce ON (ce.id_cliente = c.id) ";
$sql .= "JOIN usuario u ON (u.cveusuario = ce.id_ejecutivo) ";
$sql .= "WHERE u.cveusuario = {$_SESSION['usuario']} AND ";
$sql .= "fecha_liberacion_mercancia IS NULL AND t.status_trafico >= 100 AND ";
$sql .= "t.tipo_operacion = ce.tipo_ejecutivo AND ";
$sql .= "$virtual ";
$sql .= "t.referencia NOT IN (SELECT referencia FROM documentos_2 WHERE fecha_modificacion::date = CURRENT_DATE) $and ";
$sql .= "GROUP BY 1, 2 ORDER BY 3 DESC";
}
$rst = $db->getAll($sql);
if (DB::isError($rst)) {
trigger_error("Error al consultar referencias pendientes de tracking", E_USER_WARNING);
echo $db->errorNative();
return false;
}
if (sizeOf($rst) > 0) {
$refs_sin_tracking = "
con el propósito de tener mas control en el acceso a la información en
el sistema, en los próximos días se implementará la siguiente medida
de seguridad: Solo se permitirá una sesión en el
sistema por cada cuenta de usuario, lo cual implica que si compartes
tu cuenta con alguien mas y los dos intentan trabajar al mismo tiempo
en el sistema, la sesión mas reciente deshabilitará a la sesión mas
antigua. Por tal razón te pedimos que solicites las cuentas de usuario
que sean necesarias para que puedas seguir trabajando en el
sistema.
Te recordamos que no debes compartir tu cuenta de usuario con nadie
mas, la responsabilidad de lo que se registre en el sistema es del
usuario a cuyo nombre esté registrada la cuenta.