Example usage for com.liferay.portal.kernel.util WebKeys INVOKER_FILTER_URI

List of usage examples for com.liferay.portal.kernel.util WebKeys INVOKER_FILTER_URI

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.util WebKeys INVOKER_FILTER_URI.

Prototype

String INVOKER_FILTER_URI

To view the source code for com.liferay.portal.kernel.util WebKeys INVOKER_FILTER_URI.

Click Source Link

Usage

From source file:com.liferay.documentlibrary.hook.filter.DLRecordFilter.java

License:Open Source License

@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
        throws IOException, ServletException {

    boolean isLogsEnabled = GetterUtil.getBoolean(PropsUtil.get("document.download.logs.enabled"),
            Boolean.FALSE);/*from  ww  w.j  av  a 2 s  .c  o  m*/
    if (isLogsEnabled) {
        try {

            HttpServletRequest httpRequest = PortalUtil
                    .getOriginalServletRequest((HttpServletRequest) servletRequest);
            String uri = (String) servletRequest.getAttribute(WebKeys.INVOKER_FILTER_URI);
            /**
             * In WebServerServlet(Parent servlet) it returns path like /1024/123/Document+Name/uuid
             * While in this filter URI is like /document/1024/123/Document+Name/uuid. So to use OOB methods
             * I have replaced intial /document/ with blank.
             */
            uri = StringUtil.replaceFirst(uri, "/documents/", StringPool.BLANK);
            String[] pathArray = StringUtil.split(uri, CharPool.SLASH);

            if (Validator.isNumber(pathArray[0])) {

                User user = _getUser(httpRequest);
                PrincipalThreadLocal.setName(user.getUserId());
                PrincipalThreadLocal.setPassword(PortalUtil.getUserPassword(httpRequest));

                PermissionChecker permissionChecker = PermissionCheckerFactoryUtil.create(user);

                PermissionThreadLocal.setPermissionChecker(permissionChecker);

                FileEntry fileEntry = getFileEntry(pathArray);

                String remoteIpAddress = httpRequest.getRemoteAddr();
                addDLRecordLog(fileEntry, user, remoteIpAddress);
            }

            //System.out.println("URI " + uri);
        } catch (Exception e) {
            LOGGER.error(e.getMessage(), e);
        }
    }
    filterChain.doFilter(servletRequest, servletResponse);
}

From source file:com.liferay.httpservice.internal.servlet.BundleServletRequest.java

License:Open Source License

@Override
public Object getAttribute(String name) {
    if ((name.equals(JavaConstants.JAVAX_SERVLET_FORWARD_SERVLET_PATH)
            || name.equals(WebKeys.INVOKER_FILTER_URI)) && _attributes.containsKey(WebKeys.SERVLET_PATH)) {

        return _attributes.get(WebKeys.SERVLET_PATH);
    }//www . j av  a  2  s  .  c o  m

    if (_maskedAttributes.contains(name)) {
        return _attributes.get(name);
    }

    return super.getAttribute(name);
}

From source file:com.liferay.sampleservletfilter.hook.filter.SampleFilter.java

License:Open Source License

@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
        throws IOException, ServletException {

    String uri = (String) servletRequest.getAttribute(WebKeys.INVOKER_FILTER_URI);

    System.out.println("Called SampleFilter.doFilter(" + servletRequest + ", " + servletResponse + ", "
            + filterChain + ") for URI " + uri);

    filterChain.doFilter(servletRequest, servletResponse);
}

From source file:com.liferay.sync.filter.SyncJSONFilter.java

License:Open Source License

