diff --git a/README.md b/README.md index bf89142c..cd3d563f 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ WiseMapping is based on the same code product supporting [http://www.wisemapping The following products must be installed: - * OpenJDK 11 or higher + * OpenJDK 17 or higher * Maven 3.x or higher ([http://maven.apache.org/]) * npm 6 or higher ([https://www.npmjs.com/package/npm?activeTab=versions]) diff --git a/wise-webapp/src/main/java/com/wisemapping/config/AppConfig.java b/wise-webapp/src/main/java/com/wisemapping/config/AppConfig.java new file mode 100644 index 00000000..561000f5 --- /dev/null +++ b/wise-webapp/src/main/java/com/wisemapping/config/AppConfig.java @@ -0,0 +1,49 @@ +package com.wisemapping.config; + +import com.wisemapping.exceptions.AccessDeniedSecurityException; +import com.wisemapping.exceptions.MapNotPublicSecurityException; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.HandlerExceptionResolver; +import org.springframework.web.servlet.ViewResolver; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver; +import org.springframework.web.servlet.view.InternalResourceViewResolver; +import org.springframework.web.servlet.view.JstlView; + +import java.util.Properties; + +@EnableWebMvc +@Configuration +public class AppConfig { + + @Bean + HandlerExceptionResolver errorHandler() { + final SimpleMappingExceptionResolver result = + new SimpleMappingExceptionResolver(); + + //exception to view name mapping + final Properties p = new Properties(); + p.setProperty(MapNotPublicSecurityException.class.getName(), "reactInclude"); + p.setProperty(AccessDeniedSecurityException.class.getName(), "reactInclude"); + result.setExceptionMappings(p); + + //mapping status code with view response. + result.addStatusCode("reactInclude", 403); + + //setting default error view + result.setDefaultErrorView("errorTemplate"); + result.setDefaultStatusCode(500); + + return result; + } + + @Bean + public ViewResolver viewResolver(){ + InternalResourceViewResolver resolver = new InternalResourceViewResolver(); + resolver.setPrefix("/WEB-INF/views/"); + resolver.setSuffix(".jsp"); + resolver.setViewClass(JstlView.class); + return resolver; + } +} diff --git a/wise-webapp/src/main/java/com/wisemapping/exceptions/MapNonPublicException.java b/wise-webapp/src/main/java/com/wisemapping/exceptions/MapNotPublicSecurityException.java similarity index 88% rename from wise-webapp/src/main/java/com/wisemapping/exceptions/MapNonPublicException.java rename to wise-webapp/src/main/java/com/wisemapping/exceptions/MapNotPublicSecurityException.java index 93a6b6ec..6d30fcff 100755 --- a/wise-webapp/src/main/java/com/wisemapping/exceptions/MapNonPublicException.java +++ b/wise-webapp/src/main/java/com/wisemapping/exceptions/MapNotPublicSecurityException.java @@ -20,11 +20,11 @@ package com.wisemapping.exceptions; import org.jetbrains.annotations.NotNull; -public class MapNonPublicException +public class MapNotPublicSecurityException extends ClientException { public static final String MSG_KEY = "ACCESS_HAS_BEEN_REVOKED"; - public MapNonPublicException(@NotNull String msg) { + public MapNotPublicSecurityException(@NotNull String msg) { super(msg, Severity.FATAL); } diff --git a/wise-webapp/src/main/java/com/wisemapping/webmvc/MvcMindmapController.java b/wise-webapp/src/main/java/com/wisemapping/webmvc/MvcMindmapController.java index 52d395b2..7d3517f3 100644 --- a/wise-webapp/src/main/java/com/wisemapping/webmvc/MvcMindmapController.java +++ b/wise-webapp/src/main/java/com/wisemapping/webmvc/MvcMindmapController.java @@ -21,7 +21,7 @@ package com.wisemapping.webmvc; import com.wisemapping.exceptions.AccessDeniedSecurityException; import com.wisemapping.exceptions.MapCouldNotFoundException; -import com.wisemapping.exceptions.MapNonPublicException; +import com.wisemapping.exceptions.MapNotPublicSecurityException; import com.wisemapping.exceptions.WiseMappingException; import com.wisemapping.model.CollaborationRole; import com.wisemapping.model.Mindmap; @@ -121,9 +121,9 @@ public class MvcMindmapController { @RequestMapping(value = "maps/{id}/embed") @PreAuthorize("permitAll()") - public ModelAndView showEmbeddedPage(@PathVariable int id, @RequestParam(required = false) Float zoom) throws MapCouldNotFoundException, MapNonPublicException, AccessDeniedSecurityException { + public ModelAndView showEmbeddedPage(@PathVariable int id, @RequestParam(required = false) Float zoom) throws MapCouldNotFoundException, MapNotPublicSecurityException, AccessDeniedSecurityException { if (!mindmapService.isMindmapPublic(id)) { - throw new MapNonPublicException("Map " + id + " is not public."); + throw new MapNotPublicSecurityException("Map " + id + " is not public."); } final MindMapBean mindmap = findMindmapBean(id); @@ -138,7 +138,7 @@ public class MvcMindmapController { @PreAuthorize("permitAll()") public String showPublicViewPage(@PathVariable int id, @NotNull Model model) throws WiseMappingException { if (!mindmapService.isMindmapPublic(id)) { - throw new MapNonPublicException("Map " + id + " is not public."); + throw new MapNotPublicSecurityException("Map " + id + " is not public."); } return this.showPrintPage(id, model); } diff --git a/wise-webapp/src/main/resources/messages_en.properties b/wise-webapp/src/main/resources/messages_en.properties index ec30a85d..06248f2d 100644 --- a/wise-webapp/src/main/resources/messages_en.properties +++ b/wise-webapp/src/main/resources/messages_en.properties @@ -8,7 +8,6 @@ INVALID_EMAIL_ADDRESS=Invalid email address. Please, verify that your entered v CREATOR=Creator WELCOME=Welcome SHARE=Share -UNEXPECTED_ERROR=An unexpected error has occurred. MAP_TITLE_ALREADY_EXISTS=You have already a map with the same name LABEL_TITLE_ALREADY_EXISTS=You have already a label with the same name TUTORIAL.MULTIPLE_TEXT_STYLES=Multiple Text Styles @@ -47,9 +46,7 @@ MINDMAP_IS_LOCKED=Min map is locked for edition. # Confirmed RESET_PASSWORD_INVALID_EMAIL=The email provided is not a valid user account. Please, try again with a valid email. TRY_WELCOME=This edition space showcases some of the mind map editor capabilities \!. -UNEXPECTED_ERROR_DETAILS=Unexpected error processing request. NO_ENOUGH_PERMISSIONS=This mind map cannot be opened. -NO_ENOUGH_PERMISSIONS_DETAILS=You do not have enough right access to see this map. This map has been changed to private or deleted. CAPTCHA_TIMEOUT_OUT_DUPLICATE=Please, refresh the page and try again. CAPTCHA_INVALID_INPUT_RESPONSE=Invalid input response, refresh the page and try again. MINDMAP_EMPTY_ERROR=Mind map can not be empty. diff --git a/wise-webapp/src/main/webapp/WEB-INF/classes/log4j2.xml b/wise-webapp/src/main/webapp/WEB-INF/classes/log4j2.xml index 26b88e6e..9f9cb2ab 100644 --- a/wise-webapp/src/main/webapp/WEB-INF/classes/log4j2.xml +++ b/wise-webapp/src/main/webapp/WEB-INF/classes/log4j2.xml @@ -14,7 +14,7 @@ - + diff --git a/wise-webapp/src/main/webapp/WEB-INF/views/reactInclude.jsp b/wise-webapp/src/main/webapp/WEB-INF/views/reactInclude.jsp index 5cfe08eb..17dd986e 100644 --- a/wise-webapp/src/main/webapp/WEB-INF/views/reactInclude.jsp +++ b/wise-webapp/src/main/webapp/WEB-INF/views/reactInclude.jsp @@ -11,8 +11,6 @@ <%@ include file="pageHeaders.jsf" %> - WiseMapping - +