/** * Valida que la clave no exista en el historial * * @param ide_usua Clave primaria del usuario * @param clave * @return */ public boolean isClaveNueva(String ide_usua, String clave) { // Busco cuantas claves anteriores valido, estan sis_reglas TablaGenerica tab_reglas = getReglas(); int int_num_antes = 0; try { int_num_antes = Integer.parseInt(tab_reglas.getValor("NUM_VALIDA_ANTERIOR_RECL")); } catch (Exception e) { } if (int_num_antes == 0) { // valido todas TablaGenerica tab_historia = utilitario.consultar( "SELECT * FROM sis_historial_claves where ide_usua=" + ide_usua + " and clave_hicl='" + encriptar.getEncriptar(clave) + "'"); return tab_historia.isEmpty(); } else { TablaGenerica tab_historia = utilitario.consultar( "SELECT * FROM sis_historial_claves where ide_usua=" + ide_usua + " order by FECHA_HICL desc"); for (int i = 0; i < int_num_antes; i++) { if (tab_historia.getValor("CLAVE_HICL") != null && (tab_historia.getValor("CLAVE_HICL").equals(encriptar.getEncriptar(clave)))) { return false; } } return true; } }
/** * Forma la sentencia sql para el insert en la tabla de historial de auditoria de usuarios * * @param ide_usua Clave primaria del usuario * @param clave la clave sin encriptar * @return la sentencia sql */ public String crearSQLHistorialClave(String ide_usua, String clave) { String str_sql = "INSERT INTO sis_historial_claves (ide_usua,clave_hicl,fecha_hicl,hora_hicl) VALUES(" + ide_usua + ",'" + encriptar.getEncriptar(clave) + "'," + utilitario.getFormatoFechaSQL(utilitario.getFechaActual()) + "," + utilitario.getFormatoHoraSQL(utilitario.getHoraActual()) + ")"; return str_sql; }
public void cambiarClave(String ide_usua, String clave) { String str_sql = "UPDATE sis_usuario_clave SET clave_uscl='" + encriptar.getEncriptar(clave) + "' WHERE IDE_USUA=" + ide_usua + " and activo_uscl=true"; utilitario.getConexion().agregarSql(str_sql); str_sql = "UPDATE sis_usuario SET cambia_clave_usua=false WHERE IDE_USUA=" + ide_usua; utilitario.getConexion().agregarSql(str_sql); // historial de claves de usuario utilitario.getConexion().agregarSql(crearSQLHistorialClave(ide_usua, clave)); // Auditoria de Cambio de clave solo si el usuario no es nuevo utilitario .getConexion() .agregarSql( crearSQLAuditoriaAcceso(ide_usua, P_SIS_CAMBIO_CLAVE, "Cambió clave el usuario")); utilitario.getConexion().ejecutarListaSql(); }
/** * Resetea la clave de un usuario * * @param ide_usua Clave primaria del usuario * @param clave Nueva clave */ public void resetearClave(String ide_usua, String clave) { // Resete la Clave String str_sql = "UPDATE sis_usuario_clave SET CLAVE_USCL='" + encriptar.getEncriptar(clave) + "' WHERE IDE_USUA=" + ide_usua + " AND ACTIVO_USCL=true"; // Actualiza el campo para que a lo que ngrese al sistema le obligue a // cambiar la clave utilitario.getConexion().agregarSql(str_sql); str_sql = "UPDATE sis_usuario SET cambia_clave_usua=true WHERE IDE_USUA=" + ide_usua; utilitario.getConexion().agregarSql(str_sql); // Auditoria para reseteo de clavel utilitario .getConexion() .agregarSql(crearSQLAuditoriaAcceso(ide_usua, P_SIS_RESETEO_CLAVE, "Reseteo de clave")); utilitario.getConexion().agregarSql(crearSQLHistorialClave(ide_usua, clave)); utilitario.getConexion().ejecutarListaSql(); }
/** * Ingresar al sistema * * @param nick Nick de login del usuario * @param clave Clave del usuario * @return mensaje de error si el fallo alguna validación, caso contrario retorna vacio */ public String ingresar(String nick, String clave) { String str_mensaje = ""; TablaGenerica tab_usuario = utilitario.consultar( "SELECT * FROM SIS_USUARIO WHERE NICK_USUA='" + nick + "' AND ACTIVO_USUA=true"); if (tab_usuario.getTotalFilas() > 0) { utilitario.crearVariable("IDE_USUA", tab_usuario.getValor("IDE_USUA")); // Verifico que el usuario no este bloqueado if (tab_usuario.getValor("BLOQUEADO_USUA") == null || tab_usuario.getValor("BLOQUEADO_USUA").equals("false") || tab_usuario.getValor("BLOQUEADO_USUA").equals("0")) { // Verifica que el usuario no este caducoado if (tab_usuario.getValor("fecha_caduc_usua") != null) { if (utilitario.isFechaMayor( utilitario.getDate(), utilitario.getFecha(tab_usuario.getValor("fecha_caduc_usua")))) { str_mensaje = "La vigencia de su usuario a caducado, contactese con el administrador del sistema"; return str_mensaje; } } // Verifica que el usuario no haya iniciado en otra maquina if (isUsuarioLogeado(tab_usuario.getValor("IDE_USUA")) == false) { // Verifica intentos fallidos vs intentos maximon int int_maximo_intentos = getNumeroIntentosAcceso(); int int_intentos = getIntentosAcceso(tab_usuario.getValor("IDE_USUA"), utilitario.getFechaActual()); if (int_intentos < int_maximo_intentos) { // Verifica que exista una clave activa para el usuario TablaGenerica tab_clave = getClaveActivaUusario(tab_usuario.getValor("IDE_USUA")); if (tab_clave.getTotalFilas() > 0) { // Verifica que la clave no haya caducado if (tab_clave.getValor("fecha_vence_uscl") != null) { if (utilitario.isFechaMayor( utilitario.getDate(), utilitario.getFecha(tab_clave.getValor("fecha_vence_uscl")))) { str_mensaje = "La vigencia de su clave a caducado, contactese con el administrador del sistema"; return str_mensaje; } } // Verifico que la clave sea correcta if (encriptar.getEncriptar(clave).equals(tab_clave.getValor("CLAVE_USCL"))) { try { if (isPerfilActivo(tab_usuario.getValor("IDE_PERF"))) { utilitario.crearVariable("IDE_PERF", tab_usuario.getValor("IDE_PERF")); utilitario.crearVariable("TEMA", tab_usuario.getValor("TEMA_USUA")); solicitarCambiarClave(tab_usuario.getValor("IDE_USUA")); // Guarda en auditoria de acceso si no tiene // q cambiar la clave el usuario if (isCambiarClave(tab_usuario.getValor("IDE_USUA")) == false) { // si tiene intentos fallidos de acceso los reseteo poniendoles fin utilitario .getConexion() .agregarSql( "UPDATE sis_auditoria_acceso set fin_auac=true WHERE ide_usua=" + tab_usuario.getValor("IDE_USUA") + " and fecha_auac=" + utilitario.getFormatoFechaSQL(utilitario.getFechaActual()) + " and ip_auac='" + utilitario.getIp() + "'"); utilitario .getConexion() .agregarSql( crearSQLAuditoriaAcceso( tab_usuario.getValor("IDE_USUA"), P_SIS_INGRESO_USUARIO, "Ingresó al sistema")); utilitario.getConexion().ejecutarListaSql(); } } else { str_mensaje = "El perfil de su usuario esta desactivado, contactese con el administrador del sistema"; } } catch (Exception e) { } } else { // Fallo el ingreso utilitario .getConexion() .ejecutarSql( crearSQLAuditoriaAcceso( tab_usuario.getValor("IDE_USUA"), P_SIS_FALLO_INGRESO, "Fallo ingreso intento : " + int_intentos)); str_mensaje = "La clave ingresada es incorrecta"; int_intentos++; if (int_intentos == int_maximo_intentos) { str_mensaje = " A sobrepasado el número máximo de intentos para acceder al sistema, se bloqueara el usuario, contáctese con el administrador del sistema para desbloquearlo"; bloquearUsuario( tab_usuario.getValor("IDE_USUA"), "Bloquear usuario por sobrepasar el numero maximo de intentos : " + int_maximo_intentos); } } } else { str_mensaje = "El usuario no tiene una clave activa contactese con el administrador del sistema"; } } else { // bloqueo el usuario por sobrepasar el numero maximo de // intentos permitidos str_mensaje = "A sobrepasado el número máximo de intentos para acceder al sistema, se bloqueara el usuario, contáctese con el administrador del sistema para desbloquearlo"; bloquearUsuario( tab_usuario.getValor("IDE_USUA"), "Bloquear usuario por sobrepasar el numero maximo de intentos : " + int_maximo_intentos); } } else { // Guarda intento fallido al acceder se ya se encuentra en // ssesion utilitario .getConexion() .ejecutarSql( crearSQLAuditoriaAcceso( tab_usuario.getValor("IDE_USUA"), P_SIS_FALLO_INGRESO, "Fallo ingreso, el usuario tiene sessión iniciada en otra máquina ")); str_mensaje = "El usuario ingresado tiene sessión iniciada en otra máquina,contactese con el administrador del sistema "; } } else { str_mensaje = "El usuario esta bloqueado contactese con el administrador del sistema"; } } else { str_mensaje = "El nombre del usuario es incorrecto o no está activo"; } return str_mensaje; }