Skip to content
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
@@ -1,10 +1,13 @@
package com.moplus.moplus_server.global.security.handler;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.moplus.moplus_server.domain.member.domain.Member;
import com.moplus.moplus_server.global.security.AuthConstants;
import com.moplus.moplus_server.global.security.utils.JwtUtil;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.Authentication;
import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
Expand All @@ -15,15 +18,23 @@
public class EmailPasswordSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler {

private final JwtUtil jwtUtil;
private final ObjectMapper objectMapper = new ObjectMapper(); // JSON 변환을 위한 ObjectMapper

@Override
public void onAuthenticationSuccess(final HttpServletRequest request, final HttpServletResponse response,
final Authentication authentication) {
final Authentication authentication) throws IOException {
Member member = (Member) authentication.getPrincipal();
String accessToken = jwtUtil.generateAccessToken(member);
String refreshToken = jwtUtil.generateRefreshToken(member);
response.addHeader(AuthConstants.AUTH_HEADER, AuthConstants.TOKEN_TYPE + " " + accessToken);
response.addHeader(AuthConstants.REFRESH_TOKEN_HEADER, AuthConstants.TOKEN_TYPE + " " + refreshToken);

// JSON 응답 생성
Map<String, String> tokenResponse = new HashMap<>();
tokenResponse.put("accessToken", accessToken);
tokenResponse.put("refreshToken", refreshToken);

response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(objectMapper.writeValueAsString(tokenResponse));
}

}
2 changes: 2 additions & 0 deletions src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ cors-allowed-origins:
http://dev.mopl.kr,
https://prod.mopl.kr,
http://prod.mopl.kr,

http://localhost:3000,
http://localhost:5173,
https://www.mopl.kr,
http://www.mopl.kr
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.moplus.moplus_server.domain.auth.controller;

import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.header;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

import com.fasterxml.jackson.databind.ObjectMapper;
Expand Down Expand Up @@ -56,12 +56,12 @@ class 어드민_로그인 {
mockMvc.perform(MockMvcRequestBuilders.post("/api/v1/auth/admin/login")
.contentType("application/json")
.content(requestBody))
.andExpect(status().isOk()) // 200 응답 확인
.andExpect(header().exists("Authorization"))
.andExpect(header().exists("RefreshToken"));

.andExpect(status().isOk()) // HTTP 200 응답 확인
.andExpect(jsonPath("$.accessToken").isNotEmpty()) // accessToken 필드 존재 여부 확인
.andExpect(jsonPath("$.refreshToken").isNotEmpty()); // refreshToken 필드 존재 여부 확인
}


@Test
void 잘못된_요청_본문() throws Exception {

Expand Down