Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //server.js
- app.post("/signin", function(request, response) {
- // Only run logIn function if the user is not currently logged in
- if (!response.locals.user) {
- // Log the user in and then set the session cookie
- userData.logIn(request.body.username, request.body.password).then(function(sessionID) {
- if (sessionID) {
- // If the user was successfully signed in, create a new cookie with the generated sessionID
- var expiresAt = new Date();
- expiresAt.setHours(expiresAt.getHours() + 5);
- response.cookie("sessionID", sessionID, { expires: expiresAt });
- //console.log("Created new sessionID cookie: {sessionID: " + sessionID + "}");
- response.json({status: "success"});
- }
- }, function(errorMessage) {
- response.status(500).json({ error: errorMessage });
- });
- } else {
- reponse.status(500).json({error: "User already signed in."})
- }
- });
- //data.js
- exports.logIn = function (username, password) {
- // Error checking
- if (!username || !password) {
- return Promise.reject("You must provide both a username and password.");
- } else if (typeof username !== 'string' || typeof password !== 'string') {
- return Promise.reject("Arguments not correct type.");
- }
- return usersCollection.find({"username": username}).limit(1).toArray().then(function(listOfUsers) {
- // If user exists, check password
- if (listOfUsers.length !== 0) {
- var user = listOfUsers[0];
- // Compare hash of given password to hash in the db
- if (bcrypt.compareSync(password, user.encryptedPassword)) {
- // Create a new session ID for the user and update the user in the database
- var sessionID = Guid.create().toString();
- return usersCollection.update({"username": username}, {$set: {"currentSessionId": sessionID}}).then(function() {
- return Promise.resolve(sessionID);
- });
- } else {
- return Promise.reject("Incorrect password.");
- }
- } else {
- return Promise.reject("A user with that username does not exist.");
- }
- });
- };
- //Client Slide
- <h1>Sign In</h1>
- <form id="signInForm">
- <label>username: <input name="username" placeholder="Username" type="text"></label>
- <br />
- <label>password: <input name="password" placeholder="Password" type="password"></label>
- <br />
- <input type="submit" value="Sign In">
- </form>
- <script>
- $('#signInForm').on('submit', function(e) {
- $.ajax({
- url: '/signin',
- type: 'POST',
- data: {
- 'username': $('#signInForm input[name="username"]').val(),
- 'password': $('#signInForm input[name="password"]').val()
- },
- success: function(data) {
- location.reload();
- },
- error: function(xhr, status, error) {
- alert(xhr.responseText + ' (' + xhr.status + ')');
- }
- });
- return false;
- });
- </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement