diff --git a/.gitignore b/.gitignore index dfad5545..883e4461 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,8 @@ Recruit-Domain/HELP.md .gradle .gradle/** -server/.gradle/** -server/.gradle +.server/.gradle/** +.server/.gradle build/ !gradle/wrapper/gradle-wrapper.jar !**/src/main/**/build/ diff --git a/server/.gradle/7.6.1/checksums/checksums.lock b/server/.gradle/7.6.1/checksums/checksums.lock deleted file mode 100644 index 018b6cfb..00000000 Binary files a/server/.gradle/7.6.1/checksums/checksums.lock and /dev/null differ diff --git a/server/.gradle/7.6.1/dependencies-accessors/dependencies-accessors.lock b/server/.gradle/7.6.1/dependencies-accessors/dependencies-accessors.lock deleted file mode 100644 index 64a0640d..00000000 Binary files a/server/.gradle/7.6.1/dependencies-accessors/dependencies-accessors.lock and /dev/null differ diff --git a/server/.gradle/7.6.1/dependencies-accessors/gc.properties b/server/.gradle/7.6.1/dependencies-accessors/gc.properties deleted file mode 100644 index e69de29b..00000000 diff --git a/server/.gradle/7.6.1/executionHistory/executionHistory.bin b/server/.gradle/7.6.1/executionHistory/executionHistory.bin deleted file mode 100644 index a6164ea2..00000000 Binary files a/server/.gradle/7.6.1/executionHistory/executionHistory.bin and /dev/null differ diff --git a/server/.gradle/7.6.1/executionHistory/executionHistory.lock b/server/.gradle/7.6.1/executionHistory/executionHistory.lock deleted file mode 100644 index d8024545..00000000 Binary files a/server/.gradle/7.6.1/executionHistory/executionHistory.lock and /dev/null differ diff --git a/server/.gradle/7.6.1/fileChanges/last-build.bin b/server/.gradle/7.6.1/fileChanges/last-build.bin deleted file mode 100644 index f76dd238..00000000 Binary files a/server/.gradle/7.6.1/fileChanges/last-build.bin and /dev/null differ diff --git a/server/.gradle/7.6.1/fileHashes/fileHashes.bin b/server/.gradle/7.6.1/fileHashes/fileHashes.bin deleted file mode 100644 index bd7bb318..00000000 Binary files a/server/.gradle/7.6.1/fileHashes/fileHashes.bin and /dev/null differ diff --git a/server/.gradle/7.6.1/fileHashes/fileHashes.lock b/server/.gradle/7.6.1/fileHashes/fileHashes.lock deleted file mode 100644 index d671db6d..00000000 Binary files a/server/.gradle/7.6.1/fileHashes/fileHashes.lock and /dev/null differ diff --git a/server/.gradle/7.6.1/fileHashes/resourceHashesCache.bin b/server/.gradle/7.6.1/fileHashes/resourceHashesCache.bin deleted file mode 100644 index dd0bffbe..00000000 Binary files a/server/.gradle/7.6.1/fileHashes/resourceHashesCache.bin and /dev/null differ diff --git a/server/.gradle/7.6.1/gc.properties b/server/.gradle/7.6.1/gc.properties deleted file mode 100644 index e69de29b..00000000 diff --git a/server/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/server/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 281cc5ad..bbd18557 100644 Binary files a/server/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/server/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/server/Recruit-Api/src/main/java/com/econovation/recruit/api/user/controller/UserController.java b/server/Recruit-Api/src/main/java/com/econovation/recruit/api/user/controller/UserController.java index dd624abd..af3189da 100644 --- a/server/Recruit-Api/src/main/java/com/econovation/recruit/api/user/controller/UserController.java +++ b/server/Recruit-Api/src/main/java/com/econovation/recruit/api/user/controller/UserController.java @@ -1,7 +1,6 @@ package com.econovation.recruit.api.user.controller; -import static com.econovation.recruitcommon.consts.RecruitStatic.INTERVIEWER_SUCCESS_SIGNUP_MESSAGE; -import static com.econovation.recruitcommon.consts.RecruitStatic.PASSWORD_SUCCESS_CHANGE_MESSAGE; +import static com.econovation.recruitcommon.consts.RecruitStatic.*; import com.econovation.recruit.api.interviewer.docs.InterviewerExceptionDocs; import com.econovation.recruit.api.user.usecase.UserLoginUseCase; @@ -69,6 +68,17 @@ public ResponseEntity login( return new ResponseEntity<>(tokenResponse, HttpStatus.OK); } + @Operation(summary = "로그아웃 합니다.", description = "Maxage가 0인 쿠키를 보내 로그아웃 합니다.") + @PostMapping("/logout") + public ResponseEntity logout(HttpServletResponse response) { + response.addHeader( + "Set-Cookie", SecurityUtils.logoutCookie("refreshToken", null).toString()); + response.addHeader( + "Set-Cookie", SecurityUtils.logoutCookie("accessToken", null).toString()); + + return new ResponseEntity<>(LOGOUT_SUCCESS_MESSAGE, HttpStatus.OK); + } + @Operation(summary = "회원가입합니다.", description = "회원가입합니다.") @ApiErrorExceptionsExample(InterviewerExceptionDocs.class) @PostMapping("/signup") diff --git a/server/Recruit-Api/src/main/java/com/econovation/recruit/utils/SecurityUtils.java b/server/Recruit-Api/src/main/java/com/econovation/recruit/utils/SecurityUtils.java index f5be6506..58dfdd06 100644 --- a/server/Recruit-Api/src/main/java/com/econovation/recruit/utils/SecurityUtils.java +++ b/server/Recruit-Api/src/main/java/com/econovation/recruit/utils/SecurityUtils.java @@ -12,4 +12,14 @@ public static ResponseCookie setCookie(String name, String value) { .path("/") .build(); } + + public static ResponseCookie logoutCookie(String name, String value) { + return ResponseCookie.from(name, value) + .secure(true) + .sameSite("None") + .httpOnly(true) + .maxAge(0) + .path("/") + .build(); + } } diff --git a/server/Recruit-Common/src/main/java/com/econovation/recruitcommon/consts/RecruitStatic.java b/server/Recruit-Common/src/main/java/com/econovation/recruitcommon/consts/RecruitStatic.java index 84bec98d..e038192b 100644 --- a/server/Recruit-Common/src/main/java/com/econovation/recruitcommon/consts/RecruitStatic.java +++ b/server/Recruit-Common/src/main/java/com/econovation/recruitcommon/consts/RecruitStatic.java @@ -62,6 +62,8 @@ public class RecruitStatic { public static final String WORK_CARD_SUCCESS_UPDATE_MESSAGE = "성공적으로 업무카드가 수정됐습니다"; public static final List TIMETABLE_APPLICANT_FIELD = List.of("field", "name"); + public static final String LOGOUT_SUCCESS_MESSAGE = "성공적으로 로그아웃 됐습니다"; + public static final String[] SwaggerPatterns = { "/swagger-resources/**", "/swagger-ui/**",