Skip to content

Commit eca08eb

Browse files
authored
feat: 기관 로그아웃 (#115)
* feat(SignController): 센터 로그인 컨트롤러 추가 - Tag 일관성있도록 변경 * feat(SignOut): UseCase, Service를 기관에도 사용 가능하도록 변경 * feat(CenterSignOut): 기관 로그아웃 엔드포인트 추가 * feat(CORS): 5173 포트 (Vite) 추가 * feat(OAuthFailureHandler): 로그 추가 * feat(SignOut): ApiResponse data 타입 명시
1 parent 3a1caba commit eca08eb

File tree

7 files changed

+46
-10
lines changed

7 files changed

+46
-10
lines changed

src/main/java/com/somemore/auth/oauth/handler/failure/CustomOAuthFailureHandler.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,7 @@ public class CustomOAuthFailureHandler extends SimpleUrlAuthenticationFailureHan
1717
public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) {
1818
// TODO 프론트엔드와 협의
1919
log.error("안녕 난 말하는 감자야");
20+
log.error(exception.getMessage());
21+
log.error(exception.getCause().getMessage());
2022
}
2123
}

src/main/java/com/somemore/volunteer/service/SignOutVolunteerService.java renamed to src/main/java/com/somemore/auth/signout/service/SignOutService.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
package com.somemore.volunteer.service;
1+
package com.somemore.auth.signout.service;
22

33
import com.somemore.auth.cookie.CookieUseCase;
44
import com.somemore.auth.jwt.refresh.manager.RefreshTokenManager;
5-
import com.somemore.volunteer.usecase.SignOutVolunteerUseCase;
5+
import com.somemore.auth.signout.usecase.SignOutUseCase;
66
import jakarta.servlet.http.HttpServletResponse;
77
import lombok.RequiredArgsConstructor;
88
import lombok.extern.slf4j.Slf4j;
@@ -13,7 +13,7 @@
1313
@Service
1414
@RequiredArgsConstructor
1515
@Transactional
16-
public class SignOutVolunteerService implements SignOutVolunteerUseCase {
16+
public class SignOutService implements SignOutUseCase {
1717

1818
private final CookieUseCase cookieUseCase;
1919
private final RefreshTokenManager refreshTokenManager;
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
package com.somemore.volunteer.usecase;
1+
package com.somemore.auth.signout.usecase;
22

33
import jakarta.servlet.http.HttpServletResponse;
44

5-
public interface SignOutVolunteerUseCase {
5+
public interface SignOutUseCase {
66

77
void signOut(HttpServletResponse response, String volunteerId);
88
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.somemore.center.controller;
2+
3+
import com.somemore.auth.signout.usecase.SignOutUseCase;
4+
import com.somemore.global.common.response.ApiResponse;
5+
import io.swagger.v3.oas.annotations.tags.Tag;
6+
import jakarta.servlet.http.HttpServletResponse;
7+
import lombok.RequiredArgsConstructor;
8+
import lombok.extern.slf4j.Slf4j;
9+
import org.springframework.security.core.annotation.AuthenticationPrincipal;
10+
import org.springframework.web.bind.annotation.PostMapping;
11+
import org.springframework.web.bind.annotation.RequestMapping;
12+
import org.springframework.web.bind.annotation.RestController;
13+
14+
@RestController
15+
@Slf4j
16+
@RequiredArgsConstructor
17+
@RequestMapping("/api/center")
18+
@Tag(name = "center Sign API", description = "기관 로그아웃")
19+
public class CenterSignController {
20+
21+
private final SignOutUseCase signOutUseCase;
22+
23+
@PostMapping("/sign-out")
24+
public ApiResponse<String> signOut(
25+
HttpServletResponse response,
26+
@AuthenticationPrincipal String userId) {
27+
28+
signOutUseCase.signOut(response, userId);
29+
30+
return ApiResponse.ok("로그아웃되었습니다");
31+
}
32+
}

src/main/java/com/somemore/global/configure/WebConfig.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public void addCorsMappings(CorsRegistry registry) {
1212
registry.addMapping("/**")
1313
.allowedOrigins(
1414
"http://localhost:3000",
15+
"http://localhost:5173",
1516
"http://front-deploy.s3-website.ap-northeast-2.amazonaws.com"
1617
)
1718
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")

src/main/java/com/somemore/volunteer/controller/VolunteerSignController.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import com.somemore.global.common.response.ApiResponse;
44
import com.somemore.global.exception.BadRequestException;
5-
import com.somemore.volunteer.usecase.SignOutVolunteerUseCase;
5+
import com.somemore.auth.signout.usecase.SignOutUseCase;
66
import com.somemore.volunteer.usecase.GenerateOAuthUrlUseCase;
77
import io.swagger.v3.oas.annotations.Parameter;
88
import io.swagger.v3.oas.annotations.media.Schema;
@@ -25,7 +25,7 @@
2525
public class VolunteerSignController {
2626

2727
private final GenerateOAuthUrlUseCase generateOAuthUrlUseCase;
28-
private final SignOutVolunteerUseCase signOutVolunteerUseCase;
28+
private final SignOutUseCase signOutUseCase;
2929

3030
@PostMapping("/sign-in/oauth/{oauthProvider}")
3131
public RedirectView signIn(
@@ -42,11 +42,11 @@ public RedirectView signIn(
4242
}
4343

4444
@PostMapping("/sign-out")
45-
public ApiResponse<?> signOut(
45+
public ApiResponse<String> signOut(
4646
HttpServletResponse response,
4747
@AuthenticationPrincipal String userId) {
4848

49-
signOutVolunteerUseCase.signOut(response, userId);
49+
signOutUseCase.signOut(response, userId);
5050

5151
return ApiResponse.ok("로그아웃되었습니다");
5252
}

src/test/java/com/somemore/volunteer/service/SignOutVolunteerServiceTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import com.somemore.auth.jwt.generator.JwtGenerator;
1111
import com.somemore.auth.jwt.refresh.domain.RefreshToken;
1212
import com.somemore.auth.jwt.refresh.manager.RefreshTokenManager;
13+
import com.somemore.auth.signout.service.SignOutService;
1314
import org.junit.jupiter.api.AfterEach;
1415
import org.junit.jupiter.api.BeforeEach;
1516
import org.junit.jupiter.api.DisplayName;
@@ -25,7 +26,7 @@
2526
class SignOutVolunteerServiceTest extends IntegrationTestSupport {
2627

2728
@Autowired
28-
private SignOutVolunteerService signOutVolunteerService;
29+
private SignOutService signOutVolunteerService;
2930
@Autowired
3031
private CookieUseCase cookieUseCase;
3132
@Autowired

0 commit comments

Comments
 (0)