Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(ui) : Strengthen sw360 admin privileges about Read and Write #1468

Merged

Conversation

KoukiHama
Copy link
Member

@KoukiHama KoukiHama commented Feb 21, 2022

Please provide a summary of your changes here.

  • Which issue is this pull request belonging to and how is it solving it? (Refer to issue here)
  • Did you add or update any new dependencies that are required for your change?

Issue: #1290 #1412 #1450

The outline of a functional improvement

Purpose

This modification allows Admin user to access projects set by other users as PRIVATE or ME AND MODERATORS. This function can be enabled or disabled in the properties. (Default setting is disabled)

The outline of function change

  • Admin user can list all projects regardless of the project's visibility setting.
    Figure1 List including projects set by other users as PRIVATE or ME AND MODERATORS
    image

  • Admin user can view all projects regardless of the project's visibility settings.

    • Admin user can view project details set by other users as PRIVATE or ME AND MODERATORS.
      Figure2 Project detail view.
      image
    • Admin user can view project details linked to other users' PRIVATE or ME AND MODERATORS projects.
  • Whether to enable the above functions can be changed by the configuration file.
    This function is enabled only when the following values ​​are added to sw360.properties.
    admin.private.project.access.enabled=true
    (If the value does not exist or false is specified, this function is disabled.)

Points of code change

  • Backend changes
    • The acquisition process of the accessible projects

      • Source code
        • backend/src-common/src/main/java/org/eclipse/sw360/datahandler/db/ProjectRepository.java
          • getAccessibleProjectsSummary method
          • getMyAccessibleProjectsCount method
      • Changes
        Admin user can get all the project data from couchdb regardless of the visibility settings.
    • ProjectPermissions

      • Source code
        • libraries/lib-datahandler/src/main/java/org/eclipse/sw360/datahandler/permissions/ProjectPermissions.java
          • isVisible method
      • Changes
        Admin user has READ permission for projects created by other users regardless of the visibility.
    • Comparison of behavior when the function is enabled or disabled.

      Action Private Access - Disable Private Access - Enable
      READ (other user PRIVATE project) - x
      READ (other user ME_AND_MODERATORS project ) - x
      READ (other user BUISNESSUNIT_AND_MODERATORS project) x x
      READ (other user EVERYONE project) x x

      x : Access allowed
      - : Access denied

