Skip to content

Commit

Permalink
[HOTFIX] 푸시 서버 발 Alarm Status Update API 호출 허용 처리
Browse files Browse the repository at this point in the history
푸시 서버 내 date time 변환 메서드 결과가 String임에 대한 타입 불일치 문제도 해결했습니다.
- JwtAuthenticationFilter 내 uri & method 검사
- SecurityConfig 내 AntMatcher 추가
  • Loading branch information
yummygyudon committed Jan 27, 2025
1 parent 6dd1890 commit f5188db
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,7 @@

import jakarta.validation.constraints.NotNull;

import java.time.LocalDateTime;

public record AlarmScheduleStatusUpdateRequest(
@NotNull LocalDateTime sendAt
@NotNull String sendAt
) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,11 @@

import static org.sopt.makers.operation.code.failure.AlarmFailureCode.NOT_FOUND_ALARM;
import static org.sopt.makers.operation.code.failure.AlarmFailureCode.INVALID_ALARM_TARGET_TYPE;
import static org.sopt.makers.operation.constant.AlarmConstant.ALARM_RESPONSE_DATE_FORMAT;
import static org.sopt.makers.operation.constant.AlarmConstant.ALARM_RESPONSE_TIME_FORMAT;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Objects;
import lombok.RequiredArgsConstructor;
Expand Down Expand Up @@ -36,6 +40,7 @@
@Service
@RequiredArgsConstructor
public class AlarmServiceImpl implements AlarmService {
private static final String DATETIME_FORMAT = String.join(" ", ALARM_RESPONSE_DATE_FORMAT, ALARM_RESPONSE_TIME_FORMAT);

private final AlarmRepository alarmRepository;
private final MemberRepository memberRepository;
Expand Down Expand Up @@ -97,7 +102,8 @@ public void deleteAlarm(long alarmId) {
@Transactional
public void updateScheduleAlarm(long alarmId, AlarmScheduleStatusUpdateRequest request) {
val alarm = findAlarm(alarmId);
alarm.updateStatusToComplete(request.sendAt());
val sendAtDateTime = LocalDateTime.parse(request.sendAt(), DateTimeFormatter.ofPattern(DATETIME_FORMAT));
alarm.updateStatusToComplete(sendAtDateTime);
}

private Alarm findAlarm(long id) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ private void setHttp(HttpSecurity http) throws Exception {
.requestMatchers(new AntPathRequestMatcher(AUTH_PATH_PATTERN)).permitAll()
.requestMatchers(new AntPathRequestMatcher(TEST_PATH_PATTERN)).permitAll()
.requestMatchers(new AntPathRequestMatcher(ERROR_PATH_PATTERN)).permitAll()
.requestMatchers(new AntPathRequestMatcher("/api/v1/alarms/**", "PATCH")).permitAll()
.requestMatchers(new AntPathRequestMatcher("/actuator/**")).permitAll()
.anyRequest().authenticated())
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter {
public void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException {
val uri = request.getRequestURI();

if ((uri.startsWith("/api/v1")) && !uri.contains("auth") && !uri.contains("test")) {
if ((uri.startsWith("/api/v1")) && !uri.contains("auth") && !uri.contains("test") && !isAlarmUpdateRequest(request)) {
val token = jwtTokenProvider.resolveToken(request);

val jwtTokenType = validateTokenType(request);
Expand All @@ -55,4 +55,12 @@ private JwtTokenType validateTokenType(HttpServletRequest request) {
JwtTokenType.APP_ACCESS_TOKEN :
JwtTokenType.ACCESS_TOKEN;
}

private boolean isAlarmUpdateRequest(HttpServletRequest request) {
boolean isPatchRequest = request.getMethod().equals("PATCH");
boolean isAlarmRequest = request.getRequestURI().contains("/api/v1/alarms");
System.out.println("isPatch : " + isPatchRequest);
System.out.println("isAlarmRequest : " + isAlarmRequest);
return isPatchRequest && isAlarmRequest;
}
}

0 comments on commit f5188db

Please sign in to comment.