// SHUT THE FUCK UP // deno-lint-ignore-file no-explicit-any import JWT from "../../utils/JWT.ts"; import HttpError from "../HttpError.ts"; import Router, { makeParameterModifier } from "../Router.ts"; export default function jwt(salt: ((self: T) => string) | string, required = false) { return makeParameterModifier(function (_req, val?: string) { if (val === undefined) { if (required) throw new HttpError('You are not logged in.'); else return undefined; } const s = typeof salt === 'function' ? salt(this) : (this as any)[salt] as string; try { const res = JWT.decode(val, s); if (required && res === undefined) throw new HttpError('You are not logged in.'); return res; } catch (e) { if (e instanceof Error && !(e instanceof HttpError)) { throw new HttpError(e.message, 400); } else throw e; } }); }