How to do test

  • Advance Preparations
    1. Sign in as admin@sw360.org user and create the following projects.
      • MyProject001 (Visibility:Everyone)
      • MyProject002 (Visibility:Everyone)
    2. Sign in as admin1@sw360.org user and create the following projects.
      • OtherUserProject001 (Visibility:Private)
      • OtherUserProject002 (Visibility:Me and Moderators)
    3. Link each OtherUserProject as a subproject of MyProject.
      • MyProject001 -> OtherUserProject001
      • MyProject002 -> OtherUserProject002
  • Operation check
    • Enable the function and check the following operation. (admin.private.project.access.enabled=true)
      • Check that OtherUserProject001-002 are displayed on the list of Project section.
      • Open any project and click the "Link to Projects" button. Check that OhterUserProject001-002 are displayed on the list.
      • Click OtherUserProject001-002 on the list of Project section and check that the project detail view can be opened.
      • Check that OtherUserProject001-002 can be opened on the edit view and the edited contents are reflected on the project detail view and Change log.
      • Click MyProject001-002 on the list of Project section (these are linked to other users' PRIVATE or ME AND MODERATORS projects) and check that the project detail view can be opened.
    • Disable the function and check the following operation. (admin.private.project.access.enabled=false)
      • Check that OtherUserProject001-002 are not displayed on the list of Project section.
      • Open any project and click the "Link to Projects" button. Check that OtherUserProject001-002 are not displayed on the list.
      • Check that the URL of the project detail view of OtherUserProject001-002 are restricted.
      • Check that the URL of the project edit view of OtherUserProject001-002 are restricted.
      • Click MyProject001-002 on the list of Project section (these are linked to other users' PRIVATE or ME AND MODERATORS projects) and check that the project detail view is restricted.
  • Automatic test
    Execute RunPrivateProjectAccessTest as a visibility test.
    RunPrivateProjectAccessTest is changed so that it can be tested by switching the enable / disable of the function by specifying the system property. (-DRunPrivateProjectAccessTest=true or false)
    Check that the automated test passes in each case.

Copy link
Contributor

@JaideepPalit JaideepPalit left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code looks fine to me.

However is it possible to have test cases running in github ci ? It would be nice to have these testcases as part of CI, If required there can be another stage in Build pipeline

  • -DRunComponentVisibilityRestrictionTest=false -DRunPrivateProjectAccessTest=false

@JaideepPalit JaideepPalit added question Further information is requested and removed needs code review labels Mar 2, 2022
@KoukiHama
Copy link
Member Author

KoukiHama commented Mar 2, 2022

it would be nice to have these testcases as part of CI, If required there can be another stage in Build pipeline

OK

@KoukiHama KoukiHama force-pushed the admin_role__private_project_access branch from e406b27 to 796101a Compare March 4, 2022 11:40
@KoukiHama KoukiHama added in progress do not merge - нет! and removed question Further information is requested labels Mar 4, 2022
@KoukiHama

This comment was marked as off-topic.

Signed-off-by: Kouki Hama <kouki1.hama@toshiba.co.jp>
@KoukiHama
Copy link
Member Author

@JaideepPalit

it would be nice to have these testcases as part of CI, If required there can be another stage in Build pipeline

I set another stage, Could you check it?

@KoukiHama KoukiHama requested a review from JaideepPalit March 23, 2022 05:57
@JaideepPalit
Copy link
Contributor

While Testing the PR, facing some issue. Kindly confirm.

Step -

  • Advance Preparation
    • Step iii
2022-03-31 06:37:01 ERROR SW360Assert:135 - User: admin@sw360.org is not allowed to view the requested project: 6fc256a09a5b444385baebd6638ca8f8
org.eclipse.sw360.datahandler.thrift.SW360Exception: null
	at org.eclipse.sw360.datahandler.common.SW360Assert.fail(SW360Assert.java:134) [datahandler-15.1.0-SNAPSHOT.jar:?]
	at org.eclipse.sw360.datahandler.db.ProjectDatabaseHandler.getProjectById(ProjectDatabaseHandler.java:282) [src-common-15.1.0-SNAPSHOT.jar:?]
	at org.eclipse.sw360.projects.ProjectHandler.getProjectById(ProjectHandler.java:188) [src-projects-15.1.0-SNAPSHOT.jar:?]
	at org.eclipse.sw360.datahandler.thrift.projects.ProjectService$Processor$getProjectById.getResult(ProjectService.java:3745) [datahandler-15.1.0-SNAPSHOT.jar:?]
	at org.eclipse.sw360.datahandler.thrift.projects.ProjectService$Processor$getProjectById.getResult(ProjectService.java:3724) [datahandler-15.1.0-SNAPSHOT.jar:?]
	at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:38) [datahandler-15.1.0-SNAPSHOT.jar:?]
	at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:38) [datahandler-15.1.0-SNAPSHOT.jar:?]
	at org.apache.thrift.server.TServlet.doPost(TServlet.java:83) [datahandler-15.1.0-SNAPSHOT.jar:?]
	at org.eclipse.sw360.projects.Sw360ThriftServlet.doPost(Sw360ThriftServlet.java:40) [src-common-15.1.0-SNAPSHOT.jar:?]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660) [servlet-api.jar:?]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) [servlet-api.jar:?]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [catalina.jar:9.0.33]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.33]
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) [tomcat-websocket.jar:9.0.33]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.33]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.33]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) [catalina.jar:9.0.33]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [catalina.jar:9.0.33]
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) [catalina.jar:9.0.33]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) [catalina.jar:9.0.33]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [catalina.jar:9.0.33]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) [catalina.jar:9.0.33]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [catalina.jar:9.0.33]
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373) [tomcat-coyote.jar:9.0.33]
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-coyote.jar:9.0.33]
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) [tomcat-coyote.jar:9.0.33]
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1594) [tomcat-coyote.jar:9.0.33]
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-coyote.jar:9.0.33]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:9.0.33]
	at java.lang.Thread.run(Thread.java:829) [?:?]
