Commit f8ec4416 authored by shyam sathali's avatar shyam sathali

project files uploaded..

parent ad8ef877
const express = require('express');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
const passport = require('passport');
const cors = require('cors');
//setting up app port
const port = process.env.PORT | 3000;
const app = express();
// getting other route modules
const todos = require('./routes/api/todos');
const auth = require('./routes/api/auth');
//adding body-parser middlewares to the app
app.use(bodyParser.urlencoded({extended:false}));
app.use(bodyParser.json());
//cors middle ware
app.use(cors());
// app.use(function (request, response, next) {
// response.header("Access-Control-Allow-Origin", "*");
// response.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
// next();
// });
//adding passport middleware
app.use(passport.initialize())
require('./strategy/jsonwtstrategy')(passport)
//getting the mongodb details
const db = require('./setup/mongoose-connection').mongoURL;
mongoose.connect(db,{
useNewUrlParser: true,
useUnifiedTopology: true,
useFindAndModify: false,
useCreateIndex: true
}).then(()=>{
console.log("Connected to the mongodb");
}).catch((err)=>{
console.log("Error is: "+err);
})
//sample api for run testing
app.get('/',(req,res)=>{
res.send("Hello, Welcome to TODO... .")
})
// Actual application API's
app.use('/api/todos',todos);
app.use('/api/auth',auth);
app.listen(port,()=>{
console.log(`Server is running at: http://localhost:${port}`);
})
const mongoose = require('mongoose');
let Schema = mongoose.Schema;
let PersonSchema = new Schema({
name:{
type:String,
required:true
},
email:{
type:String,
required:true
},
password:{
type:String,
required:true,
min:6
}
})
module.exports = Person = mongoose.model("people",PersonSchema);
\ No newline at end of file
const mongoose = require('mongoose');
let Schema = mongoose.Schema;
let TodoSchema = new Schema({
title:{
type:String,
required:true,
},
text:{
type:String,
required:true
},
status:{
type:String,
required:true
}
})
module.exports = todo = mongoose.model('todos',TodoSchema);
This diff is collapsed.
{
"name": "to-do",
"version": "1.0.0",
"description": "it is a simple todo's application api's project",
"main": "index.js",
"scripts": {
"test": "fdjs",
"start": "nodemon index.js"
},
"author": "aravind",
"license": "ISC",
"dependencies": {
"bcrypt": "^5.0.1",
"body-parser": "^1.19.0",
"cors": "^2.8.5",
"express": "^4.17.1",
"jsonwebtoken": "^8.5.1",
"mongoose": "^5.12.14",
"nodemon": "^2.0.7",
"passport": "^0.4.1",
"passport-jwt": "^4.0.0",
"validator": "^13.6.0"
}
}
const express = require('express');
const router = express.Router();
const bcrypt = require('bcrypt');
const key = require('../../setup/mongoose-connection');
const jwt = require('jsonwebtoken');
const passport = require('passport');
//Getting person schema
const Person = require('../../models/person');
//@Type POST
//@route /api/auth/register
//@desc route for register user
//@access PUBLIC
router.post('/register',(req,res)=>{
Person.findOne({email:req.body.email}).then(user=>{
if(user){
res.status(400).json({
message:"Already you registered with this email, please login..!"
})
}else{
let user = new Person({
name:req.body.name,
email:req.body.email,
password:req.body.password
});
//encrypt the password using bcrypt
bcrypt.hash(user.password, 10, (err,hash)=>{
if(err) throw err;
user.password = hash;
user.save()
.then(user=>{
if(user){
res.json({
message:"You have been registed successfully..!",
success:true,
data:user
})
}else{
res.json({
message:"something went wrong",
success:false
})
}
})
.catch(err=>{
console.log(`Error in saving the user while registering is :${err}`);
})
})
}
}).catch(err=>{
console.log(`Error in registering the user is : ${err}`);
})
});
//@Type POST
//@route /api/auth/login
//@desc route for login to user
//@access PUBLIC
router.post('/login',(req,res)=>{
Person.findOne({email:req.body.email}).then(user=>{
if(user){
bcrypt.compare(req.body.password, user.password).then(isTrue=>{
if(isTrue){
let payload = {
id:user.id,
email:user.email,
password:user.password
}
//authenticate and Generating the token
jwt.sign(payload, key.secret,{expiresIn:300000},(err,token)=>{
if(err) throw err
res.json({
message:"You have logged in successfully..!",
success:true,
token:`Bearer ${token}`
})
})
}else{
res.json({
message:"Password incorrect"
})
}
})
}else{
res.status(404).json({
message:"You don't have account with this email",
success:false
})
}
}).catch(err=>{
console.log(`Error in registering the user is : ${err}`);
})
});
router.get('/user', passport.authenticate('jwt',{session:false}),(req,res)=>{
res.json(req.user);
})
module.exports = router;
const express = require('express');
const router = express.Router();
const passport = require('passport');
//Todo Schema
const Todo = require('../../models/todo');
//For testing purpose
router.get('/test',(req, res)=>{
res.json("Welcome To api/todos route");
})
//@Type POST
//@route /api/todos/save
//@desc route for saving todo
//@access PUBLIC
router.post('/save',(req,res)=>{
const todo = new Todo({
title:req.body.title,
text:req.body.text,
status:req.body.status
})
todo.save()
.then(todo=>{
res.json({
message:"successfully saved data",
success:true,
data:todo
})
}).catch(err=>{
console.log(`Error while saving todo : ${err}`);
})
});
//@Type GET
//@route /api/todos/alltodos
//@desc route for getting all todos
//@access PUBLIC
router.get('/all',(req,res)=>{
Todo.find().then(todos=>{
if(todos.length===0){
res.json({
message:"We don't have any todo's..!",
success:false,
data:todos
})
}else{
res.json({
message:"We have your todo's..!",
success:true,
data:todos
})
}
}).catch(err=>{
console.log(`Error while fetching todos is: ${err}`);
})
});
//@Type GET
//@route /api/todos/:id
//@desc route for getting todo by its id
//@access PUBLIC
router.get('/:id',(req, res)=>{
Todo.findById(req.params.id).then(todo=>{
if(todo){
res.json({
message:"Data fetched successfully",
success:true,
data:todo
})
}else{
res.json({
message:"We don't have the record",
success:false,
data:null
})
}
}).catch(err=>{
console.log(`Error getting todo is: ${err}`);
})
})
//@Type PUT
//@route /api/todos/update/:id
//@desc route for updating todo by it's id
//@access PUBLIC
router.put('/update/:id',(req, res)=>{
Todo.findById(req.params.id).then(todo=>{
if(todo){
let updatedTodo = {};
//console.log(req.body.title);
updatedTodo.title = !!req.body.title?req.body.title:todo.title;
// console.log(`Updated title : ${updatedTodo.title}`);
// console.log(`existed title : ${todo.title}`);
updatedTodo.text = !!req.body.text ?req.body.text : todo.text;
updatedTodo.status = !!req.body.status ? req.body.status : todo.status;
Todo.findByIdAndUpdate(req.params.id,{$set:updatedTodo},{new:true}).then(todo=>{
res.json({
message:"Successfully updated..",
success:true,
data:todo
})}).catch(err=>{
console.log(`Error while updating todo is : ${err}`);
})
}else{
res.json({
message:"we don't have record to update..!",
success:false,
data:null
})
}
}).catch(err=>console.log(`Error finding element to update is: ${err}`));
})
//@Type DELETE
//@route /api/todos/delete/:id
//@desc route for deleting todo by it's id
//@access PUBLIC
router.delete('/delete/:id', (req, res)=>{
Todo.findByIdAndDelete(req.params.id).then(successRes=>{
if(!successRes){
res.json({
message:"We don't have record to delete..!",
success:false,
data:null
})
}else{
res.json({
message:"Successfully deleted todo",
success:true,
data:successRes
})
}
}).catch(err=>{
console.log(`Error deleting todo is: ${err}`);
})
})
//@Type DELETE
//@route /api/todos/deleteall
//@desc route for deleting all todos
//@access PUBLIC
router.delete('/deleteall', (req, res)=>{
Todo.deleteMany().then((resp)=>{
if(resp){
res.json({
message:"We don't have records to wipe up..!",
success:false,
data:null,
})
}else{
res.json(
{
message:"successfully deleted all todos",
success:true,
data:null
}
)
}
}).catch(err=>{
console.log(`Error deleting todo is: ${err}`);
})
});
module.exports = router;
\ No newline at end of file
module.exports = {
mongoURL : 'mongodb+srv://admin:admin@cluster0.ytuez.mongodb.net/tododb?retryWrites=true&w=majority',
secret : 'mystrongkey'
}
\ No newline at end of file
const JwtStrategy = require('passport-jwt').Strategy,
ExtractJwt = require('passport-jwt').ExtractJwt;
const key = require('../setup/mongoose-connection').secret
const Person = require('mongoose').model('people');
var opts = {}
opts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();
opts.secretOrKey = key;
module.exports = passport =>{
passport.use(new JwtStrategy(opts, function(jwt_payload, done) {
Person.findById(jwt_payload.id, function(err, user) {
console.log(jwt_payload.id);
if (err) {
return done(err, false);
}
if (user) {
return done(null, user);
} else {
console.log("null user");
return done(null, false);
// or you could create a new account
}
});
}))
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment