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
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@ cd dodream
```


2. **ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •**
ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— `.env` ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ๋‹ค์Œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋“ค์„ ์„ค์ •ํ•˜์„ธ์š”:


3. **MySQL ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰**
```bash
docker run --name dodream \
Expand All @@ -38,6 +42,11 @@ docker run --name dodream-redis \
-p 6379:6379 -d redis:7-alpine
```

5. **์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰**
```bash
./gradlew bootRun
```

## ๐Ÿ“Š ERD

[ERD Cloud ๋งํฌ](https://www.erdcloud.com/d/fZNNYLXx5ggoB7DNe)
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/swyp/dodream/login/domain/AuthProvider.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package swyp.dodream.login.domain;

public enum AuthProvider {
GOOGLE
GOOGLE,
NAVER
}

19 changes: 17 additions & 2 deletions src/main/java/swyp/dodream/login/handler/OAuth2SuccessHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,24 @@ public void onAuthenticationSuccess(HttpServletRequest request, HttpServletRespo
OAuth2User oAuth2User = (OAuth2User) authentication.getPrincipal();

// OAuth2 ์‚ฌ์šฉ์ž ์ •๋ณด์—์„œ ์‚ฌ์šฉ์ž ์กฐํšŒ
String providerId = oAuth2User.getAttribute("sub");
String providerId;
AuthProvider provider;

User user = userRepository.findByProviderAndProviderId(AuthProvider.GOOGLE, providerId)
// Google๊ณผ Naver์˜ providerId ์ถ”์ถœ ๋ฐฉ์‹์ด ๋‹ค๋ฆ„
if (oAuth2User.getAttribute("sub") != null) {
// Google
providerId = oAuth2User.getAttribute("sub");
provider = AuthProvider.GOOGLE;
} else if (oAuth2User.getAttribute("response") != null) {
// Naver
java.util.Map<String, Object> naverResponse = oAuth2User.getAttribute("response");
providerId = (String) naverResponse.get("id");
provider = AuthProvider.NAVER;
} else {
throw ExceptionType.NOT_FOUND_USER.of();
}

User user = userRepository.findByProviderAndProviderId(provider, providerId)
.orElseThrow(() -> ExceptionType.NOT_FOUND_USER.of());

// JWT ํ† ํฐ ์ƒ์„ฑ (userId, email, name ํฌํ•จ)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,28 @@ public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2Authentic
String registrationId = userRequest.getClientRegistration().getRegistrationId();
AuthProvider provider = AuthProvider.valueOf(registrationId.toUpperCase());

// Google OAuth2 ์‚ฌ์šฉ์ž ์ •๋ณด ์ถ”์ถœ
String email = oAuth2User.getAttribute("email");
String name = oAuth2User.getAttribute("name");
String picture = oAuth2User.getAttribute("picture");
String providerId = oAuth2User.getAttribute("sub");
String email, name, picture, providerId;

if (provider == AuthProvider.GOOGLE) {
// Google OAuth2 ์‚ฌ์šฉ์ž ์ •๋ณด ์ถ”์ถœ
email = oAuth2User.getAttribute("email");
name = oAuth2User.getAttribute("name");
picture = oAuth2User.getAttribute("picture");
providerId = oAuth2User.getAttribute("sub");
} else if (provider == AuthProvider.NAVER) {
// Naver OAuth2 ์‚ฌ์šฉ์ž ์ •๋ณด ์ถ”์ถœ (๋„ค์ด๋ฒ„๋Š” response ๊ฐ์ฒด ์•ˆ์— ์ •๋ณด๊ฐ€ ์žˆ์Œ)
java.util.Map<String, Object> naverResponse = oAuth2User.getAttribute("response");
if (naverResponse != null) {
email = (String) naverResponse.get("email");
name = (String) naverResponse.get("name");
picture = (String) naverResponse.get("profile_image");
providerId = (String) naverResponse.get("id");
} else {
throw new OAuth2AuthenticationException("๋„ค์ด๋ฒ„ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.");
}
} else {
throw new OAuth2AuthenticationException("์ง€์›ํ•˜์ง€ ์•Š๋Š” OAuth ์ œ๊ณต์ž์ž…๋‹ˆ๋‹ค: " + provider);
}

// DB์—์„œ ์‚ฌ์šฉ์ž ์กฐํšŒ ๋˜๋Š” ์ƒ์„ฑ
User user = userRepository.findByProviderAndProviderId(provider, providerId)
Expand Down
33 changes: 0 additions & 33 deletions src/main/resources/application-dev.yml

This file was deleted.

34 changes: 0 additions & 34 deletions src/main/resources/application-prod.yml

This file was deleted.