Advertisement
anas_harby

Untitled

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