Advertisement
Guest User

Untitled

a guest
Aug 6th, 2018
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.79 KB | None | 0 0
  1. <div class="row">
  2. <div class="col-md-12">
  3. {{#if errorMessage}}
  4. <div class="alert alertdanger"><strong>Error:</strong> {{errorMessage}}</div>
  5. {{/if}}
  6. {{#if successMessage}}
  7. <div class="alert alert-success"> <strong>Success:</strong> {{successMessage}}</div><a class="btn btn-success pull-right" href="/login">&nbsp;&nbsp;&nbsp;Proceed to Log in&nbsp;&nbsp;&nbsp;</a><br /><br /><br />
  8. {{else}}
  9. <form method="post" action="/register">
  10. <fieldset>
  11. <legend>Register</legend>
  12. <div class="col-md-12">
  13. <div class="form-group">
  14. <input class="form-control" id="userName" name="userName" type="text" placeholder="User Name" required />
  15. </div>
  16. </div>
  17. <div class="col-md-12">
  18. <div class="form-group">
  19. <input class="form-control" id="password" name="password" type="password" placeholder="Password" required />
  20. </div>
  21. </div>
  22. <div class="col-md-12">
  23. <div class="form-group">
  24. <input class="form-control" id="password2" name="password2" type="password" placeholder="Confirm Password" required />
  25. </div>
  26. </div>
  27. <div class="col-md-12">
  28. <div class="form-group">
  29. <input class="form-control" id="email" name="email" type="email" placeholder="Email Address" required />
  30. </div>
  31. </div>
  32. </fieldset>
  33. <input type="submit" class="btn btn-success pull-right" value="Register" />
  34. </form>
  35. {{/if}}
  36. </div>
  37. </div>
  38.  
  39.  
  40.  
  41.  
  42.  
  43. module.exports.registerUser = function (userData) {
  44. return new Promise(function (resolve, reject) {
  45. if(userData.password !== userData.password2) {
  46. reject("Passwords do not match.");
  47. }
  48. else
  49. {
  50. //hash the password
  51. bcrypt.genSalt(10, function(err, salt) { // Generate a "salt" using 10 rounds
  52. bcrypt.hash(userData.password, salt, function(err, hash) {
  53. if(err) {
  54. reject("There was an error encrypting the password.");
  55. }
  56. else {
  57. userData.password = hash;
  58. //create new User
  59. let newUser = new User(userData);
  60. //save the user, if there was an error return it
  61. newUser.save((err) => {
  62. if(err) {
  63. if(err.code === 11000)
  64. reject("Username already taken");
  65. if(err.code !== 11000)
  66. reject("There was an error: " + err);
  67. }
  68. else {
  69. console.log("The User was saved to the web322_a6 schema.");
  70. resolve();
  71. }
  72. });
  73. }
  74. });
  75. });
  76. }
  77. });
  78. };
  79.  
  80. module.exports.checkUser = function(userData) {
  81. return new Promise(function (resolve, reject) {
  82. User.findOne({userName: userData.userName})
  83. .exec()
  84. .then((users) => {
  85. //if array is empty
  86. if(!users) {
  87. reject("Unable to find user: " + userData.userName);
  88. }
  89. //if passwords dont match
  90. bcrypt.compare(userData.password, users.password).then((res) => {
  91. // res === true if it matches and res === false if it does not matc
  92. if(res === false) {
  93. reject("Incorrect Password for user: " + userData.userName);
  94. }
  95. //if passwords match
  96. if(res === true) {
  97. //create new login history object to put into users login history
  98. var lastLogin = {dateTime: (new Date()).toString(), userAgent: userData.userAgent};
  99. users.loginHistory.dateTime = lastLogin.dateTime;
  100. users.loginHistory.userName = lastLogin.userAgent;
  101. User.update({userName: users.userName},
  102. {$set: {loginHistory: users.loginHistory}})
  103. .then(() => {
  104. resolve(users[0]);
  105. })
  106. .catch((err) => {
  107. reject("There was an error verifying the user: " + err);
  108. });
  109. }
  110. });
  111.  
  112. })
  113. .catch((err) => {
  114. console.log(err);
  115. reject("Unable to find user: ///" + userData.userName);
  116. });
  117. });
  118. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement