authrix
Version:
Lightweight, flexible authentication library for Node.js and TypeScript.
1 lines • 1.25 kB
JavaScript
;var chunkHTSI3TKE_cjs=require('./chunk-HTSI3TKE.cjs');require('./chunk-PTWJCNT6.cjs'),require('./chunk-RUOJ57HW.cjs'),require('./chunk-O5GBK76P.cjs');var chunkIRGTWVM7_cjs=require('./chunk-IRGTWVM7.cjs');require('./chunk-D6WM53FN.cjs');function f(e={}){let{required:r=true,tokenExtractor:t=y,errorHandler:n=p}=e;return async function(o,d,i){try{let u=t(o),a=await chunkHTSI3TKE_cjs.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);typeof i=="function"&&i();}catch(u){return n(u,o,d,i)}}}function y(e){if(e.cookies&&e.cookies[chunkIRGTWVM7_cjs.a.cookieName])return e.cookies[chunkIRGTWVM7_cjs.a.cookieName];if(e.headers&&e.headers.cookie){let r=chunkHTSI3TKE_cjs.g(e.headers.cookie),t=chunkHTSI3TKE_cjs.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);}exports.createAuthMiddleware=f;exports.optionalAuthMiddleware=m;