diff --git a/niffler-auth/build.gradle b/niffler-auth/build.gradle index b500a817..fef6aa8a 100644 --- a/niffler-auth/build.gradle +++ b/niffler-auth/build.gradle @@ -6,7 +6,7 @@ plugins { } group = 'guru.qa' -version = '1.2.2' +version = '1.2.3' dependencies { implementation 'org.springframework.boot:spring-boot-starter-security' diff --git a/niffler-auth/src/main/java/guru/qa/niffler/controller/LoginController.java b/niffler-auth/src/main/java/guru/qa/niffler/controller/LoginController.java index 785025a0..4ec37e92 100644 --- a/niffler-auth/src/main/java/guru/qa/niffler/controller/LoginController.java +++ b/niffler-auth/src/main/java/guru/qa/niffler/controller/LoginController.java @@ -1,5 +1,8 @@ package guru.qa.niffler.controller; +import jakarta.servlet.http.HttpSession; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.security.web.savedrequest.DefaultSavedRequest; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @@ -7,9 +10,21 @@ public class LoginController { private static final String LOGIN_VIEW_NAME = "login"; + private static final String PRE_REQUEST_ATTR = "SPRING_SECURITY_SAVED_REQUEST"; + private static final String PRE_REQUEST_URI = "/oauth2/authorize"; + + private final String frontUrl; + + public LoginController(@Value("${niffler-front.base-uri}")String frontUrl) { + this.frontUrl = frontUrl; + } @GetMapping("/login") - public String login() { + public String login(HttpSession session) { + DefaultSavedRequest preRequest = (DefaultSavedRequest) session.getAttribute(PRE_REQUEST_ATTR); + if (preRequest == null || !preRequest.getRequestURI().equals(PRE_REQUEST_URI)) { + return "redirect:" + frontUrl; + } return LOGIN_VIEW_NAME; } }