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