From 609f37ccdb68e0e6850d614776b41a34f1feccaa Mon Sep 17 00:00:00 2001 From: EdonJung <2donny@naver.com> Date: Tue, 25 May 2021 17:58:56 +0900 Subject: [PATCH 1/7] =?UTF-8?q?db,=20init,=20server=203=EA=B0=9C=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=EB=A1=9C=20=EB=B6=84=ED=95=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/db.js | 15 +++++++++++++++ src/init.js | 11 +++++++++++ src/server.js | 45 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 src/db.js create mode 100644 src/init.js create mode 100644 src/server.js diff --git a/src/db.js b/src/db.js new file mode 100644 index 0000000..516d92c --- /dev/null +++ b/src/db.js @@ -0,0 +1,15 @@ +import mongoose from 'mongoose'; + +mongoose.connect(process.env.MONGO_URL, { + useNewUrlParser: true, + useFindAndModify: false, + useUnifiedTopology: true, +}); + +const db = mongoose.connection; + +const handleOpen = () => console.log("โœ… Connected to DB"); +const handleError = (error) => console.log(`โŒ Error on DB Connection:${error}`); + +db.once("open", handleOpen); +db.on("error", handleError); \ No newline at end of file diff --git a/src/init.js b/src/init.js new file mode 100644 index 0000000..079d6b5 --- /dev/null +++ b/src/init.js @@ -0,0 +1,11 @@ +import 'dotenv/config'; +import './db'; +import './models/Post'; +import './models/User'; +import app from './server'; + +const handleListening = () => { + console.log(`โœ… Server listenting on http://localhost:${process.env.PORT} ๐Ÿš€`) +} + +app.listen(process.env.PORT, handleListening); \ No newline at end of file diff --git a/src/server.js b/src/server.js new file mode 100644 index 0000000..c712d69 --- /dev/null +++ b/src/server.js @@ -0,0 +1,45 @@ +import express from 'express'; +import path from 'path'; +import compression from 'compression'; +import cors from 'cors'; +import methodOverride from 'method-override'; + +const app = express(); + +app.set('view engine', 'ejs'); +app.set('views', path.join(__dirname, 'views')); +app.use(express.static(path.join(__dirname, 'public'))); +app.use(express.static('uploads')); +app.use(compression()); +app.use(express.json()); +app.use(express.urlencoded({ + extended: true +})); +app.use(methodOverride()); +app.use(cors()); + +app.use('/admin', adminRouter); +app.use('/auth', ) + +require('./src/routers/chatRouter')(app); +require('./src/routers/adminRouter')(app); +require('./src/routers/authRouter')(app); +require('./src/routers/profileRouter')(app); +require('./src/routers/postRouter')(app); +require('./src/routers/userRouter')(app); + +app.get('/', (req, res) => { + return res.send("hello developers"); +}); + +app.use((err, req, res, next) => { + if (!err.status) { + return res.json({ + code: 500, + success: false, + message: '์„œ๋ฒ„ ์—๋Ÿฌ' + }); + } +}); + +export default app; \ No newline at end of file From 22a2ccbf73d86dc9084246521d516c7fa8bb0d83 Mon Sep 17 00:00:00 2001 From: EdonJung <2donny@naver.com> Date: Tue, 25 May 2021 18:35:40 +0900 Subject: [PATCH 2/7] Fix: from CommonJS to ES6 import --- src/controllers/authController.js | 961 ++++++++---------------------- 1 file changed, 260 insertions(+), 701 deletions(-) diff --git a/src/controllers/authController.js b/src/controllers/authController.js index 3b1b712..a76527a 100644 --- a/src/controllers/authController.js +++ b/src/controllers/authController.js @@ -1,686 +1,268 @@ -let User = require('../models/User'); -let Post = require('../models/Post'); -let mongoose = require('mongoose'); +import User from '../models/User'; +import Post from '../models/Post'; +import { startSession } from 'mongoose'; +import { encrypt, decrypt } from '../utils/function'; +import sharp from 'sharp'; -const dotenv = require('dotenv'); -dotenv.config(); -const regexEmail = require('regex-email'); -const jwt = require('jsonwebtoken'); -const nodemailer = require('nodemailer'); -const {startSession}=require('mongoose'); -//const fs=require('fs'); -//const path=require('path'); -//const redis=require('redis'); -//const client=redis.createClient(process.env.REDIS_URL); +export const getUser = async (req, res, next) => { -const {encrypt,decrypt}=require('../utils/function'); - -const webMails = ["snu.ac.kr","korea.ac.kr","yonsei.ac.kr","g.skku.edu","skku.edu","sogang.ac.kr","hanyang.ac.kr","kaist.ac.kr","postech.ac.kr"]; -const universitys=["์„œ์šธ๋Œ€ํ•™๊ต","๊ณ ๋ ค๋Œ€ํ•™๊ต","์—ฐ์„ธ๋Œ€ํ•™๊ต","์„ฑ๊ท ๊ด€๋Œ€ํ•™๊ต","์„ฑ๊ท ๊ด€๋Œ€ํ•™๊ต","์„œ๊ฐ•๋Œ€ํ•™๊ต","ํ•œ์–‘๋Œ€ํ•™๊ต","์นด์ด์ŠคํŠธ","ํฌ์Šคํ…"]; -let authEmail=new Map(); - - - - - -exports.checkEmail=async (req,res,next)=>{ - const {email,code}=req.body; - - if(!email){ - return res.json({ - success:false, - code:410, - message:"์ด๋ฉ”์ผ์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”" - }) - } - - if (!regexEmail.test(email)){ - return res.json({ - success: false, - code: 411, - message: "์ด๋ฉ”์ผ์„ ํ˜•์‹์„ ์ •ํ™•ํ•˜๊ฒŒ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”" + const { + page + } = Number(req.query); + try { + const users = await User.find() + .skip(page * 10) + .limit(10); + res.render('user.ejs', { + users: users }); + } catch (err) { + console.log(err); + next(err); } +} - if(!webMails.includes(email.split("@")[1])){ - return res.json({ - success:false, - code:412, - message:"ํ•™๊ต ์ด๋ฉ”์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค" - }) - } - - - try{ +export const getHashtag = async (req, res, next) => { - const user=await User.findOne({ - email:email + const { page } = Number(req.query); + try { + const hashtags = await Hashtag.find() + .skip(page * 10) + .limit(10); + res.render('hashtag.ejs', { + hashtags: hashtags }); - if(user){ - return res.json({ - success:false, - code:450, - message:"์ด๋ฉ”์ผ ์ค‘๋ณต์ž…๋‹ˆ๋‹ค" - }) - } - - - - if(authEmail.get(email)!=code){ - authEmail.delete(email); - return res.json({ - success:false, - code:453, - message:'์ธ์ฆ๋ฒˆํ˜ธ ์ผ์น˜ํ•˜์ง€์•Š์Šต๋‹ˆ๋‹ค' - }) - } - - authEmail.delete(email); - - return res.json({ - message:'์ด๋ฉ”์ผ ์ธ์ฆ์„ฑ๊ณต', - success:true, - code:200 - }); - - - - /* - client.get(email,(err,value)=>{ - if(err) throw err; - - - if(value===process.env.REDIS_SECRET){ - return res.json({ - message:'์ด๋ฉ”์ผ ์ธ์ฆ์„ฑ๊ณต', - success:true, - code:200 - }); - } - - else{ - return res.json({ - message:'์ด๋ฉ”์ผ ์ธ์ฆ์‹คํŒจ', - success:false, - code:453 - }) - } - });*/ - - } - catch(err){ + } catch (err) { console.log(err); next(err); } } -exports.sendEmail=async (req,res,next)=>{ - const {email}=req.body; +export const getPost = async (req, res, next) => { - if(!email){ - return res.json({ - success:false, - code:410, - message:"์ด๋ฉ”์ผ์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”" - }) - } + const page = Number(req.query.page); - if (!regexEmail.test(email)){ - return res.json({ - success: false, - code: 411, - message: "์ด๋ฉ”์ผ์„ ํ˜•์‹์„ ์ •ํ™•ํ•˜๊ฒŒ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”" + try { + const posts = await Post.find() + .skip(page * 10) + .limit(10); + res.render('post.ejs', { + posts: posts }); + } catch (err) { + console.log(err); + next(err); } +} - - if(!webMails.includes(email.split("@")[1])){ - return res.json({ - success:false, - code:412, - message:"ํ•™๊ต ์ด๋ฉ”์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค" - }) - } - try{ +export const postUser = async (req, res, next) => { - const user=await User.findOne({ - email:email - }); - if(user){ - return res.json({ - success:false, - code:450, - message:"์ด๋ฉ”์ผ ์ค‘๋ณต์ž…๋‹ˆ๋‹ค" - }) + const { + body: { + age, + gender, + university, + adj, + job, + introText, + displayName, + email, + location, + isPublic, + password, + isGraduate, + phoneNumber } -/* - let transporter = nodemailer.createTransport({ - service: 'gmail', - auth: { - user: process.env.GOOGLE_ACCOUNT, - pass: process.env.GOOGLE_PASSWORD - } - });*/ - - - - //let source=fs.readFileSync(path.join(__dirname,'../../public','authMail.html'),'utf8'); - //client.set(email,process.env.REDIS_SECRET,'EX',90); - - - - let randomNumber=Math.floor(Math.random()*900000)+100000; - authEmail.set(email,randomNumber); - - - const mailjet = require ('node-mailjet') - .connect(process.env.MAIL_JET1, process.env.MAIL_JET2); - - const request = mailjet - .post("send", {'version': 'v3.1'}) - .request({ - "Messages":[ - { - "From": { - "Email": "hyunjong8723@gmail.com", - "Name": "Xircle" - }, - "To": [ - { - "Email": email - } - ], - "Subject": "Xircle ๋ฉ”์ผ", - "HTMLPart": ` -
-
-
-

- XIRCLE
- ํ•™๊ตํ™•์ธ ์ธ์ฆ๋ฒˆํ˜ธ ์ž…๋‹ˆ๋‹ค. -

- -
-
-

์•ˆ๋…•ํ•˜์„ธ์š”. ์ƒˆ๋กœ์šด ๋„คํŠธ์›Œํ‚น ์„œ๋น„์Šค XIRCLE์„ ์ด์šฉํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ${universitys[webMails.indexOf(email.split('@')[1])]} ์ธ์ฆ์„ ์™„๋ฃŒํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜ ์ธ์ฆ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”. ํ•œ ๋ฒˆ์˜ ์ธ์ฆ์œผ๋กœ XIRCLE์„ ๊ฒฝํ—˜ํ•ด๋ณด์„ธ์š”!

-
-
-
- ${randomNumber} -
-
-
-

๋ฌธ์ œ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ์นด์นด์˜คํ†ก ์ฑ„๋„[XIRCLE]๋กœ ๋ฌธ์˜์ฃผ์„ธ์š”.

