[{"data":1,"prerenderedAt":311},["ShallowReactive",2],{"navigation_docs":3,"-guides-api-protection":129,"-guides-api-protection-surround":306},[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":73,"body":131,"description":299,"extension":300,"links":301,"meta":302,"navigation":303,"path":74,"seo":304,"stem":75,"__hash__":305},"docs/3.guides/2.api-protection.md",{"type":132,"value":133,"toc":297},"minimark",[134,155,275,282,285,293],[135,136,137,138,142,143,146,147,151,152,142],"p",{},"The module ships a Nitro middleware that runs on ",[139,140,141],"code",{},"/api/**",".",[144,145],"br",{},"\nIt ",[148,149,150],"strong",{},"only"," checks ",[139,153,154],{},"routeRules.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","export default defineNuxtConfig({\n  routeRules: {\n    '/api/admin/**': { role: 'admin' },\n    '/api/user/**': { role: ['admin', 'user'] },\n  },\n})\n","ts","",[139,163,164,184,194,227,263,269],{"__ignoreMap":161},[165,166,169,173,176,180],"span",{"class":167,"line":168},"line",1,[165,170,172],{"class":171},"sMxC7","export",[165,174,175],{"class":171}," default",[165,177,179],{"class":178},"slgps"," defineNuxtConfig",[165,181,183],{"class":182},"s5YmX","({\n",[165,185,187,191],{"class":167,"line":186},2,[165,188,190],{"class":189},"sekRf","  routeRules",[165,192,193],{"class":182},": {\n",[165,195,197,201,205,208,211,214,217,219,222,224],{"class":167,"line":196},3,[165,198,200],{"class":199},"siS8b","    '",[165,202,204],{"class":203},"sTpu4","/api/admin/**",[165,206,207],{"class":199},"'",[165,209,210],{"class":182},": { ",[165,212,213],{"class":189},"role",[165,215,216],{"class":182},": ",[165,218,207],{"class":199},[165,220,221],{"class":203},"admin",[165,223,207],{"class":199},[165,225,226],{"class":182}," },\n",[165,228,230,232,235,237,239,241,244,246,248,250,253,255,258,260],{"class":167,"line":229},4,[165,231,200],{"class":199},[165,233,234],{"class":203},"/api/user/**",[165,236,207],{"class":199},[165,238,210],{"class":182},[165,240,213],{"class":189},[165,242,243],{"class":182},": [",[165,245,207],{"class":199},[165,247,221],{"class":203},[165,249,207],{"class":199},[165,251,252],{"class":182},", ",[165,254,207],{"class":199},[165,256,257],{"class":203},"user",[165,259,207],{"class":199},[165,261,262],{"class":182},"] },\n",[165,264,266],{"class":167,"line":265},5,[165,267,268],{"class":182},"  },\n",[165,270,272],{"class":167,"line":271},6,[165,273,274],{"class":182},"})\n",[135,276,277,278,281],{},"If you want different behavior (e.g. ",[139,279,280],{},"auth"," on APIs), add your own Nitro middleware.",[135,283,284],{},"See also:",[286,287,288],"ul",{},[289,290,291],"li",{},[139,292,61],{},[294,295,296],"style",{},"html pre.shiki code .sMxC7, html code.shiki .sMxC7{--shiki-light:#1E754F;--shiki-default:#4D9375;--shiki-dark:#4D9375}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 .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);}",{"title":161,"searchDepth":186,"depth":186,"links":298},[],"Use `routeRules.role` for `/api/**` protection.","md",null,{},true,{"title":73,"description":299},"Is1-OUlCqnSxltPQY_Y1i10veQRwWJT9p08th3asEXs",[307,309],{"title":69,"path":70,"stem":71,"description":308,"children":-1},"Enforce roles on pages and server handlers.",{"title":77,"path":78,"stem":79,"description":310,"children":-1},"How dialect selection affects schema generation.",1765664061968]