authrix
Version:
Lightweight, flexible authentication library for Node.js and TypeScript.
1 lines • 1.11 kB
JavaScript
import {i,g,h}from'./chunk-J4QWG73Y.mjs';import'./chunk-TQPPJTEW.mjs';import'./chunk-ML66D24Y.mjs';import'./chunk-2W6WDMNG.mjs';import {a}from'./chunk-ZNCUQ2DE.mjs';import'./chunk-3SAEGOMQ.mjs';function f(e={}){let{required:r=true,tokenExtractor:t=y,errorHandler:n=p}=e;return async function(o,d,i$1){try{let u=t(o),a=await i(u);if(o.auth=a,o.user=a.user,o.isAuthenticated=a.isValid,r&&!a.isValid)return n(new Error(a.error||"Authentication required"),o,d,i$1);typeof i$1=="function"&&i$1();}catch(u){return n(u,o,d,i$1)}}}function y(e){if(e.cookies&&e.cookies[a.cookieName])return e.cookies[a.cookieName];if(e.headers&&e.headers.cookie){let r=g(e.headers.cookie),t=h(r);if(t)return t}if(e.headers&&e.headers.authorization){let r=e.headers.authorization;if(r.startsWith("Bearer "))return r.slice(7)}return null}function p(e,r,t,n){if(t&&typeof t.status=="function")return t.status(401).json({success:false,error:{message:e.message||"Authentication required"}});if(typeof n=="function")n(e);else throw e}function m(e,r,t){f({required:false})(e,r,t);}export{f as createAuthMiddleware,m as optionalAuthMiddleware};