Uploaded image for project: 'Nuxeo Platform'
  1. Nuxeo Platform
  2. NXP-19493

Fix NavigationContextBean.goHome()

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 7.10, 8.2
    • Fix Version/s: 7.10-HF10, 8.3
    • Component/s: Seam / JSF UI
    • Tags:
    • Sprint:
      nxGang Sprint 8.3.2
    • Story Points:
      3

      Description

      Thee fix of NXP-19236 shows that It looks like it is not working anymore.

      Step to reproduce:

      Launch a default workflow:

      • With user A, create a document
      • With user B, ensure that permissions restrict access to the document
      • With user A, start a workflow on that document which requires interaction from user B
      • With user B, process and action the workflow

      We end up on the document permission error page with stacktrace:

                      javax.el.ELException: org.nuxeo.ecm.core.api.DocumentSecurityException: Privilege 'Read' is not granted to 'jsmith'
      	at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:339)
      	at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:348)
      	at org.jboss.el.parser.AstPropertySuffix.invoke(AstPropertySuffix.java:58)
      	at org.jboss.el.parser.AstValue.invoke(AstValue.java:96)
      	at org.jboss.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
      	at org.nuxeo.ecm.platform.ui.web.rest.services.URLPolicyServiceImpl.navigate(URLPolicyServiceImpl.java:551)
      	at org.nuxeo.ecm.platform.ui.web.rest.RestfulPhaseListener.beforePhase(RestfulPhaseListener.java:96)
      	at com.sun.faces.lifecycle.Phase.handleBeforePhase(Phase.java:228)
      	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:99)
      	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
      	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
      	at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
      	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
      	at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
      	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
      	at org.nuxeo.elasticsearch.web.sync.UIThreadMarker.doFilter(UIThreadMarker.java:48)
      	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
      	at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      	at org.nuxeo.ecm.core.management.jtajca.internal.Log4jWebFilter.doFilter(Log4jWebFilter.java:69)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      	at org.nuxeo.ecm.platform.ui.web.auth.NuxeoAuthenticationFilter.doFilterInternal(NuxeoAuthenticationFilter.java:434)
      	at org.nuxeo.ecm.platform.ui.web.auth.service.NuxeoAuthFilterChain.doFilter(NuxeoAuthFilterChain.java:51)
      	at org.nuxeo.ecm.platform.ui.web.auth.oauth.NuxeoOAuthFilter.doFilter(NuxeoOAuthFilter.java:122)
      	at org.nuxeo.ecm.platform.ui.web.auth.service.NuxeoAuthFilterChain.doFilter(NuxeoAuthFilterChain.java:49)
      	at org.nuxeo.ecm.platform.ui.web.auth.oauth2.NuxeoOAuth2Filter.doFilter(NuxeoOAuth2Filter.java:83)
      	at org.nuxeo.ecm.platform.ui.web.auth.service.NuxeoAuthFilterChain.doFilter(NuxeoAuthFilterChain.java:49)
      	at org.nuxeo.ecm.platform.ui.web.auth.NuxeoAuthenticationFilter.doFilter(NuxeoAuthenticationFilter.java:402)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      	at org.nuxeo.ecm.platform.web.common.exceptionhandling.NuxeoExceptionFilter.doFilter(NuxeoExceptionFilter.java:77)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      	at org.nuxeo.ecm.platform.web.common.encoding.NuxeoEncodingFilter.doFilter(NuxeoEncodingFilter.java:75)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)
      	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:486)
      	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:411)
      	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338)
      	at org.nuxeo.ecm.platform.ui.web.rest.FancyURLFilter.doFilter(FancyURLFilter.java:112)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      	at org.nuxeo.ecm.platform.web.common.requestcontroller.filter.NuxeoRequestControllerFilter.doFilter(NuxeoRequestControllerFilter.java:142)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      	at org.nuxeo.ecm.webdav.service.WIRequestFilter.doFilter(WIRequestFilter.java:61)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      	at org.nuxeo.ecm.platform.ui.web.auth.NuxeoAuthenticationFilter.doFilterInternal(NuxeoAuthenticationFilter.java:592)
      	at org.nuxeo.ecm.platform.ui.web.auth.service.NuxeoAuthFilterChain.doFilter(NuxeoAuthFilterChain.java:51)
      	at org.nuxeo.ecm.platform.ui.web.auth.oauth.NuxeoOAuthFilter.doFilter(NuxeoOAuthFilter.java:122)
      	at org.nuxeo.ecm.platform.ui.web.auth.service.NuxeoAuthFilterChain.doFilter(NuxeoAuthFilterChain.java:49)
      	at org.nuxeo.ecm.platform.ui.web.auth.oauth2.NuxeoOAuth2Filter.doFilter(NuxeoOAuth2Filter.java:83)
      	at org.nuxeo.ecm.platform.ui.web.auth.service.NuxeoAuthFilterChain.doFilter(NuxeoAuthFilterChain.java:49)
      	at org.nuxeo.ecm.platform.ui.web.auth.NuxeoAuthenticationFilter.doFilter(NuxeoAuthenticationFilter.java:402)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      	at com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilter.java:208)
      	at com.thetransactioncompany.cors.CORSFilter.doFilter(CORSFilter.java:274)
      	at org.nuxeo.ecm.platform.web.common.requestcontroller.filter.NuxeoCorsFilter.doFilter(NuxeoCorsFilter.java:49)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      	at org.nuxeo.ecm.platform.web.common.exceptionhandling.NuxeoExceptionFilter.doFilter(NuxeoExceptionFilter.java:77)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      	at org.nuxeo.ecm.platform.web.common.encoding.NuxeoEncodingFilter.doFilter(NuxeoEncodingFilter.java:75)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
      	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
      	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
      	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
      	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
      	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
      	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
      	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
      	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
      	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
      	at java.lang.Thread.run(Thread.java:745)
      Caused by: org.nuxeo.ecm.core.api.DocumentSecurityException: Privilege 'Read' is not granted to 'jsmith'
      	at org.nuxeo.ecm.core.api.AbstractSession.checkPermission(AbstractSession.java:212)
      	at org.nuxeo.ecm.core.api.AbstractSession.getDocument(AbstractSession.java:931)
      	at org.nuxeo.ecm.webapp.context.NavigationContextBean.navigateToRef(NavigationContextBean.java:630)
      	at org.nuxeo.ecm.webapp.context.NavigationContextBean.navigateTo(NavigationContextBean.java:712)
      	at sun.reflect.GeneratedMethodAccessor759.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at org.jboss.seam.util.Reflections.invoke(Reflections.java:22)
      	at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:32)
      	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56)
      	at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28)
      	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
      	at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:79)
      	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
      	at org.nuxeo.ecm.platform.ui.web.util.NuxeoExceptionInterceptor.aroundInvoke(NuxeoExceptionInterceptor.java:80)
      	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
      	at org.jboss.seam.core.ConversationInterceptor.aroundInvoke(ConversationInterceptor.java:56)
      	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
      	at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44)
      	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
      	at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
      	at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:196)
      	at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:114)
      	at org.nuxeo.ecm.webapp.context.NavigationContextBean_$$_javassist_seam_11.navigateTo(NavigationContextBean_$$_javassist_seam_11.java)
      	at org.nuxeo.ecm.platform.ui.web.rest.RestHelper.initContextFromRestRequest(RestHelper.java:109)
      	at sun.reflect.GeneratedMethodAccessor758.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at org.jboss.seam.util.Reflections.invoke(Reflections.java:22)
      	at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:32)
      	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56)
      	at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28)
      	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
      	at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:79)
      	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
      	at org.nuxeo.ecm.platform.ui.web.util.NuxeoExceptionInterceptor.aroundInvoke(NuxeoExceptionInterceptor.java:80)
      	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
      	at org.jboss.seam.core.ConversationInterceptor.aroundInvoke(ConversationInterceptor.java:56)
      	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
      	at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44)
      	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
      	at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
      	at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:196)
      	at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:114)
      	at org.nuxeo.ecm.platform.ui.web.rest.RestHelper_$$_javassist_seam_16.initContextFromRestRequest(RestHelper_$$_javassist_seam_16.java)
      	at sun.reflect.GeneratedMethodAccessor757.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:335)
      	... 90 more
      

      Indeed, the user who completes the task cannot see the doc. The problem is that we are not supposed to be redirected to the document page but to the Home page:

      RoutingTaskActionsBean#endTask which explicitly calls:

      return navigationContext.goHome();
      

      at the end of the method.

        Attachments

          Issue Links

            Activity

              People

              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0 minutes
                  0m
                  Logged:
                  Time Spent - 4 hours
                  4h