SolidScribe/server/index.js

52 lines
1.3 KiB
JavaScript
Raw Normal View History

//Allow user of @ in in require calls. Config in package.json
require('module-alias/register')
let Auth = require('@helpers/Auth')
const express = require('express')
const app = express()
const port = 3000
//Enable json body parsing in requests. Allows me to post data in ajax calls
app.use(express.json())
//Prefix defied by route in nginx config
const prefix = '/api'
//App Auth, all requests will come in with a token, decode the token and set global var
app.use(function(req, res, next){
let token = req.headers.authorization
if(token && token != null && typeof token === 'string'){
Auth.decodeToken(token)
.then(userData => {
req.headers.userId = userData.id //Update headers for the rest of the application
next()
}).catch(error => {
res.statusMessage = error //Throw 400 error if token is bad
res.status(400).end()
})
} else {
next() //No token. Move along.
}
})
//Test
app.get(prefix, (req, res) => res.send('The api is running'))
//Init user endpoint
var user = require('@routes/userController')
app.use(prefix+'/user', user)
//Init notes endpoint
var notes = require('@routes/noteController')
app.use(prefix+'/note', notes)
//Init tags endpoint
var tags = require('@routes/tagController')
app.use(prefix+'/tag', tags)
//Output running status
app.listen(port, () => console.log(`Listening on port ${port}!`))