@riddance/service
Version:
57 lines • 7.18 kB
JavaScript
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=