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 userawait 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.post('/logout',(req,res)=>{
    req.session.destroy((err)=>{

        if(err){
            res.send("logout fail")
        } 
        else{
            res.redirect('/')
        }
    })
})

 

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

All time Best Post

Write a program that declares a class named Person. It should have instance variables to record name, age and salary. Use new operator to create a Person object. Set and display its instance variables.

IMAGE CRUD OPERATION USING EXPRESS MONGOOSE MULTER

connect websocket to binance api and store t he true value in the db

CRUD APP WITH SORT IN NODE EXPRESS AND MONGODB

how to delete image from the folder directly from a Request (MULTER)

calculate rsi

java program for 1 to 10 print using while loop

How to fetch last one minute volume of BTC in CCXT Nodejs.