Skip to content

Commit

Permalink
Merge pull request #9 from handong-app/Backend-develop1
Browse files Browse the repository at this point in the history
Professor-advice
  • Loading branch information
junglesub authored Sep 26, 2024
2 parents fe400b7 + da6cf43 commit d704f96
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -80,11 +80,11 @@ public Map<String, Object> create(@RequestParam Map<String, Object> params) {

@PostMapping("/login/google")
public ResponseEntity<GoogleLoginResponse> loginWithGoogle(@RequestBody GoogleLoginRequest request) {
String email = tbuserService.loginWithGoogle(request.getCredential()).getEmail();
// 서비스 계층에서 유저 로그인 처리
Tbuser tbuser = tbuserService.loginWithGoogle(request.getCredential());

// 리프레시 토큰 발급
String refreshToken = TokenFactory.issueRefreshToken(tbuser.getEmail());
String refreshToken = TokenFactory.issueRefreshToken(email);

// 응답 리턴
return ResponseEntity.ok(new GoogleLoginResponse(refreshToken));
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/thc/realspr/dto/TbuserDto.java
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ public static class CreateReqDto {
private LocalDateTime modified_at;

public Tbuser toEntity() {
return Tbuser.of(email, uuid, name, last_login_time, modified_at ,created_at);
return Tbuser.of(email, uuid, name, last_login_time, modified_at, created_at);
}
}

Expand Down
7 changes: 5 additions & 2 deletions src/main/java/com/thc/realspr/service/GoogleAuthService.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,18 +22,21 @@ public GoogleAuthService() { // 구글 토큰을 받기 위한 코드
.build();
}

public String verifyGoogleToken(String credential) {
public String[] verifyGoogleToken(String credential) {
try { // 받은 구글 토큰을 검증하고 이메일을 추출하는 코드
GoogleIdToken idToken = verifier.verify(credential);
if (idToken != null) {
return idToken.getPayload().getEmail();
GoogleIdToken.Payload payload = idToken.getPayload();
String[] out = {idToken.getPayload().getEmail(), payload.getEmail()};
return out;
} else {
throw new RuntimeException("Invalid ID token");
}
} catch (Exception e) {
throw new RuntimeException("Failed to verify ID token", e);
}
}

public String verifyGoogleName(String credential) {
try {
// 받은 구글 토큰을 검증하고 페이로드를 추출하는 코드
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/thc/realspr/service/TbuserService.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,5 @@ public interface TbuserService {

// TbuserDto.CreateResDto access(String param) throws Exception;

Tbuser loginWithGoogle(String credential);
TbuserDto.CreateResDto loginWithGoogle(String credential);
}
23 changes: 14 additions & 9 deletions src/main/java/com/thc/realspr/service/impl/TbuserServiceImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -68,40 +68,45 @@ public TbuserDto.CreateResDto access(String param) throws Exception {


@Override
public Tbuser loginWithGoogle(String credential) {
String email = googleAuthService.verifyGoogleToken(credential);
String name = googleAuthService.verifyGoogleName(credential);
public TbuserDto.CreateResDto loginWithGoogle(String credential) {
String[] out = googleAuthService.verifyGoogleToken(credential);
String email = out[0];
String name = out[1];

LocalDateTime now = LocalDateTime.now();
String uuid = UUID.randomUUID().toString().replace("-", "");

System.out.println("email string is " + email);
System.out.println("email name is " + name);

// 유저 객체 생성
Tbuser tbuser = Tbuser.of(email, uuid, name, now ,now, now);


// 유저가 @handong.ac.kr 이메일이 아니면 예외 처리
if (email == null || !email.endsWith("@handong.ac.kr")) {
throw new NoAuthorizationException("Unauthorized user");
}

Tbuser tbuser2 = tbuserRepository.findByEmail(email);
Tbuser tbuser = tbuserRepository.findByEmail(email);

if (tbuser2 != null && tbuser2.getEmail().equals(email)) {
if (tbuser != null ) {
// 유저가 있으면 이메일 출력
System.out.println("user " + tbuser2.getEmail());
System.out.println("user " + tbuser.getEmail());
tbuser.setLast_login_time(now);
} else {
tbuser = Tbuser.of(email, uuid, name, now ,now, now);
// 유저가 없는 경우 신규 가입
tbuserRepository.save(tbuser);
}
tbuserRepository.save(tbuser);

// Map<String, Object> params = new HashMap<>();
// params.put("email", email);
// params.put("uuid", uuid);
// params.put("name", name);
//
// Map<String, Object> createResult = create(params);
return tbuser;

return TbuserDto.CreateResDto.builder().email(email).build();
}


Expand Down

0 comments on commit d704f96

Please sign in to comment.