Upload 4.23
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
const logger = require('./logger')
|
||||
const jwt = require('jsonwebtoken')
|
||||
const User = require('../models/user')
|
||||
|
||||
const requestLogger = (request, response, next) => {
|
||||
logger.info('Method:', request.method)
|
||||
@@ -19,13 +21,35 @@ const errorHandler = (error, request, response, next) => {
|
||||
return response.status(400).send({ error: 'malformatted id' })
|
||||
} else if (error.name === 'ValidationError') {
|
||||
return response.status(400).json({ error: error.message })
|
||||
} else if (error.name === 'JsonWebTokenError') {
|
||||
return response.status(400).json({ error: error.message })
|
||||
} else if (error.name === 'TokenExpiredError') {
|
||||
return response.status(401).json({ error: 'token expired' })
|
||||
}
|
||||
|
||||
next(error)
|
||||
}
|
||||
|
||||
const tokenExtractor = (request, response, next) => {
|
||||
const authorization = request.get('authorization')
|
||||
if (authorization && authorization.startsWith('Bearer ')) {
|
||||
request.token = authorization.replace('Bearer ', '')
|
||||
}
|
||||
next()
|
||||
}
|
||||
|
||||
const userExtractor = async (request, response, next) => {
|
||||
if (!request.token) return next()
|
||||
const decodedToken = jwt.verify(request.token, process.env.SECRET)
|
||||
const user = await User.findById(decodedToken.id)
|
||||
request.user = user
|
||||
next()
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
requestLogger,
|
||||
unknownEndpoint,
|
||||
errorHandler
|
||||
errorHandler,
|
||||
tokenExtractor,
|
||||
userExtractor
|
||||
}
|
||||
Reference in New Issue
Block a user