- ๊ณ ๊ฐ์„ผํ„ฐ ๋ฐ”๋กœ๊ฐ€๊ธฐ -
-
- - ` - } - ] - }) - request - .then((result) => { - return res.json({ - code:200, - success: true, - message: '๋ฉ”์ผ์ „์†ก ์„ฑ๊ณต์ž…๋‹ˆ๋‹ค' - }); - }) - .catch((err) => { - return res.json({ - code:451, - success: false, - message: '๋ฉ”์ผ์ „์†ก ์‹คํŒจ์ž…๋‹ˆ๋‹ค' - }); - }) - - - return res.json({ - code:200, - success: true, - message: '๋ฉ”์ผ์ „์†ก ์„ฑ๊ณต์ž…๋‹ˆ๋‹ค' - }); + } = req; + let hashtags; + if (!Object.prototype.hasOwnProperty.call(req.body, 'interestArr')) { + hashtags = []; + } else { + hashtags = req.body.interestArr; } - catch(err){ - console.log(err); - next(err); - } -} + let fileUrl; + if (Object.prototype.hasOwnProperty.call(req, 'file') && Object.prototype.hasOwnProperty.call(req.file, 'location')) { + fileUrl = req.file['location']; + } -exports.checkName=async (req,res,next)=>{ + try { - const {displayName}=req.body; - if(!displayName){ - return res.json({ - code:423, - success:false, - message:'๋ณ„๋ช…์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' - }) - } - if(typeof(displayName)!='string'){ - return res.json({ - code:424, - success:false, - message:'๋ณ„๋ช…์€ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค' - }) - } - - try{ - const user=await User.findOne({ - displayName:displayName - }); + await User.create([{ + age: age, + gender: gender, + adj: adj, + university: university, + job: job, + profileImgSrc: fileUrl, + introText: introText, + displayName: displayName, + email: email, + location: location, + hashtags: hashtags, + mainHashtags: hashtags, + isPublic: isPublic, + followings: [], + followers: [], + password: password, + isGraduate: isGraduate, + phoneNumber: phoneNumber, + resume: resume, + workPlace: workPlace + }]); - if(user){ - return res.json({ - code:452, - success:false, - message:"๋ณ„๋ช… ์ค‘๋ณต์ž…๋‹ˆ๋‹ค" - }) - } return res.json({ - code:200, - success:true, - message:"์ƒ์„ฑ๊ฐ€๋Šฅํ•œ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค" + code: 200, + success: true, + message: '์œ ์ € ๋“ฑ๋ก ์ถ”๊ฐ€ ์„ฑ๊ณต' }) + } catch (err) { - } - catch(err){ console.log(err); next(err); } } +export const patchUser = async (req, res, next) => { -exports.postUser=async (req,res,next)=>{ - - req.body.data=JSON.parse(req.body.data); + const { userId } = req.params; const { - - age, - gender, - job, - adj, - displayName, - email, - location, - phoneNumber, - isPublic, - isGraduate, - latitude, - longitude, - interestArr, - } = req.body.data; - - let {password}=req.body.data; - - - if(!interestArr){ - return res.json({ - code:427, - success:false, - message:'๊ด€์‹ฌ์‚ฌ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' - }) - - } + body: { + age, + gender, + university, + adj, + job, + introText, + displayName, + email, + location, + isPublic, + resume, + workPlace, + phoneNumber, + isGraduate, + password, + } + } = req; - - - - let position=[]; - if(longitude) position.push(longitude); - if(latitude) position.push(latitude); - + let hashtags; + if (!Object.prototype.hasOwnProperty.call(req.body, 'interestArr')) { + hashtags = []; + } else { + hashtags = req.body.hashtags; + } + let fileUrl; + if (Object.prototype.hasOwnProperty.call(req, 'file') && Object.prototype.hasOwnProperty.call(req.file, 'location')) { + fileUrl = req.file['location']; + } - if(age===undefined||age===null){ - return res.json({ - code:413, - success:false, - message:'๋‚˜์ด๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' - }) - } - - if(typeof(age)!='number'){ - return res.json({ - code:414, - success:false, - message:'๋‚˜์ด๋Š” ์ˆซ์ž์ž…๋‹ˆ๋‹ค' - }) - } + try { - if(!gender){ - return res.json({ - code:415, - success:false, - message:'์„ฑ๋ณ„์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' - }) - } - if(typeof(gender)!='string'){ - return res.json({ - code:416, - success:false, - message:'์„ฑ๋ณ„์€ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค' - }) - } - if(!job){ - return res.json({ - code:417, - success:false, - message:'์ง์—…์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' - }) - } - if(typeof(job)!='string'){ - return res.json({ - code:418, - success:false, - message:'์ง์—…์€ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค' - }) - } - if(!adj){ - return res.json({ - code:419, - success:false, - message:'ํ˜•์šฉ์‚ฌ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' - }) - } - if(typeof(adj)!='string'){ - return res.json({ - code:420, - success:false, - message:'ํ˜•์šฉ์‚ฌ๋Š” ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค' - }) - } - if(!displayName){ - return res.json({ - code:423, - success:false, - message:'๋ณ„๋ช…์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' - }) - } - if(typeof(displayName)!='string'){ - return res.json({ - code:424, - success:false, - message:'๋ณ„๋ช…์€ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค' - }) - } - if(!email){ - return res.json({ - success:false, - code:410, - message:"์ด๋ฉ”์ผ์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”" - }) - } - - if (!regexEmail.test(email)){ - return res.json({ - success: false, - code: 411, - message: "์ด๋ฉ”์ผ์„ ํ˜•์‹์„ ์ •ํ™•ํ•˜๊ฒŒ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”" + await User.findByIdAndUpdate(userId, { + age: age, + gender: gender, + adj: adj, + university: university, + job: job, + profileImgSrc: fileUrl, + introText: introText, + displayName: displayName, + email: email, + location: location, + hashtags: hashtags, + isPublic: isPublic, + phoneNumber: phoneNumber, + resume: resume, + workPlace: workPlace, + isGraduate: isGraduate, + password: password }); - } - if(!webMails.includes(email.split("@")[1])){ return res.json({ - success:false, - code:412, - message:"ํ•™๊ต ์ด๋ฉ”์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค" + code: 200, + success: true, + message: '์œ ์ € ์ •๋ณด ๋ณ€๊ฒฝ ์„ฑ๊ณต' }) - } + } catch (err) { - if(!location){ - return res.json({ - code:423, - success:false, - message:'์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' - }) - } - if(typeof(location)!='string'){ - return res.json({ - code:424, - success:false, - message:'์ฃผ์†Œ๋Š” ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค' - }) - } - if(!phoneNumber){ - return res.json({ - code:425, - success:false, - message:'์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' - }) - } - if(typeof(phoneNumber)!='string'){ - return res.json({ - code:426, - success:false, - message:'์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค' - }) + console.log(err); + next(err); } +} - if(!req.file||!req.file.filename){ - return res.json({ - code:431, - success:false, - message:'ํ”„๋กœํ•„ ์‚ฌ์ง„์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' - }) - } +export const deleteUser = async (req, res, next) => { - if(isPublic===undefined||isPublic===null){ - return res.json({ - code:432, - success:false, - message:'๊ณต๊ฐœ์—ฌ๋ถ€๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' - }) - } + const { userId } = req.params; - + try { - if(isGraduate===undefined||isGraduate===null){ - return res.json({ - code:433, - success:false, - message:'์กธ์—…์—ฌ๋ถ€๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' - }) - } + await User.findByIdAndDelete(userId); - - if(typeof(isPublic)!='boolean'){ return res.json({ - code:434, - success:false, - message:'๊ณต๊ฐœ์—ฌ๋ถ€๋Š” booleanํ˜•์ž…๋‹ˆ๋‹ค' - }) - } + code: 200, + success: true, + message: '์œ ์ € ์‚ญ์ œ ์„ฑ๊ณต' + }); + } catch (err) { - - if(typeof(isGraduate)!='boolean'){ - return res.json({ - code:435, - success:false, - message:'์กธ์—…์—ฌ๋ถ€๋Š” booleanํ˜•์ž…๋‹ˆ๋‹ค' - }) + console.log(err); + next(err); } +} - if(!password){ - return res.json({ - code:436, - success:false, - message:'๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' - }) - } - if(typeof(password)!='string'){ - return res.json({ - code:437, - success:false, - message:'๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค' - }) - } +export const deletePost = async (req, res, next) => { - - - - const university=universitys[webMails.indexOf(email.split('@')[1])]; - - password=encrypt(password); - - - try{ - - - - const user=await User.create({ - age:age, - gender:gender, - university:university, - adj:adj, - job:job, - profileImgSrc:process.env.URL+req.file.filename, - introText:"", - displayName:displayName, - email:email, - phoneNumber:phoneNumber, - isPublic:isPublic, - isGraduate:isGraduate, - location:location, - hashtags:interestArr, - mainHashtags:interestArr, - followings:[], - followers:[], - blockedUsers:[], - resume:"", - workPlace:"", - password:password, - position:position, - isLocationPublic:true - }); + const { postId } = req.params; - - - const token = await jwt.sign( - { - id: user._id - }, - process.env.JWT_SECRET, - { - expiresIn: '365d' + try { + await Post.findByIdAndDelete({ + _id: postId }); - return res.json({ - code:200, - message:'์œ ์ € ๋“ฑ๋ก ์„ฑ๊ณต', - success:true, - data:{ - token:token, - userId:user._id - } - }) - - } - catch(err){ + code: 200, + success: true, + message: '๊ฒŒ์‹œ๋ฌผ ์‚ญ์ œ ์„ฑ๊ณต' + }); + } catch (err) { console.log(err); next(err); } } -exports.login=async (req,res,next)=>{ - const {password,displayName}=req.body; - - - if(!password){ - return res.json({ - code:436, - success:false, - message:'๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' - }) - } - if(typeof(password)!='string'){ - return res.json({ - code:437, - success:false, - message:'๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค' - }) - } - - if(!displayName){ - return res.json({ - code:423, - success:false, - message:'๋ณ„๋ช…์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' - }) - } - if(typeof(displayName)!='string'){ - return res.json({ - code:424, - success:false, - message:'๋ณ„๋ช…์€ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค' - }) - } +export const deleteHashtag = async (req, res, next) => { + const { hashtagId } = req.params; - try{ + try { - const user=await User.findOne({displayName:displayName}).select('_id password'); - if(!user){ - return res.json({ - code:455, - success:false, - message:'์กด์žฌํ•˜์ง€์•Š๋Š” ๋ณ„๋ช…์ž…๋‹ˆ๋‹ค' - }) - } - - if(password===decrypt(user.password)){ - - const token = await jwt.sign( - { - id: user._id - }, - process.env.JWT_SECRET, - { - expiresIn: '365d' - }); - - return res.json({ - code:200, - success:true, - message:'๋กœ๊ทธ์ธ ์„ฑ๊ณต', - data:{ - token:token, - userId:user._id - } - }) - } - else{ - - return res.json({ - code:456, - success:false, - message:'๋น„๋ฐ€๋ฒˆํ˜ธ ๋ถˆ์ผ์น˜' - }) - - } + await Hashtag.findByIdAndDelete(hashtagId); + return res.json({ + code: 200, + success: true, + message: 'ํ•ด์‹œํƒœ๊ทธ ์‚ญ์ œ ์„ฑ๊ณต' + }); + } catch (err) { - } - catch(err){ console.log(err); next(err); } @@ -688,126 +270,103 @@ exports.login=async (req,res,next)=>{ -exports.findInfo=async (req,res,next)=>{ - const {email}=req.body; - if(!email){ - return res.json({ - success:false, - code:410, - message:"์ด๋ฉ”์ผ์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”" - }) - } +export const update = async (req, res, next) => { + try { + const imgName = req.file.filename; + await sharp(path.join(__dirname, '../../uploads', imgName), { + failOnError: false + }) + .metadata() + .then(({ + width + }) => sharp(path.join(__dirname, '../../uploads', imgName), { + failOnError: false + }) + .resize(Math.round(width * 0.7)) + .withMetadata() + .toFile(path.join(__dirname, '../../uploads', '70resize' + imgName)) + ); - if (!regexEmail.test(email)){ - return res.json({ - success: false, - code: 411, - message: "์ด๋ฉ”์ผ์„ ํ˜•์‹์„ ์ •ํ™•ํ•˜๊ฒŒ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”" - }); - } + console.log(req.file); - if(!webMails.includes(email.split("@")[1])){ - return res.json({ - success:false, - code:412, - message:"ํ•™๊ต ์ด๋ฉ”์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค" - }) - } - try{ - const emailExist=await User.findOne({email:email}); - if(!emailExist){ - return res.json({ - success:false, - code:457, - message:"๊ฐ€์ž…๋˜์ง€์•Š์€ ์ด๋ฉ”์ผ์ž…๋‹ˆ๋‹ค" - }) - } - - const mailjet = require ('node-mailjet') - .connect(process.env.MAIL_JET1, process.env.MAIL_JET2); - - const request = mailjet - .post("send", {'version': 'v3.1'}) - .request({ - "Messages":[ - { - "From": { - "Email": "hyunjong8723@gmail.com", - "Name": "Xircle" - }, - "To": [ - { - "Email": email + /* + + let posts=await Post.find().select('_id uploadedPhoto'); + + for(let post of posts){ + + let imgName=post.uploadedPhoto[0].split('/').pop(); + + if(imgName.substr(0,8)=="70resize") continue; + + await sharp(path.join(__dirname,'../../uploads',imgName),{failOnError:false}) + .metadata() + .then(({ width }) => sharp(path.join(__dirname,'../../uploads',imgName),{failOnError:false}) + .resize(Math.round(width * 0.7)) + .withMetadata() + .toFile(path.join(__dirname,'../../uploads','70resize'+imgName)) + ); + + + await Post.findOneAndUpdate({ + _id:post._id + },{ + uploadedPhoto:[process.env.URL+'70resize'+imgName] + }) } - ], - "Subject": "Xircle ๋ฉ”์ผ", - "HTMLPart": ` -
-
-
-

