Skip to content

Commit

Permalink
Merge pull request #19 from kusitms-28th-Meetup-E/feat/auth
Browse files Browse the repository at this point in the history
회원가입/로그인 로직 완료
  • Loading branch information
seungueonn authored Nov 13, 2023
2 parents f438efc + e58f8a5 commit 48ad819
Show file tree
Hide file tree
Showing 20 changed files with 88 additions and 170 deletions.
13 changes: 13 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
## PR 타입
- [ ] 기능 추가
- [ ] 버그 수정
- [ ] 의존성, 환경 변수, 빌드 관련 업데이트
- [ ] 기타 사소한 수정

## 개요

## 변경 사항

## 코드 리뷰 시 참고 사항

## 테스트 결과
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,4 @@ build/resources/main/application.yml
build/tmp/compileJava/previous-compilation-data.bin
src/main/resources/application.yml

src/main/generated
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ bootJar{

// QueryDsl 빌드 옵션 (선택)
// QueryDsl 디렉토리 경로
def querydslDir = "$buildDir/generated/querydsl"
def querydslDir = "src/main/generated/querydsl"

// 경로 추가 >> QueryDsl 소스 코드 컴파일 시 빌드
sourceSets {
Expand Down
5 changes: 0 additions & 5 deletions build/resources/main/bootstrap.yml

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
public class SignUpRequest {


private String nickName;
private String nickname;

private String gender;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package gwangjang.server.domain.auth.application.dto.response;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Builder
@AllArgsConstructor
@NoArgsConstructor
@Getter
public class CheckLoginIdResponse {
private Boolean isChecked;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package gwangjang.server.domain.auth.application.service;


import gwangjang.server.domain.auth.application.dto.response.CheckLoginIdResponse;
import gwangjang.server.domain.auth.application.dto.response.CheckNicknameResponse;
import gwangjang.server.domain.member.domain.service.MemberCheckService;
import jakarta.transaction.Transactional;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@Transactional
@RequiredArgsConstructor
public class CheckLoginIdUseCase {

private final MemberCheckService memberCheckService;
public CheckLoginIdResponse checkLoginId(String loginId){
boolean isDuplicated=memberCheckService.checkLoginId(loginId);
return new CheckLoginIdResponse(isDuplicated);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ public class MemberAuthUserCase {
public Member auth(Member member, String providerInfo) {
Member signInMember = memberSaveService.saveMember(member);
checkRegistration(signInMember, providerInfo);
member.tempSignUp();
return signInMember;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ public SignInResponse signUp(String token, SignUpRequest signUpRequest) {
String socialId = tokenUtil.getSocialId(token);
Member member = memberQueryService.getMemberBySocialId(socialId);
//2. signUp 처리
String nickName=signUpRequest.getNickName();
String nickName=signUpRequest.getNickname();
if(memberCheckService.checkNickname(nickName)) throw new NicknameDuplicationException(); //닉네임 중복검사 (이중체크)
member.signUp(signUpRequest);
//3. security 처리
Expand Down
Original file line number Diff line number Diff line change
@@ -1,33 +1,22 @@
package gwangjang.server.domain.auth.presentation;

import gwangjang.server.domain.auth.application.dto.request.*;
import gwangjang.server.domain.auth.application.dto.response.CheckEmailResponse;
import gwangjang.server.domain.auth.application.dto.response.CheckNicknameResponse;
import gwangjang.server.domain.auth.application.dto.response.ReissueTokenResponse;
import gwangjang.server.domain.auth.application.dto.response.SignInResponse;
import gwangjang.server.domain.auth.application.dto.response.*;
import gwangjang.server.domain.auth.application.service.*;
import gwangjang.server.domain.auth.application.service.kakao.KakaoTokenUserCase;
import gwangjang.server.domain.member.adapter.consumer.web.dto.post.MemberDto;
import gwangjang.server.domain.member.feign.MemberFeignUseCase;
import gwangjang.server.global.response.SuccessResponse;
import gwangjang.server.global.security.dto.User;
import jakarta.validation.Valid;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.core.parameters.P;
import org.springframework.web.bind.annotation.*;


import static gwangjang.server.domain.auth.presentation.constant.AuthResponseMessage.*;

@RestController
@AllArgsConstructor
//@CrossOrigin(origins = "*")
@RequestMapping(value = "/auth",consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
//@RequestMapping(value = "/auth")
@RequestMapping(value = "/auth")
@Slf4j
public class AuthController {

Expand All @@ -39,31 +28,31 @@ public class AuthController {
private final CheckNicknameUserCase checkNicknameService;
private final KakaoTokenUserCase kakaoTokenUserCase;
private final CheckEmailUserCase checkEmailUserCase;

private final CheckLoginIdUseCase checkLoginIdUseCase;


@PostMapping("/signIn")
public ResponseEntity<SuccessResponse<SignInResponse>> signIn(LocalSignInRequest localSignInRequest) {
public ResponseEntity<SuccessResponse<SignInResponse>> signIn(@RequestBody LocalSignInRequest localSignInRequest) {
return ResponseEntity.ok(SuccessResponse.create(SIGN_IN_SUCCESS.getMessage(), this.authService.localSignIn(localSignInRequest)));
}

@PostMapping("/signIn/{provider}")
public ResponseEntity<SuccessResponse<SignInResponse>> socialSignIn(@PathVariable String provider,
SignInRequest signInRequest) {
@RequestBody SignInRequest signInRequest) {
return ResponseEntity.ok(SuccessResponse.create(SIGN_IN_SUCCESS.getMessage(), this.authService.signIn(signInRequest.getToken(), provider)));
}


@PutMapping("/signUp/{provider}")
public ResponseEntity<SuccessResponse<SignInResponse>> socialSignUp(@PathVariable String provider,
@RequestHeader(value = "Authorization") String token,
SignUpRequest signUpRequest) {
@RequestBody SignUpRequest signUpRequest) {
token = (token != null && token.startsWith("Bearer ")) ? token.substring(7) : token;
return ResponseEntity.ok(SuccessResponse.create(SIGN_UP_SUCCESS.getMessage(), this.signUpService.signUp(token, signUpRequest)));
}

@PostMapping("/signUp")
public ResponseEntity<SuccessResponse<SignInResponse>> signUp( LocalSignUpRequest signUpRequest) {
public ResponseEntity<SuccessResponse<SignInResponse>> signUp(@RequestBody LocalSignUpRequest signUpRequest) {
return ResponseEntity.ok(SuccessResponse.create(SIGN_UP_SUCCESS.getMessage(), this.signUpService.localSignUp(signUpRequest)));
}

Expand All @@ -75,42 +64,35 @@ public ResponseEntity<SuccessResponse<ReissueTokenResponse>> reissue(@RequestHea


@GetMapping("/nickname/{nickname}")
public ResponseEntity<SuccessResponse<CheckNicknameResponse>> checkNickname(@PathVariable String nickname){
public ResponseEntity<SuccessResponse<CheckNicknameResponse>> checkNickname(@PathVariable String nickname) {
return ResponseEntity.ok(SuccessResponse.create(CHECK_NICKNAME_SUCCESS.getMessage(), checkNicknameService.checkNickname(nickname)));
}


@PostMapping("/test/{provider}")
public ResponseEntity<SuccessResponse<SignInResponse>> testLogin(@PathVariable String provider,
TestRequest testRequest){
return ResponseEntity.ok(SuccessResponse.create(SIGN_IN_SUCCESS.getMessage(), this.authService.testSignIn(testRequest.getSocialId(),provider)));
}

@PostMapping("/test/hi")
public ResponseEntity<SuccessResponse<String>> test(@AuthenticationPrincipal User user){

log.info("/test/hi -> start ");
log.info(user.getEmail());
return ResponseEntity.ok(SuccessResponse.create(SIGN_IN_SUCCESS.getMessage(),user.getEmail()));
@RequestBody TestRequest testRequest) {
return ResponseEntity.ok(SuccessResponse.create(SIGN_IN_SUCCESS.getMessage(), this.authService.testSignIn(testRequest.getSocialId(), provider)));
}

@GetMapping("/oauth/kakao")
public ResponseEntity<SuccessResponse<String>> kakaoCallBack(@RequestParam String code){
public ResponseEntity<SuccessResponse<String>> kakaoCallBack(@RequestParam String code) {
log.info("/oauth/kakao redirect success");
return ResponseEntity.ok(SuccessResponse.create(KAKAO_CALL_BACK_SUCCESS.getMessage(),kakaoTokenUserCase.getAccessToken(code).getAccess_token()));
return ResponseEntity.ok(SuccessResponse.create(KAKAO_CALL_BACK_SUCCESS.getMessage(), kakaoTokenUserCase.getAccessToken(code).getAccess_token()));
}

@PostMapping("/email/{email}")
public ResponseEntity<SuccessResponse<CheckEmailResponse>> sendEmailAuth(@PathVariable String email){
return ResponseEntity.ok(SuccessResponse.create(CHECK_EMAIL_SUCCESS.getMessage(),checkEmailUserCase.requestEmail(email)));
public ResponseEntity<SuccessResponse<CheckEmailResponse>> sendEmailAuth(@PathVariable String email) {
return ResponseEntity.ok(SuccessResponse.create(CHECK_EMAIL_SUCCESS.getMessage(), checkEmailUserCase.requestEmail(email)));
}

@PostMapping("/email")
public ResponseEntity<SuccessResponse<CheckEmailResponse>> checkEmailAuth( CheckEmailRequest checkEmailRequest){
return ResponseEntity.ok(SuccessResponse.create(CHECK_EMAIL_AUTH_SUCCESS.getMessage(),checkEmailUserCase.checkEmailAuth(checkEmailRequest)));
public ResponseEntity<SuccessResponse<CheckEmailResponse>> checkEmailAuth(@RequestBody CheckEmailRequest checkEmailRequest) {
return ResponseEntity.ok(SuccessResponse.create(CHECK_EMAIL_AUTH_SUCCESS.getMessage(), checkEmailUserCase.checkEmailAuth(checkEmailRequest)));
}




@GetMapping("/loginId/{loginId}")
public ResponseEntity<SuccessResponse<CheckLoginIdResponse>> sendIdDuplicate(@PathVariable String loginId) {
return ResponseEntity.ok(SuccessResponse.create(CHECK_LOGINID_SUCCESS.getMessage(), checkLoginIdUseCase.checkLoginId(loginId)));
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ public enum AuthResponseMessage {
REISSUE_TOKEN_SUCCESS("토큰을 재발급했습니다"),
CHECK_NICKNAME_SUCCESS("닉네임 중복검사를 했습니다"),
CHECK_EMAIL_SUCCESS("이메일 인증을 요청 했습니다"),
CHECK_LOGINID_SUCCESS("아이디 중복검사를 했습니다"),
CHECK_EMAIL_AUTH_SUCCESS("이메일 인증을 성공 했습니다"),
KAKAO_CALL_BACK_SUCCESS("카카오 리다이렉트를 완료 했습니다");
private final String message;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,12 +54,8 @@ public class Member {
private String birth;
private String gender;

public void tempSignUp() {
this.registrationStatus = RegistrationStatus.COMPLETED;
}

public void signUp(SignUpRequest signUpRequest) {
this.nickname = signUpRequest.getNickName();
this.nickname = signUpRequest.getNickname();
this.registrationStatus = RegistrationStatus.COMPLETED;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@
public interface MemberCustomRepository {
boolean checkNickname(String nickname);
boolean checkEmail(String email);
boolean checkLoginId(String loginId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,13 @@ public boolean checkEmail(String email) {
.where(member.email.eq(email))
.fetchFirst() != null;
}
@Override
public boolean checkLoginId(String loginId) {
return queryFactory
.selectOne()
.from(member)
.where(member.loginId.eq(loginId))
.fetchFirst() != null;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,10 @@ public boolean checkNickname(String nickname) {
return memberRepository.checkNickname(nickname);
}
public boolean checkEmail(String email) {
log.info("checkEmail done");
return memberRepository.checkEmail(email);
}
public boolean checkLoginId(String loginId) {
return memberRepository.checkLoginId(loginId);
}

}
Loading

0 comments on commit 48ad819

Please sign in to comment.