Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEAT] arguments resolver - userid 적용 - #83 #84

Merged
merged 2 commits into from
Jan 20, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.cakey.cake.domain.DayCategory;
import com.cakey.cake.service.CakeService;
import com.cakey.caketheme.domain.ThemeName;
import com.cakey.common.resolver.user.UserId;
import com.cakey.common.response.ApiResponseUtil;
import com.cakey.common.response.BaseResponse;
import com.cakey.rescode.SuccessCode;
Expand All @@ -20,7 +21,7 @@ public class CakeController {
//해당역 스토어들의 디자인 조회(최신순)
@GetMapping("/station/latest")
public ResponseEntity<BaseResponse<?>> getLatestCakesByStationStore(
@RequestHeader(value = "Authorization", required = false) final Long userId,
@UserId final Long userId,
@RequestParam(value = "station", required = true) final Station station,
@RequestParam(value = "cakeIdCursor", required = false) final Long cakeIdCursor,
@RequestParam(value = "size", defaultValue = "10", required = false) final int size
Expand All @@ -32,7 +33,7 @@ public ResponseEntity<BaseResponse<?>> getLatestCakesByStationStore(
//해당역 스토어들의 디자인 조회(인기순)
@GetMapping("/station/popularity")
public ResponseEntity<BaseResponse<?>> getPopularCakesByStationStore(
@RequestHeader(value = "Authorization", required = false) final Long userId,
@UserId final Long userId,
@RequestParam(value = "station", required = true) final Station station,
@RequestParam(value = "cakeLikesCursor", required = false) final Integer cakeLikesCursor,
@RequestParam(value = "cakeIdCursor", required = false) final Long cakeIdCursor,
Expand All @@ -53,7 +54,7 @@ public ResponseEntity<BaseResponse<?>> getRankCakesByStationStore(@RequestHeader
//선택 디자인 조회
@GetMapping("/{cakeId}/select")
public ResponseEntity<BaseResponse<?>> getCakeSelect(
@RequestHeader(value = "Authorization", required = false) final Long userId,
@UserId final Long userId,
@PathVariable(value = "cakeId") final long cakeId,
@RequestParam(value = "dayCategory") final DayCategory dayCategory,
@RequestParam(value = "theme") final ThemeName themeName
Expand All @@ -67,7 +68,7 @@ public ResponseEntity<BaseResponse<?>> getCakeSelect(
//디자인 둘러보기(최신순)
@GetMapping("/latest")
public ResponseEntity<BaseResponse<?>> getLatestCakes(
@RequestHeader(value = "Authorization", required = false) final Long userId,
@UserId final Long userId,
@RequestParam(value = "dayCategory") final DayCategory dayCategory,
@RequestParam(value = "themeName") final ThemeName themeName,
@RequestParam(value = "cakeIdCursor", required = false) final Long cakeIdCursor,
Expand All @@ -82,7 +83,7 @@ public ResponseEntity<BaseResponse<?>> getLatestCakes(
//디자인 둘러보기(인기순)
@GetMapping("/popularity")
public ResponseEntity<BaseResponse<?>> getPopularCakes(
@RequestHeader(value = "Authorization", required = false) final Long userId,
@UserId final Long userId,
@RequestParam(value = "dayCategory") final DayCategory dayCategory,
@RequestParam(value = "themeName") final ThemeName themeName,
@RequestParam(value = "cakeIdCursor", required = false) final Long cakeIdCursor,
Expand All @@ -98,7 +99,7 @@ public ResponseEntity<BaseResponse<?>> getPopularCakes(
//찜한 스토어의 디자인 조회(최신순)
@GetMapping("/store-liked/latest")
public ResponseEntity<BaseResponse<?>> getLatestCakesByLikedStore(
@RequestHeader(value = "Authorization", required = true) final long userId,
@UserId final long userId,
@RequestParam(value = "cakeIdCursor", required = false) final Long cakeIdCursor,
@RequestParam(value = "size", required = false, defaultValue = "10") final int size
) {
Expand All @@ -111,7 +112,7 @@ public ResponseEntity<BaseResponse<?>> getLatestCakesByLikedStore(
//찜한 스토어의 디자인 조회(인기순)
@GetMapping("/store-liked/popularity")
public ResponseEntity<BaseResponse<?>> getPopularCakesByLikedStore(
@RequestHeader(value = "Authorization", required = true) final long userId,
@UserId final long userId,
@RequestParam(value = "cakeIdCursor", required = false) final Long cakeIdCursor,
@RequestParam(value = "cakeLikesCursor", required = false) final Integer cakeLikesCursor,
@RequestParam(value = "size", required = false, defaultValue = "10") final int size
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.cakey.cakelikes.controller;

import com.cakey.cakelikes.service.CakeLikesService;
import com.cakey.common.resolver.user.UserId;
import com.cakey.common.response.ApiResponseUtil;
import com.cakey.common.response.BaseResponse;
import com.cakey.rescode.SuccessCode;
Expand All @@ -18,7 +19,7 @@ public class CakeLikesController {
//찜한 디자인(케이크) 조회(최신순)
@GetMapping("/latest")
public ResponseEntity<BaseResponse<?>> getLatestCakeLikedByUser(
@RequestHeader(value = "Authorization") final long userId,
@UserId final long userId,
@RequestParam(value = "cakeIdCursor", required = false) final Long cakeIdCursor,
@RequestParam(value = "size", defaultValue = "10", required = false) final Integer size
) {
Expand All @@ -28,7 +29,7 @@ public ResponseEntity<BaseResponse<?>> getLatestCakeLikedByUser(
//찜한 디자인(케이크) 조회(인기순)
@GetMapping("/popularity")
public ResponseEntity<BaseResponse<?>> getPopularCakeLikedByUser(
@RequestHeader(value = "Authorization") final long userId,
@UserId final long userId,
@RequestParam(value = "cakeIdCursor", required = false) final Long cakeIdCursor,
@RequestParam(value = "cakeLikesCursor", required = false) final Integer cakeLikesCursor,
@RequestParam(value = "size", defaultValue = "10", required = false) final Integer size
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,8 @@ public class UserIdResolver implements HandlerMethodArgumentResolver {

@Override
public boolean supportsParameter(MethodParameter parameter) {
return parameter.getParameterType().equals(Long.class)
return (parameter.getParameterType().equals(Long.class) || parameter.getParameterType().equals(long.class))
&& parameter.hasParameterAnnotation(UserId.class);

}

@Override
Expand Down
50 changes: 0 additions & 50 deletions cakey-api/src/main/java/com/cakey/config/SecurityConfig.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,5 @@
package com.cakey.config;

//import com.cakey.common.auth.CustomAccessDeniedHandler;
//import com.cakey.common.auth.CustomJwtAuthenticationEntryPoint;
//import com.cakey.common.auth.JwtTokenProvider;
//import com.cakey.common.auth.filter.OptionalAuthenticationFilter;
//import com.cakey.common.auth.filter.RequiredAuthenticationFilter;
import lombok.RequiredArgsConstructor;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
Expand All @@ -22,19 +17,6 @@
@RequiredArgsConstructor
public class SecurityConfig {

// private final RequiredAuthenticationFilter jwtAuthenticationFilter;
// private final OptionalAuthenticationFilter customAuthenticationFilter;
// private final CustomAccessDeniedHandler customAccessDeniedHandler;
// private final CustomJwtAuthenticationEntryPoint customJwtAuthenticationEntryPoint;
// private final JwtTokenProvider jwtTokenProvider;

// private static final String[] AUTH_WHITELIST = {
// "/actuator/health",
// "/api/v1/user/login",
// "/token-refresh",
// "/api/v1/user/hi",
// };

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
return http.csrf(AbstractHttpConfigurer::disable)
Expand All @@ -44,37 +26,5 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti
session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
.authorizeHttpRequests( auth -> auth.anyRequest().permitAll()) //todo: 추후 변경
.build();
// .exceptionHandling(
// exception -> exception.authenticationEntryPoint(customJwtAuthenticationEntryPoint)
// .accessDeniedHandler(customAccessDeniedHandler))
// .authorizeHttpRequests(auth -> auth
// .requestMatchers(AUTH_WHITELIST).permitAll() // 화이트리스트 경로 허용
// .anyRequest().authenticated())
// .addFilterBefore(new RequiredAuthenticationFilter(jwtTokenProvider), UsernamePasswordAuthenticationFilter.class)
// .addFilterBefore(new OptionalAuthenticationFilter(jwtTokenProvider), UsernamePasswordAuthenticationFilter.class)
// .build();
}

// @Bean
// public FilterRegistrationBean<RequiredAuthenticationFilter> firstFilterFilterRegistrationBean() {
// FilterRegistrationBean<RequiredAuthenticationFilter> registrationBean = new FilterRegistrationBean<>();
// registrationBean.setFilter(jwtAuthenticationFilter);
// registrationBean.addUrlPatterns("/api/v1/user/test1"); // /test1 경로에만 FirstFilter 적용
// registrationBean.setOrder(1); // 필터 순서 설정
// return registrationBean;
// }
//
// @Bean
// public FilterRegistrationBean<OptionalAuthenticationFilter> secondFilterFilterRegistrationBean() {
// FilterRegistrationBean<OptionalAuthenticationFilter> registrationBean = new FilterRegistrationBean<>();
// registrationBean.setFilter(customAuthenticationFilter);
// registrationBean.addUrlPatterns("/v1/user/test2"); // /test2 경로에만 SecondFilter 적용
// registrationBean.setOrder(2); // 필터 순서 설정
// return registrationBean;
// }
//
// @Bean
// public WebSecurityCustomizer webSecurityCustomizer() {
// return web -> web.ignoring().requestMatchers(AUTH_WHITELIST);
// }
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.cakey.store.controller;

import com.cakey.common.resolver.user.UserId;
import com.cakey.common.response.ApiResponseUtil;
import com.cakey.common.response.BaseResponse;
import com.cakey.rescode.SuccessCode;
Expand Down Expand Up @@ -31,7 +32,7 @@ public ResponseEntity<BaseResponse<?>> getStoreCoordinateList(
@GetMapping("/popularity")
public ResponseEntity<BaseResponse<?>> getStoreInfoListByStationAndLikes(
//todo: @UserId final Long userId //다음 피알에서 추가예정
@RequestHeader(value = "Authorization", required = false) final Long userId,
@UserId final Long userId,
@RequestParam(value = "station", required = true) final Station station,
@RequestParam(value = "likesCursor", required = false) final Integer likesCursor,
@RequestParam(value = "storeIdCursor", required = false) final Long storeIdCursor,
Expand All @@ -51,7 +52,7 @@ public ResponseEntity<BaseResponse<?>> getStoreInfoListByStationAndLikes(
@GetMapping("/latest")
public ResponseEntity<BaseResponse<?>> getStoreInfoListByStationAndLatest(
//todo: @UserId final Long userId //다음 피알에서 추가예정
@RequestHeader(value = "Authorization", required = false) final Long userId,
@UserId final Long userId,
@RequestParam(value = "station", required = true) final Station station,
@RequestParam(value = "storeIdCursor", required = false) final Long storeIdCursor,
@RequestParam(value = "size", defaultValue = "10", required = false) final int size
Expand Down Expand Up @@ -109,7 +110,7 @@ public ResponseEntity<BaseResponse<?>> getStoreSelectedCoordinate(@PathVariable
//선택 스토어 조회
@GetMapping("/{storeId}/select")
public ResponseEntity<BaseResponse<?>> getStoreSelected(
@RequestHeader(value = "Authorization", required = false) final Long userId,
@UserId final Long userId,
@PathVariable final long storeId) {
return ApiResponseUtil.success(
SuccessCode.OK,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.cakey.storelikes.controller;

import com.cakey.common.resolver.user.UserId;
import com.cakey.common.response.ApiResponseUtil;
import com.cakey.common.response.BaseResponse;
import com.cakey.rescode.SuccessCode;
Expand All @@ -18,7 +19,7 @@ public class StoreLikesController {
//찜한 스토어 조회(최신순)
@GetMapping("/latest")
public ResponseEntity<BaseResponse<?>> getLatestStoreByUserLikes(
@RequestHeader(value = "userId", required = true) final long userId,
@UserId final long userId,
@RequestParam(value = "storeIdCursor", required = false) final Long storeIdCursor,
@RequestParam(value = "size", defaultValue = "10", required = false) final int size
) {
Expand All @@ -30,7 +31,7 @@ public ResponseEntity<BaseResponse<?>> getLatestStoreByUserLikes(
//찜한 스토어 조회(인기순)
@GetMapping("/popularity")
public ResponseEntity<BaseResponse<?>> getPopularityStoreByUserLikes(
@RequestHeader(value = "userId", required = true) final long userId,
@UserId final long userId,
@RequestParam(value = "likesCursor", required = false) final Integer likesCursor,
@RequestParam(value = "storeIdCursor", required = false) final Long storeIdCursor,
@RequestParam(value = "size", defaultValue = "10", required = false) final int size
Expand All @@ -43,7 +44,7 @@ public ResponseEntity<BaseResponse<?>> getPopularityStoreByUserLikes(
//찜한 스토어 좌표 조회
@GetMapping("/coordinate")
public ResponseEntity<BaseResponse<?>> getStoreLikedCoordinate(
@RequestHeader(value = "Authorization", required = true) final long userId
@UserId final long userId
) {
return ApiResponseUtil.success(
SuccessCode.OK,
Expand All @@ -53,7 +54,7 @@ public ResponseEntity<BaseResponse<?>> getStoreLikedCoordinate(
//스토어 찜하기
@PostMapping("/{storeId}")
public ResponseEntity<BaseResponse<?>> postStoreLikes(
@RequestHeader(value = "Authorization") final long userId,
@UserId final long userId,
@PathVariable(value = "storeId") final long storeId) {
storeLikesService.postStoreLikes(userId, storeId);
return ApiResponseUtil.success(SuccessCode.CREATED);
Expand All @@ -62,7 +63,7 @@ public ResponseEntity<BaseResponse<?>> postStoreLikes(
//스토어 찜하기 취소
@DeleteMapping("/{storeId}")
public ResponseEntity<BaseResponse<?>> deleteStoreLikes(
@RequestHeader(value = "Authorization") final long userId,
@UserId final long userId,
@PathVariable(value = "storeId") final long storeId
) {
storeLikesService.deleteStoreLikes(userId, storeId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@


import com.cakey.client.dto.LoginReq;
import com.cakey.common.resolver.user.UserId;
import com.cakey.common.response.ApiResponseUtil;
import com.cakey.common.response.BaseResponse;
import com.cakey.rescode.SuccessCode;
Expand Down Expand Up @@ -34,7 +35,8 @@ public ResponseEntity<BaseResponse<?>> login(

//유저 정보 조회(이름, 이메일)
@GetMapping
public ResponseEntity<BaseResponse<?>> getUserInfo(@RequestHeader(value = "userId") final Long userId) {
public ResponseEntity<BaseResponse<?>> getUserInfo(
@UserId final Long userId) {
return ApiResponseUtil.success(SuccessCode.OK, userService.getUserInfo(userId));
}
}