[{"data":1,"prerenderedAt":444},["ShallowReactive",2],{"navigation_docs":3,"-core-concepts-route-protection":129,"-core-concepts-route-protection-surround":439},[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":52,"body":131,"description":432,"extension":433,"links":434,"meta":435,"navigation":436,"path":53,"seo":437,"stem":54,"__hash__":438},"docs/2.core-concepts/3.route-protection.md",{"type":132,"value":133,"toc":424},"minimark",[134,138,143,155,219,234,238,249,367,374,404,408,420],[135,136,137],"p",{},"There are two protection layers:",[139,140,142],"h2",{"id":141},"client-pages","Client pages",[135,144,145,146,150,151,154],{},"Global route middleware reads ",[147,148,149],"code",{},"meta.auth"," / ",[147,152,153],{},"meta.role",":",[156,157,162],"pre",{"className":158,"code":159,"language":160,"meta":161,"style":161},"language-ts shiki shiki-themes vitesse-light vitesse-dark vitesse-dark","definePageMeta({\n  auth: 'user',          // or 'guest'\n  // role: 'admin',      // optional\n})\n","ts","",[147,163,164,177,204,213],{"__ignoreMap":161},[165,166,169,173],"span",{"class":167,"line":168},"line",1,[165,170,172],{"class":171},"slgps","definePageMeta",[165,174,176],{"class":175},"s5YmX","({\n",[165,178,180,184,187,191,195,197,200],{"class":167,"line":179},2,[165,181,183],{"class":182},"sekRf","  auth",[165,185,186],{"class":175},": ",[165,188,190],{"class":189},"siS8b","'",[165,192,194],{"class":193},"sTpu4","user",[165,196,190],{"class":189},[165,198,199],{"class":175},",          ",[165,201,203],{"class":202},"sAGVv","// or 'guest'\n",[165,205,207,210],{"class":167,"line":206},3,[165,208,209],{"class":202},"  // role: 'admin',",[165,211,212],{"class":202},"      // optional\n",[165,214,216],{"class":167,"line":215},4,[165,217,218],{"class":175},"})\n",[135,220,221,222,225,226,229,230,233],{},"If a user is not logged in and ",[147,223,224],{},"auth"," resolves to ",[147,227,228],{},"'user'",", they are redirected to ",[147,231,232],{},"/login",".",[139,235,237],{"id":236},"route-rules-sync","Route rules sync",[135,239,240,241,244,245,248],{},"The module copies ",[147,242,243],{},"routeRules.auth"," and ",[147,246,247],{},"routeRules.role"," into page meta at build time:",[156,250,252],{"className":158,"code":251,"language":160,"meta":161,"style":161},"export default defineNuxtConfig({\n  routeRules: {\n    '/app/**': { auth: 'user' },\n    '/admin/**': { auth: { role: 'admin' } },\n    '/login': { auth: 'guest' },\n  },\n})\n",[147,253,254,268,276,302,332,356,362],{"__ignoreMap":161},[165,255,256,260,263,266],{"class":167,"line":168},[165,257,259],{"class":258},"sMxC7","export",[165,261,262],{"class":258}," default",[165,264,265],{"class":171}," defineNuxtConfig",[165,267,176],{"class":175},[165,269,270,273],{"class":167,"line":179},[165,271,272],{"class":182},"  routeRules",[165,274,275],{"class":175},": {\n",[165,277,278,281,284,286,289,291,293,295,297,299],{"class":167,"line":206},[165,279,280],{"class":189},"    '",[165,282,283],{"class":193},"/app/**",[165,285,190],{"class":189},[165,287,288],{"class":175},": { ",[165,290,224],{"class":182},[165,292,186],{"class":175},[165,294,190],{"class":189},[165,296,194],{"class":193},[165,298,190],{"class":189},[165,300,301],{"class":175}," },\n",[165,303,304,306,309,311,313,315,317,320,322,324,327,329],{"class":167,"line":215},[165,305,280],{"class":189},[165,307,308],{"class":193},"/admin/**",[165,310,190],{"class":189},[165,312,288],{"class":175},[165,314,224],{"class":182},[165,316,288],{"class":175},[165,318,319],{"class":182},"role",[165,321,186],{"class":175},[165,323,190],{"class":189},[165,325,326],{"class":193},"admin",[165,328,190],{"class":189},[165,330,331],{"class":175}," } },\n",[165,333,335,337,339,341,343,345,347,349,352,354],{"class":167,"line":334},5,[165,336,280],{"class":189},[165,338,232],{"class":193},[165,340,190],{"class":189},[165,342,288],{"class":175},[165,344,224],{"class":182},[165,346,186],{"class":175},[165,348,190],{"class":189},[165,350,351],{"class":193},"guest",[165,353,190],{"class":189},[165,355,301],{"class":175},[165,357,359],{"class":167,"line":358},6,[165,360,361],{"class":175},"  },\n",[165,363,365],{"class":167,"line":364},7,[165,366,218],{"class":175},[368,369,371,373],"h3",{"id":370},"auth-values",[147,372,224],{}," values",[375,376,377,388,394,399],"ul",{},[378,379,380,383,384,387],"li",{},[147,381,382],{},"false"," or ",[147,385,386],{},"undefined",": public",[378,389,390,393],{},[147,391,392],{},"'guest'",": only unauthenticated users",[378,395,396,398],{},[147,397,228],{},": any authenticated user",[378,400,401],{},[147,402,403],{},"{ only?: 'guest' | 'user', role?: string | string[], redirectTo?: string }",[139,405,407],{"id":406},"see-also","See also",[375,409,410,415],{},[378,411,412,413],{},"How the module works: ",[147,414,41],{},[378,416,417,418],{},"Security & caveats: ",[147,419,61],{},[421,422,423],"style",{},"html pre.shiki code .slgps, html code.shiki .slgps{--shiki-light:#59873A;--shiki-default:#80A665;--shiki-dark:#80A665}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 .sTpu4, html code.shiki .sTpu4{--shiki-light:#B56959;--shiki-default:#C98A7D;--shiki-dark:#C98A7D}html pre.shiki code .sAGVv, html code.shiki .sAGVv{--shiki-light:#A0ADA0;--shiki-default:#758575DD;--shiki-dark:#758575DD}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}",{"title":161,"searchDepth":179,"depth":179,"links":425},[426,427,431],{"id":141,"depth":179,"text":142},{"id":236,"depth":179,"text":237,"children":428},[429],{"id":370,"depth":206,"text":430},"auth values",{"id":406,"depth":179,"text":407},"Protect pages with route rules or meta.","md",null,{},true,{"title":52,"description":432},"CVb3kTKVbtbHQYX0u7Qazy6dSROV9yXK7dNvEXD-shg",[440,442],{"title":48,"path":49,"stem":50,"description":441,"children":-1},"SSR‑safe session state via `useUserSession()`.",{"title":56,"path":57,"stem":58,"description":443,"children":-1},"What the module registers for you.",1765664061605]