From 10cd0d205b809b947004bb8d157549f11740863d Mon Sep 17 00:00:00 2001 From: kaydee0502 Date: Thu, 7 Oct 2021 22:05:33 +0530 Subject: [PATCH 1/5] folder and snippet index --- app.js | 21 +++++++++++++-------- middleware/userLogin.js | 17 ++++++----------- model/user_model.js | 3 ++- routes/folder.js | 38 ++++++++++++++++++++++++++++++++++++++ routes/snippets.js | 39 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 98 insertions(+), 20 deletions(-) create mode 100644 routes/folder.js create mode 100644 routes/snippets.js diff --git a/app.js b/app.js index e9e55a2..75a59b6 100644 --- a/app.js +++ b/app.js @@ -2,17 +2,22 @@ const express = require('express'); const cookieParser = require('cookie-parser'); const logger = require('morgan'); -const indexRouter = require('./routes/index'); -const usersRouter = require('./routes/users'); +var indexRouter = require('./routes/index') +var usersRouter = require('./routes/users') +var folderRouter = require('./routes/folder') +var snippetsRouter = require('./routes/snippets') const app = express(); -app.use(logger('dev')); -app.use(express.json()); -app.use(express.urlencoded({ extended: false })); -app.use(cookieParser()); -app.use('/', indexRouter); -app.use('/api/v1/users', usersRouter); +app.use(logger('dev')) +app.use(express.json()) +app.use(express.urlencoded({ extended: false })) +app.use(cookieParser()) +app.use('/', indexRouter) +app.use('/api/v1/users', usersRouter) +app.use('/api/v1/folder', folderRouter) +app.use('/api/v1/snippets', snippetsRouter) + // catch 404 and forward to error handler diff --git a/middleware/userLogin.js b/middleware/userLogin.js index 7b28b02..43ee083 100644 --- a/middleware/userLogin.js +++ b/middleware/userLogin.js @@ -14,18 +14,13 @@ const User = db.model('User', userSchema); * @description returns token on success * */ -exports.userLogin = async (req, res) => { +exports.userLogin = async (req, res, next) => { + const { user_name, email, password } = req.body + const user_detail = user_name || email try { - const { loginDetails, password } = req.body; - if (!loginDetails || !password) throw new CustomError(402, 'Bad Request'); - const user = await User.find({ - $or: [ - { user_name: loginDetails.toLowerCase() }, - { email: loginDetails.toLowerCase() }, - ], - }); - if (!user[0]) throw new CustomError(402, 'Invalid Login Credentials'); - const isPasswordCorrect = bcrypt.compareSync(password, user[0].password); + const user = await User.find({$or:[{user_name: user_detail.toLowerCase()}, {email: user_detail.toLowerCase()}]}); + if (!user[0]) throw new Error(`User doesn't exist`) + const isPasswordCorrect = bcrypt.compareSync(password, user[0].password) if (isPasswordCorrect) { const token = generateAccessToken(user[0]); return res.status(200).json({ success: true, auth_token: token }); diff --git a/model/user_model.js b/model/user_model.js index f746138..b4014b7 100644 --- a/model/user_model.js +++ b/model/user_model.js @@ -9,7 +9,8 @@ const userSchema = new Schema({ user_name: String, email: String, password: String, - folders: [folderSchema], + user_type: {type: String, enum:["user", "admin"], default: "user"}, + folders: [folderSchema] }); module.exports = userSchema; diff --git a/routes/folder.js b/routes/folder.js new file mode 100644 index 0000000..32e2c33 --- /dev/null +++ b/routes/folder.js @@ -0,0 +1,38 @@ +var authenticateToken = require('../middleware/tokenAuthenticate') +var express = require('express') +var router = express.Router() +const db = require('../db/mongo') +const userSchema = require('../model/user_model') +const folderSchema = require('../model/folder_model') +const { initialValidation } = require('../middleware/initialValidation') +const { userRegister } = require('../middleware/userRegister') +const { userLogin } = require('../middleware/userLogin') + + +var userModel = db.model('user', userSchema) +var folderModel = db.model('folder', folderSchema) + +/* GET all folder. */ +router.get('/', authenticateToken, async function (req, res, next) { + let current_user = await userModel.findOne({_id: req.user.userId}) + let folders; + if (current_user.user_type === "admin"){ + userModel.find({}, (err, data) => { + if (err) { + res.status(500).send({"error": err}) + } + else{ + folders = [].concat(...data.map((e) => { + return e.folders + })) + res.send(folders) + } + }) + } + else{ + res.send(current_user.folders) + } +}); + + +module.exports = router diff --git a/routes/snippets.js b/routes/snippets.js new file mode 100644 index 0000000..35cc763 --- /dev/null +++ b/routes/snippets.js @@ -0,0 +1,39 @@ +var authenticateToken = require('../middleware/tokenAuthenticate') +var express = require('express') +var router = express.Router() +const db = require('../db/mongo') +const userSchema = require('../model/user_model') +const folderSchema = require('../model/folder_model') +const { initialValidation } = require('../middleware/initialValidation') +const { userRegister } = require('../middleware/userRegister') +const { userLogin } = require('../middleware/userLogin') +/* GET home page. */ +var userModel = db.model('user', userSchema) + +/* GET all folder. */ +router.get('/', authenticateToken, async function (req, res, next) { + let current_user = await userModel.findOne({_id: req.user.userId}) + let snippets; + if (current_user.user_type === "admin"){ + userModel.find({}, (err, data) => { + if (err) { + res.status(500).send({"error": err}) + } + else{ + let folders = [].concat(...data.map((e) => { + return e.folders + })) + + snippets = [].concat(...folders.map((e) => { + return e.snippets + })) + res.send(snippets) + } + }) + } + else{ + res.send(current_user.folders) + } +}); + +module.exports = router From 64b905cf187ed63ed3a713796ad137fc4e4934dd Mon Sep 17 00:00:00 2001 From: LakshitXD Date: Tue, 12 Oct 2021 18:10:46 +0530 Subject: [PATCH 2/5] =?UTF-8?q?=E2=9C=A8=20mongo=20setup=20dev=20and=20loc?= =?UTF-8?q?al?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/mongo.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/db/mongo.js b/db/mongo.js index 68e598c..c4f8120 100644 --- a/db/mongo.js +++ b/db/mongo.js @@ -3,7 +3,6 @@ const mongoose = require('mongoose'); const { MONGO_URI, NODE_ENV } = require('../config'); //Set up default mongoose connection -console.log(process.env.NODE_ENV); if (NODE_ENV === 'development') { mongoose.connect('mongodb://localhost:27017/knipper', { @@ -11,7 +10,7 @@ if (NODE_ENV === 'development') { useUnifiedTopology: true, }); } -if (NODE_ENV === 'production' || MONGO_URI) { +else if (NODE_ENV === 'production' || MONGO_URI) { mongoose.connect(MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true, From afbf61531c4249ce222be7ddeb6c2443b95167f3 Mon Sep 17 00:00:00 2001 From: LakshitXD Date: Tue, 12 Oct 2021 18:13:35 +0530 Subject: [PATCH 3/5] =?UTF-8?q?=F0=9F=9A=A8=20fixed=20es=20lints?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.js | 8 ++++---- middleware/userLogin.js | 2 +- routes/folder.js | 23 +++++++---------------- routes/snippets.js | 27 +++++++++------------------ 4 files changed, 21 insertions(+), 39 deletions(-) diff --git a/app.js b/app.js index 75a59b6..b965991 100644 --- a/app.js +++ b/app.js @@ -2,10 +2,10 @@ const express = require('express'); const cookieParser = require('cookie-parser'); const logger = require('morgan'); -var indexRouter = require('./routes/index') -var usersRouter = require('./routes/users') -var folderRouter = require('./routes/folder') -var snippetsRouter = require('./routes/snippets') +const indexRouter = require('./routes/index') +const usersRouter = require('./routes/users') +const folderRouter = require('./routes/folder') +const snippetsRouter = require('./routes/snippets') const app = express(); diff --git a/middleware/userLogin.js b/middleware/userLogin.js index 43ee083..c4043d2 100644 --- a/middleware/userLogin.js +++ b/middleware/userLogin.js @@ -14,7 +14,7 @@ const User = db.model('User', userSchema); * @description returns token on success * */ -exports.userLogin = async (req, res, next) => { +exports.userLogin = async (req, res) => { const { user_name, email, password } = req.body const user_detail = user_name || email try { diff --git a/routes/folder.js b/routes/folder.js index 32e2c33..cd58ca6 100644 --- a/routes/folder.js +++ b/routes/folder.js @@ -1,20 +1,13 @@ -var authenticateToken = require('../middleware/tokenAuthenticate') -var express = require('express') -var router = express.Router() +const authenticateToken = require('../middleware/tokenAuthenticate') +const express = require('express') +const router = express.Router() const db = require('../db/mongo') const userSchema = require('../model/user_model') -const folderSchema = require('../model/folder_model') -const { initialValidation } = require('../middleware/initialValidation') -const { userRegister } = require('../middleware/userRegister') -const { userLogin } = require('../middleware/userLogin') - - -var userModel = db.model('user', userSchema) -var folderModel = db.model('folder', folderSchema) +const userModel = db.model('user', userSchema) /* GET all folder. */ -router.get('/', authenticateToken, async function (req, res, next) { - let current_user = await userModel.findOne({_id: req.user.userId}) +router.get('/', authenticateToken, async (req, res) => { + const current_user = await userModel.findOne({_id: req.user.userId}) let folders; if (current_user.user_type === "admin"){ userModel.find({}, (err, data) => { @@ -22,9 +15,7 @@ router.get('/', authenticateToken, async function (req, res, next) { res.status(500).send({"error": err}) } else{ - folders = [].concat(...data.map((e) => { - return e.folders - })) + folders = [].concat(...data.map((e) => e.folders)) res.send(folders) } }) diff --git a/routes/snippets.js b/routes/snippets.js index 35cc763..2028c36 100644 --- a/routes/snippets.js +++ b/routes/snippets.js @@ -1,18 +1,13 @@ -var authenticateToken = require('../middleware/tokenAuthenticate') -var express = require('express') -var router = express.Router() +const authenticateToken = require('../middleware/tokenAuthenticate') +const express = require('express') +const router = express.Router() const db = require('../db/mongo') -const userSchema = require('../model/user_model') -const folderSchema = require('../model/folder_model') -const { initialValidation } = require('../middleware/initialValidation') -const { userRegister } = require('../middleware/userRegister') -const { userLogin } = require('../middleware/userLogin') -/* GET home page. */ -var userModel = db.model('user', userSchema) +const userSchema = require('../model/user_model')/* GET home page. */ +const userModel = db.model('user', userSchema) /* GET all folder. */ -router.get('/', authenticateToken, async function (req, res, next) { - let current_user = await userModel.findOne({_id: req.user.userId}) +router.get('/', authenticateToken, async (req, res) => { + const current_user = await userModel.findOne({_id: req.user.userId}) let snippets; if (current_user.user_type === "admin"){ userModel.find({}, (err, data) => { @@ -20,13 +15,9 @@ router.get('/', authenticateToken, async function (req, res, next) { res.status(500).send({"error": err}) } else{ - let folders = [].concat(...data.map((e) => { - return e.folders - })) + const folders = [].concat(...data.map((e) => e.folders)) - snippets = [].concat(...folders.map((e) => { - return e.snippets - })) + snippets = [].concat(...folders.map((e) => e.snippets)) res.send(snippets) } }) From 3c61ba2741bac336a66db6d67d362fb232289889 Mon Sep 17 00:00:00 2001 From: kaydee0502 Date: Sun, 31 Oct 2021 00:57:57 +0530 Subject: [PATCH 4/5] routes lint fix --- middleware/userLogin.js | 15 +++++++---- routes/folder.js | 56 ++++++++++++++++++----------------------- routes/snippets.js | 56 ++++++++++++++++++----------------------- 3 files changed, 60 insertions(+), 67 deletions(-) diff --git a/middleware/userLogin.js b/middleware/userLogin.js index 43ee083..d78d439 100644 --- a/middleware/userLogin.js +++ b/middleware/userLogin.js @@ -15,12 +15,17 @@ const User = db.model('User', userSchema); * */ exports.userLogin = async (req, res, next) => { - const { user_name, email, password } = req.body - const user_detail = user_name || email + const { user_name, email, password } = req.body; + const user_detail = user_name || email; try { - const user = await User.find({$or:[{user_name: user_detail.toLowerCase()}, {email: user_detail.toLowerCase()}]}); - if (!user[0]) throw new Error(`User doesn't exist`) - const isPasswordCorrect = bcrypt.compareSync(password, user[0].password) + const user = await User.find({ + $or: [ + { user_name: user_detail.toLowerCase() }, + { email: user_detail.toLowerCase() }, + ], + }); + if (!user[0]) throw new Error(`User doesn't exist`); + const isPasswordCorrect = bcrypt.compareSync(password, user[0].password); if (isPasswordCorrect) { const token = generateAccessToken(user[0]); return res.status(200).json({ success: true, auth_token: token }); diff --git a/routes/folder.js b/routes/folder.js index 32e2c33..1c5bf02 100644 --- a/routes/folder.js +++ b/routes/folder.js @@ -1,38 +1,32 @@ -var authenticateToken = require('../middleware/tokenAuthenticate') -var express = require('express') -var router = express.Router() -const db = require('../db/mongo') -const userSchema = require('../model/user_model') -const folderSchema = require('../model/folder_model') -const { initialValidation } = require('../middleware/initialValidation') -const { userRegister } = require('../middleware/userRegister') -const { userLogin } = require('../middleware/userLogin') +const authenticateToken = require('../middleware/tokenAuthenticate'); +const express = require('express'); +const router = express.Router(); +const db = require('../db/mongo'); +const userSchema = require('../model/user_model'); +const folderSchema = require('../model/folder_model'); +const { initialValidation } = require('../middleware/initialValidation'); +const { userRegister } = require('../middleware/userRegister'); +const { userLogin } = require('../middleware/userLogin'); - -var userModel = db.model('user', userSchema) -var folderModel = db.model('folder', folderSchema) +const userModel = db.model('user', userSchema); +const folderModel = db.model('folder', folderSchema); /* GET all folder. */ -router.get('/', authenticateToken, async function (req, res, next) { - let current_user = await userModel.findOne({_id: req.user.userId}) +router.get('/', authenticateToken, async (req, res, next) => { + const current_user = await userModel.findOne({ _id: req.user.userId }); let folders; - if (current_user.user_type === "admin"){ - userModel.find({}, (err, data) => { - if (err) { - res.status(500).send({"error": err}) - } - else{ - folders = [].concat(...data.map((e) => { - return e.folders - })) - res.send(folders) - } - }) - } - else{ - res.send(current_user.folders) + if (current_user.user_type === 'admin') { + userModel.find({}, (err, data) => { + if (err) { + res.status(500).send({ error: err }); + } else { + folders = [].concat(...data.map((e) => e.folders)); + res.send(folders); + } + }); + } else { + res.send(current_user.folders); } }); - -module.exports = router +module.exports = router; diff --git a/routes/snippets.js b/routes/snippets.js index 35cc763..a094036 100644 --- a/routes/snippets.js +++ b/routes/snippets.js @@ -1,39 +1,33 @@ -var authenticateToken = require('../middleware/tokenAuthenticate') -var express = require('express') -var router = express.Router() -const db = require('../db/mongo') -const userSchema = require('../model/user_model') -const folderSchema = require('../model/folder_model') -const { initialValidation } = require('../middleware/initialValidation') -const { userRegister } = require('../middleware/userRegister') -const { userLogin } = require('../middleware/userLogin') +const authenticateToken = require('../middleware/tokenAuthenticate'); +const express = require('express'); +const router = express.Router(); +const db = require('../db/mongo'); +const userSchema = require('../model/user_model'); +const folderSchema = require('../model/folder_model'); +const { initialValidation } = require('../middleware/initialValidation'); +const { userRegister } = require('../middleware/userRegister'); +const { userLogin } = require('../middleware/userLogin'); /* GET home page. */ -var userModel = db.model('user', userSchema) +const userModel = db.model('user', userSchema); /* GET all folder. */ -router.get('/', authenticateToken, async function (req, res, next) { - let current_user = await userModel.findOne({_id: req.user.userId}) +router.get('/', authenticateToken, async (req, res, next) => { + const current_user = await userModel.findOne({ _id: req.user.userId }); let snippets; - if (current_user.user_type === "admin"){ - userModel.find({}, (err, data) => { - if (err) { - res.status(500).send({"error": err}) - } - else{ - let folders = [].concat(...data.map((e) => { - return e.folders - })) + if (current_user.user_type === 'admin') { + userModel.find({}, (err, data) => { + if (err) { + res.status(500).send({ error: err }); + } else { + const folders = [].concat(...data.map((e) => e.folders)); - snippets = [].concat(...folders.map((e) => { - return e.snippets - })) - res.send(snippets) - } - }) - } - else{ - res.send(current_user.folders) + snippets = [].concat(...folders.map((e) => e.snippets)); + res.send(snippets); + } + }); + } else { + res.send(current_user.folders); } }); -module.exports = router +module.exports = router; From d04d410148caf260cb2f52b5ef85039216a25d06 Mon Sep 17 00:00:00 2001 From: kaydee0502 Date: Sun, 31 Oct 2021 01:08:18 +0530 Subject: [PATCH 5/5] more lint fixes --- middleware/userLogin.js | 2 +- routes/folder.js | 8 +------- routes/snippets.js | 6 +----- 3 files changed, 3 insertions(+), 13 deletions(-) diff --git a/middleware/userLogin.js b/middleware/userLogin.js index d78d439..388fbfa 100644 --- a/middleware/userLogin.js +++ b/middleware/userLogin.js @@ -14,7 +14,7 @@ const User = db.model('User', userSchema); * @description returns token on success * */ -exports.userLogin = async (req, res, next) => { +exports.userLogin = async (req, res) => { const { user_name, email, password } = req.body; const user_detail = user_name || email; try { diff --git a/routes/folder.js b/routes/folder.js index 216a233..b794da6 100644 --- a/routes/folder.js +++ b/routes/folder.js @@ -3,17 +3,11 @@ const express = require('express'); const router = express.Router(); const db = require('../db/mongo'); const userSchema = require('../model/user_model'); -const folderSchema = require('../model/folder_model'); -const { initialValidation } = require('../middleware/initialValidation'); -const { userRegister } = require('../middleware/userRegister'); -const { userLogin } = require('../middleware/userLogin'); const userModel = db.model('user', userSchema); -const folderModel = db.model('folder', folderSchema); -const userModel = db.model('user', userSchema); /* GET all folder. */ -router.get('/', authenticateToken, async (req, res, next) => { +router.get('/', authenticateToken, async (req, res) => { const current_user = await userModel.findOne({ _id: req.user.userId }); let folders; if (current_user.user_type === 'admin') { diff --git a/routes/snippets.js b/routes/snippets.js index a094036..62ca823 100644 --- a/routes/snippets.js +++ b/routes/snippets.js @@ -3,15 +3,11 @@ const express = require('express'); const router = express.Router(); const db = require('../db/mongo'); const userSchema = require('../model/user_model'); -const folderSchema = require('../model/folder_model'); -const { initialValidation } = require('../middleware/initialValidation'); -const { userRegister } = require('../middleware/userRegister'); -const { userLogin } = require('../middleware/userLogin'); /* GET home page. */ const userModel = db.model('user', userSchema); /* GET all folder. */ -router.get('/', authenticateToken, async (req, res, next) => { +router.get('/', authenticateToken, async (req, res) => { const current_user = await userModel.findOne({ _id: req.user.userId }); let snippets; if (current_user.user_type === 'admin') {