๐ UserRepository.java
package infinitystone.chalKag.biz.customOAuth2;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<UserEntity, String> {
UserEntity findByEmail(String member_id);
}
์ฌ์ฉ์ ์ธ์ฆ ๋ฐ ๊ถํ ๋ถ์ฌ๋ฅผ ์ฒ๋ฆฌํ๋๋ฐ ์ฌ์ฉ๋๋ ์ฌ์ฉ์ ๋ฆฌํฌ์งํ ๋ฆฌ ์ธํฐํ์ด์ค์ด๋ค.
์ฌ๊ธฐ์ UserRepository ์ธํฐํ์ด์ค๋ JpaRepository๋ฅผ ํ์ฅํ์ฌ ์ฌ์ฉ์ ์ํฐํฐ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ฒ์ํ๊ณ ์ ์ฅํ๋ ๋ฐ ํ์ํ ๋ฉ์๋๋ฅผ ์์ํ๋ค.
์ด ๊ฒฝ์ฐ, UserEntity ๊ฐ์ฒด์ ์ฐ๊ด๋ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ ์ ์๋ ๋ฉ์๋๋ฅผ ํฌํจํ๊ณ ์๋ค.
ํด๋น ์ฝ๋์์๋ ์ฌ์ฉ์ ์ด๋ฉ์ผ์ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉ์๋ฅผ ๊ฒ์ํ๊ธฐ ์ํ ์ถ๊ฐ ๋ฉ์๋ findByEmail(String member_id)๊ฐ ์ ์๋์ด ์๋๋ฐ member_id๋ฅผ ํ์ฉํ์ฌ ํด๋น ์ ์ ์ ์ด๋ฉ์ ๊ฐ์ ธ์จ๋ค.
๐ OAuth2Response.java
package infinitystone.chalKag.biz.customOAuth2;
public interface OAuth2Response {
//์ ๊ณต์ (Ex. naver, google, ...)
String getProvider();
//์ ๊ณต์์์ ๋ฐ๊ธํด์ฃผ๋ ์์ด๋(๋ฒํธ)
String getProviderId();
//์ด๋ฉ์ผ
String getEmail();
//์ฌ์ฉ์ ์ค๋ช
(์ค์ ํ ์ด๋ฆ)
String getName();
//์ฌ์ฉ์ ๋๋ค์
String getNickname();
//์ฌ์ฉ์ ์ ํ๋ฒํธ
String getPh();
//์ฌ์ฉ์ ์ฑ๋ณ
String getGender();
//์ฌ์ฉ์ ์์ผ
String getBirthday();
//์ฌ์ฉ์ ์ถ์์ฐ๋
String getBirthYear();
}
์ฌ์ฉ์๊ฐ OAuth2๋ฅผ ํตํด ์ธ์ฆ๋ ํ์ ์ป์ ์ ์๋ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ ์ํ๋ ์ธํฐํ์ด์ค์ด๋ค. ์นด์นด์คํก๊ณผ ๋ค์ด๋ฒ ๊ตฌ๊ธ์ด ์ ๊ณตํ๋ ์ ๋ณด๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ธํฐํ์ด์ค๋ฅผ ํ์ฉํ์ฌ ๊ฐ๊ฐ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค.
๐ NaverResponse.java
package infinitystone.chalKag.biz.customOAuth2;
import java.util.Map;
public class KakaoResponse implements OAuth2Response {
private final Map<String, Object> attribute;
public KakaoResponse(Map<String, Object> attribute) {
this.attribute = attribute;
}
@Override
public String getProvider() {
return "kakao";
}
@Override
public String getProviderId() {
return attribute.get("id").toString();
}
@Override
public String getEmail() {
return (String) ((Map<String, Object>) attribute.get("kakao_account")).get("email");
}
@Override
public String getName() {
return (String) ((Map<String, Object>) attribute.get("properties")).get("nickname");
}
@Override
public String getNickname() {
return (String) ((Map<String, Object>) attribute.get("properties")).get("nickname");
}
@Override
public String getPh() {
String originalNumber = (String) ((Map<String, Object>) attribute.get("kakao_account")).get("phone_number");
String formattedNumber = formatPhoneNumber(originalNumber);
return formattedNumber;
}
@Override
public String getGender() {
return (String) ((Map<String, Object>) attribute.get("kakao_account")).get("gender");
}
@Override
public String getBirthday() {
String originalBirthday = (String) ((Map<String, Object>) attribute.get("kakao_account")).get("birthday");
String formattedBirthday = formatBirthday(originalBirthday);
return formattedBirthday;
}
@Override
public String getBirthYear() {
return (String) ((Map<String, Object>) attribute.get("kakao_account")).get("birthyear")+"-";
}
public static String formatPhoneNumber(String phoneNumber) {
// ์ ํ๋ฒํธ์์ ์ซ์๋ง ๋จ๊ธฐ๊ธฐ
String cleanedNumber = phoneNumber.replaceAll("[^0-9]", "");
// 010 ํ์์ผ๋ก ์ฌ๊ตฌ์ฑ
String formattedNumber = "010" + cleanedNumber.substring(cleanedNumber.length() - 8);
return formattedNumber;
}
public static String formatBirthday(String birthday) {
// substring์ ์ฌ์ฉํ์ฌ ์์ ๋ ๋ฌธ์์ ๋ค์ ๋ ๋ฌธ์๋ฅผ ๋ถ๋ฆฌํ๊ณ ๊ทธ ์ฌ์ด์ "-"๋ฅผ ์ฝ์
return birthday.substring(0, 2) + "-" + birthday.substring(2);
}
}
์์ ์๋ OAuth2Response ์ธํฐํ์ด์ค๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํ ๋ค์ด๋ฒ ์ฌ์ฉ์๋ฅผ ์ํ ํด๋์ค์ด๋ค.
์ฌ๊ธฐ์์๋ ๋ค์ด๋ฒ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ๋ฐ์์์ DB ์์์ ๋ง๊ฒ ์ ์ ํ ํ์ ์๋น์ค๋ก ๋ฆฌํดํ๋ค.
์นด์นด์คํก๊ณผ ๊ตฌ๊ธ๋ ์ด๋ฐ ์์ผ๋ก ์์ฑ๋์ด ์๋ค.
'Team Project' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Spring] Spring Security๋ฅผ ํ์ฉํ ์์ ๋ก๊ทธ์ธ (3/3) (0) | 2024.04.09 |
|---|---|
| [Spring] Spring Security๋ฅผ ํ์ฉํ ์์ ๋ก๊ทธ์ธ (1/3) (0) | 2024.03.29 |
| [Spring] SMS ์ธ์ฆ ๊ธฐ๋ฅ Controller ์ด๊ด์์ (0) | 2024.03.11 |
| [JSP] ์ปค์คํ ํ๊ทธ๋ฅผ ์ด์ฉํ์ฌ nav ๊ตฌ์ฑ (0) | 2024.01.29 |
| [Java] ์ถ๊ตฌ ์ ์ ์ด์ ์์ฅ (0) | 2023.12.14 |
๋๊ธ