Skip to content

Commit af034ef

Browse files
committed
new features added
1 parent c9e4524 commit af034ef

File tree

4 files changed

+148
-112
lines changed

4 files changed

+148
-112
lines changed

login , sign-up rest api's/index.js

Lines changed: 67 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -1,115 +1,99 @@
11
const express=require('express');
2-
const mongooses= require('mongoose');
2+
const mongoose= require('mongoose');
33
const bodyparser=require('body-parser');
4-
const bcrypt=require('bcrypt');
54
const cookieParser=require('cookie-parser');
65
const User=require('./models/user');
76
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);
118

12-
var app=express();
9+
10+
const app=express();
1311
// app use
1412
app.use(bodyparser.urlencoded({extended : false}));
1513
app.use(bodyparser.json());
16-
14+
app.use(cookieParser());
1715

1816
// 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");
2321
})
2422

25-
// adding new user (sign-up route)
2623

27-
app.post('/api/signup',function(req,res){
24+
// adding new user (sign-up route)
25+
app.post('/api/register',function(req,res){
2826
// 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);
4129

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+
});
5744
});
5845

46+
5947
// login user
6048
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"});
6863

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)=>{
7665
if(err) return res.status(400).send(err);
7766
res.cookie('auth',user.token).json({
7867
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+
}
9375
});
9476
});
9577

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+
});
10484

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+
});
11286

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+
});
11397

11498

11599
app.get('/',function(req,res){

login , sign-up rest api's/middlewares/auth.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const {User}=require('./../models/user');
1+
const User=require('./../models/user');
22

33
let auth =(req,res,next)=>{
44
let token =req.cookies.auth;
Lines changed: 80 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,106 @@
11
var mongoose=require('mongoose');
2-
const bcrypt =require('bcrypt');
3-
const jwt =require('jsonwebtoken');
4-
const config =require('./../config/config').get(process.env.NODE_ENV);
5-
const UserSchema= mongoose.Schema({
6-
name:{
2+
const jwt=require('jsonwebtoken');
3+
const bcrypt=require('bcrypt');
4+
const confiq=require('../config/config').get(process.env.NODE_ENV);
5+
const salt=10;
6+
7+
const userSchema=mongoose.Schema({
8+
firstname:{
9+
type: String,
10+
required: true,
11+
maxlength: 100
12+
},
13+
lastname:{
714
type: String,
8-
required: true
15+
required: true,
16+
maxlength: 100
917
},
1018
email:{
11-
type:String,
12-
required: true
19+
type: String,
20+
required: true,
21+
trim: true,
22+
unique: 1
1323
},
1424
password:{
1525
type:String,
16-
required: true
26+
required: true,
27+
minlength:8
28+
},
29+
password2:{
30+
type:String,
31+
required: true,
32+
minlength:8
33+
1734
},
35+
token:{
36+
type: String
37+
}
38+
});
39+
// to signup a user
40+
userSchema.pre('save',function(next){
41+
var user=this;
1842

43+
if(user.isModified('password')){
44+
bcrypt.genSalt(salt,function(err,salt){
45+
if(err)return next(err);
46+
47+
bcrypt.hash(user.password,salt,function(err,hash){
48+
if(err) return next(err);
49+
user.password=hash;
50+
user.password2=hash;
51+
next();
52+
})
53+
54+
})
55+
}
56+
else{
57+
next();
58+
}
1959
});
20-
UserSchema.methods.generateToken =function(cb){
60+
61+
//to login
62+
userSchema.methods.comparepassword=function(password,cb){
63+
bcrypt.compare(password,this.password,function(err,isMatch){
64+
if(err) return cb(next);
65+
cb(null,isMatch);
66+
});
67+
}
68+
69+
// generate token
70+
71+
userSchema.methods.generateToken=function(cb){
2172
var user =this;
22-
var token = jwt.sign(user._id.toHexString(),config.SECRET);
23-
24-
user.token =token;
73+
var token=jwt.sign(user._id.toHexString(),confiq.SECRET);
74+
75+
user.token=token;
2576
user.save(function(err,user){
2677
if(err) return cb(err);
2778
cb(null,user);
2879
})
2980
}
3081

82+
// find by token
83+
userSchema.statics.findByToken=function(token,cb){
84+
var user=this;
3185

32-
UserSchema.statics.findByToken = function(token,cb){
33-
var user =this;
34-
jwt.verify(token ,config.SECRET,function(err,decode){
35-
user.findOne({"_id": decode,"token":token},function(err,user){
86+
jwt.verify(token,confiq.SECRET,function(err,decode){
87+
user.findOne({"_id": decode, "token":token},function(err,user){
3688
if(err) return cb(err);
37-
cb(null,user)
89+
cb(null,user);
3890
})
39-
});
40-
}
91+
})
92+
};
4193

42-
UserSchema.methods.deleteToken = function(token , cb){
43-
var user =this;
94+
//delete token
4495

45-
user.update({$unset:{token:1}},(err,user)=>{
96+
userSchema.methods.deleteToken=function(token,cb){
97+
var user=this;
98+
99+
user.update({$unset : {token :1}},function(err,user){
46100
if(err) return cb(err);
47101
cb(null,user);
48102
})
49103
}
50-
module.exports=User=mongoose.model('UserSchema', UserSchema);
104+
105+
106+
module.exports=mongoose.model('User',userSchema);

login , sign-up rest api's/mysetup/myurl.js

Lines changed: 0 additions & 4 deletions
This file was deleted.

0 commit comments

Comments
 (0)