[{"data":1,"prerenderedAt":960},["ShallowReactive",2],{"navigation_docs":3,"-getting-started-quickstart":129,"-getting-started-quickstart-surround":957},[4,34,63,80,101,110],{"title":5,"path":6,"stem":7,"children":8,"page":33},"Getting Started","/getting-started","1.getting-started",[9,13,17,21,25,29],{"title":10,"path":11,"stem":12},"Quickstart","/getting-started/quickstart","1.getting-started/0.quickstart",{"title":14,"path":15,"stem":16},"Installation","/getting-started/installation","1.getting-started/1.installation",{"title":18,"path":19,"stem":20},"Server Configuration","/getting-started/configuration","1.getting-started/2.configuration",{"title":22,"path":23,"stem":24},"Client Setup","/getting-started/client-setup","1.getting-started/3.client-setup",{"title":26,"path":27,"stem":28},"Type Augmentation","/getting-started/type-augmentation","1.getting-started/4.type-augmentation",{"title":30,"path":31,"stem":32},"Schema Generation","/getting-started/schema-generation","1.getting-started/5.schema-generation",false,{"title":35,"path":36,"stem":37,"children":38,"page":33},"Core Concepts","/core-concepts","2.core-concepts",[39,43,47,51,55,59],{"title":40,"path":41,"stem":42},"How It Works","/core-concepts/how-it-works","2.core-concepts/0.how-it-works",{"title":44,"path":45,"stem":46},"`serverAuth()`","/core-concepts/server-auth","2.core-concepts/1.server-auth",{"title":48,"path":49,"stem":50},"Sessions","/core-concepts/sessions","2.core-concepts/2.sessions",{"title":52,"path":53,"stem":54},"Route Protection","/core-concepts/route-protection","2.core-concepts/3.route-protection",{"title":56,"path":57,"stem":58},"Auto‑Imports and Aliases","/core-concepts/auto-imports-aliases","2.core-concepts/4.auto-imports-aliases",{"title":60,"path":61,"stem":62},"Security & Caveats","/core-concepts/security-caveats","2.core-concepts/5.security-caveats",{"title":64,"path":65,"stem":66,"children":67,"page":33},"Guides","/guides","3.guides",[68,72,76],{"title":69,"path":70,"stem":71},"Role‑Based Access","/guides/role-based-access","3.guides/1.role-based-access",{"title":73,"path":74,"stem":75},"Protecting API Routes","/guides/api-protection","3.guides/2.api-protection",{"title":77,"path":78,"stem":79},"Database Dialects","/guides/custom-dialects","3.guides/3.custom-dialects",{"title":81,"path":82,"stem":83,"children":84,"page":33},"API Reference","/api","4.api",[85,89,93,97],{"title":86,"path":87,"stem":88},"Composables","/api/composables","4.api/1.composables",{"title":90,"path":91,"stem":92},"Server Utilities","/api/server-utils","4.api/2.server-utils",{"title":94,"path":95,"stem":96},"Components","/api/components","4.api/3.components",{"title":98,"path":99,"stem":100},"Types","/api/types","4.api/4.types",{"title":102,"path":103,"stem":104,"children":105,"page":33},"Troubleshooting","/troubleshooting","5.troubleshooting",[106],{"title":107,"path":108,"stem":109},"FAQ","/troubleshooting/faq","5.troubleshooting/1.faq",{"title":111,"path":112,"stem":113,"children":114},"Better Auth","/better-auth","6.better-auth",[115,117,121,125],{"title":111,"path":112,"stem":116},"6.better-auth/index",{"title":118,"path":119,"stem":120},"OAuth & Social Providers","/better-auth/oauth","6.better-auth/1.oauth",{"title":122,"path":123,"stem":124},"Plugins","/better-auth/plugins","6.better-auth/2.plugins",{"title":126,"path":127,"stem":128},"Client Plugins (Exports)","/better-auth/client-plugins","6.better-auth/3.client-plugins",{"id":130,"title":10,"body":131,"description":951,"extension":952,"links":953,"meta":954,"navigation":238,"path":11,"seo":955,"stem":12,"__hash__":956},"docs/1.getting-started/0.quickstart.md",{"type":132,"value":133,"toc":942},"minimark",[134,139,174,178,470,474,481,601,607,753,757,921,924,938],[135,136,138],"h2",{"id":137},"_1-install","1) Install",[140,141,146],"pre",{"className":142,"code":143,"language":144,"meta":145,"style":145},"language-bash shiki shiki-themes vitesse-light vitesse-dark vitesse-dark","pnpm add @onmax/nuxt-better-auth better-auth drizzle-orm @nuxthub/core\n","bash","",[147,148,149],"code",{"__ignoreMap":145},[150,151,154,158,162,165,168,171],"span",{"class":152,"line":153},"line",1,[150,155,157],{"class":156},"slgps","pnpm",[150,159,161],{"class":160},"sTpu4"," add",[150,163,164],{"class":160}," @onmax/nuxt-better-auth",[150,166,167],{"class":160}," better-auth",[150,169,170],{"class":160}," drizzle-orm",[150,172,173],{"class":160}," @nuxthub/core\n",[135,175,177],{"id":176},"_2-enable-the-module-nuxthub-db","2) Enable the module + NuxtHub DB",[140,179,183],{"className":180,"code":181,"language":182,"meta":145,"style":145},"language-ts shiki shiki-themes vitesse-light vitesse-dark vitesse-dark","export default defineNuxtConfig({\n  modules: ['@nuxthub/core', '@onmax/nuxt-better-auth'],\n\n  hub: { db: { dialect: 'sqlite' } },\n\n  runtimeConfig: {\n    betterAuthSecret: process.env.BETTER_AUTH_SECRET,\n    public: {\n      siteUrl: process.env.NUXT_PUBLIC_SITE_URL || 'http://localhost:3000',\n    },\n  },\n\n  routeRules: {\n    '/app/**': { auth: 'user' },\n    '/admin/**': { auth: { role: 'admin' } },\n    '/login': { auth: 'guest' },\n  },\n})\n","ts",[147,184,185,201,233,240,270,275,284,310,318,351,357,363,368,376,404,434,459,464],{"__ignoreMap":145},[150,186,187,191,194,197],{"class":152,"line":153},[150,188,190],{"class":189},"sMxC7","export",[150,192,193],{"class":189}," default",[150,195,196],{"class":156}," defineNuxtConfig",[150,198,200],{"class":199},"s5YmX","({\n",[150,202,204,208,211,215,218,220,223,225,228,230],{"class":152,"line":203},2,[150,205,207],{"class":206},"sekRf","  modules",[150,209,210],{"class":199},": [",[150,212,214],{"class":213},"siS8b","'",[150,216,217],{"class":160},"@nuxthub/core",[150,219,214],{"class":213},[150,221,222],{"class":199},", ",[150,224,214],{"class":213},[150,226,227],{"class":160},"@onmax/nuxt-better-auth",[150,229,214],{"class":213},[150,231,232],{"class":199},"],\n",[150,234,236],{"class":152,"line":235},3,[150,237,239],{"emptyLinePlaceholder":238},true,"\n",[150,241,243,246,249,252,254,257,260,262,265,267],{"class":152,"line":242},4,[150,244,245],{"class":206},"  hub",[150,247,248],{"class":199},": { ",[150,250,251],{"class":206},"db",[150,253,248],{"class":199},[150,255,256],{"class":206},"dialect",[150,258,259],{"class":199},": ",[150,261,214],{"class":213},[150,263,264],{"class":160},"sqlite",[150,266,214],{"class":213},[150,268,269],{"class":199}," } },\n",[150,271,273],{"class":152,"line":272},5,[150,274,239],{"emptyLinePlaceholder":238},[150,276,278,281],{"class":152,"line":277},6,[150,279,280],{"class":206},"  runtimeConfig",[150,282,283],{"class":199},": {\n",[150,285,287,290,292,296,299,302,304,307],{"class":152,"line":286},7,[150,288,289],{"class":206},"    betterAuthSecret",[150,291,259],{"class":199},[150,293,295],{"class":294},"s6w83","process",[150,297,298],{"class":199},".",[150,300,301],{"class":294},"env",[150,303,298],{"class":199},[150,305,306],{"class":294},"BETTER_AUTH_SECRET",[150,308,309],{"class":199},",\n",[150,311,313,316],{"class":152,"line":312},8,[150,314,315],{"class":206},"    public",[150,317,283],{"class":199},[150,319,321,324,326,328,330,332,334,337,341,344,347,349],{"class":152,"line":320},9,[150,322,323],{"class":206},"      siteUrl",[150,325,259],{"class":199},[150,327,295],{"class":294},[150,329,298],{"class":199},[150,331,301],{"class":294},[150,333,298],{"class":199},[150,335,336],{"class":294},"NUXT_PUBLIC_SITE_URL",[150,338,340],{"class":339},"sR2V5"," ||",[150,342,343],{"class":213}," '",[150,345,346],{"class":160},"http://localhost:3000",[150,348,214],{"class":213},[150,350,309],{"class":199},[150,352,354],{"class":152,"line":353},10,[150,355,356],{"class":199},"    },\n",[150,358,360],{"class":152,"line":359},11,[150,361,362],{"class":199},"  },\n",[150,364,366],{"class":152,"line":365},12,[150,367,239],{"emptyLinePlaceholder":238},[150,369,371,374],{"class":152,"line":370},13,[150,372,373],{"class":206},"  routeRules",[150,375,283],{"class":199},[150,377,379,382,385,387,389,392,394,396,399,401],{"class":152,"line":378},14,[150,380,381],{"class":213},"    '",[150,383,384],{"class":160},"/app/**",[150,386,214],{"class":213},[150,388,248],{"class":199},[150,390,391],{"class":206},"auth",[150,393,259],{"class":199},[150,395,214],{"class":213},[150,397,398],{"class":160},"user",[150,400,214],{"class":213},[150,402,403],{"class":199}," },\n",[150,405,407,409,412,414,416,418,420,423,425,427,430,432],{"class":152,"line":406},15,[150,408,381],{"class":213},[150,410,411],{"class":160},"/admin/**",[150,413,214],{"class":213},[150,415,248],{"class":199},[150,417,391],{"class":206},[150,419,248],{"class":199},[150,421,422],{"class":206},"role",[150,424,259],{"class":199},[150,426,214],{"class":213},[150,428,429],{"class":160},"admin",[150,431,214],{"class":213},[150,433,269],{"class":199},[150,435,437,439,442,444,446,448,450,452,455,457],{"class":152,"line":436},16,[150,438,381],{"class":213},[150,440,441],{"class":160},"/login",[150,443,214],{"class":213},[150,445,248],{"class":199},[150,447,391],{"class":206},[150,449,259],{"class":199},[150,451,214],{"class":213},[150,453,454],{"class":160},"guest",[150,456,214],{"class":213},[150,458,403],{"class":199},[150,460,462],{"class":152,"line":461},17,[150,463,362],{"class":199},[150,465,467],{"class":152,"line":466},18,[150,468,469],{"class":199},"})\n",[135,471,473],{"id":472},"_3-create-the-required-config-files","3) Create the required config files",[475,476,478],"h3",{"id":477},"serverauthconfigts",[147,479,480],{},"server/auth.config.ts",[140,482,484],{"className":180,"code":483,"language":182,"meta":145,"style":145},"import { admin } from 'better-auth/plugins'\nimport { defineServerAuth } from '@onmax/nuxt-better-auth'\n\nexport default defineServerAuth(() => ({\n  appName: 'My App',\n  emailAndPassword: { enabled: true },\n  plugins: [admin()],\n}))\n",[147,485,486,511,530,534,551,567,584,596],{"__ignoreMap":145},[150,487,488,491,494,497,500,503,505,508],{"class":152,"line":153},[150,489,490],{"class":189},"import",[150,492,493],{"class":199}," {",[150,495,496],{"class":294}," admin",[150,498,499],{"class":199}," }",[150,501,502],{"class":189}," from",[150,504,343],{"class":213},[150,506,507],{"class":160},"better-auth/plugins",[150,509,510],{"class":213},"'\n",[150,512,513,515,517,520,522,524,526,528],{"class":152,"line":203},[150,514,490],{"class":189},[150,516,493],{"class":199},[150,518,519],{"class":294}," defineServerAuth",[150,521,499],{"class":199},[150,523,502],{"class":189},[150,525,343],{"class":213},[150,527,227],{"class":160},[150,529,510],{"class":213},[150,531,532],{"class":152,"line":235},[150,533,239],{"emptyLinePlaceholder":238},[150,535,536,538,540,542,545,548],{"class":152,"line":242},[150,537,190],{"class":189},[150,539,193],{"class":189},[150,541,519],{"class":156},[150,543,544],{"class":199},"(()",[150,546,547],{"class":199}," =>",[150,549,550],{"class":199}," ({\n",[150,552,553,556,558,560,563,565],{"class":152,"line":272},[150,554,555],{"class":206},"  appName",[150,557,259],{"class":199},[150,559,214],{"class":213},[150,561,562],{"class":160},"My App",[150,564,214],{"class":213},[150,566,309],{"class":199},[150,568,569,572,574,577,579,582],{"class":152,"line":277},[150,570,571],{"class":206},"  emailAndPassword",[150,573,248],{"class":199},[150,575,576],{"class":206},"enabled",[150,578,259],{"class":199},[150,580,581],{"class":189},"true",[150,583,403],{"class":199},[150,585,586,589,591,593],{"class":152,"line":286},[150,587,588],{"class":206},"  plugins",[150,590,210],{"class":199},[150,592,429],{"class":156},[150,594,595],{"class":199},"()],\n",[150,597,598],{"class":152,"line":312},[150,599,600],{"class":199},"}))\n",[475,602,604],{"id":603},"appauthclientts",[147,605,606],{},"app/auth.client.ts",[140,608,610],{"className":180,"code":609,"language":182,"meta":145,"style":145},"import { createAuthClient } from 'better-auth/vue'\nimport { adminClient } from 'better-auth/client/plugins'\n\nexport function createAppAuthClient(baseURL: string) {\n  return createAuthClient({\n    baseURL,\n    plugins: [adminClient()],\n  })\n}\n\nexport type AppAuthClient = ReturnType\u003Ctypeof createAppAuthClient>\n",[147,611,612,632,652,656,684,693,700,712,717,722,726],{"__ignoreMap":145},[150,613,614,616,618,621,623,625,627,630],{"class":152,"line":153},[150,615,490],{"class":189},[150,617,493],{"class":199},[150,619,620],{"class":294}," createAuthClient",[150,622,499],{"class":199},[150,624,502],{"class":189},[150,626,343],{"class":213},[150,628,629],{"class":160},"better-auth/vue",[150,631,510],{"class":213},[150,633,634,636,638,641,643,645,647,650],{"class":152,"line":203},[150,635,490],{"class":189},[150,637,493],{"class":199},[150,639,640],{"class":294}," adminClient",[150,642,499],{"class":199},[150,644,502],{"class":189},[150,646,343],{"class":213},[150,648,649],{"class":160},"better-auth/client/plugins",[150,651,510],{"class":213},[150,653,654],{"class":152,"line":235},[150,655,239],{"emptyLinePlaceholder":238},[150,657,658,660,663,666,669,672,674,678,681],{"class":152,"line":242},[150,659,190],{"class":189},[150,661,662],{"class":339}," function",[150,664,665],{"class":156}," createAppAuthClient",[150,667,668],{"class":199},"(",[150,670,671],{"class":294},"baseURL",[150,673,259],{"class":199},[150,675,677],{"class":676},"sW6FB","string",[150,679,680],{"class":199},")",[150,682,683],{"class":199}," {\n",[150,685,686,689,691],{"class":152,"line":272},[150,687,688],{"class":189},"  return",[150,690,620],{"class":156},[150,692,200],{"class":199},[150,694,695,698],{"class":152,"line":277},[150,696,697],{"class":294},"    baseURL",[150,699,309],{"class":199},[150,701,702,705,707,710],{"class":152,"line":286},[150,703,704],{"class":206},"    plugins",[150,706,210],{"class":199},[150,708,709],{"class":156},"adminClient",[150,711,595],{"class":199},[150,713,714],{"class":152,"line":312},[150,715,716],{"class":199},"  })\n",[150,718,719],{"class":152,"line":320},[150,720,721],{"class":199},"}\n",[150,723,724],{"class":152,"line":353},[150,725,239],{"emptyLinePlaceholder":238},[150,727,728,730,733,736,739,742,745,748,750],{"class":152,"line":359},[150,729,190],{"class":189},[150,731,732],{"class":339}," type",[150,734,735],{"class":676}," AppAuthClient",[150,737,738],{"class":199}," =",[150,740,741],{"class":676}," ReturnType",[150,743,744],{"class":199},"\u003C",[150,746,747],{"class":339},"typeof",[150,749,665],{"class":294},[150,751,752],{"class":199},">\n",[135,754,756],{"id":755},"_4-use-it-in-your-app","4) Use it in your app",[140,758,762],{"className":759,"code":760,"language":761,"meta":145,"style":145},"language-vue shiki shiki-themes vitesse-light vitesse-dark vitesse-dark","\u003Cscript setup lang=\"ts\">\nconst { loggedIn, user } = useUserSession()\n\u003C/script>\n\n\u003Ctemplate>\n  \u003Cp v-if=\"loggedIn\">\n    Hi {{ user?.name }}\n  \u003C/p>\n  \u003Cp v-else>\n    Not signed in\n  \u003C/p>\n\u003C/template>\n","vue",[147,763,764,789,816,825,829,838,860,880,889,900,905,913],{"__ignoreMap":145},[150,765,766,768,771,774,777,780,783,785,787],{"class":152,"line":153},[150,767,744],{"class":199},[150,769,770],{"class":189},"script",[150,772,773],{"class":294}," setup",[150,775,776],{"class":294}," lang",[150,778,779],{"class":199},"=",[150,781,782],{"class":213},"\"",[150,784,182],{"class":160},[150,786,782],{"class":213},[150,788,752],{"class":199},[150,790,791,794,797,800,803,806,808,810,813],{"class":152,"line":203},[150,792,793],{"class":339},"const ",[150,795,796],{"class":199},"{",[150,798,799],{"class":294}," loggedIn",[150,801,802],{"class":199},",",[150,804,805],{"class":294}," user",[150,807,499],{"class":199},[150,809,738],{"class":199},[150,811,812],{"class":156}," useUserSession",[150,814,815],{"class":199},"()\n",[150,817,818,821,823],{"class":152,"line":235},[150,819,820],{"class":199},"\u003C/",[150,822,770],{"class":189},[150,824,752],{"class":199},[150,826,827],{"class":152,"line":242},[150,828,239],{"emptyLinePlaceholder":238},[150,830,831,833,836],{"class":152,"line":272},[150,832,744],{"class":199},[150,834,835],{"class":189},"template",[150,837,752],{"class":199},[150,839,840,843,846,849,851,853,856,858],{"class":152,"line":277},[150,841,842],{"class":199},"  \u003C",[150,844,845],{"class":189},"p",[150,847,848],{"class":189}," v-if",[150,850,779],{"class":199},[150,852,782],{"class":199},[150,854,855],{"class":294},"loggedIn",[150,857,782],{"class":199},[150,859,752],{"class":199},[150,861,862,866,869,871,874,877],{"class":152,"line":286},[150,863,865],{"class":864},"s3gXd","    Hi ",[150,867,868],{"class":199},"{{",[150,870,805],{"class":294},[150,872,873],{"class":199},"?.",[150,875,876],{"class":294},"name",[150,878,879],{"class":199}," }}\n",[150,881,882,885,887],{"class":152,"line":312},[150,883,884],{"class":199},"  \u003C/",[150,886,845],{"class":189},[150,888,752],{"class":199},[150,890,891,893,895,898],{"class":152,"line":320},[150,892,842],{"class":199},[150,894,845],{"class":189},[150,896,897],{"class":189}," v-else",[150,899,752],{"class":199},[150,901,902],{"class":152,"line":353},[150,903,904],{"class":864},"    Not signed in\n",[150,906,907,909,911],{"class":152,"line":359},[150,908,884],{"class":199},[150,910,845],{"class":189},[150,912,752],{"class":199},[150,914,915,917,919],{"class":152,"line":365},[150,916,820],{"class":199},[150,918,835],{"class":189},[150,920,752],{"class":199},[845,922,923],{},"Next:",[925,926,927,933],"ul",{},[928,929,930,931],"li",{},"Learn how the module works: ",[147,932,41],{},[928,934,935,936],{},"Browse Better Auth plugins/providers: ",[147,937,112],{},[939,940,941],"style",{},"html pre.shiki code .slgps, html code.shiki .slgps{--shiki-light:#59873A;--shiki-default:#80A665;--shiki-dark:#80A665}html pre.shiki code .sTpu4, html code.shiki .sTpu4{--shiki-light:#B56959;--shiki-default:#C98A7D;--shiki-dark:#C98A7D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMxC7, html code.shiki .sMxC7{--shiki-light:#1E754F;--shiki-default:#4D9375;--shiki-dark:#4D9375}html pre.shiki code .s5YmX, html code.shiki .s5YmX{--shiki-light:#999999;--shiki-default:#666666;--shiki-dark:#666666}html pre.shiki code .sekRf, html code.shiki .sekRf{--shiki-light:#998418;--shiki-default:#B8A965;--shiki-dark:#B8A965}html pre.shiki code .siS8b, html code.shiki .siS8b{--shiki-light:#B5695977;--shiki-default:#C98A7D77;--shiki-dark:#C98A7D77}html pre.shiki code .s6w83, html code.shiki .s6w83{--shiki-light:#B07D48;--shiki-default:#BD976A;--shiki-dark:#BD976A}html pre.shiki code .sR2V5, html code.shiki .sR2V5{--shiki-light:#AB5959;--shiki-default:#CB7676;--shiki-dark:#CB7676}html pre.shiki code .sW6FB, html code.shiki .sW6FB{--shiki-light:#2E8F82;--shiki-default:#5DA994;--shiki-dark:#5DA994}html pre.shiki code .s3gXd, html code.shiki .s3gXd{--shiki-light:#393A34;--shiki-default:#DBD7CAEE;--shiki-dark:#DBD7CAEE}",{"title":145,"searchDepth":203,"depth":203,"links":943},[944,945,946,950],{"id":137,"depth":203,"text":138},{"id":176,"depth":203,"text":177},{"id":472,"depth":203,"text":473,"children":947},[948,949],{"id":477,"depth":235,"text":480},{"id":603,"depth":235,"text":606},{"id":755,"depth":203,"text":756},"Minimal setup you can copy/paste.","md",null,{},{"title":10,"description":951},"pEhacsxFI1GtRH1zPoexZDuy9T2i0kiOjQnF6ItvoEM",[953,958],{"title":14,"path":15,"stem":16,"description":959,"children":-1},"Get started with Nuxt Better Auth in your project.",1765664060589]