Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feat-50] : 로그인 및 회원가입 구현 #58

Open
wants to merge 6 commits into
base: develop
Choose a base branch
from

Conversation

KSLEE19
Copy link

@KSLEE19 KSLEE19 commented Dec 8, 2024

#️⃣ 요약 설명

📝 작업 내용

  1. JWT 기반의 로그인 구현
  2. 회원가입 api 구현
  3. 현재 로그인한 회원의 객체를 가져오는 @LoginMember 어노테이션 구현

코드의 흐름이나 중요한 부분을 작성해주세요.

ex) 기존 memberInfoDTO response 값에 생일을 추가했습니다.

  1. 로그인
.authorizeHttpRequests(authorize -> authorize
                        .requestMatchers("/").permitAll()
                        .requestMatchers("/login").permitAll()
                        .requestMatchers("/error/**").permitAll()
                        .requestMatchers("/admin/**").hasAuthority("ROLE_ADMIN")

/admin 으로 시작하는 엔드포인트는 ADMIN 롤을 받은 회원만 접근 가능하도록 설정
나머지는 모든 롤이 다 접근 가능한데 추후에 제한해야 할 기능이 있을 경우 추가 가능

public Member toEntity(MemberRequest.JoinDTO request) {
        return Member.builder()
                .email(request.getEmail())
                .name(request.getName())
                .joinYear(request.getJoinYear())
                .roleType(RoleType.ROLE_USER) //회원가입은 무조건 User로만 가능
                .build();
    }

누구든 가입하면 무조건 USER 롤을 부여받도록 설정
관리자는 일단 USER로 가입을 하고 별도 쿼리를 날려서 ADMIN으로 변경할 예정


  1. 회원가입
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseRDBEntity {

    @CreatedDate
    @Column(updatable = false)
    @Getter
    private LocalDateTime createdAt;

    @LastModifiedDate
    private LocalDateTime updatedAt;
}

회원 가입 일자를 Response로 반환해주기 위해 BaseRDBEntity의 createAt에 Getter 추가


  1. @LoginMember 어노테이션
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member")
public @interface LoginMember {
}

사용할 때

@GetMapping("/single")
public ApiResponse<DetailInfoDTO> getCourse(
        @LoginMember Member member,
        @RequestBody CourseRequest.SimpleInfoDTO request) {}

이런식으로 인자에 넣어주면 됩니다.
로그인 안되어 있으면 member = null
로그인 되어 있으면 member = 현재 로그인한 회원의 member객체

동작 확인

기능을 실행했을 때 정상 동작하는지 여부를 확인하고 사진을 올려주세요

ex) 테스트 코드 작성후 성공 사진

ex) swagger 사진

💬 리뷰 요구사항(선택)

리뷰어가 특별히 봐주었으면 하는 부분이 있다면 작성해주세요

ex) 메서드 XXX의 이름을 더 잘 짓고 싶은데 혹시 좋은 명칭이 있을까요?

@KSLEE19 KSLEE19 added the enhancement New feature or request label Dec 8, 2024
@KSLEE19 KSLEE19 self-assigned this Dec 8, 2024
@KSLEE19 KSLEE19 linked an issue Dec 8, 2024 that may be closed by this pull request
@genius00hwan
Copy link
Contributor

충돌 해결해서 pr 수정 부탁드립니다!

@KSLEE19
Copy link
Author

KSLEE19 commented Dec 10, 2024

충돌 해결 했습니다. 다시 확인 해주세요

Copy link
Contributor

@genius00hwan genius00hwan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CrudRepository를 사용한 이유가 있나요 나중에 Redis를 적용하기 위함인가요 요 답변만 하고 머지 부탁드립니다.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CrudRepository를 사용한 이유가 있나요 나중에 Redis를 적용하기 위함인가요

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Feat] 로그인 및 회원가입
2 participants