Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | 8x 8x 8x 2x 2x 2x 2x 1x 1x 3x 3x 3x 1x 2x 3x 3x 3x 3x 3x 1x 1x 1x 3x | import jwt from 'jsonwebtoken'
import { NextFunction, Request, Response } from 'express'
import { UserModule } from '../UserModule'
import RequestAuth = Express.RequestAuth
export const AccessTokenSecurity = {
sign: (payload: RequestAuth): Promise<string> => {
const signOptions = UserModule.getOptions().accessToken || {}
return new Promise(((resolve, reject) => {
jwt.sign(payload, UserModule.accessTokenKeys.privateKey, signOptions, (err, token) => {
if (err) {
return reject(err)
}
resolve(token)
})
}))
},
verify: (token: string): Promise<RequestAuth> => {
return new Promise((resolve, reject) => {
jwt.verify(token, UserModule.accessTokenKeys.publicKey, (err, data) => {
if (err) {
return reject(err)
}
resolve(data as RequestAuth)
})
})
},
setRequestAuthMiddleware: async (req: Request, res: Response, next: NextFunction) => {
const { headers } = req
const authHeader = headers.Authorization || headers.authorization
const bearerToken = Array.isArray(authHeader) ? authHeader[0] : authHeader
if (bearerToken && bearerToken.split(' ')[0] === 'Bearer') {
const token = bearerToken.split(' ')[1]
try {
req.auth = await AccessTokenSecurity.verify(token)
} catch (e) {}
}
next()
},
}
|