2022-03-31 06:37:01 ERROR ProjectPortlet:1142 - Error getting projects!
org.eclipse.sw360.datahandler.thrift.SW360Exception: null
	at org.eclipse.sw360.datahandler.thrift.projects.ProjectService$getProjectById_result$getProjectById_resultStandardScheme.read(ProjectService.java:21063) ~[bundleFile:?]
	at org.eclipse.sw360.datahandler.thrift.projects.ProjectService$getProjectById_result$getProjectById_resultStandardScheme.read(ProjectService.java:21040) ~[bundleFile:?]
	at org.eclipse.sw360.datahandler.thrift.projects.ProjectService$getProjectById_result.read(ProjectService.java:20979) ~[bundleFile:?]
	at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:88) ~[bundleFile:?]
	at org.eclipse.sw360.datahandler.thrift.projects.ProjectService$Client.recv_getProjectById(ProjectService.java:883) ~[bundleFile:?]
	at org.eclipse.sw360.datahandler.thrift.projects.ProjectService$Client.getProjectById(ProjectService.java:869) ~[bundleFile:?]
	at org.eclipse.sw360.portal.portlets.projects.ProjectPortlet.serveNewTableRowLinkedProjects(ProjectPortlet.java:1135) ~[bundleFile:?]
	at org.eclipse.sw360.portal.portlets.projects.ProjectPortlet.serveLinkedProjects(ProjectPortlet.java:1098) ~[bundleFile:?]
	at org.eclipse.sw360.portal.portlets.projects.ProjectPortlet.serveResource(ProjectPortlet.java:198) ~[bundleFile:?]
	at com.liferay.portlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:146) ~[?:?]
	at com.liferay.portlet.ScriptDataPortletFilter.doFilter(ScriptDataPortletFilter.java:88) ~[portal-impl.jar:?]
	at com.liferay.portlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:140) ~[?:?]
	at com.liferay.portal.kernel.portlet.PortletFilterUtil.doFilter(PortletFilterUtil.java:78) ~[portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.PortletServlet.service(PortletServlet.java:115) ~[portal-kernel.jar:?]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) ~[servlet-api.jar:?]
	at org.eclipse.equinox.http.servlet.internal.registration.EndpointRegistration.service(EndpointRegistration.java:153) ~[?:?]
	at org.eclipse.equinox.http.servlet.internal.servlet.ResponseStateHandler.processRequest(ResponseStateHandler.java:62) ~[?:?]
	at org.eclipse.equinox.http.servlet.internal.context.DispatchTargets.doDispatch(DispatchTargets.java:120) ~[?:?]
	at org.eclipse.equinox.http.servlet.internal.servlet.RequestDispatcherAdaptor.forward(RequestDispatcherAdaptor.java:40) ~[?:?]
	at com.liferay.portlet.internal.InvokerPortletImpl.invoke(InvokerPortletImpl.java:567) ~[portal-impl.jar:?]
	at com.liferay.portlet.internal.InvokerPortletImpl.invokeResource(InvokerPortletImpl.java:682) ~[portal-impl.jar:?]
	at com.liferay.portlet.internal.InvokerPortletImpl.serveResource(InvokerPortletImpl.java:496) ~[portal-impl.jar:?]
	at com.liferay.portal.monitoring.internal.portlet.MonitoringInvokerPortlet.serveResource(MonitoringInvokerPortlet.java:292) ~[?:?]
	at com.liferay.portlet.internal.PortletContainerImpl._serveResource(PortletContainerImpl.java:1077) ~[portal-impl.jar:?]
	at com.liferay.portlet.internal.PortletContainerImpl.lambda$serveResource$4(PortletContainerImpl.java:267) ~[portal-impl.jar:?]
	at com.liferay.portlet.internal.PortletContainerImpl._preserveGroupIds(PortletContainerImpl.java:425) [portal-impl.jar:?]
	at com.liferay.portlet.internal.PortletContainerImpl.serveResource(PortletContainerImpl.java:260) [portal-impl.jar:?]
	at com.liferay.portlet.SecurityPortletContainerWrapper.serveResource(SecurityPortletContainerWrapper.java:208) [portal-impl.jar:?]
	at com.liferay.portlet.RestrictPortletContainerWrapper.serveResource(RestrictPortletContainerWrapper.java:150) [portal-impl.jar:?]
	at com.liferay.portal.kernel.portlet.PortletContainerUtil.serveResource(PortletContainerUtil.java:232) [portal-kernel.jar:?]
	at com.liferay.portal.action.LayoutAction.processLayout(LayoutAction.java:389) [portal-impl.jar:?]
	at com.liferay.portal.action.LayoutAction.execute(LayoutAction.java:170) [portal-impl.jar:?]
	at com.liferay.portal.struts.PortalRequestProcessor._process(PortalRequestProcessor.java:414) [portal-impl.jar:?]
	at com.liferay.portal.struts.PortalRequestProcessor.process(PortalRequestProcessor.java:154) [portal-impl.jar:?]
	at com.liferay.portal.internal.servlet.MainServlet.doPost(MainServlet.java:214) [portal-impl.jar:?]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660) [servlet-api.jar:?]
	at com.liferay.portal.internal.servlet.MainServlet.service(MainServlet.java:621) [portal-impl.jar:?]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) [servlet-api.jar:?]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [catalina.jar:9.0.33]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.33]
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) [tomcat-websocket.jar:9.0.33]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.33]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.33]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:124) [portal-kernel.jar:?]
	at com.liferay.portal.servlet.filters.password.modified.PasswordModifiedFilter.processFilter(PasswordModifiedFilter.java:62) [portal-impl.jar:?]
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116) [portal-kernel.jar:?]
	at com.liferay.portal.servlet.filters.lockout.LockoutFilter.processFilter(LockoutFilter.java:58) [portal-impl.jar:?]
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:147) [portal-kernel.jar:?]
	at com.liferay.portal.servlet.filters.secure.BaseAuthFilter.processFilter(BaseAuthFilter.java:340) [portal-impl.jar:?]
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:147) [portal-kernel.jar:?]
	at com.liferay.portal.monitoring.internal.servlet.filter.MonitoringFilter.processFilter(MonitoringFilter.java:183) [bundleFile:?]
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:104) [portal-kernel.jar:?]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.33]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.33]
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:712) [catalina.jar:9.0.33]
	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:459) [catalina.jar:9.0.33]
	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:384) [catalina.jar:9.0.33]
	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312) [catalina.jar:9.0.33]
	at com.liferay.friendly.url.internal.servlet.FriendlyURLServlet.service(FriendlyURLServlet.java:463) [bundleFile:?]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) [servlet-api.jar:?]
	at com.liferay.portal.servlet.ServletAdapter.service(ServletAdapter.java:99) [portal-impl.jar:?]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) [servlet-api.jar:?]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [catalina.jar:9.0.33]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.33]
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) [tomcat-websocket.jar:9.0.33]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.33]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.33]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:124) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:147) [portal-kernel.jar:?]
	at com.liferay.portal.servlet.filters.i18n.I18nFilter.processFilter(I18nFilter.java:368) [portal-impl.jar:?]
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116) [portal-kernel.jar:?]
	at com.liferay.portal.servlet.filters.password.modified.PasswordModifiedFilter.processFilter(PasswordModifiedFilter.java:62) [portal-impl.jar:?]
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116) [portal-kernel.jar:?]
	at com.liferay.portal.servlet.filters.lockout.LockoutFilter.processFilter(LockoutFilter.java:58) [portal-impl.jar:?]
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:147) [portal-kernel.jar:?]
	at com.liferay.portal.servlet.filters.secure.BaseAuthFilter.processFilter(BaseAuthFilter.java:340) [portal-impl.jar:?]
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:147) [portal-kernel.jar:?]
	at com.liferay.portal.servlet.filters.etag.ETagFilter.processFilter(ETagFilter.java:87) [portal-impl.jar:?]
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:147) [portal-kernel.jar:?]
	at com.liferay.portal.servlet.filters.autologin.AutoLoginFilter.processFilter(AutoLoginFilter.java:264) [portal-impl.jar:?]
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:147) [portal-kernel.jar:?]
	at com.liferay.portal.sharepoint.SharepointFilter.processFilter(SharepointFilter.java:88) [portal-impl.jar:?]
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:147) [portal-kernel.jar:?]
	at com.liferay.portal.servlet.filters.virtualhost.VirtualHostFilter.processFilter(VirtualHostFilter.java:250) [portal-impl.jar:?]
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:147) [portal-kernel.jar:?]
	at com.liferay.portal.monitoring.internal.servlet.filter.MonitoringFilter.processFilter(MonitoringFilter.java:183) [bundleFile:?]
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:196) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:99) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:196) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:99) [portal-kernel.jar:?]
	at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176) [urlrewritefilter.jar:4.0.4]
	at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145) [urlrewritefilter.jar:4.0.4]
	at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92) [urlrewritefilter.jar:4.0.4]
	at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:389) [urlrewritefilter.jar:4.0.4]
	at com.liferay.portal.servlet.filters.urlrewrite.UrlRewriteFilter.processFilter(UrlRewriteFilter.java:65) [portal-impl.jar:?]
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:175) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:99) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:175) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:99) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:196) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:99) [portal-kernel.jar:?]
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:104) [portal-kernel.jar:?]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.33]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.33]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) [catalina.jar:9.0.33]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [catalina.jar:9.0.33]
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) [catalina.jar:9.0.33]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) [catalina.jar:9.0.33]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [catalina.jar:9.0.33]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) [catalina.jar:9.0.33]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [catalina.jar:9.0.33]
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373) [tomcat-coyote.jar:9.0.33]
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-coyote.jar:9.0.33]
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) [tomcat-coyote.jar:9.0.33]
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1594) [tomcat-coyote.jar:9.0.33]
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-coyote.jar:9.0.33]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:9.0.33]
	at java.lang.Thread.run(Thread.java:829) [?:?]
