diff --git a/docker-compose.yml b/docker-compose.yml index 7c498dc..201b8dd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -32,6 +32,7 @@ services: container_name: vod_frontend environment: VITE_API_URL: ${BACKEND_URL} + VITE_FRONTEND_URL: ${FRONTEND_URL} VITE_GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID} depends_on: - backend @@ -53,4 +54,4 @@ services: pull_policy: build restart: unless-stopped depends_on: - - backend \ No newline at end of file + - backend diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index f87a67b..bb793db 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -1,27 +1,30 @@ -import { defineConfig } from 'vite' +import { defineConfig, loadEnv } from 'vite' import react from '@vitejs/plugin-react' import tailwindcss from '@tailwindcss/vite' import flowbiteReact from "flowbite-react/plugin/vite"; +export default defineConfig(({ mode }) => { // change to function form + const env = loadEnv(mode, process.cwd(), '') // load all env vars -// https://vite.dev/config/ -export default defineConfig({ - plugins: [react(), tailwindcss(), flowbiteReact()], - preview: { - port: 5173, - strictPort: true, - }, - server: { - port: 5173, - strictPort: true, - host: true, - origin: "http://0.0.0.0:5173", - proxy: { - '/api/v1': { - target: 'http://localhost:8080', - changeOrigin: true, - secure: false, + return { + plugins: [react(), tailwindcss(), flowbiteReact()], + preview: { + port: 5173, + strictPort: true, + }, + server: { + port: 5173, + strictPort: true, + host: true, + origin: env.VITE_FRONTEND_URL || "http://0.0.0.0:5173", // use it here + allowedHosts: true, + proxy: { + '/api/v1': { + target: 'http://localhost:8080', + changeOrigin: true, + secure: false, + } } } } -}) \ No newline at end of file +}) diff --git a/src/main/java/com/ddf/vodsystem/controllers/UserController.java b/src/main/java/com/ddf/vodsystem/controllers/UserController.java index b44c677..0f440ec 100644 --- a/src/main/java/com/ddf/vodsystem/controllers/UserController.java +++ b/src/main/java/com/ddf/vodsystem/controllers/UserController.java @@ -6,6 +6,7 @@ import com.ddf.vodsystem.entities.User; import com.ddf.vodsystem.exceptions.NotAuthenticated; import com.ddf.vodsystem.services.UserService; import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.ResponseCookie; import org.springframework.http.ResponseEntity; @@ -41,14 +42,15 @@ public class UserController { @PostMapping("/login") public ResponseEntity> login(@RequestBody Token token, + HttpServletRequest request, HttpServletResponse response) { String jwt = userService.login(token.token()); ResponseCookie cookie = ResponseCookie.from("token", jwt) .httpOnly(true) .maxAge(jwtExpiration / 1000) - .sameSite("None") - .secure(true) + .sameSite(request.isSecure() ? "None" : "Lax") + .secure(request.isSecure()) .path("/") .build(); @@ -60,12 +62,13 @@ public class UserController { } @PostMapping("/logout") - public ResponseEntity> logout(HttpServletResponse response) { + public ResponseEntity> logout(HttpServletResponse response, + HttpServletRequest request) { ResponseCookie cookie = ResponseCookie.from("token", "") .httpOnly(true) .maxAge(0) - .sameSite("None") - .secure(true) + .sameSite(request.isSecure() ? "None" : "Lax") + .secure(request.isSecure()) .path("/") .build(); @@ -75,4 +78,4 @@ public class UserController { new APIResponse<>(SUCCESS, "Logged out successfully", null) ); } -} \ No newline at end of file +}