Skip to content

Commit

Permalink
Merge pull request #27 from DONGA-ST-A/feature/26-logout
Browse files Browse the repository at this point in the history
[Feature] 로그아웃 기능 구현
  • Loading branch information
kyeong-hyeok authored Sep 8, 2023
2 parents 3316241 + 75d4620 commit 820d49d
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.teamA.hicardi.common.dto.ResponseDto;
import com.teamA.hicardi.domain.auth.dto.request.SignUpRequestDto;
import com.teamA.hicardi.domain.auth.service.AuthService;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
Expand All @@ -23,4 +24,9 @@ public ResponseEntity<Void> signUp(@RequestBody SignUpRequestDto signUpRequestDt
return ResponseDto.noContent();
}

@PostMapping("/logout")
public ResponseEntity<Void> logout(HttpServletRequest request) {
authService.logout(request);
return ResponseDto.noContent();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,17 @@
import com.teamA.hicardi.domain.member.entity.Member;
import com.teamA.hicardi.domain.member.repository.MemberRepository;
import com.teamA.hicardi.error.exception.custom.BusinessException;
import com.teamA.hicardi.error.exception.custom.TokenException;
import com.teamA.hicardi.jwt.service.JwtService;
import com.teamA.hicardi.util.RedisUtil;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import static com.teamA.hicardi.error.ErrorCode.ALREADY_EXIST_EMAIL;
import static com.teamA.hicardi.error.ErrorCode.ALREADY_EXIST_USERID;
import static com.teamA.hicardi.error.ErrorCode.*;

@Slf4j
@Service
Expand All @@ -21,6 +24,8 @@ public class AuthService {

private final MemberRepository memberRepository;
private final PasswordEncoder passwordEncoder;
private final JwtService jwtService;
private final RedisUtil redisUtil;

public void signUp(SignUpRequestDto signUpRequestDto) {

Expand All @@ -36,4 +41,13 @@ public void signUp(SignUpRequestDto signUpRequestDto) {
member.passwordEncode(passwordEncoder);
memberRepository.save(member);
}

public void logout(HttpServletRequest request) {
log.info("logout 로직 호출");
String accessToken = jwtService.extractAccessToken(request).orElseThrow(() -> new TokenException(INVALID_TOKEN));
String userId = jwtService.extractUserId(accessToken).orElseThrow(() -> new BusinessException(MEMBER_NOT_FOUND));

redisUtil.delete(userId);
redisUtil.setBlackList(userId, accessToken, jwtService.getAccessTokenExpirationPeriod());
}
}

0 comments on commit 820d49d

Please sign in to comment.