2022-03-31 06:37:01.918 ERROR [http-nio-8080-exec-6][PortletServlet:119] javax.portlet.PortletException: cannot get projects [6fc256a09a5b444385baebd6638ca8f8]
javax.portlet.PortletException: cannot get projects [6fc256a09a5b444385baebd6638ca8f8]
	at org.eclipse.sw360.portal.portlets.projects.ProjectPortlet.serveNewTableRowLinkedProjects(ProjectPortlet.java:1143)
	at org.eclipse.sw360.portal.portlets.projects.ProjectPortlet.serveLinkedProjects(ProjectPortlet.java:1098)
	at org.eclipse.sw360.portal.portlets.projects.ProjectPortlet.serveResource(ProjectPortlet.java:198)
	at com.liferay.portlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:146)
	at com.liferay.portlet.ScriptDataPortletFilter.doFilter(ScriptDataPortletFilter.java:88)
	at com.liferay.portlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:140)
	at com.liferay.portal.kernel.portlet.PortletFilterUtil.doFilter(PortletFilterUtil.java:78)
	at com.liferay.portal.kernel.servlet.PortletServlet.service(PortletServlet.java:115)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	at org.eclipse.equinox.http.servlet.internal.registration.EndpointRegistration.service(EndpointRegistration.java:153)
	at org.eclipse.equinox.http.servlet.internal.servlet.ResponseStateHandler.processRequest(ResponseStateHandler.java:62)
	at org.eclipse.equinox.http.servlet.internal.context.DispatchTargets.doDispatch(DispatchTargets.java:120)
	at org.eclipse.equinox.http.servlet.internal.servlet.RequestDispatcherAdaptor.forward(RequestDispatcherAdaptor.java:40)
	at com.liferay.portlet.internal.InvokerPortletImpl.invoke(InvokerPortletImpl.java:567)
	at com.liferay.portlet.internal.InvokerPortletImpl.invokeResource(InvokerPortletImpl.java:682)
	at com.liferay.portlet.internal.InvokerPortletImpl.serveResource(InvokerPortletImpl.java:496)
	at com.liferay.portal.monitoring.internal.portlet.MonitoringInvokerPortlet.serveResource(MonitoringInvokerPortlet.java:292)
	at com.liferay.portlet.internal.PortletContainerImpl._serveResource(PortletContainerImpl.java:1077)
	at com.liferay.portlet.internal.PortletContainerImpl.lambda$serveResource$4(PortletContainerImpl.java:267)
	at com.liferay.portlet.internal.PortletContainerImpl._preserveGroupIds(PortletContainerImpl.java:425)
	at com.liferay.portlet.internal.PortletContainerImpl.serveResource(PortletContainerImpl.java:260)
	at com.liferay.portlet.SecurityPortletContainerWrapper.serveResource(SecurityPortletContainerWrapper.java:208)
	at com.liferay.portlet.RestrictPortletContainerWrapper.serveResource(RestrictPortletContainerWrapper.java:150)
	at com.liferay.portal.kernel.portlet.PortletContainerUtil.serveResource(PortletContainerUtil.java:232)
	at com.liferay.portal.action.LayoutAction.processLayout(LayoutAction.java:389)
	at com.liferay.portal.action.LayoutAction.execute(LayoutAction.java:170)
	at com.liferay.portal.struts.PortalRequestProcessor._process(PortalRequestProcessor.java:414)
	at com.liferay.portal.struts.PortalRequestProcessor.process(PortalRequestProcessor.java:154)
	at com.liferay.portal.internal.servlet.MainServlet.doPost(MainServlet.java:214)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
	at com.liferay.portal.internal.servlet.MainServlet.service(MainServlet.java:621)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:124)
	at com.liferay.portal.servlet.filters.password.modified.PasswordModifiedFilter.processFilter(PasswordModifiedFilter.java:62)
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
	at com.liferay.portal.servlet.filters.lockout.LockoutFilter.processFilter(LockoutFilter.java:58)
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
	at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:147)
	at com.liferay.portal.servlet.filters.secure.BaseAuthFilter.processFilter(BaseAuthFilter.java:340)
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
	at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:147)
	at com.liferay.portal.monitoring.internal.servlet.filter.MonitoringFilter.processFilter(MonitoringFilter.java:183)
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:104)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:712)
	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:459)
	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:384)
	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)
	at com.liferay.friendly.url.internal.servlet.FriendlyURLServlet.service(FriendlyURLServlet.java:463)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	at com.liferay.portal.servlet.ServletAdapter.service(ServletAdapter.java:99)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:124)
	at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:147)
	at com.liferay.portal.servlet.filters.i18n.I18nFilter.processFilter(I18nFilter.java:368)
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
	at com.liferay.portal.servlet.filters.password.modified.PasswordModifiedFilter.processFilter(PasswordModifiedFilter.java:62)
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
	at com.liferay.portal.servlet.filters.lockout.LockoutFilter.processFilter(LockoutFilter.java:58)
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
	at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:147)
	at com.liferay.portal.servlet.filters.secure.BaseAuthFilter.processFilter(BaseAuthFilter.java:340)
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
	at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:147)
	at com.liferay.portal.servlet.filters.etag.ETagFilter.processFilter(ETagFilter.java:87)
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
	at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:147)
	at com.liferay.portal.servlet.filters.autologin.AutoLoginFilter.processFilter(AutoLoginFilter.java:264)
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
	at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:147)
	at com.liferay.portal.sharepoint.SharepointFilter.processFilter(SharepointFilter.java:88)
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
	at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:147)
	at com.liferay.portal.servlet.filters.virtualhost.VirtualHostFilter.processFilter(VirtualHostFilter.java:250)
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
	at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:147)
	at com.liferay.portal.monitoring.internal.servlet.filter.MonitoringFilter.processFilter(MonitoringFilter.java:183)
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:196)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:99)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:196)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:99)
	at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
	at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
	at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
	at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:389)
	at com.liferay.portal.servlet.filters.urlrewrite.UrlRewriteFilter.processFilter(UrlRewriteFilter.java:65)
	at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:49)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:215)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:175)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:99)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:175)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:99)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:196)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:99)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:104)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1594)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: SW360Exception(why:User: admin@sw360.org is not allowed to view the requested project: 6fc256a09a5b444385baebd6638ca8f8, errorCode:403)
	at org.eclipse.sw360.datahandler.thrift.projects.ProjectService$getProjectById_result$getProjectById_resultStandardScheme.read(ProjectService.java:21063)
	at org.eclipse.sw360.datahandler.thrift.projects.ProjectService$getProjectById_result$getProjectById_resultStandardScheme.read(ProjectService.java:21040)
	at org.eclipse.sw360.datahandler.thrift.projects.ProjectService$getProjectById_result.read(ProjectService.java:20979)
	at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:88)
	at org.eclipse.sw360.datahandler.thrift.projects.ProjectService$Client.recv_getProjectById(ProjectService.java:883)
	at org.eclipse.sw360.datahandler.thrift.projects.ProjectService$Client.getProjectById(ProjectService.java:869)
	at org.eclipse.sw360.portal.portlets.projects.ProjectPortlet.serveNewTableRowLinkedProjects(ProjectPortlet.java:1135)
	... 152 more

