33import io .swagger .v3 .oas .annotations .Operation ;
44import io .swagger .v3 .oas .annotations .tags .Tag ;
55import jakarta .security .auth .message .AuthException ;
6- import jakarta .servlet .http .Cookie ;
76import jakarta .servlet .http .HttpServletResponse ;
87import kattsyn .dev .rentplace .dtos .CodeRequest ;
98import kattsyn .dev .rentplace .dtos .JwtRequest ;
1211import kattsyn .dev .rentplace .services .AuthService ;
1312import kattsyn .dev .rentplace .services .VerificationCodeService ;
1413import lombok .RequiredArgsConstructor ;
14+ import org .springframework .http .HttpHeaders ;
15+ import org .springframework .http .ResponseCookie ;
1516import org .springframework .http .ResponseEntity ;
1617import org .springframework .web .bind .annotation .*;
1718
19+ import java .time .Duration ;
20+
1821@ RestController
1922@ RequestMapping ("${api.path}/auth" )
2023@ RequiredArgsConstructor
@@ -43,6 +46,17 @@ public ResponseEntity<JwtResponse> login(@RequestBody JwtRequest authRequest,
4346 HttpServletResponse response ) throws AuthException {
4447 JwtResponse tokens = authService .login (authRequest );
4548
49+ ResponseCookie refreshCookie = ResponseCookie .from ("refreshToken" , tokens .getRefreshToken ())
50+ .httpOnly (true )
51+ .secure (true ) // обязательно для SameSite=None
52+ .sameSite ("None" ) // <== вот это ключевое
53+ .path ("/" )
54+ .maxAge (Duration .ofDays (30 )) // чтобы не исчезала
55+ .build ();
56+
57+ response .addHeader (HttpHeaders .SET_COOKIE , refreshCookie .toString ());
58+
59+ /*
4660 // Настройка cookie для refresh token
4761 Cookie refreshTokenCookie = new Cookie("refreshToken", tokens.getRefreshToken());
4862 refreshTokenCookie.setHttpOnly(true);
@@ -52,6 +66,8 @@ public ResponseEntity<JwtResponse> login(@RequestBody JwtRequest authRequest,
5266
5367 response.addCookie(refreshTokenCookie);
5468
69+ */
70+
5571 return ResponseEntity .ok ()
5672 .body (new JwtResponse (tokens .getAccessToken (), null ));
5773 }
@@ -74,13 +90,27 @@ public ResponseEntity<JwtResponse> getNewAccessToken(@RequestBody RefreshJwtRequ
7490 public ResponseEntity <JwtResponse > refresh (@ CookieValue (name = "refreshToken" ) String refreshToken , HttpServletResponse response ) throws AuthException {
7591 JwtResponse jwtResponse = authService .refresh (refreshToken );
7692
93+ /*
7794 Cookie refreshCookie = new Cookie("refreshToken", jwtResponse.getRefreshToken());
7895 refreshCookie.setHttpOnly(true);
7996 refreshCookie.setSecure(true);
8097 refreshCookie.setPath("/");
8198 refreshCookie.setMaxAge(30 * 24 * 60 * 60);
8299 response.addCookie(refreshCookie);
83100
101+ */
102+
103+ ResponseCookie refreshCookie = ResponseCookie .from ("refreshToken" , jwtResponse .getRefreshToken ())
104+ .httpOnly (true )
105+ .secure (true )
106+ .sameSite ("None" )
107+ .path ("/" )
108+ .maxAge (Duration .ofDays (30 ))
109+ .build ();
110+
111+ response .addHeader (HttpHeaders .SET_COOKIE , refreshCookie .toString ());
112+
113+
84114 return ResponseEntity .ok ()
85115 .body (new JwtResponse (jwtResponse .getAccessToken (), null ));
86116 }
0 commit comments