Skip to content

Commit

Permalink
[refactor] #5 권한별 handler 메서드 추가 & 리다이렉트 경로 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
seokjun01 committed Jan 3, 2025
1 parent ac2b891 commit 844d6a7
Showing 1 changed file with 46 additions and 22 deletions.
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
package com.example.eatmate.global.auth.login.oauth;


import com.example.eatmate.app.domain.member.domain.Role;
import com.example.eatmate.app.domain.member.domain.repository.MemberRepository;
import com.example.eatmate.global.auth.jwt.JwtService;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
Expand All @@ -14,45 +13,70 @@
import org.springframework.stereotype.Component;

import java.io.IOException;
// OAuth2 로그인 성공시 , 실행되는 로직

@Slf4j
@Component
@RequiredArgsConstructor
public class OAuthLoginSuccessHandler implements AuthenticationSuccessHandler {

private final JwtService jwtService;


@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
log.info("OAuth2 Login 성공");

try {
CustomOAuth2User oAuth2User = (CustomOAuth2User) authentication.getPrincipal();
//처음 로그인(회원가입일 경우) 회원가입 페이지로 리다이렉트
if (oAuth2User.getRole() == Role.GUEST) {
String accessToken = jwtService.createAccessToken(oAuth2User.getEmail());
response.addHeader(jwtService.getAccessHeader(), "Bearer " + accessToken);
response.sendRedirect("/"); // 프론트의 회원가입 추가 정보 입력 폼으로 리다이렉트

jwtService.sendAccessAndRefreshToken(response, accessToken, null);
// 사용자 Role 확인
if (oAuth2User.getRole() == Role.GUEST) {
log.info("회원가입이 필요한 사용자입니다. 회원가입 페이지로 이동.");
handleGuestUser(response, oAuth2User);
} else {
loginSuccess(response, oAuth2User); // 로그인 성공시 Access & Refresh 토큰 생성

log.info("회원가입이 완료된 사용자입니다. 메인 페이지로 이동.");
handleRegisteredUser(response, oAuth2User);
}

} catch (Exception e) {
log.error("OAuth2 로그인 처리 중 오류 발생: {}", e.getMessage());
throw e;
}
}
private void loginSuccess(HttpServletResponse response, CustomOAuth2User oAuth2User) throws IOException {
String accessToken = jwtService.createAccessToken(oAuth2User.getEmail());
log.info("로그인에 성공하였습니다. AccessToken : {}", accessToken);
String refreshToken = jwtService.createRefreshToken();
response.addHeader(jwtService.getAccessHeader(), "Bearer " + accessToken);
response.addHeader(jwtService.getRefreshHeader(), "Bearer " + refreshToken);

jwtService.sendAccessAndRefreshToken(response, accessToken, refreshToken);
jwtService.updateRefreshToken(oAuth2User.getEmail(), refreshToken);
}

private void handleGuestUser(HttpServletResponse response, CustomOAuth2User oAuth2User) throws IOException {
String accessToken = jwtService.createAccessToken(oAuth2User.getEmail());
log.info("로그인에 성공하였습니다. AccessToken : {}", accessToken);
response.addHeader(jwtService.getAccessHeader(), "Bearer " + accessToken);
log.info("auth header : " + response.getHeader(jwtService.getAccessHeader()));


// GUEST 사용자는 회원가입 페이지로 리다이렉트
jwtService.sendAccessAndRefreshToken(response, accessToken, null);

response.sendRedirect("https://develop.d4u0qurydeei4.amplifyapp.com/signup");
//response.sendRedirect("http://localhost:8080");
}

private void handleRegisteredUser(HttpServletResponse response, CustomOAuth2User oAuth2User) throws IOException {
String accessToken = jwtService.createAccessToken(oAuth2User.getEmail());
String refreshToken = jwtService.createRefreshToken();

response.addHeader(jwtService.getAccessHeader(), "Bearer " + accessToken);
response.addHeader(jwtService.getRefreshHeader(), "Bearer " + refreshToken);

log.info("auth access header : " + response.getHeader(jwtService.getAccessHeader()));
log.info("auth refresh header : " + response.getHeader(jwtService.getRefreshHeader()));


jwtService.sendAccessAndRefreshToken(response, accessToken, refreshToken);
jwtService.updateRefreshToken(oAuth2User.getEmail(), refreshToken);



// USER 사용자는 메인 페이지로 리다이렉트
response.sendRedirect("https://develop.d4u0qurydeei4.amplifyapp.com/home");
// TODO: 주영이가 바꿔놈
// 여까지
// response.sendRedirect("http://localhost:8080");
}
}

0 comments on commit 844d6a7

Please sign in to comment.