@KoukiHama
Copy link
Member Author

Oh, I will check it soon.

@KoukiHama
Copy link
Member Author

KoukiHama commented Mar 31, 2022

When I did with false option, maybe, I found similar logs.
For using this function, we need to set true in sw360.property

admin.private.project.access.enabled=true

But, anyway, I would like to check it again.

@JaideepPalit
Copy link
Contributor

Yes when the property is not set means when this feature is disabled.
It gives me the restricted project in search list of linked project.

Is this expected?

@KoukiHama
Copy link
Member Author

KoukiHama commented Mar 31, 2022

It gives me the restricted project in search list of linked project.
Is this expected?

No. but it depends on how to restrict, group visibility.

Now I also found the phenomenon which you mentioned, when the feature is disabled (that is to say, default setting), with (GROUP AND MODERETOR)

Note: how to re-produce the phenomenon.

(admin.private.project.access.enabled=false)

admin1@sw360.org (department : role admin) make Project1 (GROUP AND MODERETOR)
admin2@sw360.org (department2 : role admin) make Project2 (GROUP AND MODERATOR)

"admin1@sw360.org" can see info of Project2

@JaideepPalit
Did you find other case? or same case? Could you tell me ow did you restrict project?
Which did you select (Private), (ME AND MODERETOR) , (GROUP AND MODERETOR)?

