UNPKG

@riddance/service

Version:

57 lines 7.18 kB
import { verify } from './lib/jwt.js'; export * from '@riddance/host/lib/http'; export * from './context.js'; /*@__INLINE__*/ export function withStatus(error, status) { return Object.assign(error, { statusCode: status }); } export function withPublicMessage(error, message) { if (message) { const enriched = error; if (enriched.body) { ; enriched.body.message = message; } else { enriched.body = { message }; } } return error; } export function badRequest(publicMessage) { return withPublicMessage(withStatus(new Error('Bad request'), 400), publicMessage); } /** Please authenticate yourself, e.g. log in or refresh your tokens. */ export function unauthorized() { return withStatus(new Error('Unauthorized'), 401); } /** I known who you are; you're never getting in. */ export function forbidden() { return withStatus(new Error('Forbidden'), 403); } export function notFound() { return withStatus(new Error('Not found'), 404); } export function notImplemented() { return withStatus(new Error('Not implemented'), 501); } /*@__NO_SIDE_EFFECTS__*/ export function getBearer(context, req) { const key = context.env.BEARER_PUBLIC_KEY; if (!key) { throw new Error('Please set the BEARER_PUBLIC_KEY environment variable to extract bearer.'); } const authHeader = req.headers.authorization; if (!authHeader?.startsWith('Bearer ')) { throw unauthorized(); } try { const token = authHeader.slice('Bearer '.length); const certificate = '-----BEGIN PUBLIC KEY-----\n' + key + '\n-----END PUBLIC KEY-----'; return /*@__PURE__*/ verify(token, certificate); } catch (e) { context.log.debug('Error verifying jwt.', e); throw unauthorized(); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImh0dHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUVyQyxjQUFjLHlCQUF5QixDQUFBO0FBQ3ZDLGNBQWMsY0FBYyxDQUFBO0FBRTVCLGVBQWU7QUFDZixNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQVksRUFBRSxNQUFjO0lBQ25ELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQTtBQUN2RCxDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQVksRUFBRSxPQUFnQjtJQUM1RCxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ1YsTUFBTSxRQUFRLEdBQUcsS0FBOEMsQ0FBQTtRQUMvRCxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoQixDQUFDO1lBQUMsUUFBUSxDQUFDLElBQW1DLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtRQUNwRSxDQUFDO2FBQU0sQ0FBQztZQUNKLFFBQVEsQ0FBQyxJQUFJLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQTtRQUMvQixDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFBO0FBQ2hCLENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLGFBQXNCO0lBQzdDLE9BQU8saUJBQWlCLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFBO0FBQ3RGLENBQUM7QUFFRCx3RUFBd0U7QUFDeEUsTUFBTSxVQUFVLFlBQVk7SUFDeEIsT0FBTyxVQUFVLENBQUMsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUE7QUFDckQsQ0FBQztBQUVELG9EQUFvRDtBQUNwRCxNQUFNLFVBQVUsU0FBUztJQUNyQixPQUFPLFVBQVUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQTtBQUNsRCxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVE7SUFDcEIsT0FBTyxVQUFVLENBQUMsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUE7QUFDbEQsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjO0lBQzFCLE9BQU8sVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUE7QUFDeEQsQ0FBQztBQUVELHdCQUF3QixDQUFDLE1BQU0sVUFBVSxTQUFTLENBQzlDLE9BQWdCLEVBQ2hCLEdBQTRDO0lBRTVDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUE7SUFDekMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1AsTUFBTSxJQUFJLEtBQUssQ0FBQywwRUFBMEUsQ0FBQyxDQUFBO0lBQy9GLENBQUM7SUFDRCxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQTtJQUM1QyxJQUFJLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sWUFBWSxFQUFFLENBQUE7SUFDeEIsQ0FBQztJQUNELElBQUksQ0FBQztRQUNELE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ2hELE1BQU0sV0FBVyxHQUFHLDhCQUE4QixHQUFHLEdBQUcsR0FBRyw0QkFBNEIsQ0FBQTtRQUN2RixPQUFPLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFBO0lBQ25ELENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDNUMsTUFBTSxZQUFZLEVBQUUsQ0FBQTtJQUN4QixDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRleHQsIEpzb24gfSBmcm9tICcuL2NvbnRleHQuanMnXG5pbXBvcnQgeyB2ZXJpZnkgfSBmcm9tICcuL2xpYi9qd3QuanMnXG5cbmV4cG9ydCAqIGZyb20gJ0ByaWRkYW5jZS9ob3N0L2xpYi9odHRwJ1xuZXhwb3J0ICogZnJvbSAnLi9jb250ZXh0LmpzJ1xuXG4vKkBfX0lOTElORV9fKi9cbmV4cG9ydCBmdW5jdGlvbiB3aXRoU3RhdHVzKGVycm9yOiBFcnJvciwgc3RhdHVzOiBudW1iZXIpIHtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihlcnJvciwgeyBzdGF0dXNDb2RlOiBzdGF0dXMgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhQdWJsaWNNZXNzYWdlKGVycm9yOiBFcnJvciwgbWVzc2FnZT86IHN0cmluZyk6IEVycm9yIHtcbiAgICBpZiAobWVzc2FnZSkge1xuICAgICAgICBjb25zdCBlbnJpY2hlZCA9IGVycm9yIGFzIHVua25vd24gYXMgeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH1cbiAgICAgICAgaWYgKGVucmljaGVkLmJvZHkpIHtcbiAgICAgICAgICAgIDsoZW5yaWNoZWQuYm9keSBhcyB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSkubWVzc2FnZSA9IG1lc3NhZ2VcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVucmljaGVkLmJvZHkgPSB7IG1lc3NhZ2UgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBlcnJvclxufVxuXG5leHBvcnQgZnVuY3Rpb24gYmFkUmVxdWVzdChwdWJsaWNNZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHdpdGhQdWJsaWNNZXNzYWdlKHdpdGhTdGF0dXMobmV3IEVycm9yKCdCYWQgcmVxdWVzdCcpLCA0MDApLCBwdWJsaWNNZXNzYWdlKVxufVxuXG4vKiogUGxlYXNlIGF1dGhlbnRpY2F0ZSB5b3Vyc2VsZiwgZS5nLiBsb2cgaW4gb3IgcmVmcmVzaCB5b3VyIHRva2Vucy4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmF1dGhvcml6ZWQoKSB7XG4gICAgcmV0dXJuIHdpdGhTdGF0dXMobmV3IEVycm9yKCdVbmF1dGhvcml6ZWQnKSwgNDAxKVxufVxuXG4vKiogSSBrbm93biB3aG8geW91IGFyZTsgeW91J3JlIG5ldmVyIGdldHRpbmcgaW4uICovXG5leHBvcnQgZnVuY3Rpb24gZm9yYmlkZGVuKCkge1xuICAgIHJldHVybiB3aXRoU3RhdHVzKG5ldyBFcnJvcignRm9yYmlkZGVuJyksIDQwMylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vdEZvdW5kKCkge1xuICAgIHJldHVybiB3aXRoU3RhdHVzKG5ldyBFcnJvcignTm90IGZvdW5kJyksIDQwNClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vdEltcGxlbWVudGVkKCkge1xuICAgIHJldHVybiB3aXRoU3RhdHVzKG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyksIDUwMSlcbn1cblxuLypAX19OT19TSURFX0VGRkVDVFNfXyovIGV4cG9ydCBmdW5jdGlvbiBnZXRCZWFyZXIoXG4gICAgY29udGV4dDogQ29udGV4dCxcbiAgICByZXE6IHsgaGVhZGVyczogeyBhdXRob3JpemF0aW9uPzogc3RyaW5nIH0gfSxcbik6IEpzb24ge1xuICAgIGNvbnN0IGtleSA9IGNvbnRleHQuZW52LkJFQVJFUl9QVUJMSUNfS0VZXG4gICAgaWYgKCFrZXkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2Ugc2V0IHRoZSBCRUFSRVJfUFVCTElDX0tFWSBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBleHRyYWN0IGJlYXJlci4nKVxuICAgIH1cbiAgICBjb25zdCBhdXRoSGVhZGVyID0gcmVxLmhlYWRlcnMuYXV0aG9yaXphdGlvblxuICAgIGlmICghYXV0aEhlYWRlcj8uc3RhcnRzV2l0aCgnQmVhcmVyICcpKSB7XG4gICAgICAgIHRocm93IHVuYXV0aG9yaXplZCgpXG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gYXV0aEhlYWRlci5zbGljZSgnQmVhcmVyICcubGVuZ3RoKVxuICAgICAgICBjb25zdCBjZXJ0aWZpY2F0ZSA9ICctLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLVxcbicgKyBrZXkgKyAnXFxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tJ1xuICAgICAgICByZXR1cm4gLypAX19QVVJFX18qLyB2ZXJpZnkodG9rZW4sIGNlcnRpZmljYXRlKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29udGV4dC5sb2cuZGVidWcoJ0Vycm9yIHZlcmlmeWluZyBqd3QuJywgZSlcbiAgICAgICAgdGhyb3cgdW5hdXRob3JpemVkKClcbiAgICB9XG59XG4iXX0=