[{"data":1,"prerenderedAt":372},["ShallowReactive",2],{"navigation_docs":3,"-guides-role-based-access":129,"-guides-role-based-access-surround":367},[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":69,"body":131,"description":360,"extension":361,"links":362,"meta":363,"navigation":364,"path":70,"seo":365,"stem":71,"__hash__":366},"docs/3.guides/1.role-based-access.md",{"type":132,"value":133,"toc":356},"minimark",[134,158,163,219,223,338,352],[135,136,137,138,142,143,146,147,150,151,154,155,157],"p",{},"Roles are free‑form strings on your ",[139,140,141],"code",{},"AuthUser",".",[144,145],"br",{},"\nAugment the type if you store ",[139,148,149],{},"role"," or ",[139,152,153],{},"banned"," on users (see ",[139,156,27],{},").",[159,160,162],"h2",{"id":161},"pages","Pages",[164,165,170],"pre",{"className":166,"code":167,"language":168,"meta":169,"style":169},"language-ts shiki shiki-themes vitesse-light vitesse-dark vitesse-dark","definePageMeta({\n  auth: { role: 'admin' },\n})\n","ts","",[139,171,172,185,213],{"__ignoreMap":169},[173,174,177,181],"span",{"class":175,"line":176},"line",1,[173,178,180],{"class":179},"slgps","definePageMeta",[173,182,184],{"class":183},"s5YmX","({\n",[173,186,188,192,195,197,200,204,208,210],{"class":175,"line":187},2,[173,189,191],{"class":190},"sekRf","  auth",[173,193,194],{"class":183},": { ",[173,196,149],{"class":190},[173,198,199],{"class":183},": ",[173,201,203],{"class":202},"siS8b","'",[173,205,207],{"class":206},"sTpu4","admin",[173,209,203],{"class":202},[173,211,212],{"class":183}," },\n",[173,214,216],{"class":175,"line":215},3,[173,217,218],{"class":183},"})\n",[159,220,222],{"id":221},"server","Server",[164,224,226],{"className":166,"code":225,"language":168,"meta":169,"style":169},"export default defineEventHandler(async (event) => {\n  const { user } = await requireUserSession(event, { role: 'admin' })\n  return { ok: true, user }\n})\n",[139,227,228,263,309,333],{"__ignoreMap":169},[173,229,230,234,237,240,243,247,250,254,257,260],{"class":175,"line":176},[173,231,233],{"class":232},"sMxC7","export",[173,235,236],{"class":232}," default",[173,238,239],{"class":179}," defineEventHandler",[173,241,242],{"class":183},"(",[173,244,246],{"class":245},"sR2V5","async",[173,248,249],{"class":183}," (",[173,251,253],{"class":252},"s6w83","event",[173,255,256],{"class":183},")",[173,258,259],{"class":183}," =>",[173,261,262],{"class":183}," {\n",[173,264,265,268,271,274,277,280,283,286,288,290,293,296,298,300,302,304,306],{"class":175,"line":187},[173,266,267],{"class":245},"  const ",[173,269,270],{"class":183},"{",[173,272,273],{"class":252}," user",[173,275,276],{"class":183}," }",[173,278,279],{"class":183}," =",[173,281,282],{"class":232}," await",[173,284,285],{"class":179}," requireUserSession",[173,287,242],{"class":183},[173,289,253],{"class":252},[173,291,292],{"class":183},",",[173,294,295],{"class":183}," { ",[173,297,149],{"class":190},[173,299,199],{"class":183},[173,301,203],{"class":202},[173,303,207],{"class":206},[173,305,203],{"class":202},[173,307,308],{"class":183}," })\n",[173,310,311,314,316,319,321,324,327,330],{"class":175,"line":215},[173,312,313],{"class":232},"  return",[173,315,295],{"class":183},[173,317,318],{"class":190},"ok",[173,320,199],{"class":183},[173,322,323],{"class":232},"true",[173,325,326],{"class":183},", ",[173,328,329],{"class":252},"user",[173,331,332],{"class":183}," }\n",[173,334,336],{"class":175,"line":335},4,[173,337,218],{"class":183},[135,339,340,343,344,347,348,351],{},[139,341,342],{},"requireUserSession"," also checks ",[139,345,346],{},"user.banned"," and throws ",[139,349,350],{},"403"," if true.",[353,354,355],"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 .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 .sR2V5, html code.shiki .sR2V5{--shiki-light:#AB5959;--shiki-default:#CB7676;--shiki-dark:#CB7676}html pre.shiki code .s6w83, html code.shiki .s6w83{--shiki-light:#B07D48;--shiki-default:#BD976A;--shiki-dark:#BD976A}",{"title":169,"searchDepth":187,"depth":187,"links":357},[358,359],{"id":161,"depth":187,"text":162},{"id":221,"depth":187,"text":222},"Enforce roles on pages and server handlers.","md",null,{},true,{"title":69,"description":360},"tzDZTUhWZ5Iga0bc9nkwokwXac901fiIrn6it4V826w",[368,370],{"title":60,"path":61,"stem":62,"description":369,"children":-1},"What is enforced where, and what you should not assume.",{"title":73,"path":74,"stem":75,"description":371,"children":-1},"Use `routeRules.role` for `/api/**` protection.",1765664061918]