@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
        throws IOException, ServletException {

    String uri = (String) servletRequest.getAttribute(WebKeys.INVOKER_FILTER_URI);

    if (!uri.startsWith("/api/jsonws/sync-web.")) {
        filterChain.doFilter(servletRequest, servletResponse);

        return;//from w w  w  .  jav a  2 s.c  o m
    }

    HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;

    if (PrefsPropsUtil.getBoolean(PortalUtil.getCompanyId(httpServletRequest),
            PortletPropsKeys.SYNC_SERVICES_ENABLED, PortletPropsValues.SYNC_SERVICES_ENABLED)) {

        filterChain.doFilter(servletRequest, servletResponse);

        return;
    }

    servletResponse.setCharacterEncoding(StringPool.UTF8);
    servletResponse.setContentType(ContentTypes.APPLICATION_JSON);

    OutputStream outputStream = servletResponse.getOutputStream();

    String json = SyncUtil.buildExceptionMessage(new SyncServicesUnavailableException());

    json = "{\"exception\": \"" + json + "\"}";

    outputStream.write(json.getBytes(StringPool.UTF8));

    outputStream.close();
}

From source file:com.liferay.sync.internal.servlet.filter.SyncJSONFilter.java

License:Open Source License

@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
        throws IOException, ServletException {

    SyncDevice syncDevice = null;/*from   w  ww . jav a  2s  .c  o m*/

    HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;

    String uuid = httpServletRequest.getHeader("Sync-UUID");

    if (uuid != null) {
        syncDevice = SyncDeviceLocalServiceUtil.fetchSyncDeviceByUuidAndCompanyId(uuid,
                _portal.getCompanyId(httpServletRequest));
    }

    if (syncDevice == null) {
        syncDevice = SyncDeviceLocalServiceUtil.createSyncDevice(0);
    }

    syncDevice.setHostname(servletRequest.getRemoteHost());

    SyncDeviceThreadLocal.setSyncDevice(syncDevice);

    if (uuid != null) {
        filterChain.doFilter(servletRequest, servletResponse);

        return;
    }

    String uri = (String) servletRequest.getAttribute(WebKeys.INVOKER_FILTER_URI);

    if (uri.equals("/api/jsonws/invoke")) {
        String contentType = httpServletRequest.getHeader(HttpHeaders.CONTENT_TYPE);

        if ((contentType == null) || !contentType.startsWith(ContentTypes.MULTIPART_FORM_DATA)) {

            filterChain.doFilter(servletRequest, servletResponse);

            return;
        }

        if (!(httpServletRequest instanceof UploadServletRequest)) {
            servletRequest = _portal.getUploadServletRequest(httpServletRequest);
        }

        if (!isSyncJSONRequest(servletRequest)) {
            filterChain.doFilter(servletRequest, servletResponse);

            return;
        }
    } else if (!uri.startsWith("/api/jsonws/sync")) {
        filterChain.doFilter(servletRequest, servletResponse);

        return;
    }

    if (ParamUtil.get(httpServletRequest, "debug", false)) {
        filterChain.doFilter(servletRequest, servletResponse);

        return;
    }

    Throwable throwable = null;

    if (PrefsPropsUtil.getBoolean(_portal.getCompanyId(httpServletRequest),
            SyncServiceConfigurationKeys.SYNC_SERVICES_ENABLED,
            SyncServiceConfigurationValues.SYNC_SERVICES_ENABLED)) {

        int absoluteSyncClientMinBuild = 0;
        int syncClientMinBuild = 0;

        String syncDeviceType = httpServletRequest.getHeader("Sync-Device");

        if (syncDeviceType == null) {
            throwable = new SyncDeviceHeaderException();
        } else if (syncDeviceType.startsWith("desktop")) {
            absoluteSyncClientMinBuild = _ABSOLUTE_SYNC_CLIENT_MIN_BUILD_DESKTOP;

            syncClientMinBuild = PrefsPropsUtil.getInteger(_portal.getCompanyId(httpServletRequest),
                    SyncServiceConfigurationKeys.SYNC_CLIENT_MIN_BUILD_DESKTOP,
                    SyncServiceConfigurationValues.SYNC_CLIENT_MIN_BUILD_DESKTOP);
        } else if (syncDeviceType.equals("mobile-android")) {
            absoluteSyncClientMinBuild = _ABSOLUTE_SYNC_CLIENT_MIN_BUILD_ANDROID;

            syncClientMinBuild = PrefsPropsUtil.getInteger(_portal.getCompanyId(httpServletRequest),
                    SyncServiceConfigurationKeys.SYNC_CLIENT_MIN_BUILD_ANDROID,
                    SyncServiceConfigurationValues.SYNC_CLIENT_MIN_BUILD_ANDROID);
        } else if (syncDeviceType.equals("mobile-ios")) {
            absoluteSyncClientMinBuild = _ABSOLUTE_SYNC_CLIENT_MIN_BUILD_IOS;

            syncClientMinBuild = PrefsPropsUtil.getInteger(_portal.getCompanyId(httpServletRequest),
                    SyncServiceConfigurationKeys.SYNC_CLIENT_MIN_BUILD_IOS,
                    SyncServiceConfigurationValues.SYNC_CLIENT_MIN_BUILD_IOS);
        } else {
            throwable = new SyncDeviceHeaderException();
        }

        if (throwable == null) {
            if (syncClientMinBuild < absoluteSyncClientMinBuild) {
                syncClientMinBuild = absoluteSyncClientMinBuild;
            }

            int syncBuild = httpServletRequest.getIntHeader("Sync-Build");

            if (syncBuild >= syncClientMinBuild) {
                filterChain.doFilter(servletRequest, servletResponse);

                return;
            } else {
                throwable = new SyncClientMinBuildException(
                        "Sync client does not meet minimum build " + syncClientMinBuild);
            }
        }
    } else {
        throwable = new SyncServicesUnavailableException();
    }

    servletResponse.setCharacterEncoding(StringPool.UTF8);
    servletResponse.setContentType(ContentTypes.APPLICATION_JSON);

    OutputStream outputStream = servletResponse.getOutputStream();

    String json = _syncUtil.buildExceptionMessage(throwable);

    json = "{\"exception\": \"" + json + "\"}";

    outputStream.write(json.getBytes(StringPool.UTF8));

    outputStream.close();
}

