public boolean preHandle()

in termsOfService-server/src/main/java/jetbrains/buildServer/termsOfService/TermsOfServiceHandlerInterceptor.java [27:66]


    public boolean preHandle(final HttpServletRequest request, final HttpServletResponse response) throws Exception {
        if (!WebUtil.isProbablyBrowser(request)) {
            return true;
        }

        String path = WebUtil.getPathWithoutContext(request);

        if(WebUtil.isAjaxRequest(request)){
            return true;
        }

        SUser user = SessionUser.getUser(request);
        HttpSession session = request.getSession();

        if (user == null || session == null) {
            return true;
        }

        List<TermsOfServiceManager.Agreement> mustAcceptAgreements = myManager.getMustAcceptAgreements(user);

        if (mustAcceptAgreements.isEmpty()) {
            session.setAttribute(NO_AGREEMENTS_EXIST_WHEN_SESSION_WAS_CREATED_ATTR, true);
            return true;
        }

        TermsOfServiceManager.Agreement agreement = mustAcceptAgreements.get(0);

        if (session.getAttribute(NO_AGREEMENTS_EXIST_WHEN_SESSION_WAS_CREATED_ATTR) != null && !agreement.isEnforcedForActiveSessions()) {
            return true;
        }

        if (!path.startsWith(AcceptTermsOfServiceController.PATH) && !Boolean.parseBoolean(session.getAttribute("CHANGE_PASSWORD_REQUIRED_ATTRIBUTE").toString())) {
            String entryPoint = AcceptTermsOfServiceController.PATH + "?agreement=" + agreement.getId() + "&" + PROCEED_URL_PARAM + "=" + WebUtil.encode(WebUtil.getRequestUrl(request));
            TermsOfServiceLogger.LOGGER.debug("Redirecting " + WebUtil.getRequestDump(request) + " to " + entryPoint);
            response.sendRedirect(request.getContextPath() + entryPoint);
            return false;
        }

        return true;
    }