diff options
| author | nanalelfe <nargiza.nosirova@mail.utoronto.ca> | 2016-07-20 21:09:27 +0000 |
|---|---|---|
| committer | nanalelfe <nargiza.nosirova@mail.utoronto.ca> | 2016-07-20 21:09:27 +0000 |
| commit | 3d2f0e48def5b314121f7315ada1008f6801fa2b (patch) | |
| tree | 561d8084b1ae90ce085a7e873d674e04ffb4fa96 | |
| parent | 561ae2146943591f67ae7dbf9c5260537cbe6090 (diff) | |
Added csurf protection, and setup passport
| -rw-r--r-- | app.js | 9 | ||||
| -rw-r--r-- | config/passport.js | 3 | ||||
| -rw-r--r-- | routes/index.js | 22 | ||||
| -rw-r--r-- | views/signup.hbs | 38 |
4 files changed, 72 insertions, 0 deletions
@@ -6,6 +6,9 @@ var bodyParser = require('body-parser'); var hbs = require('express-handlebars'); var dbFile = require("./node_simple.js"); var sanitizer = require ("sanitizer"); +var session = require('express-session'); +var passport = require('passport'); +var flash = require('connect-flash'); var routes = require('./routes/index'); var app = express(); @@ -23,6 +26,12 @@ app.set('view engine', '.hbs'); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended: true})); app.use(cookieParser()); +app.use(session({secret: 'pickbetterlater', resave: false, saveUninitialized: false})); +app.use(flash()); +app.use(passport.initialize()); +app.use(passport.session()); + +require('./config/passport'); // simply need to load it /*LOADS ALL STATIC FILES FROM THE DIRECTORY __dirname*/ app.use(express.static(__dirname)); diff --git a/config/passport.js b/config/passport.js new file mode 100644 index 0000000..63ea1fd --- /dev/null +++ b/config/passport.js @@ -0,0 +1,3 @@ +/** + * Created by nanalelfe on 2016-07-20. + */ diff --git a/routes/index.js b/routes/index.js index 457fbd1..60a2c28 100644 --- a/routes/index.js +++ b/routes/index.js @@ -1,6 +1,11 @@ var dbFile = require("../node_simple.js"); var express = require('express'); var router = express.Router(); +var csrf = require('csurf'); // Cross-Site Request Forgery prevention +var passport = require('passport'); + +var csrfProtection = csrf(); +router.use(csrfProtection); // router is protected /* Render/GET homepage. */ router.get('/', function(req, res, next) { @@ -40,6 +45,21 @@ router.get('/search', function(req, res, next) { res.redirect('/exams/' + courseName); }); +router.get('/signup', function(req, res, next) { + res.render('signup', {csrfToken: req.csrfToken()}); +}); + +router.post('/signup', function(req, res, next) { + res.redirect('/'); +}); + +/*router.post('/signup', passport.authenticate('local.signup', { + sucessRedirect: '/profile', + failureRedirect: '/signup', + failureFlash: true +}));*/ + + /* app.get('/exams',function (req,res) { console.log(req.query.search); @@ -55,6 +75,8 @@ app.get('/exams.html', function (req,res) { });*/ + + function getExamsForCourseCode(courseCode) { dbFile.get_all_exams(courseCode, function (exams) { if (exams.length == 0){ diff --git a/views/signup.hbs b/views/signup.hbs new file mode 100644 index 0000000..a389b63 --- /dev/null +++ b/views/signup.hbs @@ -0,0 +1,38 @@ +<main id="solutions-main"> +<div class="row" id="solutions-main"> + <div class="col-md-4 col-md-offset-4 col-sm-6 sol-sm-offset-3"> + <h2><i class="fa fa-user-plus" aria-hidden="true"></i> Sign Up</h2> + <form action="" method="post"> + <div class="form-group"> + <input type="text" class="form-control" placeholder="First Name"> + </div> + + <div class="form-group"> + <input type="text" class="form-control" placeholder="Last Name"> + </div> + + <div class="form-group"> + <input type="email" class="form-control" placeholder="Email"> + </div> + + <div class="form-group"> + <input type="email" class="form-control" placeholder="New Username"> + </div> + <div class="form-group"> + <input type="password" class="form-control" placeholder="New Password"> + </div> + + <div class="form-group"> + <input type="text" class="form-control" placeholder="University (optional)"> + </div> + + <div class="form-group"> + <input type="text" class="form-control" placeholder="Department (optional)"> + </div> + <input type="hidden" name="_csrf" value="{{ csrfToken }}"> + <button type="submit" class="btn btn-primary">Sign Up</button> + </form> + </div> + +</div> +</main>
\ No newline at end of file |
