import express from 'express'; import moment from 'moment'; import userService from '../user/userService.js'; export const router = express.Router(); const sessionTime = 60; // 세션시간(임시) router.post('/login', async (req, res) => { /* TODO: 토큰의 무결성 체크 토큰이 이상이 없다면, 로그인/회원가입 로직을 수행 후 jwt 쿠키를 보낸다. */ const expires = moment().add(sessionTime.toString(),'m').toDate(); // 정보가 없다면 회원 가입 (강제?) const user = await userService.existsByEmail(req.body.email); if (!user) { // 유저가 없다면 회원 가입 후 세션 생성 let userProfilePicture = req.body.picture || null; await userService.createUser({ nickname: req.body.name, email: req.body.email, google: { id: req.body.sub, profileUrl: userProfilePicture, }, }); console.log('new user saved!') } console.log('login done') req.session.sessionid = req.body; //프론트에서 건네받은 JWT로 세션 생성 res.cookie('name', JSON.stringify({name:req.body.name, id:req.body.email}), {expires}); //사용자 이름 쿠키 res.send(req.body.name); // 이름 보내서 뭐하게? }); router.get("/logout", (req, res) => { res.clearCookie('name'); if (req.session.sessionid) { req.session.destroy((err) => { if (err) { console.log(err) return; } }); res.send(req.body.name); } else { res.send(req.body.name); } }); router.get("/session", (req, res) => { if(req.session.sessionid){ res.send(true); } else { res.send(false); } }); export default router;