@KoukiHama KoukiHama added WIP work in progress question Further information is requested labels Apr 1, 2022
@KoukiHama
Copy link
Member Author

KoukiHama commented Apr 27, 2022

@JaideepPalit

I rechecked my this pull request and if (admin.private.project.access.enabled=false) , user can see only restricted project same with latest sw360.

As I wrote in previous comment, If projects visibility is (GROUP AND MODERETOR) and admin user belong to the project's group, admin can see the project. This is the same with latest sw360 and expected result.

Could you check it again? Maybe, you, as an admin,. saw other project, because visibility was (Group and moderator) and your admin account belonged the group.


And

For instruction (admin.private.project.access.enabled=true) case, I made movie (mp4)
I hope it would be helpful for your review.

AdminPrivateAccess_rev1.zip

00:00:00- log in admin@sw360.org

00:00:23- Displaying other users' Private and Me and Moderators setting projects on the "Project" screen
OtherProject001 ・・・ "Private" projects created by other users
OtherProject002 ・・・ "Me and Moderators" project created by another user

00:00:36- Private projects are displayed in the "Summary" screen of the project

00:00:52- Editing a "Private" project created by another user on the Edit Project screen

00:01:14- "Project" screen shows other users' Private and Me and Moderators projects
(From here, select the "Me and Moderators" project created by another user to demonstrate the linked operation)

