Guest User

Passportcode

a guest
Apr 27th, 2018
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.83 KB | None | 0 0
  1. var LocalStrategy = require('passport-local').Strategy;
  2. var User = require('../app/models/user');
  3. var Like = require('../app/models/like');
  4. var FlaggedReview = require('../app/models/flagged_review');
  5. var Business = require('../app/models/business');
  6. var bcrypt = require('bcrypt-nodejs');
  7. var configAuth = require('./auth.js');
  8. var constant = require('../config/constants');
  9. var dateFormat = require('dateformat');
  10. var fs = require('fs');
  11. var bcrypt = require('bcrypt-nodejs');
  12.  
  13. //expose this function to our app using module.exports
  14. module.exports = function(passport) {
  15.  
  16. passport.serializeUser(function(user, done) {
  17. done(null, user);
  18. });
  19.  
  20. // used to deserialize the user
  21. passport.deserializeUser(function(id, done) {
  22. User.findById(id, function(err, user) {
  23. done(err, user);
  24. });
  25. });
  26.  
  27. // === LOCAL SIGNUP =
  28.  
  29. passport.use('local-signup', new LocalStrategy({
  30. // by default, local strategy uses username and password, we will override with email
  31. usernameField : 'email',
  32. passwordField : 'password',
  33. passReqToCallback : true // allows us to pass back the entire request to the callback
  34. },
  35. function(req, email, password, done) {
  36. // asynchronous
  37. // User.findOne wont fire unless data is sent back
  38. process.nextTick(function() {
  39. // find a user whose email is the same as the forms email
  40. // we are checking to see if the user trying to login already exists
  41. User.findOne({ 'mail' : email }, function(err, user) {
  42. // if there are any errors, return the error
  43. if (err)
  44. return done(err);
  45. // check to see if theres already a user with that email
  46. if (user) {
  47. return done(null, false, req.flash('error', 'This email address already exists.'));
  48. } else {
  49.  
  50.  
  51. User.find().sort([['id', 'descending']]).limit(1).exec(function(err, userdata) {
  52. // if there is no user with that email
  53. // create the user
  54. var newUser = new User();
  55. // set the user's local credentials
  56. //var day =dateFormat(Date.now(), "yyyy-mm-dd HH:MM:ss");
  57. var day = getDate();
  58. var active_code=bcrypt.hashSync(Math.floor((Math.random() * 99999999) *54), null, null);
  59. newUser.first_name = req.body.first_name;
  60. newUser.last_name = req.body.last_name;
  61. newUser.mail = email;
  62. newUser.password = newUser.generateHash(password);
  63. newUser.contact_number = req.body.contact_number;
  64. newUser.user_type = req.body.user_type;
  65. newUser.status = 0;
  66. if(req.body.user_type==2){
  67. newUser.address1 = req.body.address1;
  68. newUser.address2 = req.body.address2;
  69. newUser.city = '';
  70. newUser.country = '';
  71. newUser.postcode = req.body.business_postcode;
  72. newUser.contact_number = req.body.business_contact;
  73. newUser.business_name = req.body.business_name;
  74. }else{
  75. newUser.address1 = '';
  76. newUser.address2 = '';
  77. newUser.city = '';
  78. newUser.country = '';
  79. newUser.postcode = '';
  80. newUser.contact_number = '';
  81. newUser.business_name = '';
  82. }
  83. newUser.ip_address = req.ip;
  84. newUser.created_date = day;
  85. newUser.updated_date = day;
  86. newUser.active_hash = active_code;
  87. if(userdata.length>0){
  88. newUser.id = userdata[0].id+1;
  89. }else{
  90. newUser.id = 1;
  91. }
  92. newUser.save(function(err) {
  93. if (err){
  94. req.flash('User registration failed');
  95. res.redirect('/errorpage');
  96. }
  97. var email = require('../lib/email.js');
  98. email.activate_email(req.body.user_type,req.body.first_name,req.body.email,active_code);
  99. return done(null, newUser,req.flash('success', 'Account created successfully, please check your email for account confirmation.'));
  100. req.session.destroy();
  101. });
  102. });
  103. }
  104. });
  105. });
  106. }));
  107.  
  108.  
  109. // =========================================================================
  110. // LOCAL LOGIN =============================================================
  111. // =========================================================================
  112. // we are using named strategies since we have one for login and one for signup
  113. // by default, if there was no name, it would just be called 'local'
  114.  
  115. passport.use('local-login', new LocalStrategy({
  116. // by default, local strategy uses username and password, we will override with email
  117. usernameField : 'email',
  118. passwordField : 'password',
  119. passReqToCallback : true // allows us to pass back the entire request to the callback
  120. },
  121. function(req, email, password, done) { // callback with email and password from our form
  122. User.findOne({ 'mail' : email }, function(err, user) {
  123. if (err)
  124. return done(null, false, req.flash('error', err)); // req.flash is the way to set flashdata using connect-flash
  125.  
  126. // if no user is found, return the message
  127. if (!user)
  128. return done(null, false, req.flash('error', 'These credentials do not match our records.')); // req.flash is the way to set flashdata using connect-flash
  129.  
  130. // if the user is found but the password is wrong
  131. if (!user.validPassword(password))
  132. return done(null, false, req.flash('error', 'These credentials do not match our records.')); // create the loginMessage and save it to session as flashdata
  133.  
  134. if(user.status === 0)
  135. return done(null, false, req.flash('error', 'Your account not activated, please check your email'));
  136.  
  137. if(user.status === 3)
  138. return done(null, false, req.flash('error', 'Your account is suspended'));
  139. /* Get User Flags and Likes*/
  140. var likedReviews = [];
  141. var flagedReviews = [];
  142. Like.find({user_id:user.id}, function(err, likes) {
  143. if(err){
  144. console.log("password Login successful Find Liked Reviews Error");
  145. res.send('errorpage');
  146. }
  147. likes.forEach(function(like){
  148. likedReviews.push(like.review_id);
  149. });
  150. FlaggedReview.find({user_id:user.id}, function(err, freviews) {
  151. if(err){
  152. console.log("password Login successful Find Liked Reviews Error");
  153. res.send('errorpage');
  154. }
  155. freviews.forEach(function(reviews){
  156. flagedReviews.push(reviews.review_id);
  157. });
  158. if(req.body.ip_address){
  159. req.session.ip_address = req.body.ip_address;
  160. }else{
  161. req.session.ip_address = '127.0.0.1';
  162. }
  163. if(req.body.country){
  164. req.session.country = req.body.country;
  165. }else{
  166. req.session.country = 'India';
  167. }
  168. req.session.user = user;
  169. req.session.likedReviews = likedReviews;
  170. req.session.flagedReviews = flagedReviews;
  171. req.flash('error','Login done');
  172. return done(null, user);
  173. });
  174. });
  175. /* Get User Flags and Likes*/
  176. });
  177. }));
  178.  
  179.  
  180. /*Admin Login*/
  181. passport.use('admin-login', new LocalStrategy({
  182. usernameField : 'email',
  183. passwordField : 'password',
  184. passReqToCallback : true // allows us to pass back the entire request to the callback
  185. },
  186. function(req, email, password, done) { // callback with email and password from our form
  187. User.findOne({ 'mail' : email,'user_type' : 3}, function(err, user) {
  188. if (err)
  189. return done(null, false, req.flash('error', err)); // req.flash is the way to set flashdata using connect-flash
  190. if (!user)
  191. return done(null, false, req.flash('error', 'These credentials do not match our records.')); // req.flash is the way to set flashdata using connect-flash
  192. if (!user.validPassword(password))
  193. return done(null, false, req.flash('error', 'These credentials do not match our records.')); // create the loginMessage and save it to session as flashdata
  194. req.session.user = user;
  195. return done(null, user);
  196. });
  197. }));
  198. };
  199.  
  200. function getDate(){ var d = new Date(); return d.getFullYear()+ '-'+addZero(d.getMonth()+1)+'-'+addZero(d.getDate())+' '+addZero(d.getHours())+':'+addZero(d.getMinutes())+':'+addZero(d.getSeconds()); }
  201.  
  202. function addZero(i) { if (i < 10) { i = "0" + i; } return i; }
Add Comment
Please, Sign In to add comment