Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const express = require('express');
- const bodyParser = require("body-parser");
- const crypto = require('crypto');
- var session = require('express-session');
- const internalIp = require('internal-ip');
- const getPrices = require('./scrapers/getPrices.js');
- const dbConnection = require('./dbConnection.js');
- const app = express();
- app.use('/assets', express.static('./assets/'));
- const localIP = internalIp.v4.sync();
- var hotelNames = [];
- var urlsHotels = [];
- var usersList = [];
- var userInfo = new Object();
- userInfo.id = undefined;
- userInfo.role = 0;
- app.use(session({
- secret: 'secret',
- resave: true,
- saveUninitialized: true
- }));
- app.get('/', function (req, res) {
- if (req.session.loggedin && userInfo.role == 0) {
- getHotelsdata(res);
- } else if (req.session.loggedin && userInfo.role == 1) {
- loadAdminPage(res);
- } else {
- res.redirect('/login');
- }
- });
- app.use(bodyParser.urlencoded({ extended: false }));
- app.use(bodyParser.json());
- app.get('/login',function(req,res){
- globalRes = res
- //res.sendFile(__dirname + "/views/login.html");
- res.render('./login.ejs', {
- 'localIP':localIP,
- });
- });
- app.post('/submitlogin',function(req,res){
- const password = crypto.createHash('sha256').update(req.body.password).digest('hex');
- const users = new Promise((resolve, reject) => {
- dbConnection
- .getUsers()
- .then(data => {
- resolve(data)
- })
- });
- Promise.all([users])
- .then(data => {
- usersList = data[0];
- var loginSuccess = "0";
- for(var i = 0; i < data[0].length; i++) {
- if(data[0][i][1] == req.body.user && data[0][i][2] == password) {
- req.session.loggedin = true;
- req.session.username = req.body.user;
- loginSuccess = "1";
- userInfo.id = data[0][i][0];
- userInfo.role = data[0][i][3];
- }
- }
- res.end(loginSuccess);
- });
- });
- app.post('/deleteUser', function(req, res) {
- const deleteUser = new Promise((resolve, reject) => {
- dbConnection
- .deleteUser(req.body.user)
- .then(data => {
- resolve(data)
- response = data[0];
- })
- });
- Promise.all([deleteUser])
- .then(data=> {
- getUsersData(res, response);
- });
- })
- app.post('/changePwd', function(req, res) {
- const currentPassword = crypto.createHash('sha256').update(req.body.currentPassword).digest('hex');
- const newPassword = crypto.createHash('sha256').update(req.body.newPassword).digest('hex');
- const changePwd = new Promise((resolve, reject) => {
- dbConnection
- .changePwd(currentPassword, newPassword)
- .then(data => {
- resolve(data)
- response = data[0];
- })
- });
- Promise.all([changePwd])
- .then(data=> {
- res.end(data[0]);
- });
- })
- app.post('/addUser', function(req, res) {
- const password = crypto.createHash('sha256').update(req.body.password).digest('hex');
- var response;
- const insertUser = new Promise((resolve, reject) => {
- dbConnection
- .registerUser(req.body.user, password)
- .then(data => {
- resolve(data)
- response = data;
- })
- });
- Promise.all([insertUser])
- .then(data => {
- getUsersData(res, response);
- });
- });
- app.get('/compare/:visitDay&:visitMonth&:visitYear&:leavingDay&:leavingMonth&:leavingYear', async function(req, res, next) {
- if (req.session.loggedin) {
- var results = new Array();
- const date1 = new Date(req.params.visitMonth + '-' + req.params.visitDay + '-' + req.params.visitYear);
- const date2 = new Date(req.params.leavingMonth + '-' + req.params.leavingDay + '-' + req.params.leavingYear);
- const timeDiff = Math.abs(date2.getTime() - date1.getTime());
- const nights = Math.ceil(timeDiff / (1000 * 3600 * 24));
- assignurls(req.params.visitYear, req.params.visitMonth, req.params.visitDay, req.params.leavingYear, req.params.leavingMonth, req.params.leavingDay);
- const getPrices = new Promise((resolve, reject) => {
- getPrices
- .getPrices(results, nights, urlsHotels)
- .then(data => {
- resolve(data)
- })
- });
- Promise.all([getPrices])
- .then(data => {
- loadPage(res, JSON.stringify(hotelNames), JSON.stringify(results), req.params.visitDay + "/" + req.params.visitMonth + "/" + req.params.visitYear, req.params.leavingDay + "/" + req.params.leavingMonth + "/" + req.params.leavingYear);
- });
- } else {
- res.redirect('/login');
- }
- });
- app.get('/addHotel&:url&:name', function(req, res, next) {
- if (req.session.loggedin) {
- let url = req.params.url.split('');
- url.splice(44, 3);
- url[44] = 'visitYear';
- url.splice(46, 1);
- url[46] = 'visitMonth';
- url.splice(48, 1);
- url[48] = 'visitDay';
- url.splice(70, 3);
- url[70] = 'leavingYear';
- url.splice(72, 1);
- url[72] = 'leavingMonth';
- url.splice(74, 1);
- url[74] = 'leavingDay';
- url = url.join('');
- const insertHotel = new Promise((resolve, reject) => {
- dbConnection
- .insertValues(hotelNames, url, req.params.name, userInfo.id)
- .then(data => {
- resolve(data)
- })
- });
- Promise.all([insertHotel])
- .then(data => {
- getHotelsdata(res, data);
- });
- } else {
- res.redirect('/login');
- }
- });
- app.get('/deleteHotel&:name', function(req, res, next) {
- if (req.session.loggedin) {
- const deleteHotel = new Promise((resolve, reject) => {
- dbConnection
- .deleteValues(req.params.name)
- .then(data => {
- resolve(data)
- })
- });
- Promise.all([deleteHotel])
- .then(data => {
- getHotelsdata(res, data);
- });
- } else {
- res.redirect('/login');
- }
- });
- app.get('/logout', function(req, res, next) {
- req.session.loggedin = false;
- res.redirect('/');
- });
- function assignurls(visitYear, visitMonth, visitDay, leavingYear, leavingMonth, leavingDay) {
- for(var i = 0; i<urlsHotels.length; i++) {
- var finalurl = urlsHotels[i].replace('visitYear', visitYear);
- finalurl = finalurl.replace('visitMonth', visitMonth);
- finalurl = finalurl.replace('visitDay', visitDay);
- finalurl = finalurl.replace('leavingYear', leavingYear);
- finalurl = finalurl.replace('leavingMonth', leavingMonth);
- finalurl = finalurl.replace('leavingDay', leavingDay);
- urlsHotels[i] = finalurl;
- }
- }
- function getUsersData(res, response) {
- const users = new Promise((resolve, reject) => {
- dbConnection
- .getUsers()
- .then(data => {
- resolve(data);
- })
- });
- Promise.all([users])
- .then(data => {
- usersList = data[0];
- res.end(response);
- });
- }
- function getHotelsdata(res, results) {
- const getNotelNames = new Promise((resolve, reject) => {
- dbConnection
- .getHotelNames(userInfo.id)
- .then(data => {
- resolve(data)
- })
- });
- const getURLs = new Promise((resolve, reject) => {
- dbConnection
- .getURLs(userInfo.id)
- .then(data => {
- resolve(data)
- })
- });
- Promise.all([getNotelNames, getURLs])
- .then(data => {
- hotelNames = data[0];
- urlsHotels = data[1];
- loadPage(res, JSON.stringify(hotelNames), JSON.stringify([results]));
- });
- }
- function loadPage(res, param1, param2, param3, param4) {
- res.render('./comparatorPage.ejs', {
- 'hotelNames':param1,
- 'results': param2,
- 'checkInDate': param3,
- 'checkOutDate': param4,
- 'localIP': localIP,
- });
- }
- function loadAdminPage(res) {
- res.render('./adminPage.ejs', {
- 'usersList': JSON.stringify(usersList),
- 'localIP': localIP
- });
- }
- app.listen(process.env.PORT || 3000);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement