Advertisement
anas_harby

Untitled

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