@randombits/use-siwe
Version:
React hook and API endpoints that provide Sign In With Ethereum support
2 lines • 2.34 kB
JavaScript
var w=Object.create;var a=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var O=Object.getPrototypeOf,q=Object.prototype.hasOwnProperty;var H=(e,s)=>{for(var t in s)a(e,t,{get:s[t],enumerable:!0})},g=(e,s,t,r)=>{if(s&&typeof s=="object"||typeof s=="function")for(let o of v(s))!q.call(e,o)&&o!==t&&a(e,o,{get:()=>s[o],enumerable:!(r=b(s,o))||r.enumerable});return e};var T=(e,s,t)=>(t=e!=null?w(O(e)):{},g(s||!e||!e.__esModule?a(t,"default",{value:e,enumerable:!0}):t,e)),j=e=>g(a({},"__esModule",{value:!0}),e);var A={};H(A,{authRouter:()=>N});module.exports=j(A);var S=T(require("express"),1);var i=require("siwe"),m=require("zod-validation-error");var F=require("iron-session"),n=require("zod"),M=n.z.object({domain:n.z.string(),address:n.z.string(),statement:n.z.string().optional(),uri:n.z.string(),version:n.z.string(),chainId:n.z.number(),nonce:n.z.string(),issuedAt:n.z.string().optional(),expirationTime:n.z.string().optional(),notBefore:n.z.string().optional(),requestId:n.z.string().optional(),resources:n.z.array(n.z.string()).optional()}),c=n.z.object({message:M,signature:n.z.string()});var l=async(e,s)=>e.session.address?s.json({authenticated:!0,address:e.session.address}):(e.session.nonce||(e.session.nonce=(0,i.generateNonce)(),await e.session.save()),s.json({authenticated:!1,nonce:e.session.nonce})),R=async(e,s)=>{let{nonce:t}=e.session;if(!t)return s.status(400).send("Bad Request");let r=c.safeParse(e.body);if(!r.success){let h=(0,m.fromZodError)(r.error);return s.status(400).send(h.message)}let{message:o,signature:x}=r.data,{success:u,error:p,data:I}=await new i.SiweMessage(o).verify({signature:x,nonce:t});return!u&&p?s.status(400).send(p.type):u?(e.session.nonce=void 0,e.session.address=I.address,await e.session.save(),s.send("OK")):s.status(500).send("Unknown Error")},f=async(e,s)=>e.session.address?(e.session.nonce=(0,i.generateNonce)(),e.session.address=void 0,await e.session.save(),s.send("OK")):s.status(400).send("Bad Request"),d=(e,s)=>s.status(403).send("Method Not Allowed"),y=(e,s)=>s.status(404).send("Not Found");var N=()=>{let e=S.default.Router();return e.route("/").get(l).all(d),e.route("/signin").post(R).all(d),e.route("/signout").post(f).all(d),e.route("*").all(y),e};0&&(module.exports={authRouter});
//# sourceMappingURL=index.cjs.map