/** * Servicio de bitacoreo de acceso. * * @param usuario usuario logeado * @param num numero para diferenciar la petición * @param pag pagina a la que se intento accesar * @return String */ @RequestMapping(value = "/denied/{usuario}/{path}/{num}", method = RequestMethod.GET) public Object saveDenied( @PathVariable("usuario") String usuario, @PathVariable("num") String num, @PathVariable("path") String pag) { try { String mensaje = "Intento de acceso no autorizado al modulo " + pag; bitacoraService.insertEvent(AccionBitacora.NO_AUTORIZADO.getCodigoAccion(), usuario, mensaje); return "{\"response\":\"ok\"}"; } catch (SessionTimeOutException e) { log.error(StackTraceUtil.getStackTrace(e)); throw new SessionTimeOutException("la Sesión ha expirado."); } catch (InvalidInputDataException e) { log.error(StackTraceUtil.getStackTrace(e)); throw new InvalidInputDataException(e.getMessage()); } catch (UnauthorizedException e) { log.error(StackTraceUtil.getStackTrace(e)); throw new UnauthorizedException(e.getMessage()); } catch (Exception e) { log.error(StackTraceUtil.getStackTrace(e)); throw new InternalServerErrorExcepcion("Se genero un error interno."); } }
/** * Servicio de obtencion de lenguajes. * * @param type tipo de documento que se desea consultar * @return String */ @RequestMapping(value = "/language/{lang}", method = RequestMethod.GET) public Object getIdiomas(@PathVariable("lang") String lang) { InputStream inputStream = null; OutputStream outputStream = null; try { System.out.println(); return "{\"testi\":\"{\"testiSe\":\"sec\"}\"}"; } catch (SessionTimeOutException e) { log.error(StackTraceUtil.getStackTrace(e)); throw new SessionTimeOutException("la Sesión ha expirado."); } catch (InvalidInputDataException e) { log.error(StackTraceUtil.getStackTrace(e)); throw new InvalidInputDataException(e.getMessage()); } catch (UnauthorizedException e) { log.error(StackTraceUtil.getStackTrace(e)); throw new UnauthorizedException(e.getMessage()); } catch (Exception e) { log.error(StackTraceUtil.getStackTrace(e)); throw new InternalServerErrorExcepcion("Se genero un error interno."); } finally { IOUtils.closeQuietly(inputStream); IOUtils.closeQuietly(outputStream); } }
/** * Servicio de obtencion de archivo PDF/XML. * * @param token token generado por el sistema para la sesion * @param account cuenta que se va a consultar * @param month mes que se desea consultar * @param year año del mes que se desea consultar * @param type tipo de documento que se desea consultar * @return String */ @RequestMapping(value = "/pdfmethod/{token}/{archivo}/{tipo}", method = RequestMethod.GET) public void pdfMethod( @PathVariable("token") String token, @PathVariable("archivo") byte[] archivo, @PathVariable("tipo") String type, HttpServletRequest request, HttpServletResponse response) { InputStream inputStream = null; OutputStream outputStream = null; try { if (!this.utilsService.timeOutValidation(token)) { throw new SessionTimeOutException("No hay una sesión valida para el usuario actual."); } outputStream = response.getOutputStream(); Properties appProperties = SystemProperties.getAppPropPath(); if (type.equals(appProperties.getProperty("pdfType"))) { response.setContentType(appProperties.getProperty("pdfContentType")); } else if (type.equals(appProperties.getProperty("xmlType"))) { response.setContentType(appProperties.getProperty("xmlContentType")); } outputStream.write(archivo); IOUtils.copy(inputStream, outputStream); } catch (IOException e) { log.error(StackTraceUtil.getStackTrace(e)); throw new InternalServerErrorExcepcion("Se genero un error interno."); } catch (SessionTimeOutException e) { log.error(StackTraceUtil.getStackTrace(e)); throw new SessionTimeOutException("la Sesión ha expirado."); } catch (InvalidInputDataException e) { log.error(StackTraceUtil.getStackTrace(e)); throw new InvalidInputDataException(e.getMessage()); } catch (UnauthorizedException e) { log.error(StackTraceUtil.getStackTrace(e)); throw new UnauthorizedException(e.getMessage()); } catch (Exception e) { log.error(StackTraceUtil.getStackTrace(e)); throw new InternalServerErrorExcepcion("Se genero un error interno."); } finally { IOUtils.closeQuietly(inputStream); IOUtils.closeQuietly(outputStream); } }
/** * Servicio logOut para termino de sesion. * * @param token token generado por el sistema para la sesion * @return String */ @RequestMapping(value = "/logOut/{token}", method = RequestMethod.GET) @ResponseBody public String logOut(@PathVariable("token") String token) { try { log.info("logOut del sistema..."); String usuarioActual = this.utilsService.usuarioByToken(token); this.loginRepository.delete(this.loginRepository.findLoginByToken(token)); this.accesoRepository.delete(this.accesoRepository.findAccesoByToken(token)); this.bitacoraService.insertEvent(Long.valueOf("2"), usuarioActual, "LogOut Success"); return "logOut"; } catch (Exception e) { log.error(StackTraceUtil.getStackTrace(e)); throw new InternalServerErrorExcepcion("Se genero un error interno."); } }
/** * Servicio login para inicio de session * * @param user nombre de usuario para acceso * @param password password de usuario para acceso * @return Objeto de autenticación que contiene nombre de usuario y token generado */ @RequestMapping(value = "/login/{user}/{password}/{rand}", method = RequestMethod.GET) @ResponseBody public LoginResponse login( @PathVariable("user") String user, @PathVariable("password") String password, @PathVariable("rand") String nRand) { try { log.info("Solicitud login..."); // Validamos los parametros de entrada if (CommonUtils.isEmpty(user) || CommonUtils.isEmpty(password)) { log.info("User/Password is null."); throw new InvalidInputDataException("User/Password is null."); } Usuario usuario = usuarioRepository.findByUsernameAndPassword(user, CommonUtils.encriptarCadena(password)); if (null == usuario) { log.info("User/Password incorrect: " + user + ":" + password); throw new UnauthorizedException("User/Password incorrect."); } if (!this.utilsService.validarStatusUsuario(usuario)) { log.info("Usuario con status invalido"); throw new UnauthorizedException("Usuario con status invalido"); } // Genero el token de seguridad String token = UUID.randomUUID().toString().toUpperCase(); // se realiza la insercion de acceso Acceso acceso = new Acceso(); acceso.setToken(token); acceso.setLastReq(Calendar.getInstance().getTime()); accesoRepository.save(acceso); // se realiza la insercion de login Login login = new Login(); login.setToken(token); login.setUserName(user); this.loginRepository.save(login); // Retorno el token generado al usuario if (this.miembrosPerfilRepository.findByUsername(this.usuarioRepository.findOne(user)) == null) { log.info("Usuario sin perfil asignado"); throw new UnauthorizedException("Usuario con status invalido"); } Perfil perfil = this.miembrosPerfilRepository .findByUsername(this.usuarioRepository.findOne(user)) .getPerfil(); this.bitacoraService.insertEvent(Long.valueOf("1"), user, "Login Success"); this.bitacoraService.revisarBloqueo(user); return new LoginResponse( user, token, String.valueOf(perfil.getIdPerfil()), usuario.getBndSolPass(), usuario.getPersona().getNombres(), usuario.getPersona().getApPaterno(), usuario.getPersona().getApMaterno(), usuario.getPersona().getEmail()); } catch (InvalidInputDataException e) { log.error(StackTraceUtil.getStackTrace(e)); throw new InvalidInputDataException(e.getMessage()); } catch (UnauthorizedException e) { log.error(StackTraceUtil.getStackTrace(e)); this.bitacoraService.insertEvent(Long.valueOf("1"), user, getFailMessage()); this.bitacoraService.revisarBloqueo(user); throw new UnauthorizedException(e.getMessage()); } catch (Exception e) { log.error(StackTraceUtil.getStackTrace(e)); throw new InternalServerErrorExcepcion("Se genero un error interno."); } }