diff --git a/app.js b/app.js index 6390a26109..41c9d9e4ae 100755 --- a/app.js +++ b/app.js @@ -74,10 +74,12 @@ app.use(express.session({ auto_reconnect: true }) })); +app.use(express.csrf()); app.use(passport.initialize()); app.use(passport.session()); app.use(function(req, res, next) { res.locals.user = req.user; + res.locals.token = req.csrfToken(); next(); }); app.use(flash()); @@ -89,6 +91,13 @@ app.use(function(req, res) { }); app.use(express.errorHandler()); +/*Helper function for CSRF +app.dynamicHelpers({ + token: function(req, res) { + return req.session._csrf; + } +});*/ + /** * Application routes. */ diff --git a/views/account/login.jade b/views/account/login.jade index db1ebe02bd..23ea7cd3db 100644 --- a/views/account/login.jade +++ b/views/account/login.jade @@ -24,6 +24,8 @@ block content .form-group label.control-label(for='username') Password input.form-control(type='password', name='password', id='password', placeholder='Password') + .form-group + input.form-control(type='hidden', name='_csrf', value=token) .form-group button.btn.btn-primary(type='submit') i.fa.fa-unlock-alt diff --git a/views/account/profile.jade b/views/account/profile.jade index ef2ba7a192..e8504962b8 100644 --- a/views/account/profile.jade +++ b/views/account/profile.jade @@ -30,12 +30,15 @@ block content label.col-xs-2.control-label(for='website') Website .col-xs-4 input.form-control(type='text', name='website', id='website', value='#{user.profile.website}') + .form-group + input.form-control(type='hidden', name='_csrf', value=token) .form-group .col-xs-offset-2.col-xs-4 button.btn.btn.btn-primary(type='submit') Update Profile + .page-header h3 Change Password @@ -48,6 +51,8 @@ block content label.col-xs-3.control-label(for='confirmPassword') Confirm Password .col-xs-4 input.form-control(type='password', name='confirmPassword', id='confirmPassword') + .form-group + input.form-control(type='hidden', name='_csrf', value=token) .form-group .col-xs-offset-3.col-xs-4 button.btn.btn.btn-primary(type='submit') Change Password diff --git a/views/account/signup.jade b/views/account/signup.jade index f88ebc483a..0d6e8aa7dd 100644 --- a/views/account/signup.jade +++ b/views/account/signup.jade @@ -15,6 +15,8 @@ block content label.col-sm-3.control-label(for='username') Confirm Password .col-sm-7 input.form-control(type='password', name='confirmPassword', id='confirmPassword', placeholder='Confirm Password') + .form-group + input.form-control(type='hidden', name='_csrf', value=token) .form-group .col-sm-offset-3.col-sm-7 button.btn.btn-success(type='submit') diff --git a/views/contact.jade b/views/contact.jade index 9e66769df6..c846ead911 100644 --- a/views/contact.jade +++ b/views/contact.jade @@ -17,6 +17,8 @@ block content label(class='col-sm-2 control-label', for='contactBody') Body .col-sm-8 textarea.form-control(type='text', name='message', id='message', rows='7') + .form-group + input.form-control(type='hidden', name='_csrf', value=token) .form-group .col-sm-offset-2.col-sm-8 button.btn.btn-default(type='submit')