2022-10-29 22:21:24 +02:00
|
|
|
import cors from 'cors'
|
2022-11-05 18:55:59 +01:00
|
|
|
import http from 'passport-http'
|
2022-10-29 22:21:24 +02:00
|
|
|
import jwt from 'passport-jwt'
|
2022-11-05 18:55:59 +01:00
|
|
|
import { ApikeyModel } from './models/apikey.mjs'
|
2022-10-29 22:21:24 +02:00
|
|
|
|
|
|
|
function loadExpressMiddleware(app) {
|
|
|
|
app.use(cors())
|
|
|
|
}
|
|
|
|
|
2022-11-05 18:55:59 +01:00
|
|
|
function loadPassportMiddleware(passport, tools) {
|
|
|
|
passport.use(
|
|
|
|
new http.BasicStrategy(async (key, secret, done) => {
|
|
|
|
const Apikey = new ApikeyModel(tools)
|
|
|
|
await Apikey.verify(key, secret)
|
2022-11-08 21:04:32 +01:00
|
|
|
return Apikey.verified
|
|
|
|
? done(null, { ...Apikey.record, apikey: true, uid: Apikey.record.userId })
|
|
|
|
: done(false)
|
2022-11-05 18:55:59 +01:00
|
|
|
})
|
|
|
|
)
|
2022-10-29 22:21:24 +02:00
|
|
|
passport.use(
|
|
|
|
new jwt.Strategy(
|
|
|
|
{
|
|
|
|
jwtFromRequest: jwt.ExtractJwt.fromAuthHeaderAsBearerToken(),
|
2022-11-05 18:55:59 +01:00
|
|
|
...tools.config.jwt,
|
2022-10-29 22:21:24 +02:00
|
|
|
},
|
|
|
|
(jwt_payload, done) => {
|
2022-11-12 17:33:55 +01:00
|
|
|
return done(null, {
|
|
|
|
...jwt_payload,
|
|
|
|
uid: jwt_payload._id,
|
2023-05-06 12:52:26 +02:00
|
|
|
level: tools.config.roles.levels[jwt_payload.role] || 0,
|
2022-11-12 17:33:55 +01:00
|
|
|
})
|
2022-10-29 22:21:24 +02:00
|
|
|
}
|
|
|
|
)
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
2022-10-29 22:25:00 +02:00
|
|
|
export { loadExpressMiddleware, loadPassportMiddleware }
|