From source file:com.liferay.sync.security.auth.verifier.SyncAuthVerifier.java

License:Open Source License

@Override
public AuthVerifierResult verify(AccessControlContext accessControlContext, Properties properties)
        throws AuthException {

    AuthVerifierResult authVerifierResult = new AuthVerifierResult();

    HttpServletRequest request = accessControlContext.getRequest();

    String uri = (String) request.getAttribute(WebKeys.INVOKER_FILTER_URI);

    if (uri.startsWith("/download/")) {
        String contextPath = request.getContextPath();

        if (!contextPath.equals("/o/sync")) {
            return authVerifierResult;
        }//from  w ww .ja  v a 2 s . c  o  m
    }

    String token = request.getHeader(_TOKEN_HEADER);

    if (Validator.isNotNull(token)) {
        String userIdString = getUserId(token);

        if (userIdString != null) {
            authVerifierResult.setState(AuthVerifierResult.State.SUCCESS);
            authVerifierResult.setUserId(Long.valueOf(userIdString));

            return authVerifierResult;
        }
    }

    HttpAuthorizationHeader httpAuthorizationHeader = HttpAuthManagerUtil.parse(request);

    if (httpAuthorizationHeader == null) {

        // SYNC-1463

        Map<String, Object> settings = accessControlContext.getSettings();

        settings.remove("basic_auth");

        return authVerifierResult;
    }

    String scheme = httpAuthorizationHeader.getScheme();

    if (!StringUtil.equalsIgnoreCase(scheme, HttpAuthorizationHeader.SCHEME_BASIC)) {

        return authVerifierResult;
    }

    try {
        long userId = HttpAuthManagerUtil.getBasicUserId(request);

        if (userId > 0) {
            token = createToken(userId);

            if (token != null) {
                HttpServletResponse response = accessControlContext.getResponse();

                response.addHeader(_TOKEN_HEADER, token);
            }
        } else {
            userId = _userLocalService.getDefaultUserId(_portal.getCompanyId(request));
        }

        authVerifierResult.setState(AuthVerifierResult.State.SUCCESS);
        authVerifierResult.setUserId(userId);

        return authVerifierResult;
    } catch (Exception e) {
        throw new AuthException(e);
    }
}