Skip to content

Commit

Permalink
Merge pull request #436 from Namo-log/feat/434
Browse files Browse the repository at this point in the history
[Feat/434]
  • Loading branch information
hosung-222 authored Feb 9, 2025
2 parents 5782130 + 4511733 commit 97e1ddf
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,11 @@ public ResponseDto<MemberResponse.SignUpDoneDto> completeSignup(
return ResponseDto.onSuccess(MemberConverter.toSignUpDoneDto(target));
}

@PreAuthorize("@memberSecurity.hasCompletedSignUp(#member.userId)")
@Operation(summary = "토큰 재발급", description = "토큰 재발급")
@PostMapping(value = "/reissuance")
public ResponseDto<MemberResponse.ReissueDto> reissueAccessToken(
@AuthenticationPrincipal SecurityUserDetails member,
@RequestHeader(value = "refreshToken") String refreshToken
) {
return ResponseDto.onSuccess(memberFacade.reissueAccessToken(refreshToken));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,22 @@ public class MemberScheduler {
@Scheduled(cron = "0 0 0 * * *")
@Transactional
public void removeInactiveUsersFromDB() {
List<Member> inactiveMembers = memberManageService.getInactiveMember();
List<Member> inactiveMembers = memberManageService.getInactiveMembers();
for (Member member : inactiveMembers) {
log.debug("[Delete] user name : " + member.getName());
// TODO : 관련 삭제
memberManageService.removeMember(member);
}
}

@Scheduled(cron = "0 0 * * * *")
@Transactional
public void removePendingUsersFromDB() {
List<Member> pendingMembers = memberManageService.getPendingMembers();
for (Member member : pendingMembers) {
log.debug("[Delete PENDING] user name: {}", member.getName());
memberManageService.removeMember(member);
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -67,10 +67,14 @@ public Optional<Member> getMemberByEmailAndSocialType(String email, SocialType s
return memberRepository.findMemberByEmailAndSocialType(email, socialType);
}

public List<Member> getInactiveMember() {
public List<Member> getInactiveMembers() {
return memberRepository.findMembersByStatusAndDate(MemberStatus.INACTIVE, LocalDateTime.now().minusDays(3));
}

public List<Member> getPendingMembers() {
return memberRepository.findMembersByStatusAndDate(MemberStatus.PENDING, LocalDateTime.now().minusHours(1));
}

public Member saveMember(Member member) {
return memberRepository.save(member);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.namo.spring.application.external.global.config.security;

import org.springframework.stereotype.Component;
import org.springframework.security.core.userdetails.UsernameNotFoundException;

import com.namo.spring.application.external.api.user.service.MemberManageService;
import com.namo.spring.db.mysql.domains.user.entity.Member;

import lombok.RequiredArgsConstructor;

@Component("memberSecurity")
@RequiredArgsConstructor
public class MemberSecurity {

private final MemberManageService memberManageService;

/**
* 주어진 userId에 해당하는 사용자가 회원가입을 완료했는지 검사합니다.
* @param userId SecurityUserDetails에서 가져온 사용자 ID
* @return 회원가입이 완료되어 있으면 true, 아니면 false
*/
public boolean hasCompletedSignUp(Long userId) {
Member member = memberManageService.getMember(userId);
return member.isSignUpComplete();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@
@Entity
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@DynamicInsert
@SQLDelete(sql = "UPDATE member SET deleted_at = NOW(), status = 'INACVTIVE' WHERE id = ?")
public class Member extends BaseTimeEntity implements User {

@Id
Expand Down

0 comments on commit 97e1ddf

Please sign in to comment.