express session login system using node express mongodb
express session login system using node express mongodb
Dependencies used -
File -
Server.js file -
const express = require ('express');
const mongoose = require('mongoose');
const bcrypt = require('bcrypt')
const session = require('express-session')
const mongoDBSession = require('connect-mongodb-session')(session);
const bodyparser = require('body-parser');
const userModel = require('./models/user')
const student = require('./student')
const app = express();
const mongoURI = 'mongodb://localhost:27017/testsix'
mongoose.connect('mongodb://localhost:27017/testsix',{ useNewUrlParser: true, useUnifiedTopology: true , useCreateIndex: true, })
.then(()=>console.log("database is connected"))
.catch((err)=>console.log(err))
app.set('view engine','ejs')
app.use(bodyparser.urlencoded({extended:true}))
const store = new mongoDBSession({
uri : mongoURI,
collection:"mySessions"
})
app.use(session({
secret:"key that will sign cookie",
resave:false,
saveUninitialized:false,
store:store,
}))
const isAuth = (req,res,next)=>{
if(req.session.isAuth){
next()
}
else{
res.redirect('/login')
}
}
app.use(student)
app.get('/',(req,res)=>{
res.render('dashboard')
})
app.get('/login',(req,res)=>{
res.render('login')
})
app.post('/login',async (req,res)=>{
const {email,password}=req.body;
let user = await userModel.findOne({email})
if(!user){
return res.redirect('/register')
}
const isMatch = await bcrypt.compare(password,user.password);
if(!isMatch){
return res.redirect('/login')
}
req.session.isAuth = true;
res.redirect('/admin')
})
app.get('/register',(req,res)=>{
res.render('register')
})
app.post('/register',async (req,res)=>{
const {username,email,password}=req.body;
let user = await userModel.findOne({email})
if(user){
return res.redirect('/login')
}
const hashpsw = await bcrypt.hash(password,12)
user = new userModel({
username,
email,
password:hashpsw
})
await user.save();
res.redirect('/login')
})
app.get('/admin',isAuth,(req,res)=>{
res.render('admin')
})
app.get('/adminedit',isAuth,(req,res)=>{
res.render('adminedit')
})
app.listen('3000',(req,res)=>{
console.log("server is started");
})
User.js file -
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
username:{
type :String,
required : true,
},
email:{
type : String,
required:true,
unique :true,
},
password:{
type:String,
required:true
}
})
module.exports = mongoose.model('user',userSchema)
Comments
Post a Comment