Edit: /tmp/tsx-0/17887-746cf4dab4ff9f1ffb670b8203818a232469ca06 (9512B)
{"code":"__filename=\"/opt/canhelp/node_modules/better-auth/dist/plugins/mcp/authorize.mjs\";(()=>{\nvar __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __hasOwnProp=Object.prototype.hasOwnProperty;var __name=(target,value)=>__defProp(target,\"name\",{value,configurable:true});var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:true})};var __copyProps=(to,from,except,desc)=>{if(from&&typeof from===\"object\"||typeof from===\"function\"){for(let key of __getOwnPropNames(from))if(!__hasOwnProp.call(to,key)&&key!==except)__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable})}return to};var __toCommonJS=mod=>__copyProps(__defProp({},\"__esModule\",{value:true}),mod);var authorize_exports={};__export(authorize_exports,{authorizeMCPOAuth:()=>authorizeMCPOAuth});module.exports=__toCommonJS(authorize_exports);var import_random=require(\"../../crypto/random.mjs\");var import_crypto=require(\"../../crypto/index.mjs\");var import_session=require(\"../../api/routes/session.mjs\");var import_api=require(\"../../api/index.mjs\");var import_error=require(\"@better-auth/core/error\");function redirectErrorURL(url,error,description){return`${url}${url.includes(\"?\")?\"&\":\"?\"}error=${error}&error_description=${description}`}__name(redirectErrorURL,\"redirectErrorURL\");async function authorizeMCPOAuth(ctx,options){ctx.setHeader(\"Access-Control-Allow-Origin\",\"*\");ctx.setHeader(\"Access-Control-Allow-Methods\",\"POST, OPTIONS\");ctx.setHeader(\"Access-Control-Allow-Headers\",\"Content-Type, Authorization\");ctx.setHeader(\"Access-Control-Max-Age\",\"86400\");const opts={codeExpiresIn:600,defaultScope:\"openid\",...options,scopes:[\"openid\",\"profile\",\"email\",\"offline_access\",...options?.scopes||[]]};if(!ctx.request)throw new import_error.APIError(\"UNAUTHORIZED\",{error_description:\"request not found\",error:\"invalid_request\"});const session=await(0,import_session.getSessionFromCtx)(ctx);if(!session){await ctx.setSignedCookie(\"oidc_login_prompt\",JSON.stringify(ctx.query),ctx.context.secret,{maxAge:600,path:\"/\",sameSite:\"lax\"});const queryFromURL=ctx.request.url?.split(\"?\")[1];throw ctx.redirect(`${options.loginPage}?${queryFromURL}`)}const query=ctx.query;if(!query.client_id)throw ctx.redirect(`${ctx.context.baseURL}/error?error=invalid_client`);if(!query.response_type)throw ctx.redirect(redirectErrorURL(`${ctx.context.baseURL}/error`,\"invalid_request\",\"response_type is required\"));const client=await ctx.context.adapter.findOne({model:\"oauthApplication\",where:[{field:\"clientId\",value:ctx.query.client_id}]}).then(res=>{if(!res)return null;return{...res,redirectUrls:res.redirectUrls.split(\",\"),metadata:res.metadata?JSON.parse(res.metadata):{}}});if(!client)throw ctx.redirect(`${ctx.context.baseURL}/error?error=invalid_client`);const redirectURI=client.redirectUrls.find(url=>url===ctx.query.redirect_uri);if(!redirectURI||!query.redirect_uri)throw new import_error.APIError(\"BAD_REQUEST\",{message:\"Invalid redirect URI\"});if(client.disabled)throw ctx.redirect(`${ctx.context.baseURL}/error?error=client_disabled`);if(query.response_type!==\"code\")throw ctx.redirect(`${ctx.context.baseURL}/error?error=unsupported_response_type`);const requestScope=query.scope?.split(\" \").filter(s=>s)||opts.defaultScope.split(\" \");const invalidScopes=requestScope.filter(scope=>{return!opts.scopes.includes(scope)});if(invalidScopes.length)throw ctx.redirect(redirectErrorURL(query.redirect_uri,\"invalid_scope\",`The following scopes are invalid: ${invalidScopes.join(\", \")}`));if((!query.code_challenge||!query.code_challenge_method)&&options.requirePKCE)throw ctx.redirect(redirectErrorURL(query.redirect_uri,\"invalid_request\",\"pkce is required\"));if(!query.code_challenge_method)query.code_challenge_method=\"plain\";if(![\"s256\",options.allowPlainCodeChallengeMethod?\"plain\":\"s256\"].includes(query.code_challenge_method?.toLowerCase()||\"\"))throw ctx.redirect(redirectErrorURL(query.redirect_uri,\"invalid_request\",\"invalid code_challenge method\"));const code=(0,import_random.generateRandomString)(32,\"a-z\",\"A-Z\",\"0-9\");const codeExpiresInMs=opts.codeExpiresIn*1e3;const expiresAt=new Date(Date.now()+codeExpiresInMs);try{await ctx.context.internalAdapter.createVerificationValue({value:JSON.stringify({clientId:client.clientId,redirectURI:query.redirect_uri,scope:requestScope,userId:session.user.id,authTime:new Date(session.session.createdAt).getTime(),requireConsent:query.prompt===\"consent\",state:query.prompt===\"consent\"?query.state:null,codeChallenge:query.code_challenge,codeChallengeMethod:query.code_challenge_method,nonce:query.nonce}),identifier:code,expiresAt})}catch{throw ctx.redirect(redirectErrorURL(query.redirect_uri,\"server_error\",\"An error occurred while processing the request\"))}if(query.prompt!==\"consent\"){const redirectURIWithCode2=new URL(redirectURI);redirectURIWithCode2.searchParams.set(\"code\",code);if(ctx.query.state)redirectURIWithCode2.searchParams.set(\"state\",ctx.query.state);throw ctx.redirect(redirectURIWithCode2.toString())}if(options?.consentPage){await ctx.setSignedCookie(\"oidc_consent_prompt\",code,ctx.context.secret,{maxAge:600,path:\"/\",sameSite:\"lax\"});const urlParams=new URLSearchParams;urlParams.set(\"consent_code\",code);urlParams.set(\"client_id\",client.clientId);urlParams.set(\"scope\",requestScope.join(\" \"));const consentURI=`${options.consentPage}?${urlParams.toString()}`;throw ctx.redirect(consentURI)}const redirectURIWithCode=new URL(redirectURI);redirectURIWithCode.searchParams.set(\"code\",code);if(ctx.query.state)redirectURIWithCode.searchParams.set(\"state\",ctx.query.state);throw ctx.redirect(redirectURIWithCode.toString())}__name(authorizeMCPOAuth,\"authorizeMCPOAuth\");0&&(module.exports={authorizeMCPOAuth});\n})()\n","warnings":[],"map":{"version":3,"mappings":"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","names":["redirectURIWithCode"],"ignoreList":[],"sources":["/opt/canhelp/node_modules/better-auth/dist/plugins/mcp/authorize.mjs"],"sourcesContent":[null]}}