Edit: /tmp/tsx-0/17887-aea7a3c3173d82e3169d56361bd395019fecc30d (30983B)
{"code":"__filename=\"/opt/canhelp/node_modules/better-auth/dist/api/routes/account.mjs\";(()=>{\nvar __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf;var __hasOwnProp=Object.prototype.hasOwnProperty;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 __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,\"default\",{value:mod,enumerable:true}):target,mod));var __toCommonJS=mod=>__copyProps(__defProp({},\"__esModule\",{value:true}),mod);var account_exports={};__export(account_exports,{accountInfo:()=>accountInfo,getAccessToken:()=>getAccessToken,linkSocialAccount:()=>linkSocialAccount,listUserAccounts:()=>listUserAccounts,refreshToken:()=>refreshToken,unlinkAccount:()=>unlinkAccount});module.exports=__toCommonJS(account_exports);var import_schema=require(\"../../db/schema.mjs\");var import_helpers=require(\"../../context/helpers.mjs\");var import_session_store=require(\"../../cookies/session-store.mjs\");var import_state=require(\"../../oauth2/state.mjs\");var import_utils=require(\"../../oauth2/utils.mjs\");var import_session=require(\"./session.mjs\");var import_error=require(\"@better-auth/core/error\");var import_social_providers=require(\"@better-auth/core/social-providers\");var import_api=require(\"@better-auth/core/api\");var z=__toESM(require(\"zod\"));const listUserAccounts=(0,import_api.createAuthEndpoint)(\"/list-accounts\",{method:\"GET\",use:[import_session.sessionMiddleware],metadata:{openapi:{operationId:\"listUserAccounts\",description:\"List all accounts linked to the user\",responses:{\"200\":{description:\"Success\",content:{\"application/json\":{schema:{type:\"array\",items:{type:\"object\",properties:{id:{type:\"string\"},providerId:{type:\"string\"},createdAt:{type:\"string\",format:\"date-time\"},updatedAt:{type:\"string\",format:\"date-time\"},accountId:{type:\"string\"},userId:{type:\"string\"},scopes:{type:\"array\",items:{type:\"string\"}}},required:[\"id\",\"providerId\",\"createdAt\",\"updatedAt\",\"accountId\",\"userId\",\"scopes\"]}}}}}}}}},async c=>{const session=c.context.session;const accounts=await c.context.internalAdapter.findAccounts(session.user.id);return c.json(accounts.map(a=>{const{scope,...parsed}=(0,import_schema.parseAccountOutput)(c.context.options,a);return{...parsed,scopes:scope?.split(\",\")||[]}}))});const linkSocialAccount=(0,import_api.createAuthEndpoint)(\"/link-social\",{method:\"POST\",requireHeaders:true,body:z.object({callbackURL:z.string().meta({description:\"The URL to redirect to after the user has signed in\"}).optional(),provider:import_social_providers.SocialProviderListEnum,idToken:z.object({token:z.string(),nonce:z.string().optional(),accessToken:z.string().optional(),refreshToken:z.string().optional(),scopes:z.array(z.string()).optional()}).optional(),requestSignUp:z.boolean().optional(),scopes:z.array(z.string()).meta({description:\"Additional scopes to request from the provider\"}).optional(),errorCallbackURL:z.string().meta({description:\"The URL to redirect to if there is an error during the link process\"}).optional(),disableRedirect:z.boolean().meta({description:\"Disable automatic redirection to the provider. Useful for handling the redirection yourself\"}).optional(),additionalData:z.record(z.string(),z.any()).optional()}),use:[import_session.sessionMiddleware],metadata:{openapi:{description:\"Link a social account to the user\",operationId:\"linkSocialAccount\",responses:{\"200\":{description:\"Success\",content:{\"application/json\":{schema:{type:\"object\",properties:{url:{type:\"string\",description:\"The authorization URL to redirect the user to\"},redirect:{type:\"boolean\",description:\"Indicates if the user should be redirected to the authorization URL\"},status:{type:\"boolean\"}},required:[\"redirect\"]}}}}}}}},async c=>{const session=c.context.session;const provider=await(0,import_helpers.getAwaitableValue)(c.context.socialProviders,{value:c.body.provider});if(!provider){c.context.logger.error(\"Provider not found. Make sure to add the provider in your auth config\",{provider:c.body.provider});throw import_error.APIError.from(\"NOT_FOUND\",import_error.BASE_ERROR_CODES.PROVIDER_NOT_FOUND)}if(c.body.idToken){if(!provider.verifyIdToken){c.context.logger.error(\"Provider does not support id token verification\",{provider:c.body.provider});throw import_error.APIError.from(\"NOT_FOUND\",import_error.BASE_ERROR_CODES.ID_TOKEN_NOT_SUPPORTED)}const{token,nonce}=c.body.idToken;if(!await provider.verifyIdToken(token,nonce)){c.context.logger.error(\"Invalid id token\",{provider:c.body.provider});throw import_error.APIError.from(\"UNAUTHORIZED\",import_error.BASE_ERROR_CODES.INVALID_TOKEN)}const linkingUserInfo=await provider.getUserInfo({idToken:token,accessToken:c.body.idToken.accessToken,refreshToken:c.body.idToken.refreshToken});if(!linkingUserInfo||!linkingUserInfo?.user){c.context.logger.error(\"Failed to get user info\",{provider:c.body.provider});throw import_error.APIError.from(\"UNAUTHORIZED\",import_error.BASE_ERROR_CODES.FAILED_TO_GET_USER_INFO)}const linkingUserId=String(linkingUserInfo.user.id);if(!linkingUserInfo.user.email){c.context.logger.error(\"User email not found\",{provider:c.body.provider});throw import_error.APIError.from(\"UNAUTHORIZED\",import_error.BASE_ERROR_CODES.USER_EMAIL_NOT_FOUND)}if((await c.context.internalAdapter.findAccounts(session.user.id)).find(a=>a.providerId===provider.id&&a.accountId===linkingUserId))return c.json({url:\"\",status:true,redirect:false});if(!c.context.trustedProviders.includes(provider.id)&&!linkingUserInfo.user.emailVerified||c.context.options.account?.accountLinking?.enabled===false)throw import_error.APIError.from(\"UNAUTHORIZED\",{message:\"Account not linked - linking not allowed\",code:\"LINKING_NOT_ALLOWED\"});if(linkingUserInfo.user.email?.toLowerCase()!==session.user.email.toLowerCase()&&c.context.options.account?.accountLinking?.allowDifferentEmails!==true)throw import_error.APIError.from(\"UNAUTHORIZED\",{message:\"Account not linked - different emails not allowed\",code:\"LINKING_DIFFERENT_EMAILS_NOT_ALLOWED\"});try{await c.context.internalAdapter.createAccount({userId:session.user.id,providerId:provider.id,accountId:linkingUserId,accessToken:c.body.idToken.accessToken,idToken:token,refreshToken:c.body.idToken.refreshToken,scope:c.body.idToken.scopes?.join(\",\")})}catch(_e){throw import_error.APIError.from(\"EXPECTATION_FAILED\",{message:\"Account not linked - unable to create account\",code:\"LINKING_FAILED\"})}if(c.context.options.account?.accountLinking?.updateUserInfoOnLink===true)try{await c.context.internalAdapter.updateUser(session.user.id,{name:linkingUserInfo.user?.name,image:linkingUserInfo.user?.image})}catch(e){console.warn(\"Could not update user - \"+e.toString())}return c.json({url:\"\",status:true,redirect:false})}const state=await(0,import_state.generateState)(c,{userId:session.user.id,email:session.user.email},c.body.additionalData);const url=await provider.createAuthorizationURL({state:state.state,codeVerifier:state.codeVerifier,redirectURI:`${c.context.baseURL}/callback/${provider.id}`,scopes:c.body.scopes});if(!c.body.disableRedirect)c.setHeader(\"Location\",url.toString());return c.json({url:url.toString(),redirect:!c.body.disableRedirect})});const unlinkAccount=(0,import_api.createAuthEndpoint)(\"/unlink-account\",{method:\"POST\",body:z.object({providerId:z.string(),accountId:z.string().optional()}),use:[import_session.freshSessionMiddleware],metadata:{openapi:{description:\"Unlink an account\",responses:{\"200\":{description:\"Success\",content:{\"application/json\":{schema:{type:\"object\",properties:{status:{type:\"boolean\"}}}}}}}}}},async ctx=>{const{providerId,accountId}=ctx.body;const accounts=await ctx.context.internalAdapter.findAccounts(ctx.context.session.user.id);if(accounts.length===1&&!ctx.context.options.account?.accountLinking?.allowUnlinkingAll)throw import_error.APIError.from(\"BAD_REQUEST\",import_error.BASE_ERROR_CODES.FAILED_TO_UNLINK_LAST_ACCOUNT);const accountExist=accounts.find(account=>accountId?account.accountId===accountId&&account.providerId===providerId:account.providerId===providerId);if(!accountExist)throw import_error.APIError.from(\"BAD_REQUEST\",import_error.BASE_ERROR_CODES.ACCOUNT_NOT_FOUND);await ctx.context.internalAdapter.deleteAccount(accountExist.id);return ctx.json({status:true})});const getAccessToken=(0,import_api.createAuthEndpoint)(\"/get-access-token\",{method:\"POST\",body:z.object({providerId:z.string().meta({description:\"The provider ID for the OAuth provider\"}),accountId:z.string().meta({description:\"The account ID associated with the refresh token\"}).optional(),userId:z.string().meta({description:\"The user ID associated with the account\"}).optional()}),metadata:{openapi:{description:\"Get a valid access token, doing a refresh if needed\",responses:{200:{description:\"A Valid access token\",content:{\"application/json\":{schema:{type:\"object\",properties:{tokenType:{type:\"string\"},idToken:{type:\"string\"},accessToken:{type:\"string\"},accessTokenExpiresAt:{type:\"string\",format:\"date-time\"}}}}}},400:{description:\"Invalid refresh token or provider configuration\"}}}}},async ctx=>{const{providerId,accountId,userId}=ctx.body||{};const req=ctx.request;const session=await(0,import_session.getSessionFromCtx)(ctx);if(req&&!session)throw ctx.error(\"UNAUTHORIZED\");const resolvedUserId=session?.user?.id||userId;if(!resolvedUserId)throw ctx.error(\"UNAUTHORIZED\");const provider=await(0,import_helpers.getAwaitableValue)(ctx.context.socialProviders,{value:providerId});if(!provider)throw import_error.APIError.from(\"BAD_REQUEST\",{message:`Provider ${providerId} is not supported.`,code:\"PROVIDER_NOT_SUPPORTED\"});const accountData=await(0,import_session_store.getAccountCookie)(ctx);let account=void 0;if(accountData&&providerId===accountData.providerId&&(!accountId||accountData.id===accountId))account=accountData;else account=(await ctx.context.internalAdapter.findAccounts(resolvedUserId)).find(acc=>accountId?acc.accountId===accountId&&acc.providerId===providerId:acc.providerId===providerId);if(!account)throw import_error.APIError.from(\"BAD_REQUEST\",import_error.BASE_ERROR_CODES.ACCOUNT_NOT_FOUND);try{let newTokens=null;const accessTokenExpired=account.accessTokenExpiresAt&&new Date(account.accessTokenExpiresAt).getTime()-Date.now()<5e3;if(account.refreshToken&&accessTokenExpired&&provider.refreshAccessToken){const refreshToken2=await(0,import_utils.decryptOAuthToken)(account.refreshToken,ctx.context);newTokens=await provider.refreshAccessToken(refreshToken2);const updatedData={accessToken:await(0,import_utils.setTokenUtil)(newTokens?.accessToken,ctx.context),accessTokenExpiresAt:newTokens?.accessTokenExpiresAt,refreshToken:newTokens?.refreshToken?await(0,import_utils.setTokenUtil)(newTokens.refreshToken,ctx.context):account.refreshToken,refreshTokenExpiresAt:newTokens?.refreshTokenExpiresAt??account.refreshTokenExpiresAt,idToken:newTokens?.idToken||account.idToken};let updatedAccount=null;if(account.id)updatedAccount=await ctx.context.internalAdapter.updateAccount(account.id,updatedData);if(ctx.context.options.account?.storeAccountCookie)await(0,import_session_store.setAccountCookie)(ctx,{...account,...updatedAccount??updatedData})}const accessTokenExpiresAt=(()=>{if(newTokens?.accessTokenExpiresAt){if(typeof newTokens.accessTokenExpiresAt===\"string\")return new Date(newTokens.accessTokenExpiresAt);return newTokens.accessTokenExpiresAt}if(account.accessTokenExpiresAt){if(typeof account.accessTokenExpiresAt===\"string\")return new Date(account.accessTokenExpiresAt);return account.accessTokenExpiresAt}})();const tokens={accessToken:newTokens?.accessToken??await(0,import_utils.decryptOAuthToken)(account.accessToken??\"\",ctx.context),accessTokenExpiresAt,scopes:account.scope?.split(\",\")??[],idToken:newTokens?.idToken??account.idToken??void 0};return ctx.json(tokens)}catch(_error){throw import_error.APIError.from(\"BAD_REQUEST\",{message:\"Failed to get a valid access token\",code:\"FAILED_TO_GET_ACCESS_TOKEN\"})}});const refreshToken=(0,import_api.createAuthEndpoint)(\"/refresh-token\",{method:\"POST\",body:z.object({providerId:z.string().meta({description:\"The provider ID for the OAuth provider\"}),accountId:z.string().meta({description:\"The account ID associated with the refresh token\"}).optional(),userId:z.string().meta({description:\"The user ID associated with the account\"}).optional()}),metadata:{openapi:{description:\"Refresh the access token using a refresh token\",responses:{200:{description:\"Access token refreshed successfully\",content:{\"application/json\":{schema:{type:\"object\",properties:{tokenType:{type:\"string\"},idToken:{type:\"string\"},accessToken:{type:\"string\"},refreshToken:{type:\"string\"},accessTokenExpiresAt:{type:\"string\",format:\"date-time\"},refreshTokenExpiresAt:{type:\"string\",format:\"date-time\"}}}}}},400:{description:\"Invalid refresh token or provider configuration\"}}}}},async ctx=>{const{providerId,accountId,userId}=ctx.body;const req=ctx.request;const session=await(0,import_session.getSessionFromCtx)(ctx);if(req&&!session)throw ctx.error(\"UNAUTHORIZED\");const resolvedUserId=session?.user?.id||userId;if(!resolvedUserId)throw import_error.APIError.from(\"BAD_REQUEST\",{message:`Either userId or session is required`,code:\"USER_ID_OR_SESSION_REQUIRED\"});const provider=await(0,import_helpers.getAwaitableValue)(ctx.context.socialProviders,{value:providerId});if(!provider)throw import_error.APIError.from(\"BAD_REQUEST\",{message:`Provider ${providerId} is not supported.`,code:\"PROVIDER_NOT_SUPPORTED\"});if(!provider.refreshAccessToken)throw import_error.APIError.from(\"BAD_REQUEST\",{message:`Provider ${providerId} does not support token refreshing.`,code:\"TOKEN_REFRESH_NOT_SUPPORTED\"});let account=void 0;const accountData=await(0,import_session_store.getAccountCookie)(ctx);if(accountData&&(!providerId||providerId===accountData?.providerId))account=accountData;else account=(await ctx.context.internalAdapter.findAccounts(resolvedUserId)).find(acc=>accountId?acc.accountId===accountId&&acc.providerId===providerId:acc.providerId===providerId);if(!account)throw import_error.APIError.from(\"BAD_REQUEST\",import_error.BASE_ERROR_CODES.ACCOUNT_NOT_FOUND);let refreshToken2=void 0;if(accountData&&providerId===accountData.providerId)refreshToken2=accountData.refreshToken??void 0;else refreshToken2=account.refreshToken??void 0;if(!refreshToken2)throw import_error.APIError.from(\"BAD_REQUEST\",{message:\"Refresh token not found\",code:\"REFRESH_TOKEN_NOT_FOUND\"});try{const decryptedRefreshToken=await(0,import_utils.decryptOAuthToken)(refreshToken2,ctx.context);const tokens=await provider.refreshAccessToken(decryptedRefreshToken);const resolvedRefreshToken=tokens.refreshToken?await(0,import_utils.setTokenUtil)(tokens.refreshToken,ctx.context):refreshToken2;const resolvedRefreshTokenExpiresAt=tokens.refreshTokenExpiresAt??account.refreshTokenExpiresAt;if(account.id){const updateData={...account||{},accessToken:await(0,import_utils.setTokenUtil)(tokens.accessToken,ctx.context),refreshToken:resolvedRefreshToken,accessTokenExpiresAt:tokens.accessTokenExpiresAt,refreshTokenExpiresAt:resolvedRefreshTokenExpiresAt,scope:tokens.scopes?.join(\",\")||account.scope,idToken:tokens.idToken||account.idToken};await ctx.context.internalAdapter.updateAccount(account.id,updateData)}if(accountData&&providerId===accountData.providerId&&ctx.context.options.account?.storeAccountCookie)await(0,import_session_store.setAccountCookie)(ctx,{...accountData,accessToken:await(0,import_utils.setTokenUtil)(tokens.accessToken,ctx.context),refreshToken:resolvedRefreshToken,accessTokenExpiresAt:tokens.accessTokenExpiresAt,refreshTokenExpiresAt:resolvedRefreshTokenExpiresAt,scope:tokens.scopes?.join(\",\")||accountData.scope,idToken:tokens.idToken||accountData.idToken});return ctx.json({accessToken:tokens.accessToken,refreshToken:tokens.refreshToken??decryptedRefreshToken,accessTokenExpiresAt:tokens.accessTokenExpiresAt,refreshTokenExpiresAt:resolvedRefreshTokenExpiresAt,scope:tokens.scopes?.join(\",\")||account.scope,idToken:tokens.idToken||account.idToken,providerId:account.providerId,accountId:account.accountId})}catch(_error){throw import_error.APIError.from(\"BAD_REQUEST\",{message:\"Failed to refresh access token\",code:\"FAILED_TO_REFRESH_ACCESS_TOKEN\"})}});const accountInfoQuerySchema=z.optional(z.object({accountId:z.string().meta({description:\"The provider given account id for which to get the account info\"}).optional()}));const accountInfo=(0,import_api.createAuthEndpoint)(\"/account-info\",{method:\"GET\",use:[import_session.sessionMiddleware],metadata:{openapi:{description:\"Get the account info provided by the provider\",responses:{\"200\":{description:\"Success\",content:{\"application/json\":{schema:{type:\"object\",properties:{user:{type:\"object\",properties:{id:{type:\"string\"},name:{type:\"string\"},email:{type:\"string\"},image:{type:\"string\"},emailVerified:{type:\"boolean\"}},required:[\"id\",\"emailVerified\"]},data:{type:\"object\",properties:{},additionalProperties:true}},required:[\"user\",\"data\"],additionalProperties:false}}}}}}},query:accountInfoQuerySchema},async ctx=>{const providedAccountId=ctx.query?.accountId;let account=void 0;if(!providedAccountId){if(ctx.context.options.account?.storeAccountCookie){const accountData=await(0,import_session_store.getAccountCookie)(ctx);if(accountData)account=accountData}}else{const accountData=await ctx.context.internalAdapter.findAccount(providedAccountId);if(accountData)account=accountData}if(!account||account.userId!==ctx.context.session.user.id)throw import_error.APIError.from(\"BAD_REQUEST\",import_error.BASE_ERROR_CODES.ACCOUNT_NOT_FOUND);const provider=await(0,import_helpers.getAwaitableValue)(ctx.context.socialProviders,{value:account.providerId});if(!provider)throw import_error.APIError.from(\"INTERNAL_SERVER_ERROR\",{message:`Provider account provider is ${account.providerId} but it is not configured`,code:\"PROVIDER_NOT_CONFIGURED\"});const tokens=await getAccessToken({...ctx,method:\"POST\",body:{accountId:account.accountId,providerId:account.providerId},returnHeaders:false,returnStatus:false});if(!tokens.accessToken)throw import_error.APIError.from(\"BAD_REQUEST\",{message:\"Access token not found\",code:\"ACCESS_TOKEN_NOT_FOUND\"});const info=await provider.getUserInfo({...tokens,accessToken:tokens.accessToken});return ctx.json(info)});0&&(module.exports={accountInfo,getAccessToken,linkSocialAccount,listUserAccounts,refreshToken,unlinkAccount});\n})()\n","warnings":[],"map":{"version":3,"mappings":"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","names":["refreshToken"],"ignoreList":[],"sources":["/opt/canhelp/node_modules/better-auth/dist/api/routes/account.mjs"],"sourcesContent":[null]}}