Skip to content
Open
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 @@ -5,6 +5,7 @@
import kr.co.chooz.user.request.AddCategoryRequest;
import kr.co.chooz.user.request.AddInfoRequest;
import kr.co.chooz.user.request.KakaoLoginRequest;
import kr.co.chooz.user.request.NaverLoginRequest;
import kr.co.chooz.user.response.TokenResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
Expand All @@ -31,11 +32,10 @@ public ResponseEntity<HttpStatus> addUserInfo(@RequestAttribute Long userId, @Re
return ResponseEntity.ok().build();
}

@PatchMapping("/additional-category")
public ResponseEntity<HttpStatus> addUserCategory(@RequestAttribute Long userId, @RequestBody AddCategoryRequest addCategoryRequest) {
userUserCase.addUserCategory(userId, addCategoryRequest.toAddUserCategory());
return ResponseEntity.ok().build();
@PostMapping("/signup/naver")
public ResponseEntity<TokenResponse> naverLogin(@Valid @RequestBody NaverLoginRequest naverLoginRequest) {
LoginToken loginToken = userUserCase.signupByThirdParty(naverLoginRequest.toDomain());
return ResponseEntity.status(HttpStatus.OK).body(new TokenResponse(loginToken));
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,18 @@
import io.swagger.v3.oas.annotations.media.Schema;
import kr.co.chooz.user.domain.entitiy.ProviderType;
import kr.co.chooz.user.dto.ThirdPartySignupInfo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.HashMap;
import java.util.Map;

@Data
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class KakaoLoginRequest {

@Schema(description = "Oauth ์„œ๋ฒ„์—์„œ ๋ฐ›์•„์˜จ ์ธ๊ฐ€์ฝ”๋“œ", example = "์ธ๊ฐ€์ฝ”๋“œ")
Expand All @@ -25,10 +29,6 @@ public class KakaoLoginRequest {
private String redirectUrl;


@Schema(description = "์†Œ์…œ ๋กœ๊ทธ์ธ ํƒ€์ž…", example = "KAKAO")
@NotNull
private ProviderType providerType;

public ThirdPartySignupInfo toDomain() {
Map<String, String> propertiesValues = new HashMap<>();
propertiesValues.put("code", code);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package kr.co.chooz.user.request;

import io.swagger.v3.oas.annotations.media.Schema;
import kr.co.chooz.user.domain.entitiy.ProviderType;
import kr.co.chooz.user.dto.ThirdPartySignupInfo;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotBlank;
import java.util.HashMap;
import java.util.Map;

@Getter
@NoArgsConstructor
@AllArgsConstructor
public class NaverLoginRequest {

@Schema(description = "Oauth ์„œ๋ฒ„์—์„œ ๋ฐ›์•„์˜จ ์ธ๊ฐ€์ฝ”๋“œ", example = "์ธ๊ฐ€์ฝ”๋“œ")
@NotBlank
private String code;

/**
* state ๊ฐ’์€ CSRF๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ธ์ฆ๊ฐ’์œผ๋กœ ์ž„์˜์˜ ๊ฐ’์„ ๋„ฃ์–ด์ค„ ์ˆ˜ ์žˆ์Œ.๋„ค์ด๋ฒ„ ๋กœ๊ทธ์ธ์‹œ ์š”์ฒญํ•œ state ๊ฐ’ ๊ณผ ๋™์ผํ•œ ๊ฐ’์œผ๋กœ ๋ฐ›์•„์™€์•ผํ•จ
* CSRF๋Š” Cross Site Request Forgery(์‚ฌ์ดํŠธ ๊ฐ„ ์š”์ฒญ ์œ„์กฐ)์˜ ์ค„์ž„๋ง๋กœ ์›น ์ทจ์•ฝ์  ์ค‘ ํ•˜๋‚˜์ด๋‹ค.
*/
@Schema(description = "๋„ค์ด๋ฒ„ ๋กœ๊ทธ์ธ CSRF๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ธ์ฆ๊ฐ’", example = "string")
private String state;


public ThirdPartySignupInfo toDomain() {
Map<String, String> propertiesValues = new HashMap<>();
propertiesValues.put("code", code);
propertiesValues.put("state", state);
return new ThirdPartySignupInfo(ProviderType.NAVER, propertiesValues);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public interface NaverAuthClient {
@PostMapping(value = "/token", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
NaverTokenResponse generateToken(@RequestParam(name = "grant_type") String grantType,
@RequestParam(name = "client_id") String clientId,
@RequestParam(name = "redirect_uri") String redirectUri,
@RequestParam(name = "state") String state,
@RequestParam(name = "code") String code,
@RequestParam(name = "client_secret") String clientSecret);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,10 @@ public String getAccessToken(ThirdPartySignupInfo signupInfo) {
NaverTokenResponse response = naverAuthClient.generateToken(
"authorization_code",
clientId,
client_secret,
propertiesValues.get("state"),
propertiesValues.get("code"),
propertiesValues.get("state")
client_secret

);

return response.getAccess_token();
Expand All @@ -44,10 +45,11 @@ public String getAccessToken(ThirdPartySignupInfo signupInfo) {
public Map<String, String> getUserInfo(String accessToken) {

NaverUserInfo naverUserInfo = naverApiClient.getUserInfo(new BearerAuthHeader(accessToken).getAuthorization());
System.out.println("naverUserInfo = " + naverUserInfo);

Map<String, String> result = new HashMap<>();
result.put("id", naverUserInfo.getId().toString());
result.put("nickname", naverUserInfo.getNickName());
result.put("id", naverUserInfo.getId());
result.put("nickname", naverUserInfo.getNickName()); //๋””๋ฒจ๋กœํผ์Šค์— ์ถ”๊ฐ€ํ•ด๋„ ๊ฐ’์„ ๋ชป๋ฐ›์•„ ์˜ค๋Š”์ค‘!..
result.put("profile_image", naverUserInfo.getProfileImage());

return result;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,25 @@

@Data
public class NaverUserInfo {

private Long id;
private NaverUserProperties properties;
private NaverUserProperties response;

public String getNickName() {
return properties.getNickname();
return response.getNickname();
}

public String getProfileImage() {
return properties.getProfile_image();
return response.getProfile_image();
}

public String getId() {
return response.getId();
}

}

@Data
class NaverUserProperties {

private String id;
private String nickname;
private String profile_image;

Expand Down