- XIRCLE
- ๊ธฐ์กด์˜ ๋‹‰๋„ค์ž„๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋‹ˆ๋‹ค. -

+ */ + + /* + let users=await User.find().select('_id profileImgSrc'); -
-
-

์•ˆ๋…•ํ•˜์„ธ์š”. ์ƒˆ๋กœ์šด ๋„คํŠธ์›Œํ‚น ์„œ๋น„์Šค XIRCLE์„ ์ด์šฉํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
๋กœ๊ทธ์ธ์„ ์ง„ํ–‰ํ•ด ์ฃผ์„ธ์š” :)

-
-
-
- ${emailExist.displayName} -
-
- ${decrypt(emailExist.password)} -
-
-
-

๋ฌธ์ œ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ์นด์นด์˜คํ†ก ์ฑ„๋„[XIRCLE]๋กœ ๋ฌธ์˜์ฃผ์„ธ์š”.

- ๊ณ ๊ฐ์„ผํ„ฐ ๋ฐ”๋กœ๊ฐ€๊ธฐ -
-
- - ` - } - ] - }) + for(let user of users){ - - request - .then((result) => { - return res.json({ - code:200, - success: true, - message: '๋ฉ”์ผ์ „์†ก ์„ฑ๊ณต์ž…๋‹ˆ๋‹ค' - }); - }) - .catch((err) => { - return res.json({ - code:451, - success: false, - message: '๋ฉ”์ผ์ „์†ก ์‹คํŒจ์ž…๋‹ˆ๋‹ค' - }); - }) + + let imgName=user.profileImgSrc.split('/').pop(); + + if(imgName.substr(0,8)=="70resize") continue; + + + await sharp(path.join(__dirname,'../../uploads',imgName),{failOnError:false}) + .metadata() + .then(({ width }) => sharp(path.join(__dirname,'../../uploads',imgName),{failOnError:false}) + .resize(Math.round(width * 0.7)) + .withMetadata() + .toFile(path.join(__dirname,'../../uploads','70resize'+imgName)) + ); + + + await User.findOneAndUpdate({ + _id:user._id + },{ + profileImgSrc:process.env.URL+'70resize'+imgName + }) + } + */ return res.json({ - code:200, - success: true, - message: '๋ฉ”์ผ์ „์†ก ์„ฑ๊ณต์ž…๋‹ˆ๋‹ค' + success: true }); - - } - catch(err){ + } catch (err) { + console.log(err); next(err); } } +export const update1 = async (req, res, next) => { + try { + return res.render('test.ejs'); + } catch (err) { + console.log(err); + next(err); + } +} \ No newline at end of file From fe8e0ea8e5770abdaa38a82966bf64b89e6f564a Mon Sep 17 00:00:00 2001 From: EdonJung <2donny@naver.com> Date: Tue, 25 May 2021 18:37:12 +0900 Subject: [PATCH 3/7] babel.config file for transpiling --- babel.config.json | 3 +++ package.json | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 babel.config.json diff --git a/babel.config.json b/babel.config.json new file mode 100644 index 0000000..ff3059c --- /dev/null +++ b/babel.config.json @@ -0,0 +1,3 @@ +{ + "presets": ["@babel/preset-env"] +} \ No newline at end of file diff --git a/package.json b/package.json index 3b43e88..01fbd2b 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,8 @@ "description": "", "main": "index.js", "scripts": { - "start": "node index.js" + "start": "node index.js", + "dev": "nodemon --exec babel-node src/init --delay 2s" }, "author": "", "license": "ISC", From d1c9afbbc7e182257c659b1ab743664fdea1eb9c Mon Sep 17 00:00:00 2001 From: EdonJung <2donny@naver.com> Date: Tue, 25 May 2021 18:37:31 +0900 Subject: [PATCH 4/7] Router middlewares --- src/server.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/server.js b/src/server.js index c712d69..3947b32 100644 --- a/src/server.js +++ b/src/server.js @@ -3,6 +3,11 @@ import path from 'path'; import compression from 'compression'; import cors from 'cors'; import methodOverride from 'method-override'; +import postRouter from './routers/postRouter'; +import authRouter from './routers/authRouter'; +import profileRouter from './routers/profileRouter'; +import userRouter from './routers/userRouter'; +import chatRouter from './routers/chatRouter'; const app = express(); @@ -19,14 +24,11 @@ app.use(methodOverride()); app.use(cors()); app.use('/admin', adminRouter); -app.use('/auth', ) - -require('./src/routers/chatRouter')(app); -require('./src/routers/adminRouter')(app); -require('./src/routers/authRouter')(app); -require('./src/routers/profileRouter')(app); -require('./src/routers/postRouter')(app); -require('./src/routers/userRouter')(app); +app.use('/auth', authRouter); +app.use('/post', postRouter); +app.use('/profile', profileRouter); +app.use('/user', userRouter); +app.use('/chat', chatRouter); app.get('/', (req, res) => { return res.send("hello developers"); From 5dc92aefe248cc9556515f0c603dc7ae202e9df1 Mon Sep 17 00:00:00 2001 From: EdonJung <2donny@naver.com> Date: Tue, 25 May 2021 18:38:22 +0900 Subject: [PATCH 5/7] fix: change into ES6 --- src/controllers/postController.js | 621 ++++++++++++++++-------------- src/models/Chat.js | 4 +- src/models/Post.js | 4 +- src/models/Room.js | 4 +- src/models/User.js | 4 +- src/routers/adminRouter.js | 37 +- src/routers/authRouter.js | 37 +- src/routers/chatRouter.js | 17 +- src/routers/postRouter.js | 39 +- src/routers/profileRouter.js | 20 +- src/routers/userRouter.js | 21 +- src/utils/middleware.js | 135 ++++--- 12 files changed, 517 insertions(+), 426 deletions(-) diff --git a/src/controllers/postController.js b/src/controllers/postController.js index c237921..b4a48ee 100644 --- a/src/controllers/postController.js +++ b/src/controllers/postController.js @@ -1,97 +1,98 @@ -let User = require('../models/User'); -let Post = require('../models/Post'); -let mongoose = require('mongoose'); -const moment=require('moment'); -const dotenv = require('dotenv'); -dotenv.config(); +import mongoose from 'mongoose'; +import moment from 'moment'; +import User from '../models/User'; +import Post from '../models/Post'; +export const postPost = async (req, res, next) => { + const userId = req.id; -exports.postPost=async (req,res,next)=>{ + req.body.data = JSON.parse(req.body.data); - const userId=req.id; + const { + articleContent, + articleInterest, + articleTitle + } = req.body.data; + let { + articleTagArr + } = req.body.data; - req.body.data=JSON.parse(req.body.data); + if (!articleTagArr) articleTagArr = []; - const {articleContent,articleInterest,articleTitle}=req.body.data; - let {articleTagArr}=req.body.data; - - if(!articleTagArr) articleTagArr=[]; - - if(!articleContent){ + if (!articleContent) { return res.json({ - code:439, - success:false, - message:'๊ฒŒ์‹œ๋ฌผ์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' + code: 439, + success: false, + message: '๊ฒŒ์‹œ๋ฌผ์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' }) } - if(!articleInterest){ + if (!articleInterest) { return res.json({ - code:444, - success:false, - message:'๊ฒŒ์‹œ๋ฌผ ๊ด€์‹ฌ์‚ฌ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' + code: 444, + success: false, + message: '๊ฒŒ์‹œ๋ฌผ ๊ด€์‹ฌ์‚ฌ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' }) } - if(!articleTitle){ + if (!articleTitle) { return res.json({ - code:445, - success:false, - message:'๊ฒŒ์‹œ๋ฌผ์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' + code: 445, + success: false, + message: '๊ฒŒ์‹œ๋ฌผ์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' }) } - if(typeof(articleContent)!='string'){ + if (typeof (articleContent) != 'string') { return res.json({ - code:446, - success:false, - message:'๊ฒŒ์‹œ๋ฌผ์€ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค' + code: 446, + success: false, + message: '๊ฒŒ์‹œ๋ฌผ์€ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค' }) } - if(typeof(articleTitle)!='string'){ + if (typeof (articleTitle) != 'string') { return res.json({ - code:447, - success:false, - message:'๊ฒŒ์‹œ๋ฌผ ์ œ๋ชฉ์€ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค' + code: 447, + success: false, + message: '๊ฒŒ์‹œ๋ฌผ ์ œ๋ชฉ์€ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค' }) } - if(!req.file||!req.file.filename){ + if (!req.file || !req.file.filename) { return res.json({ - code:431, - success:false, - message:'๊ฒŒ์‹œ๋ฌผ ์‚ฌ์ง„์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' + code: 431, + success: false, + message: '๊ฒŒ์‹œ๋ฌผ ์‚ฌ์ง„์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' }) } - try{ + try { await Post.create({ - userId:userId, - content:articleContent, - title:articleTitle, - uploadedPhoto:[process.env.URL+req.file.filename], - likeUserId:[], - hashtags:articleInterest, - extraHashtags:articleTagArr + userId: userId, + content: articleContent, + title: articleTitle, + uploadedPhoto: [process.env.URL + req.file.filename], + likeUserId: [], + hashtags: articleInterest, + extraHashtags: articleTagArr }) - - - + + + return res.json({ - code:200, - message:'๊ฒŒ์‹œ๋ฌผ ์ž‘์„ฑ ์„ฑ๊ณต', - success:true + code: 200, + message: '๊ฒŒ์‹œ๋ฌผ ์ž‘์„ฑ ์„ฑ๊ณต', + success: true }) - } - catch(err){ + } catch (err) { console.log(err); next(err); } @@ -101,97 +102,100 @@ exports.postPost=async (req,res,next)=>{ -exports.getPost=async (req,res,next)=>{ +export const getPost = async (req, res, next) => { - let postUserId=req.params.userId; + let postUserId = req.params.userId; - const interest=req.query.interest; - let page=req.query.page; + const interest = req.query.interest; + let page = req.query.page; - - if(!page){ + + if (!page) { return res.json({ - code:430, - isSuccess:false, - message:"ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”" + code: 430, + isSuccess: false, + message: "ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”" }) } - if(!postUserId){ + if (!postUserId) { return res.json({ - code:430, - isSuccess:false, - message:"์œ ์ €์•„์ด๋””๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”" + code: 430, + isSuccess: false, + message: "์œ ์ €์•„์ด๋””๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”" }) } - postUserId=mongoose.mongo.ObjectId(postUserId); - + postUserId = mongoose.mongo.ObjectId(postUserId); + - let regexp=/[^0-9]/g; - let regres=page.search(regexp); - if(regres!=-1){ + let regexp = /[^0-9]/g; + let regres = page.search(regexp); + if (regres != -1) { return res.json({ - code:449, - isSuccess:false, - message:"ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋Š” ์ˆซ์ž์ž…๋‹ˆ๋‹ค" + code: 449, + isSuccess: false, + message: "ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋Š” ์ˆซ์ž์ž…๋‹ˆ๋‹ค" }) } - page=Number(page); + page = Number(page); - if(!interest){ + if (!interest) { return res.json({ - code:445, - success:false, - message:'๊ด€์‹ฌ์‚ฌ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' + code: 445, + success: false, + message: '๊ด€์‹ฌ์‚ฌ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' }) } - - try{ - const postUser=await User.findOne({_id:postUserId}); + try { + + const postUser = await User.findOne({ + _id: postUserId + }); - if(!postUser){ + if (!postUser) { return res.json({ - success:false, - code:454, - message:'์—†๋Š” ์œ ์ €์•„์ด๋””์ž…๋‹ˆ๋‹ค' + success: false, + code: 454, + message: '์—†๋Š” ์œ ์ €์•„์ด๋””์ž…๋‹ˆ๋‹ค' }); } - - const post=await Post.find({ - userId:postUserId, - hashtags:{ - $elemMatch:{$eq:interest} + + const post = await Post.find({ + userId: postUserId, + hashtags: { + $elemMatch: { + $eq: interest + } } - }).skip(8*page).limit(8).select('content createdAt title uploadedPhoto extraHashtags _id') - - let result=[]; - - - for(let _ of post){ - var ob={}; - ob.articleImgSrcs=_.uploadedPhoto; - ob.postId=_._id; - ob.articleTitle=_.title; - ob.content=_.content; - ob.extraHashtags=_.extraHashtags; - ob.createdAt=moment(_.createdAt).add(9,'h').format('YY/MM/DD HH:mm'); + }).skip(8 * page).limit(8).select('content createdAt title uploadedPhoto extraHashtags _id') + + let result = []; + + + for (let _ of post) { + var ob = {}; + ob.articleImgSrcs = _.uploadedPhoto; + ob.postId = _._id; + ob.articleTitle = _.title; + ob.content = _.content; + ob.extraHashtags = _.extraHashtags; + ob.createdAt = moment(_.createdAt).add(9, 'h').format('YY/MM/DD HH:mm'); result.push(ob); } - + return res.json({ - code:200, - message:'๊ฒŒ์‹œ๋ฌผ ์กฐํšŒ ์„ฑ๊ณต', - success:true, - data:result + code: 200, + message: '๊ฒŒ์‹œ๋ฌผ ์กฐํšŒ ์„ฑ๊ณต', + success: true, + data: result }) - } - catch(err){ + } catch (err) { console.log(err); next(err); } @@ -201,114 +205,120 @@ exports.getPost=async (req,res,next)=>{ -exports.updatePost=async (req,res,next)=>{ +export const updatePost = async (req, res, next) => { - const userId=req.id; + const userId = req.id; - let postId=req.params.postId; - if(!postId){ + let postId = req.params.postId; + if (!postId) { return res.json({ - code:448, - success:false, - message:'๊ฒŒ์‹œ๋ฌผ ์•„์ด๋””๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' + code: 448, + success: false, + message: '๊ฒŒ์‹œ๋ฌผ ์•„์ด๋””๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' }) } - postId=mongoose.mongo.ObjectId(postId); - req.body.data=JSON.parse(req.body.data); + postId = mongoose.mongo.ObjectId(postId); + req.body.data = JSON.parse(req.body.data); - const {articleContent,articleInterest,articleTitle}=req.body.data; - let {articleTagArr}=req.body.data; + const { + articleContent, + articleInterest, + articleTitle + } = req.body.data; + let { + articleTagArr + } = req.body.data; - if(!articleTagArr) articleTagArr=[]; + if (!articleTagArr) articleTagArr = []; - if(!articleContent){ + if (!articleContent) { return res.json({ - code:439, - success:false, - message:'๊ฒŒ์‹œ๋ฌผ์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' + code: 439, + success: false, + message: '๊ฒŒ์‹œ๋ฌผ์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' }) } - if(!articleInterest){ + if (!articleInterest) { return res.json({ - code:444, - success:false, - message:'๊ฒŒ์‹œ๋ฌผ ๊ด€์‹ฌ์‚ฌ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' + code: 444, + success: false, + message: '๊ฒŒ์‹œ๋ฌผ ๊ด€์‹ฌ์‚ฌ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' }) } - if(!articleTitle){ + if (!articleTitle) { return res.json({ - code:445, - success:false, - message:'๊ฒŒ์‹œ๋ฌผ์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' + code: 445, + success: false, + message: '๊ฒŒ์‹œ๋ฌผ์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' }) } - if(typeof(articleContent)!='string'){ + if (typeof (articleContent) != 'string') { return res.json({ - code:446, - success:false, - message:'๊ฒŒ์‹œ๋ฌผ์€ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค' + code: 446, + success: false, + message: '๊ฒŒ์‹œ๋ฌผ์€ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค' }) } - if(typeof(articleTitle)!='string'){ + if (typeof (articleTitle) != 'string') { return res.json({ - code:447, - success:false, - message:'๊ฒŒ์‹œ๋ฌผ ์ œ๋ชฉ์€ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค' + code: 447, + success: false, + message: '๊ฒŒ์‹œ๋ฌผ ์ œ๋ชฉ์€ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค' }) } - try{ + try { - const post=await Post.findOne({_id:postId}).select('uploadedPhoto'); + const post = await Post.findOne({ + _id: postId + }).select('uploadedPhoto'); - if(!post){ + if (!post) { return res.json({ - success:false, - code:454, - message:'์—†๋Š” ๊ฒŒ์‹œ๋ฌผ์•„์ด๋””์ž…๋‹ˆ๋‹ค' + success: false, + code: 454, + message: '์—†๋Š” ๊ฒŒ์‹œ๋ฌผ์•„์ด๋””์ž…๋‹ˆ๋‹ค' }); } let articleImgSrc; - if(req.file){ - articleImgSrc=[process.env.URL+req.file.filename]; - fs.unlinkSync(path.join(__dirname,`../../uploads/${post.uploadedPhoto[0].split('/').pop()}`)); + if (req.file) { + articleImgSrc = [process.env.URL + req.file.filename]; + fs.unlinkSync(path.join(__dirname, `../../uploads/${post.uploadedPhoto[0].split('/').pop()}`)); + } else { + articleImgSrc = [post.uploadedPhoto[0]]; } - else{ - articleImgSrc=[post.uploadedPhoto[0]]; - } - + await Post.findOneAndUpdate({ - userId:userId - },{ - content:articleContent, - title:articleTitle, - uploadedPhoto:articleImgSrc, - likeUserId:[], - hashtags:articleInterest, - extraHashtags:articleTagArr + userId: userId + }, { + content: articleContent, + title: articleTitle, + uploadedPhoto: articleImgSrc, + likeUserId: [], + hashtags: articleInterest, + extraHashtags: articleTagArr }) - - - + + + return res.json({ - code:200, - message:'๊ฒŒ์‹œ๋ฌผ ์ˆ˜์ • ์„ฑ๊ณต', - success:true + code: 200, + message: '๊ฒŒ์‹œ๋ฌผ ์ˆ˜์ • ์„ฑ๊ณต', + success: true }) - } - catch(err){ + } catch (err) { console.log(err); next(err); } @@ -318,35 +328,36 @@ exports.updatePost=async (req,res,next)=>{ -exports.deletePost=async (req,res,next)=>{ +export const deletePost = async (req, res, next) => { - let postId=req.params.postId; - if(!postId){ + let postId = req.params.postId; + if (!postId) { return res.json({ - code:448, - success:false, - message:'๊ฒŒ์‹œ๋ฌผ ์•„์ด๋””๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' + code: 448, + success: false, + message: '๊ฒŒ์‹œ๋ฌผ ์•„์ด๋””๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' }) } - postId=mongoose.mongo.ObjectId(postId); - + postId = mongoose.mongo.ObjectId(postId); + + + + try { + + + await Post.deleteOne({ + _id: postId + }); - try{ - - await Post.deleteOne({_id:postId}); - - - return res.json({ - code:200, - message:'๊ฒŒ์‹œ๋ฌผ ์‚ญ์ œ ์„ฑ๊ณต', - success:true + code: 200, + message: '๊ฒŒ์‹œ๋ฌผ ์‚ญ์ œ ์„ฑ๊ณต', + success: true }) - } - catch(err){ + } catch (err) { console.log(err); next(err); } @@ -356,75 +367,87 @@ exports.deletePost=async (req,res,next)=>{ -exports.searchHashtag=async (req,res,next)=>{ +export const searchHashtag = async (req, res, next) => { + + const userId = req.id; - const userId=req.id; + let page = req.query.page; + const hashtag = req.query.hashtag; - let page=req.query.page; - const hashtag=req.query.hashtag; - - if(!page){ + if (!page) { return res.json({ - code:430, - isSuccess:false, - message:"ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”" + code: 430, + isSuccess: false, + message: "ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”" }) } - - let regexp=/[^0-9]/g; - let regres=page.search(regexp); - if(regres!=-1){ + + let regexp = /[^0-9]/g; + let regres = page.search(regexp); + if (regres != -1) { return res.json({ - code:449, - isSuccess:false, - message:"ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋Š” ์ˆซ์ž์ž…๋‹ˆ๋‹ค" + code: 449, + isSuccess: false, + message: "ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋Š” ์ˆซ์ž์ž…๋‹ˆ๋‹ค" }) } - page=Number(page); + page = Number(page); - if(!hashtag){ + if (!hashtag) { return res.json({ - code:409, - success:false, - message:'ํ•ด์‹œํƒœ๊ทธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' + code: 409, + success: false, + message: 'ํ•ด์‹œํƒœ๊ทธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' }) } - try{ - - - const post=await Post.aggregate([ - {$unwind:'$extraHashtags'}, - {$match:{ - extraHashtags:{$regex:hashtag} - }}, - {$skip:page*10}, - {$limit:10}, - {$project:{hashtag:'$extraHashtags'}} + try { + + + const post = await Post.aggregate([{ + $unwind: '$extraHashtags' + }, + { + $match: { + extraHashtags: { + $regex: hashtag + } + } + }, + { + $skip: page * 10 + }, + { + $limit: 10 + }, + { + $project: { + hashtag: '$extraHashtags' + } + } ]); - const result=[]; - for(let _ of post){ + const result = []; + for (let _ of post) { result.push(_.hashtag); } - - + + return res.json({ - code:200, - message:'ํ•ด์‹œํƒœ๊ทธ ๊ฒ€์ƒ‰ ์„ฑ๊ณต', - success:true, - data:{ - hashtag:[...new Set(result)] + code: 200, + message: 'ํ•ด์‹œํƒœ๊ทธ ๊ฒ€์ƒ‰ ์„ฑ๊ณต', + success: true, + data: { + hashtag: [...new Set(result)] } }) - } - catch(err){ + } catch (err) { console.log(err); next(err); } @@ -433,90 +456,108 @@ exports.searchHashtag=async (req,res,next)=>{ -exports.searchPost=async (req,res,next)=>{ +export const searchPost = async (req, res, next) => { - let page=req.query.page; - const hashtag=req.query.hashtag; + let page = req.query.page; + const hashtag = req.query.hashtag; - - if(!page){ + + if (!page) { return res.json({ - code:430, - isSuccess:false, - message:"ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”" + code: 430, + isSuccess: false, + message: "ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”" }) } - - let regexp=/[^0-9]/g; - let regres=page.search(regexp); - if(regres!=-1){ + + let regexp = /[^0-9]/g; + let regres = page.search(regexp); + if (regres != -1) { return res.json({ - code:449, - isSuccess:false, - message:"ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋Š” ์ˆซ์ž์ž…๋‹ˆ๋‹ค" + code: 449, + isSuccess: false, + message: "ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋Š” ์ˆซ์ž์ž…๋‹ˆ๋‹ค" }) } - page=Number(page); + page = Number(page); - if(!hashtag){ + if (!hashtag) { return res.json({ - code:409, - success:false, - message:'ํ•ด์‹œํƒœ๊ทธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' + code: 409, + success: false, + message: 'ํ•ด์‹œํƒœ๊ทธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' }) } - try{ - - - const post=await Post.aggregate([ - {$unwind:'$extraHashtags'}, - {$match:{ - extraHashtags:{$regex:hashtag} - }}, - {$sort:{createdAt:-1}}, - {$skip:page*10}, - {$limit:10}, - {$project:{content:'$content',createdAt:'$createdAt',title:'$title',uploadedPhoto:'$uploadedPhoto'}} + try { + + + const post = await Post.aggregate([{ + $unwind: '$extraHashtags' + }, + { + $match: { + extraHashtags: { + $regex: hashtag + } + } + }, + { + $sort: { + createdAt: -1 + } + }, + { + $skip: page * 10 + }, + { + $limit: 10 + }, + { + $project: { + content: '$content', + createdAt: '$createdAt', + title: '$title', + uploadedPhoto: '$uploadedPhoto' + } + } ]); - let result=[]; - for(let _ of post){ - var ob={}; - ob.articleImgSrcs=_.uploadedPhoto; - ob.postId=_._id; - ob.articleTitle=_.title; - ob.content=_.content; - ob.createdAt=moment(_.createdAt).add(9,'h').format('YY/MM/DD HH:mm'); + let result = []; + for (let _ of post) { + var ob = {}; + ob.articleImgSrcs = _.uploadedPhoto; + ob.postId = _._id; + ob.articleTitle = _.title; + ob.content = _.content; + ob.createdAt = moment(_.createdAt).add(9, 'h').format('YY/MM/DD HH:mm'); - const hashtags=await Post.findOne({_id:_._id}).select('extraHashtags'); - ob.extraHashtags=hashtags.extraHashtags; + const hashtags = await Post.findOne({ + _id: _._id + }).select('extraHashtags'); + ob.extraHashtags = hashtags.extraHashtags; result.push(ob); } - - + + return res.json({ - code:200, - message:'ํ•ด์‹œํƒœ๊ทธ ๊ฒ€์ƒ‰ ์„ฑ๊ณต', - success:true, - data:{ - post:result + code: 200, + message: 'ํ•ด์‹œํƒœ๊ทธ ๊ฒ€์ƒ‰ ์„ฑ๊ณต', + success: true, + data: { + post: result } }) - } - catch(err){ + } catch (err) { console.log(err); next(err); } -} - - - +} \ No newline at end of file diff --git a/src/models/Chat.js b/src/models/Chat.js index 9f55f2e..8b4aac2 100644 --- a/src/models/Chat.js +++ b/src/models/Chat.js @@ -1,4 +1,4 @@ -const mongoose = require('mongoose') +import mongoose from 'mongoose'; const ChatSchema = new mongoose.Schema({ message:String, @@ -7,4 +7,4 @@ const ChatSchema = new mongoose.Schema({ createdAt : {type:Date , default: Date.now}, }) const model = mongoose.model("Chat",ChatSchema); -module.exports = model; \ No newline at end of file +export default model; \ No newline at end of file diff --git a/src/models/Post.js b/src/models/Post.js index d053907..d1f753b 100644 --- a/src/models/Post.js +++ b/src/models/Post.js @@ -1,4 +1,4 @@ -const mongoose = require('mongoose') +import mongoose from 'mongoose'; const PostSchema = new mongoose.Schema({ @@ -36,4 +36,4 @@ const PostSchema = new mongoose.Schema({ }) const model = mongoose.model("Post",PostSchema); -module.exports = model; \ No newline at end of file +export default model; \ No newline at end of file diff --git a/src/models/Room.js b/src/models/Room.js index f506a63..a97507f 100644 --- a/src/models/Room.js +++ b/src/models/Room.js @@ -1,4 +1,4 @@ -const mongoose = require('mongoose') +import mongoose from 'mongoose'; const RoomSchema = new mongoose.Schema({ member : [ @@ -10,4 +10,4 @@ const RoomSchema = new mongoose.Schema({ type:String }) const model = mongoose.model("Room",RoomSchema); -module.exports = model; \ No newline at end of file +export default model; \ No newline at end of file diff --git a/src/models/User.js b/src/models/User.js index 64b26c8..dbd5b21 100644 --- a/src/models/User.js +++ b/src/models/User.js @@ -1,4 +1,4 @@ -const mongoose = require('mongoose') +import mongoose from 'mongoose'; const UserSchema = new mongoose.Schema({ @@ -54,4 +54,4 @@ const UserSchema = new mongoose.Schema({ }) const model = mongoose.model("User",UserSchema); -module.exports = model; \ No newline at end of file +export default model; \ No newline at end of file diff --git a/src/routers/adminRouter.js b/src/routers/adminRouter.js index 4c8df24..54482de 100644 --- a/src/routers/adminRouter.js +++ b/src/routers/adminRouter.js @@ -1,15 +1,28 @@ -module.exports = (app)=>{ - const admin = require('../controllers/adminController'); - const {upload,resize}=require('../utils/middleware'); +import { + getUser, + postUser, + patchUser, + deleteUser, + getPost, + deletePost, + update, + update1 +} from '../controllers/authController'; - app.get('/admin/users',admin.getUser); - app.post('/admin/user',upload.single('profileImgSrc'),admin.postUser); - app.patch('/admin/user/:userId',upload.single('profileImgSrc'),admin.patchUser); - app.delete('/admin/user/:userId',admin.deleteUser); - app.get('/admin/posts',admin.getPost); - app.delete('/admin/post/:postId',admin.deletePost); +import { + upload, +} from '../utils/middleware'; - app.post('/admin/update',admin.update); - app.get('/admin/update',admin.update1); +const adminRouter = express.Router(); -} \ No newline at end of file +adminRouter.get('/users', getUser); +adminRouter.post('/user', upload.single('profileImgSrc'), postUser); +adminRouter.patch('/user/:userId', upload.single('profileImgSrc'), patchUser); +adminRouter.delete('/user/:userId', deleteUser); +adminRouter.get('/posts', getPost); +adminRouter.delete('/post/:postId', deletePost); + +adminRouter.post('/update', update); +adminRouter.get('/update', update1); + +export default adminRouter; \ No newline at end of file diff --git a/src/routers/authRouter.js b/src/routers/authRouter.js index 71e9349..2bda0e0 100644 --- a/src/routers/authRouter.js +++ b/src/routers/authRouter.js @@ -1,18 +1,25 @@ -module.exports = (app)=>{ - const auth = require('../controllers/authController'); - const {upload,verify,resize}=require('../utils/middleware'); +import express from 'express'; +import { + checkEmail, + sendEmail, + checkName, + postUser, + login, + findInfo +} from '../controllers/authController'; +import { + upload, + verify, + resize +} from '../utils/middleware'; - - app.post('/check/email',auth.checkEmail); - app.post('/email',auth.sendEmail); - app.post('/check/name',auth.checkName); - app.post('/user',upload.single('profileImgSrc'),resize,auth.postUser); - app.post('/login',auth.login); - app.post('/find/info',auth.findInfo); +const authRouter = express.Router(); +authRouter.post('/check/email', checkEmail); +authRouter.post('/email', sendEmail); +authRouter.post('/check/name', checkName); +authRouter.post('/user', upload.single('profileImgSrc'), resize, postUser); +authRouter.post('/login', login); +authRouter.post('/find/info', findInfo); - - - - -} \ No newline at end of file +export default authRouter; \ No newline at end of file diff --git a/src/routers/chatRouter.js b/src/routers/chatRouter.js index 5cff7c0..c1139ba 100644 --- a/src/routers/chatRouter.js +++ b/src/routers/chatRouter.js @@ -1,7 +1,12 @@ -module.exports = (app)=>{ - const chat = require('../controllers/chatController'); - const {verify}=require('../utils/middleware'); +import express from 'express'; +import {} from '../controllers/chatController'; +const { + verify +} = require('../utils/middleware'); - //app.get('/chat',verify,chat.getChat); - //app.post('/message',verify,createRoom); -} \ No newline at end of file +const chatRouter = express.Router(); + +chatRouter.get('/',verify,chat.getChat); +chatRouter.post('/message',verify,createRoom); + +export default chatRouter; \ No newline at end of file diff --git a/src/routers/postRouter.js b/src/routers/postRouter.js index 7bfb794..ec97f43 100644 --- a/src/routers/postRouter.js +++ b/src/routers/postRouter.js @@ -1,18 +1,31 @@ -module.exports = (app)=>{ - const post = require('../controllers/postController'); - const {upload,verify,resize}=require('../utils/middleware'); +import express from 'express'; +import { + getPost, + postPost, + updatePost, + deletePost, + searchHashtag, + searchPost +} from '../controllers/postController'; +import { + upload, + verify, + resize +} from '../utils/middleware'; - - app.post('/post',verify,upload.single('articleImgSrc'),resize,post.postPost); - - app.get('/post/user/:userId',verify,post.getPost); +const postRouter = express.Router(); - app.put('/post/:postId',verify,upload.single('articleImgSrc'),resize,post.updatePost); +postRouter.post('/', verify, upload.single('articleImgSrc'), resize, postPost); - app.delete('/post/:postId',verify,post.deletePost); +postRouter.get('/user/:userId', verify, getPost); - app.get('/post/search/tag',verify,post.searchHashtag); - app.get('/post/search',verify,post.searchPost); +postRouter.put('/:postId', verify, upload.single('articleImgSrc'), resize, updatePost); - //app.patch('/post/:postId/like',verify,post.likePost); -} \ No newline at end of file +postRouter.delete('/:postId', verify, deletePost); + +postRouter.get('/search/tag', verify, searchHashtag); +postRouter.get('/search', verify, searchPost); + +//postRouter.patch('/:postId/like',verify,likePost); + +export default postRouter; \ No newline at end of file diff --git a/src/routers/profileRouter.js b/src/routers/profileRouter.js index a2ee99c..a1926ce 100644 --- a/src/routers/profileRouter.js +++ b/src/routers/profileRouter.js @@ -1,13 +1,17 @@ -module.exports = (app)=>{ - const profile = require('../controllers/profileController'); - const {upload,verify,resize}=require('../utils/middleware'); +import express from 'express'; +import { getProfile, getPost, updateProfile } from '../controllers/profileController'; +import { + upload, + verify, + resize +} from '../utils/middleware'; - +const profileRouter = express.Router(); - app.get('/user/:userId/profile',verify,profile.getProfile); +profileRouter.get('/:userId/profile', verify, getProfile); +profileRouter.get('/:userId/profile/post', verify, getPost); - app.get('/user/:userId/profile/post',verify,profile.getPost); +profileRouter.put('/profile', upload.single('profileImgSrc'), resize, verify, updateProfile); - app.put('/user/profile',upload.single('profileImgSrc'),resize,verify,profile.updateProfile); -} \ No newline at end of file +export default profileRouter; \ No newline at end of file diff --git a/src/routers/userRouter.js b/src/routers/userRouter.js index b5ee2b1..2074f0b 100644 --- a/src/routers/userRouter.js +++ b/src/routers/userRouter.js @@ -1,7 +1,16 @@ -module.exports = (app)=>{ - const user = require('../controllers/userController'); - const {upload,verify}=require('../utils/middleware'); +import express from 'express'; +import { + follow, + getUsers +} from '../controllers/userController'; +import { + upload, + verify +} from '../utils/middleware'; - //app.patch('/user/:userId/follow',verify,user.follow); - app.get('/users',verify,user.getUsers); -} \ No newline at end of file +const userRouter = express.Router(); + +userRouter.get('/users', verify, user.getUsers); +// app.patch('/user/:userId/follow',verify,user.follow); + +export default userRouter; \ No newline at end of file diff --git a/src/utils/middleware.js b/src/utils/middleware.js index 82cc5f6..201c507 100644 --- a/src/utils/middleware.js +++ b/src/utils/middleware.js @@ -1,109 +1,108 @@ -const multer = require('multer'); -const path=require('path'); - - -const sharp=require('sharp'); -const jwt = require('jsonwebtoken'); -require('dotenv').config(); -const fs=require('fs'); -const {promisify}=require('util'); -let User = require('../models/User'); -let mongoose = require('mongoose'); - -const upload=multer({ - storage:multer.diskStorage({ - destination(req,file,cb){ - cb(null,'uploads/'); +import mongoose from 'mongoose'; +import multer from 'multer'; +import path from 'path'; +import sharp from 'sharp'; +import jwt from 'jsonwebtoken'; +import fs from 'fs'; +import { + promisify +} from 'util'; +import User from '../models/User'; + + +export const upload = multer({ + storage: multer.diskStorage({ + destination(req, file, cb) { + cb(null, 'uploads/'); }, - filename(req,file,cb){ - cb(null,new Date().valueOf()+path.extname(file.originalname)); + filename(req, file, cb) { + cb(null, new Date().valueOf() + path.extname(file.originalname)); } }), - limits:{fileSize:1024*1024*10}, - + limits: { + fileSize: 1024 * 1024 * 10 + }, + }) -exports.upload=upload; -const resize=async(req,res,next)=>{ +export const resize = async (req, res, next) => { - try{ + try { - if(req.file){ + if (req.file) { - const type=req.file.filename.split('.').pop(); - const types=['jpg','jpeg','png','JPG','JPEG','PNG'] - const filepath=req.file.path; + const type = req.file.filename.split('.').pop(); + const types = ['jpg', 'jpeg', 'png', 'JPG', 'JPEG', 'PNG'] + const filepath = req.file.path; - if(types.includes(type)){ - await sharp(filepath,{failOnError:false}) - .metadata() - .then(({ width }) => sharp(filepath,{failOnError:false}) - .resize(Math.round(width * 0.7)) - .withMetadata() - .toFile(path.join('uploads','7r'+req.file.filename))) - .then(global.gc); + if (types.includes(type)) { + await sharp(filepath, { + failOnError: false + }) + .metadata() + .then(({ + width + }) => sharp(filepath, { + failOnError: false + }) + .resize(Math.round(width * 0.7)) + .withMetadata() + .toFile(path.join('uploads', '7r' + req.file.filename))) + .then(global.gc); fs.unlinkSync(filepath); - - req.file.filename='7r'+req.file.filename; + + req.file.filename = '7r' + req.file.filename; } } next(); - } - catch(err){ + } catch (err) { console.log(err); next(err); } } -exports.resize=resize; - - - +export const verify = async (req, res, next) => { -const verify = async (req, res, next) => { - const token = req.headers['access-token']; - - if(!token) { + + if (!token) { return res.json({ - success:false, + success: false, code: 401, message: '๋กœ๊ทธ์ธ์ด ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.' }); } - try{ + try { - const verify=promisify(jwt.verify); - const token=await verify(token,process.env.JWT_SECRET); + const verify = promisify(jwt.verify); + const token = await verify(token, process.env.JWT_SECRET); - const userId=await User.findOne({_id:token.id}).select('_id'); + const userId = await User.findOne({ + _id: token.id + }).select('_id'); - if(userId){ - req.id=mongoose.mongo.ObjectId(userId); - } - else{ - if(!user){ + if (userId) { + req.id = mongoose.mongo.ObjectId(userId); + } else { + if (!user) { return res.json({ - success:false, - code:454, - message:'์—†๋Š” ์œ ์ €์•„์ด๋””์ž…๋‹ˆ๋‹ค' + success: false, + code: 454, + message: '์—†๋Š” ์œ ์ €์•„์ด๋””์ž…๋‹ˆ๋‹ค' }); } } - } - catch(err){ + } catch (err) { console.log(err); return res.json({ - success:false, - code:401, - message:'๊ฒ€์ฆ์‹คํŒจ' + success: false, + code: 401, + message: '๊ฒ€์ฆ์‹คํŒจ' }) } -}; - -exports.verify = verify; \ No newline at end of file +}; \ No newline at end of file From ac97129f0d6da6ad245a655715e007d3d910acf4 Mon Sep 17 00:00:00 2001 From: EdonJung <2donny@naver.com> Date: Tue, 25 May 2021 19:08:17 +0900 Subject: [PATCH 6/7] authController --- src/controllers/authController.js | 952 ++++++++++++++++++++++-------- 1 file changed, 693 insertions(+), 259 deletions(-) diff --git a/src/controllers/authController.js b/src/controllers/authController.js index a76527a..d74d47e 100644 --- a/src/controllers/authController.js +++ b/src/controllers/authController.js @@ -1,372 +1,806 @@ import User from '../models/User'; import Post from '../models/Post'; -import { startSession } from 'mongoose'; -import { encrypt, decrypt } from '../utils/function'; -import sharp from 'sharp'; +import mongoose from 'mongoose'; -export const getUser = async (req, res, next) => { +import regexEmail from 'regex-email'; +import jwt from 'jsonwebtoken'; +import nodemailer from 'nodemailer'; +import {startSession}from 'mongoose'; +//const fs=require('fs'); +//const path=require('path'); +//const redis=require('redis'); +//const client=redis.createClient(process.env.REDIS_URL); - const { - page - } = Number(req.query); - try { - const users = await User.find() - .skip(page * 10) - .limit(10); - res.render('user.ejs', { - users: users +import {encrypt,decrypt} from '../utils/function'; + +const webMails = ["snu.ac.kr","korea.ac.kr","yonsei.ac.kr","g.skku.edu","skku.edu","sogang.ac.kr","hanyang.ac.kr","kaist.ac.kr","postech.ac.kr"]; +const universitys=["์„œ์šธ๋Œ€ํ•™๊ต","๊ณ ๋ ค๋Œ€ํ•™๊ต","์—ฐ์„ธ๋Œ€ํ•™๊ต","์„ฑ๊ท ๊ด€๋Œ€ํ•™๊ต","์„ฑ๊ท ๊ด€๋Œ€ํ•™๊ต","์„œ๊ฐ•๋Œ€ํ•™๊ต","ํ•œ์–‘๋Œ€ํ•™๊ต","์นด์ด์ŠคํŠธ","ํฌ์Šคํ…"]; +let authEmail=new Map(); + +export const checkEmail = async (req,res,next)=>{ + const {email,code}=req.body; + + if(!email){ + return res.json({ + success:false, + code:410, + message:"์ด๋ฉ”์ผ์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”" + }) + } + + if (!regexEmail.test(email)){ + return res.json({ + success: false, + code: 411, + message: "์ด๋ฉ”์ผ์„ ํ˜•์‹์„ ์ •ํ™•ํ•˜๊ฒŒ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”" }); - } catch (err) { - console.log(err); - next(err); } -} + if(!webMails.includes(email.split("@")[1])){ + return res.json({ + success:false, + code:412, + message:"ํ•™๊ต ์ด๋ฉ”์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค" + }) + } + + -export const getHashtag = async (req, res, next) => { + try{ - const { page } = Number(req.query); - try { - const hashtags = await Hashtag.find() - .skip(page * 10) - .limit(10); - res.render('hashtag.ejs', { - hashtags: hashtags + const user=await User.findOne({ + email:email }); - } catch (err) { + if(user){ + return res.json({ + success:false, + code:450, + message:"์ด๋ฉ”์ผ ์ค‘๋ณต์ž…๋‹ˆ๋‹ค" + }) + } + + + + if(authEmail.get(email)!=code){ + authEmail.delete(email); + return res.json({ + success:false, + code:453, + message:'์ธ์ฆ๋ฒˆํ˜ธ ์ผ์น˜ํ•˜์ง€์•Š์Šต๋‹ˆ๋‹ค' + }) + } + + authEmail.delete(email); + + return res.json({ + message:'์ด๋ฉ”์ผ ์ธ์ฆ์„ฑ๊ณต', + success:true, + code:200 + }); + + + + /* + client.get(email,(err,value)=>{ + if(err) throw err; + + + if(value===process.env.REDIS_SECRET){ + return res.json({ + message:'์ด๋ฉ”์ผ ์ธ์ฆ์„ฑ๊ณต', + success:true, + code:200 + }); + } + + else{ + return res.json({ + message:'์ด๋ฉ”์ผ ์ธ์ฆ์‹คํŒจ', + success:false, + code:453 + }) + } + });*/ + + } + catch(err){ console.log(err); next(err); } } +export const sendEmail = async (req,res,next)=>{ -export const getPost = async (req, res, next) => { + const {email}=req.body; - const page = Number(req.query.page); + if(!email){ + return res.json({ + success:false, + code:410, + message:"์ด๋ฉ”์ผ์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”" + }) + } - try { - const posts = await Post.find() - .skip(page * 10) - .limit(10); - res.render('post.ejs', { - posts: posts + if (!regexEmail.test(email)){ + return res.json({ + success: false, + code: 411, + message: "์ด๋ฉ”์ผ์„ ํ˜•์‹์„ ์ •ํ™•ํ•˜๊ฒŒ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”" }); - } catch (err) { - console.log(err); - next(err); } -} + + if(!webMails.includes(email.split("@")[1])){ + return res.json({ + success:false, + code:412, + message:"ํ•™๊ต ์ด๋ฉ”์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค" + }) + } -export const postUser = async (req, res, next) => { + try{ - const { - body: { - age, - gender, - university, - adj, - job, - introText, - displayName, - email, - location, - isPublic, - password, - isGraduate, - phoneNumber + const user=await User.findOne({ + email:email + }); + if(user){ + return res.json({ + success:false, + code:450, + message:"์ด๋ฉ”์ผ ์ค‘๋ณต์ž…๋‹ˆ๋‹ค" + }) } - } = req; +/* + let transporter = nodemailer.createTransport({ + service: 'gmail', + auth: { + user: process.env.GOOGLE_ACCOUNT, + pass: process.env.GOOGLE_PASSWORD + } + });*/ + + + + //let source=fs.readFileSync(path.join(__dirname,'../../public','authMail.html'),'utf8'); + //client.set(email,process.env.REDIS_SECRET,'EX',90); + + + + let randomNumber=Math.floor(Math.random()*900000)+100000; + authEmail.set(email,randomNumber); + + + const mailjet = require ('node-mailjet') + .connect(process.env.MAIL_JET1, process.env.MAIL_JET2); + + const request = mailjet + .post("send", {'version': 'v3.1'}) + .request({ + "Messages":[ + { + "From": { + "Email": "hyunjong8723@gmail.com", + "Name": "Xircle" + }, + "To": [ + { + "Email": email + } + ], + "Subject": "Xircle ๋ฉ”์ผ", + "HTMLPart": ` +
+
+
+

+ XIRCLE
+ ํ•™๊ตํ™•์ธ ์ธ์ฆ๋ฒˆํ˜ธ ์ž…๋‹ˆ๋‹ค. +

+ +
+
+

์•ˆ๋…•ํ•˜์„ธ์š”. ์ƒˆ๋กœ์šด ๋„คํŠธ์›Œํ‚น ์„œ๋น„์Šค XIRCLE์„ ์ด์šฉํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ${universitys[webMails.indexOf(email.split('@')[1])]} ์ธ์ฆ์„ ์™„๋ฃŒํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜ ์ธ์ฆ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”. ํ•œ ๋ฒˆ์˜ ์ธ์ฆ์œผ๋กœ XIRCLE์„ ๊ฒฝํ—˜ํ•ด๋ณด์„ธ์š”!

+
+
+
+ ${randomNumber} +
+
+
+

๋ฌธ์ œ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ์นด์นด์˜คํ†ก ์ฑ„๋„[XIRCLE]๋กœ ๋ฌธ์˜์ฃผ์„ธ์š”.

+ ๊ณ ๊ฐ์„ผํ„ฐ ๋ฐ”๋กœ๊ฐ€๊ธฐ +
+
+ + ` + } + ] + }) + request + .then((result) => { + return res.json({ + code:200, + success: true, + message: '๋ฉ”์ผ์ „์†ก ์„ฑ๊ณต์ž…๋‹ˆ๋‹ค' + }); + }) + .catch((err) => { + return res.json({ + code:451, + success: false, + message: '๋ฉ”์ผ์ „์†ก ์‹คํŒจ์ž…๋‹ˆ๋‹ค' + }); + }) + - let hashtags; - if (!Object.prototype.hasOwnProperty.call(req.body, 'interestArr')) { - hashtags = []; - } else { - hashtags = req.body.interestArr; + return res.json({ + code:200, + success: true, + message: '๋ฉ”์ผ์ „์†ก ์„ฑ๊ณต์ž…๋‹ˆ๋‹ค' + }); + + } + catch(err){ + console.log(err); + next(err); } +} - let fileUrl; - if (Object.prototype.hasOwnProperty.call(req, 'file') && Object.prototype.hasOwnProperty.call(req.file, 'location')) { - fileUrl = req.file['location']; - } - try { +export const checkName = async (req,res,next)=>{ - await User.create([{ - age: age, - gender: gender, - adj: adj, - university: university, - job: job, - profileImgSrc: fileUrl, - introText: introText, - displayName: displayName, - email: email, - location: location, - hashtags: hashtags, - mainHashtags: hashtags, - isPublic: isPublic, - followings: [], - followers: [], - password: password, - isGraduate: isGraduate, - phoneNumber: phoneNumber, - resume: resume, - workPlace: workPlace - }]); + const {displayName}=req.body; + if(!displayName){ + return res.json({ + code:423, + success:false, + message:'๋ณ„๋ช…์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' + }) + } + if(typeof(displayName)!='string'){ + return res.json({ + code:424, + success:false, + message:'๋ณ„๋ช…์€ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค' + }) + } + + try{ + const user=await User.findOne({ + displayName:displayName + }); + if(user){ + return res.json({ + code:452, + success:false, + message:"๋ณ„๋ช… ์ค‘๋ณต์ž…๋‹ˆ๋‹ค" + }) + } return res.json({ - code: 200, - success: true, - message: '์œ ์ € ๋“ฑ๋ก ์ถ”๊ฐ€ ์„ฑ๊ณต' + code:200, + success:true, + message:"์ƒ์„ฑ๊ฐ€๋Šฅํ•œ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค" }) - } catch (err) { + } + catch(err){ console.log(err); next(err); } } -export const patchUser = async (req, res, next) => { - const { userId } = req.params; +export const postUser = async (req,res,next)=>{ + + req.body.data=JSON.parse(req.body.data); const { - body: { - age, - gender, - university, - adj, - job, - introText, - displayName, - email, - location, - isPublic, - resume, - workPlace, - phoneNumber, - isGraduate, - password, - } - } = req; + + age, + gender, + job, + adj, + displayName, + email, + location, + phoneNumber, + isPublic, + isGraduate, + latitude, + longitude, + interestArr, + } = req.body.data; + + let {password}=req.body.data; + + + if(!interestArr){ + return res.json({ + code:427, + success:false, + message:'๊ด€์‹ฌ์‚ฌ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' + }) + + } + + - let hashtags; - if (!Object.prototype.hasOwnProperty.call(req.body, 'interestArr')) { - hashtags = []; - } else { - hashtags = req.body.hashtags; - } + + let position=[]; + if(longitude) position.push(longitude); + if(latitude) position.push(latitude); + - let fileUrl; - if (Object.prototype.hasOwnProperty.call(req, 'file') && Object.prototype.hasOwnProperty.call(req.file, 'location')) { - fileUrl = req.file['location']; - } - try { + if(age===undefined||age===null){ + return res.json({ + code:413, + success:false, + message:'๋‚˜์ด๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' + }) + } + + if(typeof(age)!='number'){ + return res.json({ + code:414, + success:false, + message:'๋‚˜์ด๋Š” ์ˆซ์ž์ž…๋‹ˆ๋‹ค' + }) + } + + if(!gender){ + return res.json({ + code:415, + success:false, + message:'์„ฑ๋ณ„์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' + }) + } + if(typeof(gender)!='string'){ + return res.json({ + code:416, + success:false, + message:'์„ฑ๋ณ„์€ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค' + }) + } + if(!job){ + return res.json({ + code:417, + success:false, + message:'์ง์—…์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' + }) + } + if(typeof(job)!='string'){ + return res.json({ + code:418, + success:false, + message:'์ง์—…์€ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค' + }) + } + if(!adj){ + return res.json({ + code:419, + success:false, + message:'ํ˜•์šฉ์‚ฌ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' + }) + } + if(typeof(adj)!='string'){ + return res.json({ + code:420, + success:false, + message:'ํ˜•์šฉ์‚ฌ๋Š” ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค' + }) + } + if(!displayName){ + return res.json({ + code:423, + success:false, + message:'๋ณ„๋ช…์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' + }) + } + if(typeof(displayName)!='string'){ + return res.json({ + code:424, + success:false, + message:'๋ณ„๋ช…์€ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค' + }) + } + if(!email){ + return res.json({ + success:false, + code:410, + message:"์ด๋ฉ”์ผ์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”" + }) + } - await User.findByIdAndUpdate(userId, { - age: age, - gender: gender, - adj: adj, - university: university, - job: job, - profileImgSrc: fileUrl, - introText: introText, - displayName: displayName, - email: email, - location: location, - hashtags: hashtags, - isPublic: isPublic, - phoneNumber: phoneNumber, - resume: resume, - workPlace: workPlace, - isGraduate: isGraduate, - password: password + if (!regexEmail.test(email)){ + return res.json({ + success: false, + code: 411, + message: "์ด๋ฉ”์ผ์„ ํ˜•์‹์„ ์ •ํ™•ํ•˜๊ฒŒ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”" }); + } + if(!webMails.includes(email.split("@")[1])){ return res.json({ - code: 200, - success: true, - message: '์œ ์ € ์ •๋ณด ๋ณ€๊ฒฝ ์„ฑ๊ณต' + success:false, + code:412, + message:"ํ•™๊ต ์ด๋ฉ”์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค" }) - } catch (err) { + } - console.log(err); - next(err); + if(!location){ + return res.json({ + code:423, + success:false, + message:'์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' + }) + } + if(typeof(location)!='string'){ + return res.json({ + code:424, + success:false, + message:'์ฃผ์†Œ๋Š” ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค' + }) + } + if(!phoneNumber){ + return res.json({ + code:425, + success:false, + message:'์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' + }) + } + if(typeof(phoneNumber)!='string'){ + return res.json({ + code:426, + success:false, + message:'์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค' + }) } -} -export const deleteUser = async (req, res, next) => { + if(!req.file||!req.file.filename){ + return res.json({ + code:431, + success:false, + message:'ํ”„๋กœํ•„ ์‚ฌ์ง„์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' + }) + } - const { userId } = req.params; + if(isPublic===undefined||isPublic===null){ + return res.json({ + code:432, + success:false, + message:'๊ณต๊ฐœ์—ฌ๋ถ€๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' + }) + } - try { + - await User.findByIdAndDelete(userId); + if(isGraduate===undefined||isGraduate===null){ + return res.json({ + code:433, + success:false, + message:'์กธ์—…์—ฌ๋ถ€๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' + }) + } + + if(typeof(isPublic)!='boolean'){ return res.json({ - code: 200, - success: true, - message: '์œ ์ € ์‚ญ์ œ ์„ฑ๊ณต' - }); - } catch (err) { + code:434, + success:false, + message:'๊ณต๊ฐœ์—ฌ๋ถ€๋Š” booleanํ˜•์ž…๋‹ˆ๋‹ค' + }) + } - console.log(err); - next(err); + + if(typeof(isGraduate)!='boolean'){ + return res.json({ + code:435, + success:false, + message:'์กธ์—…์—ฌ๋ถ€๋Š” booleanํ˜•์ž…๋‹ˆ๋‹ค' + }) } -} + if(!password){ + return res.json({ + code:436, + success:false, + message:'๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' + }) + } + if(typeof(password)!='string'){ + return res.json({ + code:437, + success:false, + message:'๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค' + }) + } -export const deletePost = async (req, res, next) => { - const { postId } = req.params; + + + + const university=universitys[webMails.indexOf(email.split('@')[1])]; + + password=encrypt(password); + + + try{ + + + + const user=await User.create({ + age:age, + gender:gender, + university:university, + adj:adj, + job:job, + profileImgSrc:process.env.URL+req.file.filename, + introText:"", + displayName:displayName, + email:email, + phoneNumber:phoneNumber, + isPublic:isPublic, + isGraduate:isGraduate, + location:location, + hashtags:interestArr, + mainHashtags:interestArr, + followings:[], + followers:[], + blockedUsers:[], + resume:"", + workPlace:"", + password:password, + position:position, + isLocationPublic:true + }); - try { - await Post.findByIdAndDelete({ - _id: postId + + + const token = await jwt.sign( + { + id: user._id + }, + process.env.JWT_SECRET, + { + expiresIn: '365d' }); + return res.json({ - code: 200, - success: true, - message: '๊ฒŒ์‹œ๋ฌผ ์‚ญ์ œ ์„ฑ๊ณต' - }); - } catch (err) { + code:200, + message:'์œ ์ € ๋“ฑ๋ก ์„ฑ๊ณต', + success:true, + data:{ + token:token, + userId:user._id + } + }) + + } + catch(err){ console.log(err); next(err); } } +export const login = async (req,res,next)=>{ + const {password,displayName}=req.body; - -export const deleteHashtag = async (req, res, next) => { - - const { hashtagId } = req.params; - - try { - - await Hashtag.findByIdAndDelete(hashtagId); - + + + if(!password){ return res.json({ - code: 200, - success: true, - message: 'ํ•ด์‹œํƒœ๊ทธ ์‚ญ์ œ ์„ฑ๊ณต' - }); - } catch (err) { + code:436, + success:false, + message:'๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' + }) + } - console.log(err); - next(err); + if(typeof(password)!='string'){ + return res.json({ + code:437, + success:false, + message:'๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค' + }) } -} + if(!displayName){ + return res.json({ + code:423, + success:false, + message:'๋ณ„๋ช…์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”' + }) + } + if(typeof(displayName)!='string'){ + return res.json({ + code:424, + success:false, + message:'๋ณ„๋ช…์€ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค' + }) + } + try{ -export const update = async (req, res, next) => { - try { - const imgName = req.file.filename; - await sharp(path.join(__dirname, '../../uploads', imgName), { - failOnError: false + const user=await User.findOne({displayName:displayName}).select('_id password'); + if(!user){ + return res.json({ + code:455, + success:false, + message:'์กด์žฌํ•˜์ง€์•Š๋Š” ๋ณ„๋ช…์ž…๋‹ˆ๋‹ค' }) - .metadata() - .then(({ - width - }) => sharp(path.join(__dirname, '../../uploads', imgName), { - failOnError: false - }) - .resize(Math.round(width * 0.7)) - .withMetadata() - .toFile(path.join(__dirname, '../../uploads', '70resize' + imgName)) - ); - - console.log(req.file); + } + + if(password===decrypt(user.password)){ + + const token = await jwt.sign( + { + id: user._id + }, + process.env.JWT_SECRET, + { + expiresIn: '365d' + }); + + return res.json({ + code:200, + success:true, + message:'๋กœ๊ทธ์ธ ์„ฑ๊ณต', + data:{ + token:token, + userId:user._id + } + }) + } + else{ + return res.json({ + code:456, + success:false, + message:'๋น„๋ฐ€๋ฒˆํ˜ธ ๋ถˆ์ผ์น˜' + }) + } + } + catch(err){ + console.log(err); + next(err); + } +} - /* - let posts=await Post.find().select('_id uploadedPhoto'); - for(let post of posts){ - - let imgName=post.uploadedPhoto[0].split('/').pop(); +export const findInfo = async (req,res,next)=>{ + const {email}=req.body; - if(imgName.substr(0,8)=="70resize") continue; - - await sharp(path.join(__dirname,'../../uploads',imgName),{failOnError:false}) - .metadata() - .then(({ width }) => sharp(path.join(__dirname,'../../uploads',imgName),{failOnError:false}) - .resize(Math.round(width * 0.7)) - .withMetadata() - .toFile(path.join(__dirname,'../../uploads','70resize'+imgName)) - ); - - - await Post.findOneAndUpdate({ - _id:post._id - },{ - uploadedPhoto:[process.env.URL+'70resize'+imgName] - }) - } - */ + if(!email){ + return res.json({ + success:false, + code:410, + message:"์ด๋ฉ”์ผ์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”" + }) + } - /* - let users=await User.find().select('_id profileImgSrc'); - - for(let user of users){ + if (!regexEmail.test(email)){ + return res.json({ + success: false, + code: 411, + message: "์ด๋ฉ”์ผ์„ ํ˜•์‹์„ ์ •ํ™•ํ•˜๊ฒŒ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”" + }); + } + if(!webMails.includes(email.split("@")[1])){ + return res.json({ + success:false, + code:412, + message:"ํ•™๊ต ์ด๋ฉ”์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค" + }) + } - let imgName=user.profileImgSrc.split('/').pop(); - if(imgName.substr(0,8)=="70resize") continue; + try{ - - await sharp(path.join(__dirname,'../../uploads',imgName),{failOnError:false}) - .metadata() - .then(({ width }) => sharp(path.join(__dirname,'../../uploads',imgName),{failOnError:false}) - .resize(Math.round(width * 0.7)) - .withMetadata() - .toFile(path.join(__dirname,'../../uploads','70resize'+imgName)) - ); + const emailExist=await User.findOne({email:email}); + if(!emailExist){ + return res.json({ + success:false, + code:457, + message:"๊ฐ€์ž…๋˜์ง€์•Š์€ ์ด๋ฉ”์ผ์ž…๋‹ˆ๋‹ค" + }) + } - - await User.findOneAndUpdate({ - _id:user._id - },{ - profileImgSrc:process.env.URL+'70resize'+imgName - }) + + const mailjet = require ('node-mailjet') + .connect(process.env.MAIL_JET1, process.env.MAIL_JET2); + + const request = mailjet + .post("send", {'version': 'v3.1'}) + .request({ + "Messages":[ + { + "From": { + "Email": "hyunjong8723@gmail.com", + "Name": "Xircle" + }, + "To": [ + { + "Email": email } - */ + ], + "Subject": "Xircle ๋ฉ”์ผ", + "HTMLPart": ` +
+
+
+

+ XIRCLE
+ ๊ธฐ์กด์˜ ๋‹‰๋„ค์ž„๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋‹ˆ๋‹ค. +

+ +
+
+

์•ˆ๋…•ํ•˜์„ธ์š”. ์ƒˆ๋กœ์šด ๋„คํŠธ์›Œํ‚น ์„œ๋น„์Šค XIRCLE์„ ์ด์šฉํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
๋กœ๊ทธ์ธ์„ ์ง„ํ–‰ํ•ด ์ฃผ์„ธ์š” :)

+
+
+
+ ${emailExist.displayName} +
+
+ ${decrypt(emailExist.password)} +
+
+
+

๋ฌธ์ œ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ์นด์นด์˜คํ†ก ์ฑ„๋„[XIRCLE]๋กœ ๋ฌธ์˜์ฃผ์„ธ์š”.

+ ๊ณ ๊ฐ์„ผํ„ฐ ๋ฐ”๋กœ๊ฐ€๊ธฐ +
+
+ + ` + } + ] + }) + + + request + .then((result) => { + return res.json({ + code:200, + success: true, + message: '๋ฉ”์ผ์ „์†ก ์„ฑ๊ณต์ž…๋‹ˆ๋‹ค' + }); + }) + .catch((err) => { + return res.json({ + code:451, + success: false, + message: '๋ฉ”์ผ์ „์†ก ์‹คํŒจ์ž…๋‹ˆ๋‹ค' + }); + }) return res.json({ - success: true + code:200, + success: true, + message: '๋ฉ”์ผ์ „์†ก ์„ฑ๊ณต์ž…๋‹ˆ๋‹ค' }); + - } catch (err) { - + } + catch(err){ console.log(err); next(err); } } -export const update1 = async (req, res, next) => { - try { - return res.render('test.ejs'); - } catch (err) { - - console.log(err); - next(err); - } -} \ No newline at end of file From 97ed356d7196f0fe2cc56596884364616d1ac5fe Mon Sep 17 00:00:00 2001 From: EdonJung <2donny@naver.com> Date: Tue, 25 May 2021 19:11:15 +0900 Subject: [PATCH 7/7] delete db, index file --- db.js | 16 ---------------- index.js | 46 ---------------------------------------------- 2 files changed, 62 deletions(-) delete mode 100644 db.js delete mode 100644 index.js diff --git a/db.js b/db.js deleted file mode 100644 index 61b814b..0000000 --- a/db.js +++ /dev/null @@ -1,16 +0,0 @@ -var mongoose = require('mongoose') -require('dotenv').config(); - -mongoose.connect(process.env.MONGO_URL, { - useNewUrlParser: true, - useFindAndModify: false, - useUnifiedTopology: true, -}); - -const db = mongoose.connection; - -const handleOpen = () => console.log("โœ… Connected to DB"); -const handleError = (error) => console.log(`โŒ Error on DB Connection:${error}`); - -db.once("open", handleOpen); -db.on("error", handleError); \ No newline at end of file diff --git a/index.js b/index.js deleted file mode 100644 index d70fb96..0000000 --- a/index.js +++ /dev/null @@ -1,46 +0,0 @@ -const express=require('express'); -const path=require('path'); -const compression=require('compression'); -const cors=require('cors'); -const methodOverride = require('method-override'); -const webSocket = require('./src/socket'); -require('dotenv').config(); - -var db = require('./db') - -const app=express(); - - -app.set('view engine','ejs'); -app.set('views',path.join(__dirname,'views')); -app.use(express.static(path.join(__dirname,'public'))); -app.use(express.static('uploads')); -app.use(compression()); -app.use(express.json()); -app.use(express.urlencoded({extended: true})); -app.use(methodOverride()); -app.use(cors()); - -require('./src/routers/chatRouter')(app); -require('./src/routers/authRouter')(app); -require('./src/routers/profileRouter')(app); -require('./src/routers/postRouter')(app); -require('./src/routers/userRouter')(app); - -app.get('/',(req,res)=>{ - return res.send("hello developers"); -}); - -app.use((err,req,res,next)=>{ - if(!err.status){ - return res.json({ - code:500, - success:false, - message:'์„œ๋ฒ„ ์—๋Ÿฌ' - }); - } - }); - -const server=app.listen(process.env.PORT); - -webSocket(server, app);