Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
18 views36 pages

Document 26

Full stack lab

Uploaded by

vijaivarma10
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views36 pages

Document 26

Full stack lab

Uploaded by

vijaivarma10
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 36

EX.

NO:
SESSION USING NODE.JS
DATE:

AIM:

PROCEDURE:
DEPENDENCIES:

PROJECT STRUTURE:

PROGRAM:

Public/index. html:

<!DOCTYPE html>

<html>

<head>

<title> My Form </title>

<style>

a{

font-size: 40px;

</style>
</head>

<body align='center'>

<a href="./registration.html">Register</a>

<br>

<a href="./login.html">Login</a>

</body>

</html>

Public/ login.html:

<!DOCTYPE html>

<html>

<head>

<title> My Form </title>

<style>

#mylink{

font-size: 25px;

</style>

</head>

<body align='center'>

<header>

<h1>Login</h1>

</header>

<form action="/login" method="POST">

<fieldset>

<label>Email ID</label>

<input type ="email" id = 'email' name="email" placeholder="[email protected]"


required>

<br><br>
<label>Password</label>

<input type="password" id = "password" name="password" required>

<br><br>

<button type ="reset">Reset</button>

<button type ="submit">Submit</button>

</fieldset>

</form>

<br><br>

<a id="mylink" href="./registration.html">register</a>

</body>

</html>

Public/registration.html:

<!DOCTYPE html>

<html>

<head>

<title> My Form </title>

<style>

#mylink{

font-size: 25px;

</style>

</head>

<body align='center'>

<header>

<h1>Register</h1>

</header>

<form action="/register" method="POST">


<fieldset>

<label>Username</label>

<input type ="text" id = 'username' name="username" placeholder="maverick"


required>

<br><br>

<label>Email ID</label>

<input type ="email" id = 'email' name="email" placeholder="[email protected]"


required>

<br><br>

<label>Password</label>

<input type="password" id = "password" name="password" required>

<br><br>

<button type ="reset">Reset</button>

<button type ="submit">Submit</button>

</fieldset>

</form>

<br><br>

<a id="mylink" href="./login.html">login</a>

</body>

</html>

App.js:

const express = require('express');

const http = require('http');

const bcrypt = require('bcrypt');

const path = require("path");


const bodyParser = require('body-parser');

const users = require('./data').userDB;

const app = express();

const server = http.createServer(app);

app.use(bodyParser.urlencoded({extended: false}));

app.use(express.static(path.join(__dirname,'./public')));

app.get('/',(req,res) => {

res.sendFile(path.join(__dirname,'./public/index.html'));

});

app.post('/register', async (req, res) => {

try{

let foundUser = users.find((data) => req.body.email === data.email);

if (!foundUser) {

let hashPassword = await bcrypt.hash(req.body.password, 10);

let newUser = {

id: Date.now(),

username: req.body.username,

email: req.body.email,

password: hashPassword,

};

users.push(newUser);

console.log('User list', users);

res.send("<div align ='center'><h2>Registration successful</h2></div><br><br><div


align='center'><a href='./login.html'>login</a></div><br><br><div align='center'><a
href='./registration.html'>Register another user</a></div>");

} else {

res.send("<div align ='center'><h2>Email already used</h2></div><br><br><div align='center'><a


href='./registration.html'>Register again</a></div>");

}
} catch{

res.send("Internal server error");

});

app.post('/login', async (req, res) => {

try{

let foundUser = users.find((data) => req.body.email === data.email);

if (foundUser) {

let submittedPass = req.body.password;

let storedPass = foundUser.password;

const passwordMatch = await bcrypt.compare(submittedPass, storedPass);

if (passwordMatch) {

let usrname = foundUser.username;

res.send(`<div align ='center'><h2>login successful</h2></div><br><br><br><div align


='center'><h3>Hello ${usrname}</h3></div><br><br><div align='center'><a href='./login.html'>logout</a>
</div>`);

} else {

res.send("<div align ='center'><h2>Invalid email or password</h2></div><br><br><div align


='center'><a href='./login.html'>login again</a></div>");

else {

let fakePass = `$2b$$10$ifgfgfgfgfgfgfggfgfgfggggfgfgfga`;

await bcrypt.compare(req.body.password, fakePass);

res.send("<div align ='center'><h2>Invalid email or password</h2></div><br><br><div


align='center'><a href='./login.html'>login again<a><div>");

} catch{

res.send("Internal server error");

}
});

server.listen(3000, function(){

console.log("server is listening on port: 3000");

});

Data.js:

const userDB = [];

module.exports = { userDB };
OUTPUT:
RESULT:
EX.NO:
SESSION USING NODE.JS AND MONGODB
DATE:

AIM:

PROCEDURE:
DEPENDENCIES:

PROJECT STRUCTURE:

PROGRAM:

Models/user.js:

var mongoose = require('mongoose');

var Schema = mongoose.Schema;

userSchema = new Schema( {

unique_id: Number,

email: String,

username: String,

password: String,

passwordConf: String

}),

User = mongoose.model('User', userSchema);

module.exports = User;
Routes/index.js:

var express = require('express');

var router = express.Router();

var User = require('../models/user');

router.get('/', function (req, res, next) {

return res.render('index.ejs');

});

router.post('/', function(req, res, next) {

console.log(req.body);

var personInfo = req.body;

if(!personInfo.email || !personInfo.username || !personInfo.password || !personInfo.passwordConf)


{

res.send();

} else {

if (personInfo.password == personInfo.passwordConf) {

User.findOne({email:personInfo.email},function(err,data){

if(!data){

var c;

User.findOne({},function(err,data){

if (data) {

console.log("if");

c = data.unique_id + 1;

}else{

c=1;

var newPerson = new User({

unique_id:c,

email:personInfo.email,
username: personInfo.username,

password: personInfo.password,

passwordConf: personInfo.passwordConf

});

newPerson.save(function(err, Person){

if(err)

console.log(err);

else

console.log('Success');

});

}).sort({_id: -1}).limit(1);

res.send({"Success":"You are regestered,You can login now."});

}else{

res.send({"Success":"Email is already used."});

});

}else{

res.send({"Success":"password is not matched"});

});

router.get('/login', function (req, res, next) {

return res.render('login.ejs');

});

router.post('/login', function (req, res, next) {

//console.log(req.body);
User.findOne({email:req.body.email},function(err,data){

if(data){

if(data.password==req.body.password){

//console.log("Done Login");

req.session.userId = data.unique_id;

//console.log(req.session.userId);

res.send({"Success":"Success!"});

}else{

res.send({"Success":"Wrong password!"});

}else{

res.send({"Success":"This Email Is not regestered!"});

});

});

router.get('/profile', function (req, res, next) {

console.log("profile");

User.findOne({unique_id:req.session.userId},function(err,data){

console.log("data");

console.log(data);

if(!data){

res.redirect('/');

}else{

//console.log("found");

return res.render('data.ejs', {"name":data.username,"email":data.email});

});

});
router.get('/logout', function (req, res, next) {

console.log("logout")

if (req.session) {

// delete session object

req.session.destroy(function (err) {

if (err) {

return next(err);

} else {

return res.redirect('/');

});

});

router.get('/forgetpass', function (req, res, next) {

res.render("forget.ejs");

});

router.post('/forgetpass', function (req, res, next) {

//console.log('req.body');

//console.log(req.body);

User.findOne({email:req.body.email},function(err,data){

console.log(data);

if(!data){

res.send({"Success":"This Email Is not regestered!"});

}else{

// res.send({"Success":"Success!"});

if (req.body.password==req.body.passwordConf) {

data.password=req.body.password;

data.passwordConf=req.body.passwordConf;
data.save(function(err, Person){

if(err)

console.log(err);

else

console.log('Success');

res.send({"Success":"Password changed!"});

});

}else{

res.send({"Success":"Password does not matched! Both Password should be same."});

});

});

module.exports = router;

Views/css/main.css:

body{

text-align: center !important;

p{

margin-top: 20px;

font-size: 30px;

input{

text-align: center;

.mssg{

margin-top: 5px;

margin-bottom: 5px;
border-radius: 5px;

Views/data.ejs:

<!DOCTYPE html>

<html>

<head>

<title>Welcome</title>

<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js">

</script>

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

<link rel="stylesheet" href="./css/main.css">

</head>

<body>

<div class="col-md-4 col-md-offset-4">

<div>

<p>Profile Detail</p>

</div>

<div>

<center>

<table class="table table-hover text-center">

<tr><td>Name </td><td><%= name %></td></tr>

<tr><td>Email </td><td><%= email %></td></tr>

</table>

</center>

</div>

<div class="abc">
<a href="/logout">Logout</a>

</div>

</div>

</body>

</html>

Views/index.ejs:

<!DOCTYPE html>

<html>

<head>

<title>Registration</title>

<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js">

</script>

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

<link rel="stylesheet" href="./css/main.css">

<script type="text/javascript">

$(document).ready(function(){

$( "#form1" ).submit(function(event) {

event.preventDefault();

$.ajax({

type: 'POST',

url: '/',

data: $('#form1').serialize(),

dataType: "json",

success: function(response){

//alert("a");

//console.log(response.Success);
$('#form1')[0].reset();

document.getElementById("check").innerHTML=response.Success;

//ADD THIS CODE

setTimeout(function(){

document.getElementById("check").innerHTML="";

},3000);

if (response.Success=="You are regestered,You can login now.") {

document.getElementById("aa").click();

};

},

error: function() {

})

});

});

</script>

</head>

<body>

<div class="col-md-4 col-md-offset-4">

<div>

<p>Register Now

</p>

</div>

<div class="form-group">

<form id="form1" method="post">

<input type="email" name="email" placeholder="E-mail" required=""


class="form-control"><br/>

<input type="text" name="username" placeholder="Username" required=""


class="form-control"><br/>
<input type="password" name="password" placeholder="Password"
required="" class="form-control"><br/>

<input type="password" name="passwordConf" placeholder="Confirm


Password" required="" class="form-control"><br/>

<input type="submit" value="Register" class="btn btn-success">

</form>

</div>

<div class="mssg bg-danger">

<span id="check"></span>

</div>

<div>

<span>Already Registered! <a href="/login">Login</a></span>

</div>

<div id="LangTable"><a href="/login" id="aa"></a>

</div>

</div>

</body>

</html>

Views/login.ejs:

<!DOCTYPE html>

<html>

<head>

<title>Registration</title>

<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js">

</script>

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

<link rel="stylesheet" href="./css/main.css">


<script type="text/javascript">

$(document).ready(function(){

$( "#form1" ).submit(function(event) {

event.preventDefault();

$.ajax({

type: 'POST',

url: '/',

data: $('#form1').serialize(),

dataType: "json",

success: function(response){

//alert("a");

//console.log(response.Success);

$('#form1')[0].reset();

document.getElementById("check").innerHTML=response.Success;

//ADD THIS CODE

setTimeout(function(){

document.getElementById("check").innerHTML="";

},3000);

if (response.Success=="You are regestered,You can login now.") {

document.getElementById("aa").click();

};

},

error: function() {

})
});

});

</script>

</head>

<body>

<div class="col-md-4 col-md-offset-4">

<div>

<p>Register Now

</p>

</div>

<div class="form-group">

<form id="form1" method="post">

<input type="email" name="email" placeholder="E-mail" required=""


class="form-control"><br/>

<input type="text" name="username" placeholder="Username" required=""


class="form-control"><br/>

<input type="password" name="password" placeholder="Password"


required="" class="form-control"><br/>

<input type="password" name="passwordConf" placeholder="Confirm


Password" required="" class="form-control"><br/>

<input type="submit" value="Register" class="btn btn-success">

</form>

</div>

<div class="mssg bg-danger">

<span id="check"></span>

</div>

<div>

<span>Already Registered! <a href="/login">Login</a></span>

</div>
<div id="LangTable"><a href="/login" id="aa"></a>

</div>

</div>

</body>

</html>

Views/forget.ejs:

<!DOCTYPE html>

<html>

<head>

<title>Forget Password</title>

<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js">

</script>

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

<link rel="stylesheet" href="./css/main.css">

<script type="text/javascript">

$(document).ready(function(){

$( "#form2" ).submit(function(event) {

event.preventDefault();

$.ajax({

type: 'POST',

url: '/forgetpass',

data: $('#form2').serialize(),
dataType: "json",

success: function(response){

//alert("a");

//console.log(response.Success);

$('#form2')[0].reset();

//alert("abc");

document.getElementById("check").innerHTML=response.Success;

setTimeout(function(){

document.getElementById("check").innerHTML="";

},3000);

if (response.Success=="Password changed!") {

document.getElementById("aa").click();

};

},

error: function() {

})

});

});

</script>

</head>

<body>

<div class="col-md-4 col-md-offset-4">

<div>

<p>Change Password</p>

</div>
<div class="form-group">

<form id="form2" method="post">

<input type="text" name="email" placeholder="E-mail" required="" class="form-


control"><br/>

<input type="password" name="password" placeholder="Password" required=""


class="form-control"><br/>

<input type="password" name="passwordConf" placeholder="Confirm Password"


required="" class="form-control"><br/>

<input type="submit" value="Change" class="btn btn-success">

</form>

</div>

<div class="mssg bg-danger">

<span id="check"></span>

</div>

<div id="LangTable"><a href="/profile" id="aa"></a>

</div>

<div><span>Login?</span><a href="/login">Click here</a></div>

</div>

<div id="LangTable"><a href="/login" id="aa"></a>

</div>

</div>

</body>

</html>

Server.js:

var express = require('express');

var env = require('dotenv').config()

var ejs = require('ejs');

var path = require('path');


var app = express();

var bodyParser = require('body-parser');

var mongoose = require('mongoose');

var session = require('express-session');

var MongoStore = require('connect-mongo')(session);

mongoose.connect('mongodb://127.0.0.1:27017/lo', {

useNewUrlParser: true,

useUnifiedTopology: true

}, (err) => {

if (!err) {

console.log('MongoDB Connection Succeeded.');

} else {

console.log('Error in DB connection : ' + err);

});

var db = mongoose.connection;

db.on('error', console.error.bind(console, 'connection error:'));

db.once('open', function () {

});

app.use(session({

secret: 'work hard',

resave: true,

saveUninitialized: false,

store: new MongoStore({

mongooseConnection: db

})
}));

app.set('views', path.join(__dirname, 'views'));

app.set('view engine', 'ejs');

app.use(bodyParser.json());

app.use(bodyParser.urlencoded({ extended: false }));

app.use(express.static(__dirname + '/views'));

var index = require('./routes/index');

app.use('/', index);

// catch 404 and forward to error handler

app.use(function (req, res, next) {

var err = new Error('File Not Found');

err.status = 404;

next(err);

});

// error handler

// define as the last app.use callback

app.use(function (err, req, res, next) {

res.status(err.status || 500);

res.send(err.message);

});

const PORT = process.env.PORT || 3000;

app.listen(PORT, function () {

console.log('Server is started on http://127.0.0.1:'+PORT);

});
OUTPUT:
RESULT:

You might also like