|
1 | 1 | const express=require('express'); |
2 | | -const mongooses= require('mongoose'); |
| 2 | +const mongoose= require('mongoose'); |
3 | 3 | const bodyparser=require('body-parser'); |
4 | | -const bcrypt=require('bcrypt'); |
5 | 4 | const cookieParser=require('cookie-parser'); |
6 | 5 | const User=require('./models/user'); |
7 | 6 | const {auth} =require('./middlewares/auth'); |
8 | | -const db=require('./mysetup/myurl').myurl; |
9 | | -const passport=require('passport'); |
10 | | -var saltRouds = 10; |
| 7 | +const db=require('./config/config').get(process.env.NODE_ENV); |
11 | 8 |
|
12 | | -var app=express(); |
| 9 | + |
| 10 | +const app=express(); |
13 | 11 | // app use |
14 | 12 | app.use(bodyparser.urlencoded({extended : false})); |
15 | 13 | app.use(bodyparser.json()); |
16 | | - |
| 14 | +app.use(cookieParser()); |
17 | 15 |
|
18 | 16 | // database connection |
19 | | -mongooses.connect(db).then(()=>{ |
20 | | - console.log('databse is connected'); |
21 | | -}).catch(err=>{ |
22 | | - console.log("err is", err.message); |
| 17 | +mongoose.Promise=global.Promise; |
| 18 | +mongoose.connect(db.DATABASE,{ useNewUrlParser: true,useUnifiedTopology:true },function(err){ |
| 19 | + if(err) console.log(err); |
| 20 | + console.log("database is connected"); |
23 | 21 | }) |
24 | 22 |
|
25 | | -// adding new user (sign-up route) |
26 | 23 |
|
27 | | -app.post('/api/signup',function(req,res){ |
| 24 | +// adding new user (sign-up route) |
| 25 | +app.post('/api/register',function(req,res){ |
28 | 26 | // taking a user |
29 | | - var newUser=new User({ |
30 | | - name:req.body.name, |
31 | | - email: req.body.email, |
32 | | - password: req.body.password, |
33 | | - password2:req.body.password |
34 | | - }); |
35 | | - if(password!=password2) |
36 | | - return res.status(400).json({message: "passwords don't match"}); |
37 | | - |
38 | | - // checking whether user is already registered or not |
39 | | - User.findOne({email: newUser.email},function(err,user){ |
40 | | - if(user) return res.status(400).json({isAuth: false, message: 'user already exist'}); |
| 27 | + const newuser=new User(req.body); |
| 28 | + console.log(newuser); |
41 | 29 |
|
42 | | - //hasing the passwords |
43 | | - bcrypt.hash(newUser.password,saltRouds, function(err,hash){ |
44 | | - if(err) console.log('error is ', err.message); |
45 | | - else{ |
46 | | - newUser.password=hash; |
47 | | - |
48 | | - //saving in the database |
49 | | - newUser.save().then(()=>{ |
50 | | - res.status(200).send(newUser); |
51 | | - }).catch(err=>{ |
52 | | - console.log("error is ", err.message); |
53 | | - }); |
54 | | - } |
55 | | - }); |
56 | | - }); |
| 30 | + if(newuser.password!=newuser.password2)return res.status(400).json({message: "password not match"}); |
| 31 | + |
| 32 | + User.findOne({email:newuser.email},function(err,user){ |
| 33 | + if(user) return res.status(400).json({ auth : false, message :"email exits"}); |
| 34 | + |
| 35 | + newuser.save((err,doc)=>{ |
| 36 | + if(err) {console.log(err); |
| 37 | + return res.status(400).json({ success : false});} |
| 38 | + res.status(200).json({ |
| 39 | + succes:true, |
| 40 | + user : doc |
| 41 | + }); |
| 42 | + }); |
| 43 | + }); |
57 | 44 | }); |
58 | 45 |
|
| 46 | + |
59 | 47 | // login user |
60 | 48 | app.post('/api/login', function(req,res){ |
61 | | - var newUser={}; |
62 | | - newUser.email=req.body.email; |
63 | | - newUser.password=req.body.password |
64 | | - |
65 | | - User.findOne({email: newUser.email},function(err,user){ |
66 | | - // user not found |
67 | | - if(!user) res.status(400).json({isAuth: false, message :'User doesnt exists'}); |
| 49 | + let token=req.cookies.auth; |
| 50 | + User.findByToken(token,(err,user)=>{ |
| 51 | + if(err) return res(err); |
| 52 | + if(user) return res.status(400).json({ |
| 53 | + error :true, |
| 54 | + message:"You are already logged in" |
| 55 | + }); |
| 56 | + |
| 57 | + else{ |
| 58 | + User.findOne({'email':req.body.email},function(err,user){ |
| 59 | + if(!user) return res.json({isAuth : false, message : ' Auth failed ,email not found'}); |
| 60 | + |
| 61 | + user.comparepassword(req.body.password,(err,isMatch)=>{ |
| 62 | + if(!isMatch) return res.json({ isAuth : false,message : "password doesn't match"}); |
68 | 63 |
|
69 | | - //comparing password |
70 | | - bcrypt.compare(newUser.password, user.password, function(err,result){ |
71 | | - if(err) console.log('error is ', err.message); |
72 | | - else if(result==true){ |
73 | | - // passowrd matched |
74 | | - //token genearated |
75 | | - user.generateToken((err,user)=>{ |
| 64 | + user.generateToken((err,user)=>{ |
76 | 65 | if(err) return res.status(400).send(err); |
77 | 66 | res.cookie('auth',user.token).json({ |
78 | 67 | isAuth : true, |
79 | | - id : user._id, |
80 | | - email : user.email |
81 | | - }) |
82 | | - }); |
83 | | - } |
84 | | - else{ |
85 | | - //password does not match |
86 | | - res.status(400).json({isAuth : false, message: 'Password is incorrect'}); |
87 | | - } |
88 | | - }); |
89 | | - |
90 | | - |
91 | | - }).catch(err=>{ |
92 | | - console.log('error is ', err.message); |
| 68 | + id : user._id |
| 69 | + ,email : user.email |
| 70 | + }); |
| 71 | + }); |
| 72 | + }); |
| 73 | + }); |
| 74 | + } |
93 | 75 | }); |
94 | 76 | }); |
95 | 77 |
|
96 | | -// profile |
97 | | -app.get('/api/profile',auth,function(req,res){ |
98 | | - res.status(200).json({ |
99 | | - isAuth: true, |
100 | | - id: req.user._id, |
101 | | - email: req.user.email |
102 | | - }); |
103 | | -}); |
| 78 | +//logout user |
| 79 | + app.get('/api/logout',auth,function(req,res){ |
| 80 | + req.user.deleteToken(req.token,(err,user)=>{ |
| 81 | + if(err) return res.status(400).send(err); |
| 82 | + res.sendStatus(200); |
| 83 | + }); |
104 | 84 |
|
105 | | -//logout a user |
106 | | -app.get('/api/logout',auth,function(req,res){ |
107 | | - req.user.deleteToken(req.token,(err,user)=>{ |
108 | | - if(err) return res.status(400).send(err); |
109 | | - res.sendStatus(200); |
110 | | - }); |
111 | | -}) |
| 85 | + }); |
112 | 86 |
|
| 87 | + // get logged in user |
| 88 | +app.get('/api/profile',auth,function(req,res){ |
| 89 | + res.json({ |
| 90 | + isAuth: true, |
| 91 | + id: req.user._id, |
| 92 | + email: req.user.email, |
| 93 | + name: req.user.firstname + req.user.lastname |
| 94 | + |
| 95 | + }) |
| 96 | +}); |
113 | 97 |
|
114 | 98 |
|
115 | 99 | app.get('/',function(req,res){ |
|
0 commit comments