Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions Controllers/auth.js
Original file line number Diff line number Diff line change
@@ -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,
}
179 changes: 179 additions & 0 deletions Controllers/db.js
Original file line number Diff line number Diff line change
@@ -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)=>{
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');
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)=>{
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)=>{
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
}
23 changes: 23 additions & 0 deletions Controllers/error.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
class ErrorHandler {
constructor (status,message){
this.status = status || 500;
this.message = message;
}

}

function handleError (err,req,res) {
const {status,message} = err ;
console.log('[ERROR] : '+ err.status)
return res.status(status).json({
status : "Error",
Code : status,
message : message ,
})

}

module.exports = {
ErrorHandler,
handleError
}
35 changes: 35 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@


const express = require ('express')
const app = express()

const expressValidator = require ('express-validator');
const authController = require ('./Controllers/auth')
const {handleError} = require('./Controllers/error')


//Body access
app.use (express.urlencoded({extended: false}))
app.use(express.json());


//Routes
app.use('/auth',require('./routes/auth.js'));
app.use('/lists',authController.authentificateToken,require('./routes/lists.js'));
app.use('/items',authController.authentificateToken,require('./routes/items.js'));
app.use('/categories',authController.authentificateToken,require('./routes/categories.js'));



//Error Middlemware
app.use(handleError)









app.listen(process.env.PORT);
Loading