Advertisement
Guest User

Untitled

a guest
May 12th, 2016
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var express = require('express');
  2. var app = express();
  3. var bodyParser = require('body-parser');
  4. var fs = require("fs");
  5. var session = require("express-session");
  6. var passwordHash = require('password-hash');
  7. // Create application/x-www-form-urlencoded parser
  8. app.use(bodyParser.urlencoded({ extended: false }));
  9. app.use(bodyParser.json());
  10. //the id of this user
  11. var thisUser;
  12. var thisUserName;
  13. /**** get the default project html ******/
  14. var arrays;
  15. app.use(session({
  16.         secret:"$this#IS#a#Secret#Encryption#Key#",
  17.         resave:false,
  18.         saveUninitialized:true
  19.     })
  20. );
  21. app.get('/', function (req, res) {
  22.     if(!req.session.email) {
  23.         res.sendFile( __dirname + "/projectPH1 23 69/" + "login.html" );
  24.     }
  25.     else {
  26.         res.sendFile(__dirname + "/projectPH1 23 69/" + "ToDoList.html");
  27.     }
  28. });
  29. app.get("/signup", function(req, res) {
  30.     if(!req.session.email) {
  31.         res.sendFile(__dirname + "/projectPH1 23 69/" + "Sign-Up.html" );
  32.     }
  33.     else {
  34.         res.sendFile(__dirname + "/projectPH1 23 69/" + "ToDoList.html");
  35.     }
  36. });
  37. app.get("/css/" + "awesome-bootstrap-checkbox.css", function(req, res) {
  38.     res.sendFile(__dirname + "/projectPH1 23 69/css/" + "awesome-bootstrap-checkbox.css");
  39. });
  40. app.get("/js/" + "data.js", function(req, res) {
  41.     res.sendFile(__dirname + "/projectPH1 23 69/js/" + "data.js");
  42. });
  43. app.post("/login", function(req, res) {
  44.     if(!req.session.email) {
  45.         var email = req.body.email;
  46.         var password = req.body.password;
  47.         var usersData
  48.         var loggedIn = false;
  49.         fs.readFile(__dirname + "/database/" + "users.json", 'utf8', function (err, data) {
  50.             if(err) {
  51.                 console.log("failed to open file: %s", err);
  52.             }
  53.             try {
  54.                 usersData = JSON.parse(data);
  55.             } catch(ex) {
  56.                 console.log(ex);
  57.             }
  58.             for(var user in usersData) {
  59.                 if(usersData[user].email === email && passwordHash.verify(password, usersData[user].password)) {
  60.                     loggedIn = true;
  61.                     thisUser = usersData[user].id;
  62.                     thisUserName = usersData[user].name;
  63.                     break;
  64.                 }
  65.             }
  66.             if(loggedIn) {
  67.                 req.session.email = email;
  68.                 res.sendFile(__dirname + "/projectPH1 23 69/" + "ToDoList.html");
  69.                 fs.readFile(__dirname + "/database/data/" + "user" + thisUser + ".json",  'utf8', function (err, data) {
  70.                     if (err) {
  71.                         console.log("failed to open file: %s", err);
  72.                     }
  73.                     else {
  74.                         try{
  75.                             arrays = JSON.parse(data);
  76.                             arrays["name"] = thisUserName;
  77.                         } catch(ex) {
  78.                             console.log(ex);
  79.                         }
  80.                     }
  81.                 });
  82.             }
  83.             else {
  84.                 res.sendFile(__dirname + "/projectPH1 23 69/" + "Login Error.html")
  85.             }
  86.         });
  87.     } else {
  88.         res.sendFile(__dirname + "/projectPH1 23 69/" + "ToDoList.html");
  89.     }
  90. });
  91. app.post("/arraydata", function (req, res) {
  92.     res.send(arrays);
  93. });
  94. app.post("/register", function(req, res) {
  95.     if(!req.session.email) {
  96.         var name = req.body.name;
  97.         var email = req.body.email;
  98.         var password = req.body.password;
  99.         var passwordConfirmation = req.body.pwConfirmation;
  100.         var emailRegex =/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
  101.         var correctPassword = (password.length >= 5) && (passwordConfirmation === password);
  102.         var correctEmail = emailRegex.test(email);
  103.         var emailRegistered = false;
  104.         var nameRegex = /^[a-zA-Z ]{1,31}$/;
  105.         var correctName = nameRegex.test(name.trim());
  106.         var usersData;
  107.         var currentUser = 1;
  108.         var correctInput = correctName && correctEmail && correctPassword;
  109.         fs.readFile(__dirname + "/database/" + "users.json", 'utf8', function (err, data) {
  110.             if(err) {
  111.                 console.log("failed to open file: %s", err);
  112.             }
  113.             //gets the users data from the json
  114.             //and stores it as a javascript object
  115.             try {
  116.                 usersData = JSON.parse(data);
  117.             } catch(ex){
  118.                 console.log(ex);
  119.             }
  120.             if(correctInput) {
  121.                 for(var user in usersData) {
  122.                     currentUser++;
  123.                     if(usersData[user].email === email) {
  124.                         emailRegistered = true;
  125.                     }
  126.                 }
  127.             }
  128.             if(correctInput && !emailRegistered) {
  129.                 req.session.email = email;
  130.                 if(currentUser == 1) {
  131.                     usersData = {};
  132.                 }
  133.                 thisUser = currentUser;
  134.                 thisUserName = name;
  135.                 usersData["user" + currentUser] = {
  136.                     email: email,
  137.                     password: passwordHash.generate(password),
  138.                     name: name,
  139.                     id: currentUser
  140.                 };
  141.                 fs.writeFile(__dirname + "/database/" + "users.json",JSON.stringify(usersData), function (err) {
  142.                     if (err) return console.log(err);
  143.                     //console.log(JSON.stringify(data));
  144.                 });
  145.                 res.sendFile(__dirname + "/projectPH1 23 69/" + "ToDoList.html" );
  146.             }
  147.             else {
  148.                 if(correctName && correctEmail && !correctPassword) {
  149.                     res.sendFile(__dirname + "/projectPH1 23 69/" + "Sign-Up Error Password.html");
  150.                 }
  151.                 else if((!correctEmail || !correctName)) {
  152.                     res.sendFile(__dirname + "/projectPH1 23 69/" + "Sign-Up Error Email.html");
  153.                 }
  154.                 else if(emailRegistered) {
  155.                     res.sendFile(__dirname + "/projectPH1 23 69/" + "Sign-Up Error Already Registered.html");
  156.                 }
  157.             }
  158.         });
  159.     } else {
  160.         res.sendFile(__dirname + "/projectPH1 23 69/" + "ToDoList.html");
  161.     }
  162. });
  163. app.get("/logout", function(req, res) {
  164.     delete req.session.email;
  165.     res.sendFile( __dirname + "/projectPH1 23 69/" + "login.html" );
  166. });
  167. // Add headers
  168. app.use(function (req, res, next) {
  169.  
  170.     // Website you wish to allow to connect
  171.     res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8081');
  172.  
  173.     // Request methods you wish to allow
  174.     res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
  175.  
  176.     // Request headers you wish to allow
  177.     res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
  178.  
  179.     // Set to true if you need the website to include cookies in the requests sent
  180.     // to the API (e.g. in case you use sessions)
  181.     res.setHeader('Access-Control-Allow-Credentials', true);
  182.  
  183.     // Pass to next layer of middleware
  184.     next();
  185. });
  186. app.post('/array', function(req, res) {
  187.     var data = req.body;
  188.     arrays = data;
  189.     arrays["name"] = thisUserName;
  190.     fs.writeFile(__dirname + "/database/data/" + "user" + thisUser +  ".json",JSON.stringify(data), function (err) {
  191.         if (err) return console.log(err);
  192.         //console.log(JSON.stringify(data));
  193.     });
  194.     /** fs.readFile( __dirname + "/" + "tables.json", 'utf8', function (err, data) {
  195.         var x = JSON.parse(JSON.parse( data )["inProgressArray[]"])[0];
  196.         console.log(x);
  197.     }); **/
  198.     res.send('success');
  199. });
  200. app.get("*", function(req, res){
  201.     if(!req.session.email) {
  202.         res.sendFile(__dirname + "/projectPH1 23 69/" + "login.html");
  203.     }
  204.     else {
  205.         res.sendFile(__dirname + "/projectPH1 23 69/" + "ToDoList.html");
  206.     }
  207. });
  208. var server = app.listen(8081, function () {
  209.     console.log("todo list app listening at http://127.0.0.1:8081");
  210. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement