diff --git a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/PreLoginFilter.java b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/PreLoginFilter.java new file mode 100644 index 0000000000000000000000000000000000000000..182cd6401b611ef1e39c156030cddd4692580a06 --- /dev/null +++ b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/PreLoginFilter.java @@ -0,0 +1,26 @@ +package it.inaf.ia2.vospace.ui; + +import java.io.IOException; +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + +/** + * Destroys the current session before a new login. + */ +public class PreLoginFilter implements Filter { + + @Override + public void doFilter(ServletRequest req, ServletResponse res, FilterChain fc) throws IOException, ServletException { + HttpServletRequest request = (HttpServletRequest) req; + HttpSession session = request.getSession(); + if (session != null && request.getParameter("code") == null) { + session.invalidate(); + } + fc.doFilter(req, res); + } +} diff --git a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/VOSpaceUiApplication.java b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/VOSpaceUiApplication.java index 8e4be4728e12cdb33462bf20523cb8016fbb3c40..461d692d26413248c20dae50b1da7cdbdf41dde8 100644 --- a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/VOSpaceUiApplication.java +++ b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/VOSpaceUiApplication.java @@ -8,6 +8,7 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; +import org.springframework.core.Ordered; @SpringBootApplication public class VOSpaceUiApplication { @@ -16,6 +17,15 @@ public class VOSpaceUiApplication { SpringApplication.run(VOSpaceUiApplication.class, args); } + @Bean + public FilterRegistrationBean preLoginFilterRegistration() { + FilterRegistrationBean bean = new FilterRegistrationBean(); + bean.setFilter(new PreLoginFilter()); + bean.addUrlPatterns("/login"); + bean.setOrder(Ordered.HIGHEST_PRECEDENCE); + return bean; + } + @Bean public FilterRegistrationBean loginFilterRegistration() { FilterRegistrationBean registration = new FilterRegistrationBean(); diff --git a/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/VOSpaceException.java b/vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/exception/VOSpaceException.java similarity index 100% rename from vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/VOSpaceException.java rename to vospace-ui-backend/src/main/java/it/inaf/ia2/vospace/ui/exception/VOSpaceException.java