00:01:17- "Summary" screen of the project, showing Me and Moderators projects

00:01:29- Manipulate the "Link Projects" dialog

00:01:55- Manipulate the screen to see the results of linking

@KoukiHama KoukiHama self-assigned this Apr 27, 2022
@KoukiHama KoukiHama removed needs rework WIP work in progress labels Apr 28, 2022
@JaideepPalit
Copy link
Contributor

Hi,

This was observation before when I tested for first time.

I followed the steps to test. But didnot set the properties in the sw360.properties.

  • Advance Preparations
    1. Sign in as admin@sw360.org user and create the following projects.
      • MyProject001 (Visibility:Everyone)
      • MyProject002 (Visibility:Everyone)
    2. Sign in as admin1@sw360.org user and create the following projects.
      • OtherUserProject001 (Visibility:Private)
      • OtherUserProject002 (Visibility:Me and Moderators)
    3. Link each OtherUserProject as a subproject of MyProject.
      • MyProject001 -> OtherUserProject001
      • MyProject002 -> OtherUserProject002

It gives me the restricted project in search list of linked project. But when I add it gives error.
According to me it should be there in the list

@KoukiHama
Copy link
Member Author

KoukiHama commented May 11, 2022

@JaideepPalit

Hello, I checked it again and I noticed this is the issue which stems from master branch
I checked it with (3f8323a),

#1522 (comment)

Even if I don't try this pull request, some restricted project exist in search result dialog.
Could you check the #1522 is the same issue with the issue which you found?

@JaideepPalit
Copy link
Contributor

Thanks @KoukiHama . I will continue with rest of the testing
I will update you soon

@JaideepPalit JaideepPalit removed question Further information is requested needs clarification labels May 11, 2022
@JaideepPalit
Copy link
Contributor

Code looks fine.
(from discussion)
Assigning to @ag4ums for testing

@JaideepPalit JaideepPalit assigned ag4ums and unassigned KoukiHama and JaideepPalit May 11, 2022
@JaideepPalit JaideepPalit requested a review from ag4ums May 11, 2022 09:23
Copy link
Contributor

@ag4ums ag4ums left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

working as described

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
needs general test This is general testing, meaning that there is no org specific issue to check for
Projects
None yet
3 participants