tracman-server/config/middleware.js

57 lines
1.4 KiB
JavaScript
Raw Permalink Normal View History

2017-12-12 17:40:07 -07:00
'use strict'
2017-12-12 17:40:07 -07:00
const env = require('./env/env.js')
const debug = require('debug')('tracman-middleware')
2017-04-01 11:03:05 -06:00
module.exports = {
2016-06-12 18:18:34 -06:00
2017-04-01 11:03:05 -06:00
// Throw error
throwErr: (err, req=null) => {
debug(`throwErr(${err.message},${req?req.url:'null'})`)
2017-12-13 11:13:59 -07:00
console.error(err.stack)
2017-12-13 12:52:01 -07:00
if (req) {
if (env.mode==='production') {
2017-12-13 12:52:01 -07:00
req.flash(
'danger',
'An error occured. <br>Would you like to \
<a href="https://github.com/Tracman-org/Server/issues/new">report it</a>?'
)
// development
} else req.flash('danger', err.message)
2017-04-01 11:03:05 -06:00
}
},
2017-04-01 11:03:05 -06:00
// Capitalize the first letter of a string
capitalize: (str) => {
debug(`capitalize(${str})`)
return str.charAt(0).toUpperCase() + str.slice(1)
2017-04-01 11:03:05 -06:00
},
// Validate an email address
validateEmail: (email) => {
debug(`validateEmail(${email})`)
const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email)
},
2017-04-01 11:03:05 -06:00
// Ensure authentication
ensureAuth: (req, res, next) => {
2018-08-13 13:34:58 -06:00
debug(`ensureAuth(${req.url})`)
2017-12-13 12:52:01 -07:00
if (req.isAuthenticated()) return next()
else res.redirect('/login')
2017-04-01 11:03:05 -06:00
},
2017-04-01 11:03:05 -06:00
// Ensure administrator
ensureAdmin: (req, res, next) => {
2018-08-13 13:34:58 -06:00
debug(`ensureAdmin(${req.url})`)
2017-12-13 12:52:01 -07:00
if (req.isAuthenticated() && req.user.isAdmin) return next()
else {
let err = new Error("Unauthorized")
err.status = 401
next(err)
2017-04-20 20:31:10 -06:00
}
2016-07-01 19:14:36 -06:00
//TODO: test this by logging in as !isAdmin and go to /admin
2017-04-01 11:03:05 -06:00
}
2017-12-12 17:40:07 -07:00
}