/**
   * Check the rights of the user for the page requested
   *
   * @throws IOException
   */
  public boolean checkAccess(String pageName, Request request, Response response)
      throws IOException {
    System.out.println("ENTER checkAccess");
    if (_request != null
        && _request.getHeader("EAAHash") != null
        && !_request.getHeader("EAAHash").equals("")) {
      System.out.println("EAA Headers present");
      System.out.println("asm.exists(UserSession.class): " + asm.exists(UserSession.class));

      if (!asm.exists(UserSession.class)) {
        asm.set(UserSession.class, new UserSessionImpl());
        UserSession userSession = asm.get(UserSession.class);
        userSession.setLoggedIn(true);
        userSession.setUserName(_request.getHeader("uid"));
        userSession.setIdP(_request.getHeader("Shib-Identity-Provider"));
        System.out.println("Creating Session");
      } else if (asm.get(UserSession.class).getUserName() == null
          || asm.get(UserSession.class).getUserName().equals("")) {
        UserSession userSession = asm.get(UserSession.class);
        userSession.setLoggedIn(true);
        userSession.setUserName(_request.getHeader("uid"));
        userSession.setIdP(_request.getHeader("Shib-Identity-Provider"));
        System.out.println("Editing existing Session");
      }
    }

    boolean canAccess = true;

    /* Is the requested page private ? */
    Component page = componentSource.getPage(pageName);
    boolean privatePage = page.getClass().getAnnotation(Private.class) != null;
    if (privatePage) {
      canAccess = false;
      /* Is the user already authentified ? */
      if (asm.exists(UserSession.class)) {
        UserSession userSession = asm.get(UserSession.class);
        canAccess = userSession.isLoggedIn();
      }
    }

    /*
     * This page can't be requested by a non authentified user => we
     * redirect him on the signon page
     */
    System.out.println("EXIT checkAccess");
    if (!canAccess) {
      response.sendRedirect(request.getContextPath() + LOGIN_PAGE);
      return true; // Make sure to leave the chain
    }

    return false;
  }
Exemplo n.º 2
0
  public static String check(
      AuthenticationPolicyType policyType, ApplicationStateManager applicationStateManager) {
    String redirectPage = null;

    boolean userAuthenticated = applicationStateManager.exists(UserSession.class);
    UserSession userSession = null;
    if (userAuthenticated) {
      userSession = applicationStateManager.get(UserSession.class);
    }

    switch (policyType) {
      case AUTHENTICATED_USERS:
        if (!userAuthenticated) {
          redirectPage = LOGIN_PAGE;
        }
        break;

      case NON_AUTHENTICATED_USERS:
        if (userAuthenticated) {
          redirectPage = ERROR_PAGE;
        }
        break;

      case ADMIN:
        if (!userAuthenticated || !userSession.getIsAdmin()) {
          redirectPage = ERROR_PAGE;
        }
        break;

      default:
        break;
    }

    return redirectPage;
  }
  @SuppressWarnings("unchecked")
  @Test
  public void get_from_configured_aso() {
    String strategyName = "ethereal";
    ApplicationStatePersistenceStrategy strategy = mockApplicationStatePersistenceStrategy();
    ApplicationStatePersistenceStrategySource source =
        mockApplicationStatePersistenceStrategySource();
    Class asoClass = ReadOnlyBean.class;
    ApplicationStateCreator<ReadOnlyBean> creator = mockApplicationStateCreator();
    ReadOnlyBean aso = new ReadOnlyBean();

    Map<Class, ApplicationStateContribution> configuration =
        Collections.singletonMap(asoClass, new ApplicationStateContribution(strategyName, creator));

    train_get(source, strategyName, strategy);

    train_get(strategy, asoClass, creator, aso);

    replay();

    ApplicationStateManager manager = new ApplicationStateManagerImpl(configuration, source, null);

    assertSame(manager.get(asoClass), aso);

    verify();
  }
Exemplo n.º 4
0
  private StringBuilder transformHTML(
      String snippetHTML,
      String basedir,
      List<String> srcPaths,
      ComponentResources resources,
      String urlParam) {
    StringBuilder sb = new StringBuilder((int) (snippetHTML.length() * 0.5));

    int start = 0;
    String path = null;

    Matcher m = p.matcher(snippetHTML);

    while (m.find()) {
      sb.append(snippetHTML, start, m.start());
      sb.append(m.group(1));
      sb.append("=\"");
      try {
        if (m.group(2).indexOf(ComponentConstants.THEME_IMG_DIR) != -1) {
          path = m.group(2);
        } else if (!(m.group(1).equals("href")
                && (m.group(2).startsWith("#") || m.group(2).startsWith("http")))
            && m.group(2).indexOf(asm.get(ChoosenTheme.class).getDir()) == -1
            && !m.group(2).contains("/assets/")
            && !m.group(2).contains(ComponentConstants.SRC_EVENT)) {

          String img = basedir + ComponentConstants.RESOURCES_DIR + File.separator + m.group(2);

          srcPaths.add(img);

          path =
              resources
                  .createEventLink(ComponentConstants.SRC_EVENT, (srcPaths.size() - 1))
                  .toURI();

        } else path = m.group(2);

      } catch (Exception e) {
        path = m.group(2);
      } finally {
        sb.append(path);
      }

      sb.append('"');
      start = m.end();
    }
    sb.append(snippetHTML, start, snippetHTML.length());

    return sb;
  }
  @SuppressWarnings("unchecked")
  @Test
  public void get_from_unconfigured_aso() {
    ApplicationStatePersistenceStrategy strategy = mockApplicationStatePersistenceStrategy();
    ApplicationStatePersistenceStrategySource source =
        mockApplicationStatePersistenceStrategySource();
    Class asoClass = ReadOnlyBean.class;
    final Holder holder = new Holder();
    ObjectLocator locator = mockObjectLocator();

    train_get(source, ApplicationStateManagerImpl.DEFAULT_STRATEGY, strategy);

    IAnswer answer =
        new IAnswer() {
          public Object answer() throws Throwable {
            ApplicationStateCreator creator =
                (ApplicationStateCreator) EasyMock.getCurrentArguments()[1];

            Object aso = creator.create();

            holder.put(aso);

            return aso;
          }
        };

    expect(strategy.get(eq(asoClass), isA(ApplicationStateCreator.class))).andAnswer(answer);

    train_autobuild(locator, asoClass, new ReadOnlyBean());

    replay();

    Map<Class, ApplicationStateContribution> configuration = Collections.emptyMap();

    ApplicationStateManager manager =
        new ApplicationStateManagerImpl(configuration, source, locator);

    Object actual = manager.get(asoClass);

    assertSame(actual, holder.get());

    verify();
  }