Beispiel #1
0
  /**
   * 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;
  }