/** * Obtiene la información del usuario en la aplicación. * * @param userAuthId Identificador del usuario en el Sistema Gestor de Usuarios. * @param userAuthType Tipo de usuario. * @param userName Nombre del usuario * @param remoteIpAddress Dirección IP del usuario. * @return Información del usuario en la aplicación. * @throws AppUserException si ocurre algún error en la validación */ public AppUser getAppUser( String userAuthId, String userAuthType, String userName, String remoteIpAddress, String entity, String sessionAdm) throws AppUserException, ArchivoModelException { if (logger.isDebugEnabled()) logger.debug( "getAppUser: userAuthId=[" + userAuthId + "], userAuthType=[" + userAuthType + "], remoteIpAddress=[" + remoteIpAddress + "]"); // Obtener el engine de base de datos DbEngine engine = null; String dataSourceName = ConfiguracionSistemaArchivoFactory.getConfiguracionSistemaArchivo() .getConfiguracionGeneral() .getDataSourceName(); String dbFactoryClass = ConfiguracionSistemaArchivoFactory.getConfiguracionSistemaArchivo() .getConfiguracionGeneral() .getDBFactoryClass(); if (StringUtils.isNotEmpty(entity)) { dataSourceName = MultiEntityUtil.composeDsName(dataSourceName, entity); } try { if (ConfigConstants.getInstance().getEntidadRequerida()) { // Buscar el datasource en el contexto if (dataSourceName != null) { Context context = new InitialContext(); if (context != null) { DataSource dataSource = (DataSource) context.lookup(dataSourceName); engine = new DbEngine(dataSource, dbFactoryClass); } } } else { engine = DataSourceEngine.getDbEngine(dataSourceName, dbFactoryClass); } } catch (NamingException e) { throw new ArchivoModelException(DbEngine.class, "createWithEntity", e.getMessage()); } catch (ArchivoModelException e) { throw e; } // Usuario AppUser user = new AppUser(); user.setExternalUserId(userAuthId); user.setUserType(userAuthType); user.setIp(remoteIpAddress); user.setEngine(engine); user.setEntity(entity); // Si es un administrador copiar el nombre del usuario if (StringUtils.isNotEmpty(sessionAdm)) { user.setName(userName); } // Comprobar la existencia del usuario en el Sistema de Archivo checkUser(user, sessionAdm); // Añadir los permisos del usuario addUserPermissions(user); // Añadir los grupos del usuario addUserGroups(user); // Establecer el nivel de auditoría setLogLevel(user); // Añadir la información de la organización setOrganizationInfo(user, entity); // Añadir las listas de control de acceso del usuario setAccessControlLists(user); return user; }