[{"data":1,"prerenderedAt":716},["ShallowReactive",2],{"navigation":3,"\u002Fadmin\u002Froles":178,"\u002Fadmin\u002Froles-surround":711},[4,23,78,95,123,143,158],{"title":5,"path":6,"stem":7,"children":8,"icon":22},"Getting Started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,12,17],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-house",{"title":13,"path":14,"stem":15,"icon":16},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":18,"path":19,"stem":20,"icon":21},"Configuration","\u002Fgetting-started\u002Fconfiguration","1.getting-started\u002F3.configuration","i-lucide-settings",false,{"title":24,"icon":22,"path":25,"stem":26,"children":27,"page":22},"Sign-in","\u002Fsign-in","2.sign-in",[28,33,38,43,48,53,58,63,68,73],{"title":29,"path":30,"stem":31,"icon":32},"Sign-in pages","\u002Fsign-in\u002Fpages","2.sign-in\u002F1.pages","i-lucide-log-in",{"title":34,"path":35,"stem":36,"icon":37},"Several accounts","\u002Fsign-in\u002Fmulti-session","2.sign-in\u002F10.multi-session","i-lucide-users-round",{"title":39,"path":40,"stem":41,"icon":42},"Account page","\u002Fsign-in\u002Faccount","2.sign-in\u002F2.account","i-lucide-circle-user",{"title":44,"path":45,"stem":46,"icon":47},"Other methods","\u002Fsign-in\u002Fmethods","2.sign-in\u002F3.methods","i-lucide-key-square",{"title":49,"path":50,"stem":51,"icon":52},"Sign-in providers","\u002Fsign-in\u002Fproviders","2.sign-in\u002F4.providers","i-lucide-share-2",{"title":54,"path":55,"stem":56,"icon":57},"Two-factor","\u002Fsign-in\u002Ftwo-factor","2.sign-in\u002F5.two-factor","i-lucide-shield-check",{"title":59,"path":60,"stem":61,"icon":62},"Passkeys","\u002Fsign-in\u002Fpasskeys","2.sign-in\u002F6.passkeys","i-lucide-fingerprint",{"title":64,"path":65,"stem":66,"icon":67},"Phone numbers","\u002Fsign-in\u002Fphone-numbers","2.sign-in\u002F7.phone-numbers","i-lucide-smartphone",{"title":69,"path":70,"stem":71,"icon":72},"Signing in devices","\u002Fsign-in\u002Fdevices","2.sign-in\u002F8.devices","i-lucide-tv",{"title":74,"path":75,"stem":76,"icon":77},"Security","\u002Fsign-in\u002Fsecurity","2.sign-in\u002F9.security","i-lucide-lock-keyhole",{"title":79,"path":80,"stem":81,"children":82,"icon":22},"Organizations","\u002Forganizations","3.organizations\u002F1.index",[83,85,90],{"title":79,"path":80,"stem":81,"icon":84},"i-lucide-building-2",{"title":86,"path":87,"stem":88,"icon":89},"Roles","\u002Forganizations\u002Froles","3.organizations\u002F2.roles","i-lucide-shield",{"title":91,"path":92,"stem":93,"icon":94},"Single sign-on","\u002Forganizations\u002Fsso","3.organizations\u002F3.sso","i-lucide-key-round",{"title":96,"path":97,"stem":98,"children":99,"icon":22},"Admin dashboard","\u002Fadmin","4.admin\u002F1.index",[100,103,108,113,118],{"title":101,"path":97,"stem":98,"icon":102},"Overview","i-lucide-layout-dashboard",{"title":104,"path":105,"stem":106,"icon":107},"Managing users","\u002Fadmin\u002Fusers","4.admin\u002F2.users","i-lucide-user-cog",{"title":109,"path":110,"stem":111,"icon":112},"Staff roles","\u002Fadmin\u002Froles","4.admin\u002F3.roles","i-lucide-shield-user",{"title":114,"path":115,"stem":116,"icon":117},"Audit log","\u002Fadmin\u002Faudit-log","4.admin\u002F4.audit-log","i-lucide-history",{"title":119,"path":120,"stem":121,"icon":122},"Your own pages","\u002Fadmin\u002Fextending","4.admin\u002F5.extending","i-lucide-layout-panel-left",{"title":124,"icon":22,"path":125,"stem":126,"children":127,"page":22},"Integrations","\u002Fintegrations","5.integrations",[128,133,138],{"title":129,"path":130,"stem":131,"icon":132},"Stripe","\u002Fintegrations\u002Fstripe","5.integrations\u002F1.stripe","i-simple-icons-stripe",{"title":134,"path":135,"stem":136,"icon":137},"API keys","\u002Fintegrations\u002Fapi-keys","5.integrations\u002F2.api-keys","i-lucide-key",{"title":139,"path":140,"stem":141,"icon":142},"Tokens","\u002Fintegrations\u002Ftokens","5.integrations\u002F3.tokens","i-lucide-ticket",{"title":144,"icon":22,"path":145,"stem":146,"children":147,"page":22},"Customization","\u002Fcustomization","6.customization",[148,153],{"title":149,"path":150,"stem":151,"icon":152},"Emails","\u002Fcustomization\u002Femails","6.customization\u002F1.emails","i-lucide-mail",{"title":154,"path":155,"stem":156,"icon":157},"Languages","\u002Fcustomization\u002Flanguages","6.customization\u002F2.languages","i-lucide-languages",{"title":159,"icon":22,"path":160,"stem":161,"children":162,"page":22},"Reference","\u002Freference","7.reference",[163,168,173],{"title":164,"path":165,"stem":166,"icon":167},"How it works","\u002Freference\u002Fhow-it-works","7.reference\u002F1.how-it-works","i-lucide-cog",{"title":169,"path":170,"stem":171,"icon":172},"API reference","\u002Freference\u002Fapi","7.reference\u002F2.api","i-lucide-braces",{"title":174,"path":175,"stem":176,"icon":177},"Contributing","\u002Freference\u002Fcontributing","7.reference\u002F3.contributing","i-lucide-git-pull-request",{"id":179,"title":109,"body":180,"description":704,"extension":705,"links":706,"meta":707,"navigation":708,"path":110,"seo":709,"stem":111,"__hash__":710},"docs\u002F4.admin\u002F3.roles.md",{"type":181,"value":182,"toc":698},"minimark",[183,196,444,452,457,530,533,537,568,572,575,594,600,604,613,694],[184,185,186,187,191,192,195],"p",{},"Besides ",[188,189,190],"code",{},"admin"," (everything) and ",[188,193,194],{},"user"," (nothing), define your own staff roles with any of Better Auth's Admin\npermissions:",[197,198,204],"pre",{"className":199,"code":200,"filename":201,"language":202,"meta":203,"style":203},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNuxtConfig({\n  betterAuthUi: {\n    admin: {\n      roles: {\n        \u002F\u002F Handles reports: views, edits and bans users, and signs their sessions out.\n        moderator: { user: ['list', 'get', 'update', 'ban'], session: ['list', 'revoke'] },\n        \u002F\u002F Can look, not touch.\n        support: { user: ['list', 'get'], session: ['list'] }\n      }\n    }\n  }\n})\n","nuxt.config.ts","ts","",[188,205,206,230,243,253,263,270,360,366,417,423,429,435],{"__ignoreMap":203},[207,208,211,215,218,222,226],"span",{"class":209,"line":210},"line",1,[207,212,214],{"class":213},"s7zQu","export",[207,216,217],{"class":213}," default",[207,219,221],{"class":220},"s2Zo4"," defineNuxtConfig",[207,223,225],{"class":224},"sTEyZ","(",[207,227,229],{"class":228},"sMK4o","{\n",[207,231,233,237,240],{"class":209,"line":232},2,[207,234,236],{"class":235},"swJcz","  betterAuthUi",[207,238,239],{"class":228},":",[207,241,242],{"class":228}," {\n",[207,244,246,249,251],{"class":209,"line":245},3,[207,247,248],{"class":235},"    admin",[207,250,239],{"class":228},[207,252,242],{"class":228},[207,254,256,259,261],{"class":209,"line":255},4,[207,257,258],{"class":235},"      roles",[207,260,239],{"class":228},[207,262,242],{"class":228},[207,264,266],{"class":209,"line":265},5,[207,267,269],{"class":268},"sHwdD","        \u002F\u002F Handles reports: views, edits and bans users, and signs their sessions out.\n",[207,271,273,276,278,281,284,286,289,292,296,298,301,304,307,309,311,313,316,318,320,322,325,327,330,332,335,337,339,341,343,345,347,349,352,354,357],{"class":209,"line":272},6,[207,274,275],{"class":235},"        moderator",[207,277,239],{"class":228},[207,279,280],{"class":228}," {",[207,282,283],{"class":235}," user",[207,285,239],{"class":228},[207,287,288],{"class":224}," [",[207,290,291],{"class":228},"'",[207,293,295],{"class":294},"sfazB","list",[207,297,291],{"class":228},[207,299,300],{"class":228},",",[207,302,303],{"class":228}," '",[207,305,306],{"class":294},"get",[207,308,291],{"class":228},[207,310,300],{"class":228},[207,312,303],{"class":228},[207,314,315],{"class":294},"update",[207,317,291],{"class":228},[207,319,300],{"class":228},[207,321,303],{"class":228},[207,323,324],{"class":294},"ban",[207,326,291],{"class":228},[207,328,329],{"class":224},"]",[207,331,300],{"class":228},[207,333,334],{"class":235}," session",[207,336,239],{"class":228},[207,338,288],{"class":224},[207,340,291],{"class":228},[207,342,295],{"class":294},[207,344,291],{"class":228},[207,346,300],{"class":228},[207,348,303],{"class":228},[207,350,351],{"class":294},"revoke",[207,353,291],{"class":228},[207,355,356],{"class":224},"] ",[207,358,359],{"class":228},"},\n",[207,361,363],{"class":209,"line":362},7,[207,364,365],{"class":268},"        \u002F\u002F Can look, not touch.\n",[207,367,369,372,374,376,378,380,382,384,386,388,390,392,394,396,398,400,402,404,406,408,410,412,414],{"class":209,"line":368},8,[207,370,371],{"class":235},"        support",[207,373,239],{"class":228},[207,375,280],{"class":228},[207,377,283],{"class":235},[207,379,239],{"class":228},[207,381,288],{"class":224},[207,383,291],{"class":228},[207,385,295],{"class":294},[207,387,291],{"class":228},[207,389,300],{"class":228},[207,391,303],{"class":228},[207,393,306],{"class":294},[207,395,291],{"class":228},[207,397,329],{"class":224},[207,399,300],{"class":228},[207,401,334],{"class":235},[207,403,239],{"class":228},[207,405,288],{"class":224},[207,407,291],{"class":228},[207,409,295],{"class":294},[207,411,291],{"class":228},[207,413,356],{"class":224},[207,415,416],{"class":228},"}\n",[207,418,420],{"class":209,"line":419},9,[207,421,422],{"class":228},"      }\n",[207,424,426],{"class":209,"line":425},10,[207,427,428],{"class":228},"    }\n",[207,430,432],{"class":209,"line":431},11,[207,433,434],{"class":228},"  }\n",[207,436,438,441],{"class":209,"line":437},12,[207,439,440],{"class":228},"}",[207,442,443],{"class":224},")\n",[184,445,446,447,451],{},"Give someone a role from ",[448,449,450],"strong",{},"Change role"," on their page, which lists the roles you've configured.",[453,454,456],"h2",{"id":455},"permissions","Permissions",[458,459,460,473],"table",{},[461,462,463],"thead",{},[464,465,466,470],"tr",{},[467,468,469],"th",{},"Resource",[467,471,472],{},"Actions",[474,475,476,515],"tbody",{},[464,477,478,483],{},[479,480,481],"td",{},[188,482,194],{},[479,484,485,488,489,488,491,488,493,488,495,488,498,488,500,488,503,488,506,488,509,488,512],{},[188,486,487],{},"create",", ",[188,490,295],{},[188,492,306],{},[188,494,315],{},[188,496,497],{},"set-role",[188,499,324],{},[188,501,502],{},"impersonate",[188,504,505],{},"impersonate-admins",[188,507,508],{},"delete",[188,510,511],{},"set-password",[188,513,514],{},"set-email",[464,516,517,522],{},[479,518,519],{},[188,520,521],{},"session",[479,523,524,488,526,488,528],{},[188,525,295],{},[188,527,351],{},[188,529,508],{},[184,531,532],{},"A permission that isn't on this list fails the build, with the list of valid ones.",[453,534,536],{"id":535},"what-a-role-gets","What a role gets",[538,539,540,550,562],"ul",{},[541,542,543,546,547,549],"li",{},[448,544,545],{},"Into the admin:"," roles that can ",[188,548,295],{}," users open the admin pages, and count as staff, with their own filter on\nthe users list.",[541,551,552,555,556,558,559,561],{},[448,553,554],{},"Only their actions:"," the pages show only what a role allows. A moderator has no Delete, Change role or Add user;\nthe email field is locked without ",[188,557,514],{},"; and Password offers only the reset link without ",[188,560,511],{},".",[541,563,564,567],{},[448,565,566],{},"Several roles:"," a user with several roles (Better Auth stores them comma-separated) gets everything any of them\nallows.",[453,569,571],{"id":570},"enforced-by-better-auth","Enforced by Better Auth",[184,573,574],{},"The module builds the roles with Better Auth's own access control and passes them to the Admin plugin, so every\nBetter Auth endpoint checks the same permissions, and so do the module's own routes. The pages read the same roles, so\nthey show exactly what the server would allow.",[576,577,578],"note",{},[184,579,580,581,583,584,586,587,561],{},"Impersonation follows Better Auth's default: only users with the ",[188,582,190],{}," role need ",[188,585,505],{}," to be\nimpersonated, as ",[588,589,593],"a",{"href":590,"rel":591},"https:\u002F\u002Fbetter-auth.com\u002Fdocs\u002Fplugins\u002Fadmin#access-control",[592],"nofollow","documented",[595,596,597],"tip",{},[184,598,599],{},"Users with several roles are matched to the admin pages by their whole role value. Give staff access through a single\nstaff role.",[453,601,603],{"id":602},"requiring-two-factor","Requiring two-factor",[184,605,606,607,239],{},"Staff roles are a good fit for ",[588,608,610],{"href":609},"\u002Fsign-in\u002Ftwo-factor#requiring-it",[188,611,612],{},"twoFactor.required",[197,614,616],{"className":199,"code":615,"filename":201,"language":202,"meta":203,"style":203},"export default defineNuxtConfig({\n  betterAuthUi: {\n    twoFactor: { enabled: true, required: ['admin', 'moderator'] }\n  }\n})\n",[188,617,618,630,638,684,688],{"__ignoreMap":203},[207,619,620,622,624,626,628],{"class":209,"line":210},[207,621,214],{"class":213},[207,623,217],{"class":213},[207,625,221],{"class":220},[207,627,225],{"class":224},[207,629,229],{"class":228},[207,631,632,634,636],{"class":209,"line":232},[207,633,236],{"class":235},[207,635,239],{"class":228},[207,637,242],{"class":228},[207,639,640,643,645,647,650,652,656,658,661,663,665,667,669,671,673,675,678,680,682],{"class":209,"line":245},[207,641,642],{"class":235},"    twoFactor",[207,644,239],{"class":228},[207,646,280],{"class":228},[207,648,649],{"class":235}," enabled",[207,651,239],{"class":228},[207,653,655],{"class":654},"sfNiH"," true",[207,657,300],{"class":228},[207,659,660],{"class":235}," required",[207,662,239],{"class":228},[207,664,288],{"class":224},[207,666,291],{"class":228},[207,668,190],{"class":294},[207,670,291],{"class":228},[207,672,300],{"class":228},[207,674,303],{"class":228},[207,676,677],{"class":294},"moderator",[207,679,291],{"class":228},[207,681,356],{"class":224},[207,683,416],{"class":228},[207,685,686],{"class":209,"line":255},[207,687,434],{"class":228},[207,689,690,692],{"class":209,"line":265},[207,691,440],{"class":228},[207,693,443],{"class":224},[695,696,697],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":203,"searchDepth":210,"depth":232,"links":699},[700,701,702,703],{"id":455,"depth":232,"text":456},{"id":535,"depth":232,"text":536},{"id":570,"depth":232,"text":571},{"id":602,"depth":232,"text":603},"Roles like moderator or support, with some of the admin's permissions.","md",null,{},{"icon":112},{"title":109,"description":704},"e-p41bVSkCDDK5R8jIoGzBT6kF61YJqgEaTtzDfAbig",[712,714],{"title":104,"path":105,"stem":106,"description":713,"icon":107,"children":-1},"Find, add, edit, ban and delete users, and help them when they're locked out.",{"title":114,"path":115,"stem":116,"description":715,"icon":117,"children":-1},"Who did what and when, users' sign-ins, and who's online.",1793019844714]