Advertisement
Guest User

Untitled

a guest
Sep 17th, 2017
506
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.68 KB | None | 0 0
  1. var app = express();
  2.  
  3. app.use(require('morgan')('combined'));
  4. app.use(require('cookie-parser')());
  5. app.use(require('body-parser').urlencoded({ extended: true }));
  6. app.use(require('express-session')({ secret: 'keyboard cat', resave: false, saveUninitialized: false }));
  7.  
  8. app.use(passport.initialize());
  9. app.use(passport.session());
  10.  
  11. app.use(logger('dev'));
  12. app.use(bodyParser.json());
  13. app.use(bodyParser.urlencoded({ extended: false }));
  14. app.use(cookieParser());
  15. app.use(session({
  16. secret: 'my super secret',
  17. resave: false,
  18. saveUninitialized: true
  19. }));
  20.  
  21. var MongoClient = require('mongodb').MongoClient, assert = require('assert');
  22. var session = require('express-session');
  23. var passport = require('passport');
  24. var localPassport = require('passport-local').Strategy;
  25.  
  26. var url = 'mongodb://localhost:27017/mydb';
  27.  
  28. var router = express.Router();
  29.  
  30. passport.use(new localPassport(
  31. function(username, password, cb) {
  32. console.log(">>>To evaluate : " + username);
  33. console.log(">>>To evaluate : " + password);
  34. MongoClient.connect(url, function(err, db) {
  35. db.collection('users').find({email: username, password: password, verified: true }, {_id=0, email=1, name = 1}).toArray(function(err, results){
  36. console.log("Fetching results!!!!");
  37. console.log(results);
  38. if(results.length >= 1){
  39. console.log("<<<returning true");
  40. return cb(null, results[0]);
  41. }else{
  42. console.log("<<<returning 00000");
  43. return cb(null, false);
  44. }
  45. });
  46. });
  47. }
  48. ));
  49.  
  50. passport.serializeUser(function(user, cb) {
  51. cb(null, user.id);
  52. });
  53.  
  54. passport.deserializeUser(function(id, cb) {
  55. db.users.findById(id, function (err, user) {
  56. if (err) { return cb(err); }
  57. cb(null, user);
  58. });
  59. });
  60.  
  61.  
  62. router.get('/invites', function(req, res, next) {
  63. require('connect-ensure-login').ensureLoggedIn(),
  64. console.log("~~~~~~ ~ ~~~~~ ~~~~~~~~Fetched!");
  65. console.log(req);
  66. res.render('invites.html');
  67. });
  68.  
  69.  
  70. router.post('/login', function(req, res, next) {
  71. //res.render('invites.html');
  72. //var auth = passport.authenticate('local', { failureRedirect: '/login' });
  73. passport.authenticate('local')(req, res, function () {
  74. console.log(">>>Auth: ");
  75. console.log(req);
  76. res.redirect('/invites');
  77. });
  78.  
  79. });
  80.  
  81. console.log("<<<returning true");
  82. return cb(null, results[0]);
  83.  
  84. var express = require('express');
  85. var passport = require('passport');
  86. var Strategy = require('passport-local').Strategy;
  87.  
  88. var nodemailer = require('nodemailer');
  89. const uuidV1 = require('uuid/v1');
  90. var MongoClient = require('mongodb').MongoClient, assert = require('assert');
  91. var moment = require('moment');
  92. var session = require('express-session');
  93. var passport = require('passport');
  94. var localPassport = require('passport-local').Strategy;
  95. var path = require('path');
  96.  
  97. var url = 'mongodb://localhost:27017/viraldb';
  98.  
  99.  
  100. // Configure the local strategy for use by Passport.
  101. //
  102. // The local strategy require a `verify` function which receives the credentials
  103. // (`username` and `password`) submitted by the user. The function must verify
  104. // that the password is correct and then invoke `cb` with a user object, which
  105. // will be set at `req.user` in route handlers after authentication.
  106. passport.use(new Strategy(
  107. function(username, password, cb) {
  108. username = username.toLowerCase();
  109. MongoClient.connect(url, function(err, db) {
  110. db.collection('users').find({email: username, password: password, verified: true }, {_id:0, email: 1, name:1, id: 1}).toArray(function(err, results){
  111. if(results.length >= 1){
  112. return cb(null, results[0]);
  113. }else {
  114. return cb(null, false);
  115. }
  116. });
  117. });
  118.  
  119.  
  120. }));
  121.  
  122.  
  123.  
  124. // Configure Passport authenticated session persistence.
  125. //
  126. // In order to restore authentication state across HTTP requests, Passport needs
  127. // to serialize users into and deserialize users out of the session. The
  128. // typical implementation of this is as simple as supplying the user ID when
  129. // serializing, and querying the user record by ID from the database when
  130. // deserializing.
  131. passport.serializeUser(function(user, cb) {
  132. cb(null, user.id);
  133. });
  134.  
  135. passport.deserializeUser(function(id, cb) {
  136. MongoClient.connect(url, function(err, db) {
  137. db.collection('users').find({id: id, verified: true }, {_id:0, email: 1, name:1, id: 1}).toArray(function(err, results){
  138. if(results.length >= 1){
  139. return cb(null, results[0]);
  140. }else{
  141. return cb(null, false);
  142. }
  143. });
  144. });
  145.  
  146. });
  147.  
  148.  
  149.  
  150.  
  151. // Create a new Express application.
  152. var app = express();
  153. app.use(express.static(path.join(__dirname, 'public')));
  154.  
  155. // Configure view engine to render EJS templates.
  156. app.set('views', __dirname + '/views');
  157. app.engine('html', require('ejs').renderFile);
  158. app.set('view engine', 'ejs');
  159.  
  160. // Use application-level middleware for common functionality, including
  161. // logging, parsing, and session handling.
  162. app.use(require('morgan')('combined'));
  163. app.use(require('cookie-parser')());
  164. app.use(require('body-parser').urlencoded({ extended: true }));
  165. app.use(require('express-session')({ secret: 'keyboard cat', resave: false, saveUninitialized: false }));
  166.  
  167. // Initialize Passport and restore authentication state, if any, from the
  168. // session.
  169. app.use(passport.initialize());
  170. app.use(passport.session());
  171.  
  172. // Define routes.
  173. app.get('/', function(req, res) {
  174. res.render('index.html');
  175. });
  176.  
  177. app.get('/login', function(req, res){
  178. res.render('login.html');
  179. });
  180.  
  181. app.post('/login', passport.authenticate('local', { failureRedirect: '/login' }),
  182. function(req, res) {
  183. res.redirect('/invites');
  184. });
  185.  
  186. app.get('/logout', function(req, res){
  187. req.logout();
  188. res.redirect('/login');
  189. });
  190.  
  191. app.get('/invites', function(req, res){
  192. if(req.user == null || req.user.email == null || req.user.email == "")
  193. res.redirect('/login');
  194.  
  195. res.render('invites.html');
  196. });
  197.  
  198. app.get('/myinvites', function(req, res){
  199. MongoClient.connect(url, function(err, db) {
  200. db.collection('users', function(err, collection) {
  201. collection.find({invitatedby: req.user.email}).sort({verified: 1}).toArray(function(err, results){
  202. res.json(results);
  203. });
  204. });
  205. });
  206.  
  207. });
  208.  
  209. app.get('/myprofile', function(req, res){
  210. MongoClient.connect(url, function(err, db) {
  211. db.collection('users', function(err, collection) {
  212. collection.find({email: req.user.email}).toArray(function(err, results){
  213. res.json(results);
  214. });
  215. });
  216. });
  217. });
  218.  
  219. app.get('/validate', function(req, res){
  220. var code = req.query.code;
  221.  
  222. MongoClient.connect(url, function(err, db) {
  223. db.collection('users').count({code: code, expired: false, verified: false }, function(err, results){
  224. res.json({success: (results >= 1) });
  225. });
  226. });
  227. });
  228.  
  229. app.get('/register', function(req, res){
  230. var code = req.query.code;
  231.  
  232. var code = req.query.code;
  233. var firstname = req.query.firstname;
  234. var lastname = req.query.lastname;
  235. var password = req.query.password;
  236. var name = firstname + " " + lastname;
  237.  
  238. MongoClient.connect(url, function(err, db) {
  239. db.collection('users').count({code: code, expired: false, verified: false }, function(err, results){
  240. if(results >= 1) {
  241. db.collection('users').update({code: code, expired: false, verified: false}, {$set:{name: name, password: password, expired: true, verified:true, code: "" }}, function(err, results){
  242. return res.json({success: true, message: ""});
  243. });
  244. }else{
  245. return res.json({success: false, message: "Invalid code."});
  246. }
  247. });
  248. });
  249. });
  250.  
  251. app.get('/sendInvitation', function(req, res){
  252. var email = req.query.email.toLowerCase();
  253. var guid = uuidV1().split("-")[0].toUpperCase();
  254.  
  255. var today = moment();
  256. var tomorrow = moment(today).add(1, 'day');
  257. var rid = generateRandom();
  258.  
  259. MongoClient.connect(url, function(err, db) {
  260. db.collection('users').count({email: email, invitatedby: req.user.email, expired: false}, function(err, results){
  261. if(results > 0){
  262. res.json({success: false, message: "You already invited this user"});
  263. }else{
  264.  
  265. db.collection('users').count({email: email, verified: true}, function(err, results){
  266. if(results > 0){
  267. res.json({success: false, message: "This email is already registered. Please try with a new one."});
  268. }else{
  269.  
  270. db.collection('users').insertOne({
  271. "name" : "",
  272. "email" : req.query.email,
  273. "code" : guid,
  274. "invitatedby": req.user.email,
  275. "invitationdate": moment(today).format('YYYY-MM-DDTHH:mm:ss') + ".000",
  276. "expired": false,
  277. "verified": false,
  278. "id": rid,
  279. "expireDate": moment(tomorrow).format('YYYY-MM-DDTHH:mm:ss') + ".000",
  280. }, function(err, result) {
  281.  
  282. var transporter = nodemailer.createTransport({
  283. host: "smtp-mail.outlook.com",
  284. secureConnection: false,
  285. port: 587,
  286. tls: {
  287. ciphers:'SSLv3'
  288. },
  289. auth: {
  290. user: 'myhotmailemail@hotmail.com',
  291. pass: 'myhotmailpass'
  292. }
  293. });
  294.  
  295. var mailOptions = {
  296. from: '" ' + req.user.name + ' "<rivera5656@hotmail.com>',
  297. to: email,
  298. subject: "You've been invited to join " + req.user.name + "s team",
  299. text: 'Hello world ',
  300. html: "<p>I've been working behind the scenes on a new multiplayer game that's about to launch, and I thought that you might be interested in joining my team.</p><p>I just signed an NDA to get more info, and was given the ability to invite just 5 people, and I thought that you'd be a perfect fit.</p><p>You can check it out here:</p><p><a href='" + req.headers.host + "/agreement'>Click here to go to the site</a></p><p>Use this invite code to get in: <b>" + guid + "</b></p><p>Fill out the NDA form, and then let me know what questions you have.</p><p>Thanks</p><p>John</p>" // html body
  301. };
  302.  
  303. transporter.sendMail(mailOptions, function(error, info){
  304. if(error){
  305. return console.log(error);
  306. }
  307. console.log('Message sent: ' + info.response);
  308. });
  309. res.json({success: true, message: ""});
  310. });
  311. }
  312. });
  313.  
  314. }
  315. });
  316. });
  317. });
  318.  
  319. function generateRandom() {
  320. return parseInt(Math.random() * 3.1415926535897932384626433832795028841971 * (100000000000000));
  321. }
  322.  
  323.  
  324. app.get('/profile',
  325. require('connect-ensure-login').ensureLoggedIn(),
  326. function(req, res){
  327. res.render('profile', { user: req.user });
  328. });
  329.  
  330. app.get('/account', function(req, res){
  331. res.render('account.html');
  332. });
  333.  
  334. app.listen(3000);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement