From 3955206191fdeb3a0609bd2170ed97f3f283d860 Mon Sep 17 00:00:00 2001 From: jhjang <jhjang@maprex.co.kr> Date: 월, 10 1월 2022 11:47:35 +0900 Subject: [PATCH] - api 관련 Exception 수정 - swagger 추가 --- src/main/java/kr/wisestone/owl/service/impl/ApiTokenServiceImpl.java | 72 +++++++++++++++++++++++++++++++---- 1 files changed, 63 insertions(+), 9 deletions(-) diff --git a/src/main/java/kr/wisestone/owl/service/impl/ApiTokenServiceImpl.java b/src/main/java/kr/wisestone/owl/service/impl/ApiTokenServiceImpl.java index d7d4039..78221fc 100644 --- a/src/main/java/kr/wisestone/owl/service/impl/ApiTokenServiceImpl.java +++ b/src/main/java/kr/wisestone/owl/service/impl/ApiTokenServiceImpl.java @@ -4,10 +4,14 @@ import io.jsonwebtoken.Jws; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; +import kr.wisestone.owl.constant.MsgConstants; import kr.wisestone.owl.domain.ApiToken; import kr.wisestone.owl.domain.User; +import kr.wisestone.owl.exception.ApiAuthException; +import kr.wisestone.owl.exception.OwlRuntimeException; import kr.wisestone.owl.repository.ApiTokenRepository; import kr.wisestone.owl.service.ApiTokenService; +import kr.wisestone.owl.service.UserService; import kr.wisestone.owl.util.ConvertUtil; import kr.wisestone.owl.util.DateUtil; import kr.wisestone.owl.util.WebAppUtil; @@ -35,7 +39,6 @@ @Autowired private ApiTokenRepository apiTokenRepository; - @Autowired protected WebAppUtil webAppUtil; @@ -84,8 +87,24 @@ } //JWT 蹂듯샇�솕 - public UserVo getUser(String jwt) { + private UserVo getUserVo(String jwt) { + //寃곌낵媛� = Claims + Jws<Claims> claims = decryption(jwt); + if (claims == null) + return null; + + ObjectMapper objectMapper = new ObjectMapper(); + //諛섑솚 ���엯�� LinkedHashMap �씠�떎. �씠瑜� User ���엯�쑝濡� 蹂��솚�븯湲� �쐞�빐 ObjectMapper �궗�슜 + try { + return objectMapper.convertValue(claims.getBody().get(DATA_KEY), UserVo.class); + } catch (Exception ex) { + log.debug(ex.getMessage()); + } + return null; + } + + private Jws<Claims> decryption(String jwt) { //寃곌낵媛� = Claims Jws<Claims> claims = null; @@ -98,23 +117,58 @@ } catch (Exception e) { log.debug(e.getMessage(), e); } - - ObjectMapper objectMapper = new ObjectMapper(); - //諛섑솚 ���엯�� LinkedHashMap �씠�떎. �씠瑜� User ���엯�쑝濡� 蹂��솚�븯湲� �쐞�빐 ObjectMapper �궗�슜 - return objectMapper.convertValue(claims.getBody().get(DATA_KEY), UserVo.class); + return claims; } + // �넗�겙 議고쉶 @Override public ApiTokenVo find() { User user = this.webAppUtil.getLoginUserObject(); - List<ApiToken> apiTokens = this.apiTokenRepository.findByUserId(user.getId()); - if (apiTokens != null && apiTokens.size() >0 ) { - return ConvertUtil.copyProperties(apiTokens.get(0), ApiTokenVo.class); + return this.find(user.getId()); + } + + private ApiTokenVo find(Long userId) { + if (userId != null) { + List<ApiToken> apiTokens = this.apiTokenRepository.findByUserId(userId); + if (apiTokens != null && apiTokens.size() > 0) { + return ConvertUtil.copyProperties(apiTokens.get(0), ApiTokenVo.class); + } } return null; } + // �넗�겙 �궗�슜�옄 �씤利�, �씤利앺썑 �궗�슜�옄 媛��졇�삤湲� + @Override + public UserVo certification(String token) { + UserVo userVo = this.getUserVo(token); + if (userVo != null && containsToken(userVo, token)) + { + return userVo; + } else { + throw new ApiAuthException( + this.messageAccessor.getMessage(MsgConstants.ERROR_TOKEN)); + } + } + + // �넗�겙�쑝濡� 李얘린 + private ApiToken find(String token) { + List<ApiToken> apiTokens = this.apiTokenRepository.findByToken(token); + if (apiTokens != null && apiTokens.size() > 0) { + return apiTokens.get(0); + } + return null; + } + + // �넗�겙 媛믪씠 db�뿉 議댁옱�븯�뒗吏� �솗�씤 + private boolean containsToken(UserVo userVo, String token) { + List<ApiToken> apiTokens = this.apiTokenRepository.findByUserId(userVo.getId()); + if (apiTokens != null && apiTokens.size() > 0) { + return apiTokens.get(0).getToken().equals(token); + } + return false; + } + // �넗�겙 �궘�젣 @Override public void remove(ApiTokenForm apiTokenForm) { -- Gitblit v1.8.0