Advertisement
Guest User

bitch

a guest
Apr 6th, 2016
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //server.js
  2.  
  3. app.post("/signin", function(request, response) {
  4.  
  5.     // Only run logIn function if the user is not currently logged in
  6.     if (!response.locals.user) {
  7.  
  8.         // Log the user in and then set the session cookie
  9.         userData.logIn(request.body.username, request.body.password).then(function(sessionID) {
  10.             if (sessionID) {
  11.                 // If the user was successfully signed in, create a new cookie with the generated sessionID
  12.                 var expiresAt = new Date();
  13.                 expiresAt.setHours(expiresAt.getHours() + 5);
  14.  
  15.                 response.cookie("sessionID", sessionID, { expires: expiresAt });
  16.                 //console.log("Created new sessionID cookie: {sessionID: " + sessionID + "}");
  17.  
  18.                 response.json({status: "success"});
  19.             }
  20.         }, function(errorMessage) {
  21.             response.status(500).json({ error: errorMessage });
  22.         });
  23.  
  24.     } else {
  25.         reponse.status(500).json({error: "User already signed in."})
  26.     }
  27.  
  28. });
  29.  
  30. //data.js
  31.  
  32. exports.logIn = function (username, password) {
  33.  
  34.             // Error checking
  35.             if (!username || !password) {
  36.                 return Promise.reject("You must provide both a username and password.");
  37.             } else if (typeof username !== 'string' || typeof password !== 'string') {
  38.                 return Promise.reject("Arguments not correct type.");
  39.             }
  40.  
  41.             return usersCollection.find({"username": username}).limit(1).toArray().then(function(listOfUsers) {
  42.                 // If user exists, check password
  43.                 if (listOfUsers.length !== 0) {
  44.                     var user = listOfUsers[0];
  45.  
  46.                     // Compare hash of given password to hash in the db
  47.                     if (bcrypt.compareSync(password, user.encryptedPassword)) {
  48.                         // Create a new session ID for the user and update the user in the database
  49.                         var sessionID = Guid.create().toString();
  50.  
  51.                         return usersCollection.update({"username": username}, {$set: {"currentSessionId": sessionID}}).then(function() {
  52.                             return Promise.resolve(sessionID);
  53.                         });
  54.                     } else {
  55.                         return Promise.reject("Incorrect password.");
  56.                     }
  57.  
  58.                 } else {
  59.                     return Promise.reject("A user with that username does not exist.");
  60.                 }
  61.             });
  62.         };
  63.  
  64. //Client Slide
  65.  
  66. <h1>Sign In</h1>
  67. <form id="signInForm">
  68.     <label>username: <input name="username" placeholder="Username" type="text"></label>
  69.     <br />
  70.     <label>password: <input name="password" placeholder="Password" type="password"></label>
  71.     <br />
  72.     <input type="submit" value="Sign In">
  73. </form>
  74.  
  75. <script>
  76.     $('#signInForm').on('submit', function(e) {
  77.  
  78.             $.ajax({
  79.                 url: '/signin',
  80.                 type: 'POST',
  81.                 data: {
  82.                     'username': $('#signInForm input[name="username"]').val(),
  83.                     'password': $('#signInForm input[name="password"]').val()
  84.                 },
  85.                 success: function(data) {
  86.                     location.reload();
  87.                 },
  88.                 error: function(xhr, status, error) {
  89.                     alert(xhr.responseText + ' (' + xhr.status + ')');
  90.                 }
  91.             });
  92.  
  93.             return false;
  94.         });
  95. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement