From f5932f25916bc57b64061552d7525c6b5af50b56 Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 월, 13 12월 2021 16:22:29 +0900
Subject: [PATCH] 이슈 검색 코드 수정

---
 src/main/java/kr/wisestone/owl/service/impl/ApiTokenServiceImpl.java |   59 +++++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 51 insertions(+), 8 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..e7165ed 100644
--- a/src/main/java/kr/wisestone/owl/service/impl/ApiTokenServiceImpl.java
+++ b/src/main/java/kr/wisestone/owl/service/impl/ApiTokenServiceImpl.java
@@ -4,8 +4,10 @@
 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.OwlRuntimeException;
 import kr.wisestone.owl.repository.ApiTokenRepository;
 import kr.wisestone.owl.service.ApiTokenService;
 import kr.wisestone.owl.util.ConvertUtil;
@@ -84,8 +86,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 +116,48 @@
         } 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 OwlRuntimeException(
+                     this.messageAccessor.getMessage(MsgConstants.ERROR_TOKEN));
+         }
+    }
+
+    // �넗�겙 媛믪씠 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