Skip to content

Commit

Permalink
refactor : filter에서 추출된 토큰, 아이디 서비스로 전달
Browse files Browse the repository at this point in the history
** java 버전 협업을 위해 17(LTS) 버전으로 낮춤
  • Loading branch information
sk000801 committed Aug 15, 2024
1 parent d8e1c24 commit 000ed1b
Show file tree
Hide file tree
Showing 6 changed files with 28 additions and 22 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ version = '0.0.1-SNAPSHOT'

java {
toolchain {
languageVersion = JavaLanguageVersion.of(18)
languageVersion = JavaLanguageVersion.of(17)
}
}

Expand Down
17 changes: 6 additions & 11 deletions src/main/java/oauth/auth/AuthController.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,7 @@ public ResponseEntity<Map<String, String>> signup(@RequestParam String code) thr

@PostMapping("/auth/login")
public ResponseEntity<Map<String, String>> login(HttpServletRequest request, @RequestBody Map<String, String> map) throws Exception {
Cookie[] cookies = request.getCookies();

String accessToken = cookies[0].getValue();
String accessToken = (String) request.getAttribute("accessToken");
String refreshToken = map.get("refreshToken");

TokenResponseDto tokenResponseDto = authService.login(accessToken, refreshToken);
Expand All @@ -62,9 +60,7 @@ public ResponseEntity<Map<String, String>> login(HttpServletRequest request, @Re

@PostMapping("/auth/authorize")
public ResponseEntity<Map<String, String>> authorize(HttpServletRequest request, @RequestBody Map<String, String> map) throws Exception {
Cookie[] cookies = request.getCookies();

String accessToken = cookies[0].getValue();
String accessToken = (String) request.getAttribute("accessToken");
String refreshToken = map.get("refreshToken");

TokenResponseDto tokenResponseDto = authService.authorize(accessToken, refreshToken);
Expand All @@ -84,18 +80,17 @@ public ResponseEntity<Map<String, String>> authorize(HttpServletRequest request,

@PostMapping("/auth/logout")
public ResponseEntity<Void> logout(HttpServletRequest request, HttpServletResponse response) {
Cookie[] cookie = request.getCookies();
for(Cookie c : cookie) {
authService.logout(c.getValue());
}
String accessToken = (String) request.getAttribute("accessToken");

authService.logout(accessToken);

ResponseCookie deletedCookie = ResponseCookie.from("skt", "")
.maxAge(0) // 쿠키 만료 시간 설정
.path("/") // 쿠키의 경로 설정
.httpOnly(true) // 보안 설정
.build();

response.addHeader(HttpHeaders.SET_COOKIE, cookie.toString());
response.addHeader(HttpHeaders.SET_COOKIE, deletedCookie.toString());

return ResponseEntity.noContent().build();
}
Expand Down
12 changes: 5 additions & 7 deletions src/main/java/oauth/filter/TokenValidationFilter.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import oauth.auth.JwtService;
import oauth.exception.ZarinattaException;

import java.io.IOException;
import java.util.ArrayList;
Expand All @@ -29,7 +30,7 @@ public void init(FilterConfig filterConfig) throws ServletException {
}

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ZarinattaException, IOException {

HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
Expand All @@ -52,7 +53,9 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha

// 유효한 토큰인 경우 요청을 계속 처리
if (userId != null) {
//TODO: destory에 뭘 넣어야 하는거지?
// TODO: 이렇게 userId를 request에 넣어줘도 되는건지 좀 생각해봐야할듯
httpRequest.setAttribute("accessToken", accessToken);
httpRequest.setAttribute("userId", userId);
return;
}
}
Expand All @@ -61,11 +64,6 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha
httpResponse.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Invalid access token");
}

@Override
public void destroy() {
// 필터 종료 작업이 필요하면 여기에 작성
}

public void setExcludeUrls(List<String> excludeUrls) {
this.excludeUrls = excludeUrls;
}
Expand Down
14 changes: 11 additions & 3 deletions src/main/java/oauth/user/UserController.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import oauth.exception.ZarinattaException;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
Expand All @@ -25,11 +26,18 @@ public ResponseEntity<Map<String, String>> saveUser(UserInputDto userInputDto) {
return ResponseEntity.ok(Map.of("userId", userId));
}

@DeleteMapping("/users")
public ResponseEntity<Void> deleteUser(HttpServletRequest request) throws ZarinattaException {
String userId = (String) request.getAttribute("userId");

userService.delete(userId);

return new ResponseEntity<Void>(HttpStatus.OK);
}

@PostMapping("/users/update")
public ResponseEntity<Void> savePhoneNumber(HttpServletRequest request, @RequestBody UserUpdateDto userUpdateDto) throws ZarinattaException {
Cookie[] cookies = request.getCookies();

String accessToken = cookies[0].getValue();
String accessToken = (String) request.getAttribute("accessToken");

userService.update(accessToken, userUpdateDto);

Expand Down
1 change: 1 addition & 0 deletions src/main/java/oauth/user/UserRepository.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ public interface UserRepository extends JpaRepository<User, String> {

@Query(value = "select USER_EMAIL from USERS where USER_ID = :id", nativeQuery = true)
String findUserEmailById(@Param("id") String userId);

}


4 changes: 4 additions & 0 deletions src/main/java/oauth/user/UserService.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,10 @@ public void update(String accessToken, UserUpdateDto userUpdateDto) throws Zarin
userRepository.update(userId, userUpdateDto.getUserDeviceToken(), userUpdateDto.getUserPhone());
}

public void delete(String userId) {
userRepository.deleteById(userId);
}

public String findUserIdByEmail(String email) {
return userRepository.findUserIdByEmail(email);
}
Expand Down

0 comments on commit 000ed1b

Please sign in to comment.