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
Expand Up @@ -76,8 +76,11 @@ public class Member extends BaseTimeEntity {
@Column(name = "refreshToken", columnDefinition = "varchar(255)")
private String refreshToken;

@Column(name = "social_refreshToken", columnDefinition = "varchar(255)")
private String socialRefreshToken;

@Builder
public Member(String email, String name,String nickname, String phone, String profileUuid, LoginType loginType,String bloodType,MemberType memberType, String birth, String allergy, String medication,String part1Rel,String part1Phone,String part2Rel,String part2Phone, String refreshToken) {
public Member(String email, String name,String nickname, String phone, String profileUuid, LoginType loginType,String bloodType,MemberType memberType, String birth, String allergy, String medication,String part1Rel,String part1Phone,String part2Rel,String part2Phone, String refreshToken, String socialRefreshToken) {
this.email = email;
this.name = name;
this.nickname=nickname;
Expand All @@ -93,6 +96,7 @@ public Member(String email, String name,String nickname, String phone, String pr
this.part1Phone=part1Phone;
this.part2Rel=part2Rel;
this.part2Phone=part2Phone;
this.refreshToken=refreshToken;
this.refreshToken = refreshToken;
this.socialRefreshToken=socialRefreshToken;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,10 @@
import Journey.Together.global.common.CustomMultipartFile;
import Journey.Together.global.exception.ApplicationException;
import Journey.Together.global.exception.ErrorCode;
import Journey.Together.global.exception.ErrorResponse;
import Journey.Together.global.security.kakao.KakaoClient;
import Journey.Together.global.security.kakao.dto.KakaoProfile;
import Journey.Together.global.security.jwt.TokenProvider;
import Journey.Together.global.security.jwt.dto.TokenDto;
import Journey.Together.global.security.kakao.KakaoClient;
import Journey.Together.global.security.kakao.dto.KakaoProfile;
import Journey.Together.global.security.kakao.dto.KakaoToken;
import Journey.Together.global.security.naver.dto.NaverDeleteResponse;
import Journey.Together.global.security.naver.dto.NaverProperties;
Expand All @@ -26,14 +25,11 @@
import org.springframework.http.*;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;

import javax.imageio.ImageIO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
Expand Down Expand Up @@ -90,7 +86,8 @@ public LoginRes signIn(String token, String type, LoginReq loginReq) throws IOEx
interestRepository.save(interest);
}
tokenDto = tokenProvider.createToken(member);
member.setRefreshToken(loginReq.refreshToken());
member.setRefreshToken(tokenDto.refreshToken());
member.setSocialRefreshToken(loginReq.refreshToken());

// Response
return LoginRes.of(member, tokenDto);
Expand Down Expand Up @@ -126,7 +123,8 @@ public LoginRes signIn(String token, String type, LoginReq loginReq) throws IOEx
}

tokenDto = tokenProvider.createToken(member);
member.setRefreshToken(loginReq.refreshToken());
member.setRefreshToken(tokenDto.refreshToken());
member.setSocialRefreshToken(loginReq.refreshToken());
}
return LoginRes.of(member, tokenDto);
}
Expand All @@ -138,6 +136,7 @@ public void signOut(String token, Member member) {

// Business Logic - Refresh Token 삭제 및 Access Token 블랙리스트 등록
tokenProvider.getExpiration(accessToken);
member.setSocialRefreshToken(null);
member.setRefreshToken(null);

// Response
Expand All @@ -149,7 +148,7 @@ public void withdrawal(Member member) {

// Business Logic - 회원 논리적 삭제 진행
if(member.getLoginType().equals(LoginType.NAVER)) {
NaverTokenResponse tokenResponse = toRequestToken(member.getRefreshToken());
NaverTokenResponse tokenResponse = toRequestToken(member.getSocialRefreshToken());
if(tokenResponse.getError() != null){
throw new ApplicationException(ErrorCode.NAVER_REFRESH_ERROR);
}
Expand All @@ -159,7 +158,8 @@ public void withdrawal(Member member) {
}
}else if(member.getLoginType().equals(LoginType.KAKAO)) {
//accessToken 요청
KakaoToken kakaoToken = kakaoClient.getKakaoAccessToken(member.getRefreshToken());
KakaoToken kakaoToken = kakaoClient.getKakaoAccessToken(member.getSocialRefreshToken());
System.out.println(kakaoToken.access_token());
//연결 삭제
Long id = kakaoClient.unlinkUser(kakaoToken.access_token());
if(id==null){
Expand All @@ -169,8 +169,6 @@ public void withdrawal(Member member) {

memberRepository.delete(member);

// Response

}
@Transactional
public TokenDto reissue(String token, Member member) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,12 @@ public KakaoToken getKakaoAccessToken(String refresh_token) {
params.add("grant_type", "refresh_token");
params.add("client_id", kakaoClientId);
params.add("refresh_token", refresh_token);
params.add("client_secret", kakaoClientSecret);
// params.add("client_secret", kakaoClientSecret);

// 요청 보내기 및 응답 수신
String response = webClient.post()
.uri(kakaoTokenUri)
.header("Content-type", "application/x-www-form-urlencoded")
.header("Content-type", "application/x-www-form-urlencoded;charset=utf-8")
.body(BodyInserters.fromFormData(params))
.retrieve() // 데이터 받는 방식, 스프링에서는 exchange는 메모리 누수 가능성 때문에 retrieve 권장
.bodyToMono(String.class) // (Mono는 단일 데이터, Flux는 복수 데이터)
Expand All @@ -76,14 +76,14 @@ public KakaoToken getKakaoAccessToken(String refresh_token) {
return kakaoToken;
}

public KakaoProfile getMemberInfo(String accesToken) {
public KakaoProfile getMemberInfo(String accessToken) {
// 요청 기본 객체 생성
WebClient webClient = WebClient.create(kakaoUserInfoUri);
// 요청 보내서 응답 받기
String response = webClient.post()
.uri(kakaoUserInfoUri)
.header("Content-Type", "application/x-www-form-urlencoded;charset=utf-8")
.header("Authorization", accesToken)
.header("Authorization", accessToken)
.retrieve()
.bodyToMono(String.class)
.block();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,12 @@

@Builder
public record KakaoToken(
String access_token,
String refresh_token,
String token_type,
String access_token,
String id_token,
Integer expires_in,
Integer refresh_token_expires_in,
String scope
String refresh_token,
Integer refresh_token_expires_in

) {
}