-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathapp.js
More file actions
91 lines (79 loc) · 2.74 KB
/
Copy pathapp.js
File metadata and controls
91 lines (79 loc) · 2.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
/*
Authors: Jake Edwards & David Hamilton & John Carvajal
Class: CSC 425-001
Professor: Dr. Sawadpong
Project: HFH Database
Team: TeamIDK
*/
//app depenedencies
var express = require('express');
var app = express();
var passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
const config = require('./config');
const bcrypt = require('bcrypt-nodejs');
const uuidv4 = require('uuid/v4');
const seedDB = require('./seed');
//database connection
const dbconnection = require('./dbconnection')
const connection = dbconnection.connection;
const pool = dbconnection.pool;
//app Setup
config.init(app, express,passport);
//Make currentUser avaliable in every page so I don't have to pass it in the render function for every single route
app.use(function(req, res, next){
res.locals.currentUser = req.user;
next();
});
//routes setup
const routeConfig = require('./routes');
app.use(routeConfig);
//Seed the Database
//seedDB();
//passport stuff
const passportinit = require('./passport-serialize');
passportinit();
passport.use('local', new LocalStrategy({
passReqToCallback: true
}, (req, username, password, done) => {
loginAttempt();
async function loginAttempt() {
const client = await pool.connect()
try {
await client.query('BEGIN')
var currentAccountsData = await JSON.stringify(client.query('SELECT id, "firstname", "email", "password","access" FROM "users" WHERE "email"=$1', [username], function(err, result) {
//console.log(result);
if (err) {
console.log('error with client query');
return done(err)
}
if (result.rows[0] == null) {
return done(null, false);
} else {
bcrypt.compare(password, result.rows[0].password, function(err, check) {
if (err) {
console.log('Error while checking password');
return done();
} else if (check) {
return done(null, [{
id: result.rows[0].id,
username: result.rows[0].email,
access: result.rows[0].access
}]);
} else {
console.log('null false')
return done(null, false);
}
});
}
}))
} catch (e) {
throw (e);
}
};
}))
//The server
app.set('port', (process.env.PORT || 5000));
app.listen(app.get('port'), function() {
console.log('Node app is running on port', app.get('port'));
});