mirror of
https://github.com/openstf/stf
synced 2025-10-04 18:29:17 +02:00
use security handler instead of express middleware for access token validation.
This commit is contained in:
parent
f10ae51b53
commit
221bc78e49
5 changed files with 120 additions and 81 deletions
70
lib/units/api/helpers/securityHandlers.js
Normal file
70
lib/units/api/helpers/securityHandlers.js
Normal file
|
@ -0,0 +1,70 @@
|
|||
var jwtutil = require('../../../util/jwtutil')
|
||||
var urlutil = require('../../../util/urlutil')
|
||||
var logger = require('../../../util/logger')
|
||||
var dbapi = require('../../../db/api')
|
||||
|
||||
var log = logger.createLogger('api:auth')
|
||||
|
||||
module.exports = {
|
||||
accessTokenAuth: accessTokenAuth
|
||||
}
|
||||
|
||||
function accessTokenAuth(req, res, next) {
|
||||
if (req.headers.authorization) {
|
||||
var tokenId = req.headers.authorization.split(" ")[1]
|
||||
|
||||
if (tokenId) {
|
||||
dbapi.loadAccessToken(tokenId)
|
||||
.then(function(token) {
|
||||
var jwt = token.jwt
|
||||
, data = jwtutil.decode(jwt, req.options.secret)
|
||||
|
||||
if (data) {
|
||||
dbapi.loadUser(data.email)
|
||||
.then(function(user) {
|
||||
if (user) {
|
||||
req.user = user
|
||||
next()
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
.catch(function(err) {
|
||||
log.error('Failed to load token: ', err.stack)
|
||||
res.json(500, {
|
||||
success: false,
|
||||
description: "Bad Access Token"
|
||||
})
|
||||
})
|
||||
} else {
|
||||
log.error("Bad Access Token Header")
|
||||
res.json(500, {
|
||||
success: false,
|
||||
description: "Bad Access Token Header"
|
||||
})
|
||||
}
|
||||
}
|
||||
// TODO: Remove this once frontend become stateless
|
||||
else if (req.session && req.session.jwt) {
|
||||
dbapi.loadUser(req.session.jwt.email)
|
||||
.then(function(user) {
|
||||
if (user) {
|
||||
req.user = user
|
||||
next()
|
||||
}
|
||||
else {
|
||||
res.json(500, {
|
||||
success: false,
|
||||
description: "Bad Request"
|
||||
})
|
||||
}
|
||||
})
|
||||
.catch(next)
|
||||
}
|
||||
else {
|
||||
res.json(500, {
|
||||
success: false,
|
||||
description: "Request does not have Authorization header"
|
||||
})
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue