From b852a3fa633034bc81a149f4613bb9f1bc0b50e9 Mon Sep 17 00:00:00 2001 From: Bachta96 <72979200+Bachta96@users.noreply.github.com> Date: Fri, 7 May 2021 19:07:38 +0100 Subject: [PATCH] Add files via upload --- auth.js | 26 ++++++++ database.js | 179 ++++++++++++++++++++++++++++++++++++++++++++++++++++ error.js | 23 +++++++ 3 files changed, 228 insertions(+) create mode 100644 auth.js create mode 100644 database.js create mode 100644 error.js diff --git a/auth.js b/auth.js new file mode 100644 index 0000000..149c924 --- /dev/null +++ b/auth.js @@ -0,0 +1,26 @@ + +require('dotenv').config({path: "./.env"}) +const jwt = require ('jsonwebtoken') +const { ErrorHandler}= require('./error') + //TOKEN VERIF +function authentificateToken (req,res,next) { + + const authHeader = req.headers['authorization'] + const token = authHeader && authHeader.split(' ')[1] + if(!token ) { + next( new ErrorHandler(401, "Unauthorized")); + return; + } + jwt.verify(token,process.env.ACCESS_TOKEN_SECRET,(err,decoded)=>{ + if(err) return res.status(403).json({"status": "error", "message": "Unauthorized"}); + req.body.id = decoded.id; + }) + next(); +} + + + + +module.exports = { + authentificateToken, +} \ No newline at end of file diff --git a/database.js b/database.js new file mode 100644 index 0000000..02dd8e1 --- /dev/null +++ b/database.js @@ -0,0 +1,179 @@ +const mysql = require ('mysql'); +const bcrypt = require('bcrypt') +//connect to database +const db = mysql.createConnection({ + host : process.env.DATABASE_HOST, + user : process.env.DATABASE_USER, + password : process.env.DATABASE_PASSWORD , + database : process.env.DATABASE_NAME, + +}) + +db.connect((err)=>{ + const prompt = err ? err.code : "MYSQL Connected" + console.log(prompt); +}) + + +function queryUserEmail(email,callback){ + db.query("SELECT * FROM "+ process.env.DATABASE_USER_TABLE+" WHERE email = ?" ,[email], async (err,resu)=>{ + callback(err,resu); + }) +} +function queryUserId(id,callback){ + db.query("SELECT * FROM "+ process.env.DATABASE_USER_TABLE+" WHERE id = ?" ,[id], async (err,resu)=>{ + callback(err,resu); + }) +} + +function insertUser(user,callback){ + db.query('INSERT into '+process.env.DATABASE_USER_TABLE+' SET ?', { + user_name : user.user_name , + email : user.email , + password : bcrypt.hashSync(user.password,12) , + + },(err,resu)=>{ + callback(err,resu); + }) +} + +function querylistsUserId(user_id,callback){ + db.query("SELECT * FROM "+ process.env.DATABASE_LISTS_TABLE+" WHERE user_id = ?" ,[user_id], async (err,resu)=>{ + callback(err,resu); + }) +} +function insertList (list,callback){ + let listObject = { + name : list.name , + user_id : list.user_id, + created_at : getCurrentDate(), + updated_at : getCurrentDate() + } + db.query('INSERT into '+process.env.DATABASE_LISTS_TABLE+' SET ?',[listObject], (err,resu)=>{ + callback(err,listObject); +}) + +} +function getCurrentDate (){ +var today = new Date(); +var dd = String(today.getDate()).padStart(2, '0'); +var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0! +var yyyy = today.getFullYear(); + +today = mm + '/' + dd + '/' + yyyy; +return today; +} + +function modifyList(params, callback){ + db.query('UPDATE '+ process.env.DATABASE_LISTS_TABLE+ ' SET name = ? WHERE id = ? AND user_id = ? ', [params.name,params.list_id,params.user_id], (err,resu)=>{ + callback(err,resu); + }) +} + +function deleteList(params,callback){ + db.query('DELETE FROM '+ process.env.DATABASE_LISTS_TABLE+ ' WHERE id = ? AND user_id', [params.list_id,params.user_id], (err,resu)=>{ + callback(err,resu); + }) +} +function queryItemsUserId(user_id,callback){ + db.query('SELECT * FROM '+ process.env.DATABASE_ITEMS_TABLE+ ' WHERE user_id = ? ', [user_id] ,(err,resu)=>{ + callback(err,resu); + }) +} +function insertItem (params,callback){ + let itemObject = { + name : params.name , + user_id : params.id, + image : params.image, + note : params.note, + category_id : params.category_id, + created_at : getCurrentDate(), + updated_at : getCurrentDate() +} + db.query('INSERT into '+process.env.DATABASE_ITEMS_TABLE+' SET ?',[itemObject], (err,resu)=>{ + callback(err,itemObject); + }) +} + +function modifyItem(params, callback){ + db.query('UPDATE '+ process.env.DATABASE_ITEMS_TABLE+ ' SET name = ? , image = ? , category_id = ? , note = ? , updated_at = ? WHERE id = ? ', [params.name,params.image,params.category_id,params.note,getCurrentDate(), params.item_id], (err,resu)=>{ + callback(err,resu); + }) +} + +function queryCategories(user_id,callback){ + db.query('SELECT * FROM '+ process.env.DATABASE_CATEGORIES_TABLE+ ' WHERE user_id = ? ', [user_id] ,(err,resu)=>{ + callback(err,resu); + }) +} + +function insertCategory(params,callback){ + let categoryObject = { + name : params.name , + user_id : params.id, + created_at : getCurrentDate(), + updated_at : getCurrentDate() + } + db.query('INSERT into '+process.env.DATABASE_CATEGORIES_TABLE+' SET ?',[categoryObject], (err,resu)=>{ + callback(err,categoryObject); + }) + +} + +function updateCategory(params,callback){ + db.query('UPDATE '+ process.env.DATABASE_CATEGORIES_TABLE+ ' SET name = ? , updated_at = ? WHERE id = ? ', [params.name, getCurrentDate(),params.category_id], (err,resu)=>{ + callback(err,resu); + }) +} + +function deleteCategory(category_id,callback){ + db.query('DELETE FROM '+ process.env.DATABASE_CATEGORIES_TABLE+ ' WHERE id = ? ', [category_id,], (err,resu)=>{ + callback(err,resu); + }) +} + + +function queryItemsByForeignKeys(params,callback){ + db.query('SELECT * FROM '+ process.env.DATABASE_ITEMS_TABLE+ ' WHERE user_id = ? AND list_id = ? ', [params.id, params.list_id] ,(err,resu)=>{ + callback(err,resu); + }) +} + + +function modifyItemsByList(params,callback){ + db.query('UPDATE '+ process.env.DATABASE_ITEMS_TABLE+ ' SET list_id = ? WHERE id = ? ', [params.list_id,params.item_id], (err,resu)=>{ + callback(err,resu); + }) +} + +function updateFullItem (params,callback){ + db.query('UPDATE '+ process.env.DATABASE_ITEMS_TABLE+ ' SET list_id = ? , name = ? , image = ? , category_id = ? , note = ? , updated_at = ? WHERE id = ? ', [params.list_id,params.name,params.image,params.category_id,params.note,getCurrentDate(),params.item_id], (err,resu)=>{ + callback(err,resu); + }) +} +function deleteItem(item_id,callback){ + db.query('DELETE FROM '+ process.env.DATABASE_ITEMS_TABLE+ ' WHERE id = ? ', [item_id], (err,resu)=>{ + callback(err,resu); + }) +} + +module.exports ={ + deleteItem, + updateFullItem, + modifyItemsByList, + queryItemsByForeignKeys, + deleteCategory, +updateCategory, +insertCategory, +queryCategories, +modifyItem, + insertItem, + queryItemsUserId, + deleteList, + modifyList, + queryUserEmail, + insertUser, + queryUserId, + querylistsUserId, + insertList +} diff --git a/error.js b/error.js new file mode 100644 index 0000000..e676fd7 --- /dev/null +++ b/error.js @@ -0,0 +1,23 @@ +class ErrorHandler { + constructor (status,message){ + this.status = status || 500; + this.message = message; + } + +} + +function handleError (err,req,res,next) { + const {status,message} = err ; + console.log('[ERROR] : '+ err.status) + return res.status(status).json({ + status : "Error", + Code : status, + message : message , + }) + +} + +module.exports = { + ErrorHandler, + handleError +} \ No newline at end of file