Advertisement
Guest User

Untitled

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