Skip to content

Commit

Permalink
Merge pull request #84 from MusicVillains/fix/notification
Browse files Browse the repository at this point in the history
[+] #82 notification 조회 API에 로그 추가
  • Loading branch information
woody35545 authored Oct 4, 2023
2 parents 58ce742 + 761a4b3 commit 94e9bab
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,12 @@
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import org.springframework.http.HttpHeaders;

@Slf4j
@RestController
@RequiredArgsConstructor
@Tag(name = "알림 관련 API")
Expand Down Expand Up @@ -39,14 +41,43 @@ public class NotificationController {
public ResponseObject getNotificationsByMemberId(@RequestParam("memberId") String memberId,
@RequestHeader HttpHeaders headers){

/* For Debug */
String authorization = "";
if(headers.get("Authorization") != null) {authorization = headers.get("Authorization").get(0);}

log.debug("getNotificationsByMemberId(..) called - @GetMapping(\"/notifications\")\n" +
"\t* params\n"
+ "\t\t- memberId:\n" +
"\t\t\t{}\n"
+ "\t\t- authorization:\n" +
"\t\t\t{}\n"
, memberId, authorization);

AuthorizationResult authResult = memberAuthManager.authorize(headers, memberId);

if(authResult.isFailed()){
log.warn("Authorization failed - {}", authResult.getMessage());
return ResponseObject.of(Status.UNAUTHORIZED, authResult.getMessage());
}
log.debug("Authorization succeeded - {}", authResult.getMessage());

ServiceResult serviceResult = notificationService.getNotificaitonsByOwnerMemberID(memberId);
return serviceResult.isFailed() ? ResponseObject.BAD_REQUEST(serviceResult.getData())
: ResponseObject.OK(serviceResult.getData());
log.debug("serviceResult : {}", serviceResult);

ResponseObject responseObject;

if(serviceResult.isFailed()){
log.debug("GET /notifications Failed");
responseObject = ResponseObject.BAD_REQUEST(serviceResult.getMessage());
log.debug("Return ResponseObject: {}", responseObject );

} else {
log.debug("GET /notifications Success");
responseObject = ResponseObject.OK(serviceResult.getData());
log.debug("Return ResponseObject: {}", responseObject );
}

return responseObject;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,14 @@ public static ServiceResult verifyAccessToken(HttpHeaders requestHeaders){
}

public static ServiceResult verifyAccessToken(String authorizationHeader){
log.debug("verifyAccessToken(String authorizationHeader) called\n"+
"\t* params\n"
+ "\t\t- authorizationHeader:\n" +
"\t\t\t{}\n"
, authorizationHeader);

if (!isValidJwtHeaderFormat(authorizationHeader)) {
log.warn("Invalid Jwt Format");
return ServiceResult.of(ServiceResult.FAIL,
"Invalid Jwt Format",
null);
Expand All @@ -91,26 +97,33 @@ public static ServiceResult verifyAccessToken(String authorizationHeader){
String jwtToken = authorizationHeader.replace
("Bearer ", ""); // remove "Bearer " from authorization header

log.debug("jwtToken: {}", jwtToken);

String tmpMemberId = "";
try {
log.debug("try to verify jwtToken");
tmpMemberId = JWT.require(Algorithm.HMAC512(ENV.JWT_SECRET_KEY())).build() // 토큰 생성 시 사용했던 암호화 방식을 적용
.verify(jwtToken) // 토큰 검증
.getClaim("memberId").asString(); // memberId claim을 가져옴
}
catch(ExpiredJwtException e){
// occurs when jwt token is expired
e.printStackTrace();
log.warn("Expired Jwt Token, {}" , e.getMessage());
return ServiceResult.of(ServiceResult.FAIL,
"Expired Jwt Token",
null);
}
catch(Exception e) {
e.printStackTrace();
log.warn("Invalid Jwt Token, {}", e.getMessage());
return ServiceResult.of(ServiceResult.FAIL,
"Invalid Jwt Token",
null);
}

log.debug("verifyAccessToken() succeeded - memberId: {}", tmpMemberId);

return ServiceResult.of(ServiceResult.SUCCESS,
"verifyToken succeeded.",
tmpMemberId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@
import com.teamseven.MusicVillain.Member.MemberRepository;
import com.teamseven.MusicVillain.Dto.ServiceResult;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Slf4j
@NoArgsConstructor
@Component
public class MemberJwtAuthorizationManager extends JwtAuthorizationManager {
Expand All @@ -19,20 +20,37 @@ public MemberJwtAuthorizationManager(MemberRepository memberRepository, FeedRepo

@Override
public AuthorizationResult authorize(String jwtToken, String memberId) {
log.debug("MemberJwtAuthorizationManager.authorize(String jwtToken, String memberId) called\n"
+ "\t* params\n"
+ "\t\t- jwtToken:\n"
+ "\t\t\t{}\n"
+ "\t\t- memberId:\n"
+ "\t\t\t{}\n", jwtToken, memberId);


if (this.authorizeMode == false) return AuthorizationResult.success(memberId, null);

ServiceResult verifyResult = JwtManager.verifyAccessToken(jwtToken);
log.debug("verifyResult : {}", verifyResult);

if(verifyResult.isFailed())
return AuthorizationResult.fail(verifyResult.getMessage());
{
log.warn("verifyResult is failed - {}" , verifyResult.getMessage());
return AuthorizationResult.fail(verifyResult.getMessage());}

String authorizedMemberId = (String) verifyResult.getData();
log.debug("authorizedMemberId : {}", authorizedMemberId);

if(!authorizedMemberId.equals(memberId))
return AuthorizationResult.fail("memberId does not match authorized memberId.");
if(!authorizedMemberId.equals(memberId)) {
log.warn("Authorization failed, memberId does not match authorized memberId.\n" +
"\t\t- memberId: {}\n" +
"\t\t- Authorized memberId: {}", memberId, authorizedMemberId);

return AuthorizationResult.fail("memberId does not match authorized memberId.");
}
Member member = memberRepository.findByMemberId(memberId);

log.debug("Authorization succeeded, member : {}", member);
return AuthorizationResult.success("Authorization succeeded", member);
}

Expand Down

0 comments on commit 94e9bab

Please sign in to comment.