From 9b779cda3f7e72ce750e8df322b736384450d0db Mon Sep 17 00:00:00 2001
From: jhjang <jhjang@maprex.co.kr>
Date: 금, 24 12월 2021 11:09:18 +0900
Subject: [PATCH] Merge branch 'master' of http://192.168.0.25:9001/r/owl-kisa

---
 src/main/java/kr/wisestone/owl/service/impl/ApiTokenServiceImpl.java |   71 +++++++++++++++++++++++++++++++----
 1 files changed, 62 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..4a831e9 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,13 @@
 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.service.UserService;
 import kr.wisestone.owl.util.ConvertUtil;
 import kr.wisestone.owl.util.DateUtil;
 import kr.wisestone.owl.util.WebAppUtil;
@@ -35,7 +38,6 @@
 
     @Autowired
     private ApiTokenRepository apiTokenRepository;
-
 
     @Autowired
     protected WebAppUtil webAppUtil;
@@ -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,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 OwlRuntimeException(
+                     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