From 0eb99933e391f30b43fa218d5d899c47ee7bc18c Mon Sep 17 00:00:00 2001 From: KochTobi Date: Thu, 18 Sep 2025 16:29:27 +0200 Subject: [PATCH] Reroute logged in users to projects route when visiting login again --- .../qbic/datamanager/views/login/LoginLayout.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/user-interface/src/main/java/life/qbic/datamanager/views/login/LoginLayout.java b/user-interface/src/main/java/life/qbic/datamanager/views/login/LoginLayout.java index 7d4207cc5..fde65d8c2 100644 --- a/user-interface/src/main/java/life/qbic/datamanager/views/login/LoginLayout.java +++ b/user-interface/src/main/java/life/qbic/datamanager/views/login/LoginLayout.java @@ -15,6 +15,8 @@ import com.vaadin.flow.component.login.AbstractLogin.LoginEvent; import com.vaadin.flow.component.orderedlayout.FlexComponent; import com.vaadin.flow.component.orderedlayout.VerticalLayout; +import com.vaadin.flow.router.BeforeEnterEvent; +import com.vaadin.flow.router.BeforeEnterListener; import com.vaadin.flow.router.BeforeEvent; import com.vaadin.flow.router.HasUrlParameter; import com.vaadin.flow.router.OptionalParameter; @@ -38,6 +40,7 @@ import life.qbic.logging.api.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.security.core.context.SecurityContextHolder; /** * Defines the layout and look of the login view. @@ -49,7 +52,8 @@ @CssImport("./styles/views/login/login-view.css") @AnonymousAllowed @UIScope -public class LoginLayout extends VerticalLayout implements HasUrlParameter { +public class LoginLayout extends VerticalLayout implements HasUrlParameter, + BeforeEnterListener { private static final Logger log = logger(LoginLayout.class); private final String emailConfirmationParameter; @@ -231,6 +235,14 @@ public void onEmailConfirmationFailure(String reason) { showError("Email confirmation failed", reason); } + @Override + public void beforeEnter(BeforeEnterEvent event) { + var auth = SecurityContextHolder.getContext().getAuthentication(); + if (auth != null && auth.isAuthenticated()) { + event.forwardTo(AppRoutes.ProjectRoutes.PROJECTS); + } + } + private static class LoginCard extends Span { private final Span text = new Span();