From 89abcf58642f2046bd78df94e346fd6e5c6e356d Mon Sep 17 00:00:00 2001 From: mniYUNSU Date: Thu, 26 Aug 2021 21:20:23 +0900 Subject: [PATCH] =?UTF-8?q?[Server]=20tokenFunction=20=EB=B0=8F=20dummy=20?= =?UTF-8?q?data=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/.env.example | 3 + .../controllers/tokenFunction/accessToken.js | 23 ++++++ .../controllers/tokenFunction/refreshToken.js | 29 ++++++++ server/seeders/20210826045551-demo-user.js | 44 ++++++++++-- server/seeders/20210826051026-demo-content.js | 72 +++++++++++++++++++ server/seeders/20210826051319-demo-thumbs.js | 36 ++++++++++ 6 files changed, 203 insertions(+), 4 deletions(-) create mode 100644 server/.env.example create mode 100644 server/controllers/tokenFunction/accessToken.js create mode 100644 server/controllers/tokenFunction/refreshToken.js diff --git a/server/.env.example b/server/.env.example new file mode 100644 index 0000000..306ce8e --- /dev/null +++ b/server/.env.example @@ -0,0 +1,3 @@ +DATABASE_PASSWORD +ACCESS_SECRET +REFRESH_SECRET \ No newline at end of file diff --git a/server/controllers/tokenFunction/accessToken.js b/server/controllers/tokenFunction/accessToken.js new file mode 100644 index 0000000..16c2c79 --- /dev/null +++ b/server/controllers/tokenFunction/accessToken.js @@ -0,0 +1,23 @@ +require("dotenv").config(); +const { sign, verify } = require("jsonwebtoken"); + +module.exports = { + generateAccessToken: (data) => { + // TODO: Access token으로 sign합니다. + return sign(data, process.env.ACCESS_SECRET, { expiresIn: "2h" }); + }, + isAuthorized: (req) => { + // TODO: JWT 토큰 정보를 받아서 검증합니다. + const token = req.headers.Authorization; + if (!token) { + return null; + } else { + try { + const realToken = token.split(" ")[1]; + return verify(realToken, process.env.ACCESS_SECRET); + } catch (error) { + return null; + } + } + }, +}; diff --git a/server/controllers/tokenFunction/refreshToken.js b/server/controllers/tokenFunction/refreshToken.js new file mode 100644 index 0000000..8215607 --- /dev/null +++ b/server/controllers/tokenFunction/refreshToken.js @@ -0,0 +1,29 @@ +require("dotenv").config(); +const { sign, verify } = require("jsonwebtoken"); + +module.exports = { + generateRefreshToken: (data) => { + return sign(data, process.env.REFRESH_SECRET, { expiresIn: "30d" }); + }, + sendRefreshToken: (res, refreshToken) => { + // TODO: JWT 토큰을 쿠키로 전달합니다. + res.cookie("jwt", refreshToken, { + httpOnly: true, + secure: true, + sameSite: "none", + }); + }, + isAuthorized: (req) => { + // TODO: JWT 토큰 정보를 받아서 검증합니다. + const token = req.cookies; + if (!token) { + return null; + } else { + try { + return verify(token.jwt, process.env.REFRESH_SECRET); + } catch (error) { + return null; + } + } + }, +}; diff --git a/server/seeders/20210826045551-demo-user.js b/server/seeders/20210826045551-demo-user.js index 91637dd..66a9267 100644 --- a/server/seeders/20210826045551-demo-user.js +++ b/server/seeders/20210826045551-demo-user.js @@ -6,10 +6,46 @@ module.exports = { "users", [ { - username: "John Doe", - email: "abcd@add.ddd", - password: "asdf!", - phone: "010010000", + username: "배윤수", + email: "ownsgks@gmail.com", + password: "yunsu12345", + phone: "01012341234", + userPic: "", + createdAt: new Date(), + updatedAt: new Date(), + }, + { + username: "김민재", + email: "minjman2659@gmail.com", + password: "minjman2659123", + phone: "01012341234", + userPic: "", + createdAt: new Date(), + updatedAt: new Date(), + }, + { + username: "이나은", + email: "naeun@gmail.com", + password: "naunendjfiasdf", + phone: "01012341234", + userPic: "", + createdAt: new Date(), + updatedAt: new Date(), + }, + { + username: "강영서", + email: "kangg@gmail.com", + password: "kangggg123", + phone: "01012341234", + userPic: "", + createdAt: new Date(), + updatedAt: new Date(), + }, + { + username: "권지용", + email: "gdragon@gmail.com", + password: "gdragon8888", + phone: "01088888888", userPic: "", createdAt: new Date(), updatedAt: new Date(), diff --git a/server/seeders/20210826051026-demo-content.js b/server/seeders/20210826051026-demo-content.js index 802a0da..f43613d 100644 --- a/server/seeders/20210826051026-demo-content.js +++ b/server/seeders/20210826051026-demo-content.js @@ -13,6 +13,78 @@ module.exports = { createdAt: new Date(), updatedAt: new Date(), }, + { + wordName: "스불재", + wordMean: "스스로 불러온 재앙", + thumbsup: 0, + userId: 1, + createdAt: new Date(), + updatedAt: new Date(), + }, + { + wordName: "자강두천", + wordMean: "자존심 강한 두 천재의 대결", + thumbsup: 0, + userId: 2, + createdAt: new Date(), + updatedAt: new Date(), + }, + { + wordName: "갑분싸", + wordMean: "갑자기 분위기 싸해짐", + thumbsup: 0, + userId: 3, + createdAt: new Date(), + updatedAt: new Date(), + }, + { + wordName: "자만추", + wordMean: "자장면에 만두 추가", + thumbsup: 5, + userId: 4, + createdAt: new Date(), + updatedAt: new Date(), + }, + { + wordName: "자만추", + wordMean: "자신만만 추성훈", + thumbsup: 20, + userId: 5, + createdAt: new Date(), + updatedAt: new Date(), + }, + { + wordName: "자만추", + wordMean: "자신만만 추사랑", + thumbsup: 0, + userId: 2, + createdAt: new Date(), + updatedAt: new Date(), + }, + { + wordName: "번달번줌", + wordMean: "번호 달라고 하면 번호줌?", + thumbsup: 10, + userId: 5, + createdAt: new Date(), + updatedAt: new Date(), + }, + { + wordName: "별다줄", + wordMean: "별걸 다 줄인다", + thumbsup: 7, + userId: 1, + createdAt: new Date(), + updatedAt: new Date(), + }, + { + wordName: "애빼시", + wordMean: "애교 빼면 시체", + thumbsup: 2, + userId: 3, + createdAt: new Date(), + updatedAt: new Date(), + }, ], {} ); diff --git a/server/seeders/20210826051319-demo-thumbs.js b/server/seeders/20210826051319-demo-thumbs.js index 26dbc68..dbec2ae 100644 --- a/server/seeders/20210826051319-demo-thumbs.js +++ b/server/seeders/20210826051319-demo-thumbs.js @@ -9,6 +9,42 @@ module.exports = { user_Id: 1, content_Id: 1, }, + { + user_Id: 1, + content_Id: 2, + }, + { + user_Id: 2, + content_Id: 3, + }, + { + user_Id: 3, + content_Id: 4, + }, + { + user_Id: 4, + content_Id: 5, + }, + { + user_Id: 5, + content_Id: 6, + }, + { + user_Id: 2, + content_Id: 7, + }, + { + user_Id: 5, + content_Id: 8, + }, + { + user_Id: 1, + content_Id: 9, + }, + { + user_Id: 3, + content_Id: 10, + }, ], {} );