[{"data":1,"prerenderedAt":815},["ShallowReactive",2],{"navigation":3,"\u002Fpackages\u002Fadonisjs-permission\u002Fbasic-usage\u002Fmiddleware":124,"\u002Fpackages\u002Fadonisjs-permission\u002Fbasic-usage\u002Fmiddleware-surround":810},[4,23],{"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-tabler-home",{"title":13,"path":14,"stem":15,"icon":16},"Manifest","\u002Fgetting-started\u002Fmanifest","1.getting-started\u002F2.manifest","i-tabler-file-diff",{"title":18,"path":19,"stem":20,"icon":21},"Contributing","\u002Fgetting-started\u002Fcontributing","1.getting-started\u002F3.contributing","i-tabler-git-fork",false,{"title":24,"path":25,"stem":26,"children":27,"icon":30},"Packages","\u002Fpackages","2.packages\u002F1.index",[28,31],{"title":29,"path":25,"stem":26,"icon":30},"Overview","i-tabler-packages",{"title":32,"icon":33,"path":34,"stem":35,"children":36,"page":22},"AdonisJS Permission","i-tabler-shield-lock","\u002Fpackages\u002Fadonisjs-permission","2.packages\u002Fadonisjs-permission",[37,56,87,113],{"title":5,"icon":38,"path":39,"stem":40,"children":41,"page":22},"i-tabler-rocket","\u002Fpackages\u002Fadonisjs-permission\u002Fgetting-started","2.packages\u002Fadonisjs-permission\u002F1.getting-started",[42,46,51],{"title":10,"path":43,"stem":44,"icon":45},"\u002Fpackages\u002Fadonisjs-permission\u002Fgetting-started\u002Fintroduction","2.packages\u002Fadonisjs-permission\u002F1.getting-started\u002F1.introduction","i-tabler-book",{"title":47,"path":48,"stem":49,"icon":50},"Installation","\u002Fpackages\u002Fadonisjs-permission\u002Fgetting-started\u002Finstallation","2.packages\u002Fadonisjs-permission\u002F1.getting-started\u002F2.installation","i-tabler-download",{"title":52,"path":53,"stem":54,"icon":55},"Configuration","\u002Fpackages\u002Fadonisjs-permission\u002Fgetting-started\u002Fconfiguration","2.packages\u002Fadonisjs-permission\u002F1.getting-started\u002F3.configuration","i-tabler-settings",{"title":57,"icon":58,"path":59,"stem":60,"children":61,"page":22},"Basic Usage","i-tabler-shield-check","\u002Fpackages\u002Fadonisjs-permission\u002Fbasic-usage","2.packages\u002Fadonisjs-permission\u002F2.basic-usage",[62,67,72,77,82],{"title":63,"path":64,"stem":65,"icon":66},"Roles & Permissions","\u002Fpackages\u002Fadonisjs-permission\u002Fbasic-usage\u002Froles-and-permissions","2.packages\u002Fadonisjs-permission\u002F2.basic-usage\u002F1.roles-and-permissions","i-tabler-users",{"title":68,"path":69,"stem":70,"icon":71},"Checking Access","\u002Fpackages\u002Fadonisjs-permission\u002Fbasic-usage\u002Fchecking","2.packages\u002Fadonisjs-permission\u002F2.basic-usage\u002F2.checking","i-tabler-checks",{"title":73,"path":74,"stem":75,"icon":76},"Middleware","\u002Fpackages\u002Fadonisjs-permission\u002Fbasic-usage\u002Fmiddleware","2.packages\u002Fadonisjs-permission\u002F2.basic-usage\u002F3.middleware","i-tabler-route",{"title":78,"path":79,"stem":80,"icon":81},"Wildcard Permissions","\u002Fpackages\u002Fadonisjs-permission\u002Fbasic-usage\u002Fwildcard-permissions","2.packages\u002Fadonisjs-permission\u002F2.basic-usage\u002F4.wildcard-permissions","i-tabler-asterisk",{"title":83,"path":84,"stem":85,"icon":86},"Catalog & Sync","\u002Fpackages\u002Fadonisjs-permission\u002Fbasic-usage\u002Fcatalog","2.packages\u002Fadonisjs-permission\u002F2.basic-usage\u002F5.catalog","i-tabler-refresh",{"title":88,"icon":89,"path":90,"stem":91,"children":92,"page":22},"Advanced","i-tabler-tool","\u002Fpackages\u002Fadonisjs-permission\u002Fadvanced","2.packages\u002Fadonisjs-permission\u002F3.advanced",[93,98,103,108],{"title":94,"path":95,"stem":96,"icon":97},"Teams","\u002Fpackages\u002Fadonisjs-permission\u002Fadvanced\u002Fteams","2.packages\u002Fadonisjs-permission\u002F3.advanced\u002F1.teams","i-tabler-building",{"title":99,"path":100,"stem":101,"icon":102},"Super-Admin","\u002Fpackages\u002Fadonisjs-permission\u002Fadvanced\u002Fsuper-admin","2.packages\u002Fadonisjs-permission\u002F3.advanced\u002F2.super-admin","i-tabler-crown",{"title":104,"path":105,"stem":106,"icon":107},"Events","\u002Fpackages\u002Fadonisjs-permission\u002Fadvanced\u002Fevents","2.packages\u002Fadonisjs-permission\u002F3.advanced\u002F3.events","i-tabler-radio",{"title":109,"path":110,"stem":111,"icon":112},"Cache","\u002Fpackages\u002Fadonisjs-permission\u002Fadvanced\u002Fcache","2.packages\u002Fadonisjs-permission\u002F3.advanced\u002F4.cache","i-tabler-database",{"title":114,"icon":115,"path":116,"stem":117,"children":118,"page":22},"Upgrading","i-tabler-circle-arrow-up","\u002Fpackages\u002Fadonisjs-permission\u002Fupgrading","2.packages\u002Fadonisjs-permission\u002F4.upgrading",[119],{"title":120,"path":121,"stem":122,"icon":123},"From adonis-lucid-permission","\u002Fpackages\u002Fadonisjs-permission\u002Fupgrading\u002Ffrom-adonis-lucid-permission","2.packages\u002Fadonisjs-permission\u002F4.upgrading\u002F1.from-adonis-lucid-permission","i-tabler-git-compare",{"id":125,"title":73,"body":126,"description":804,"extension":805,"meta":806,"navigation":807,"path":74,"seo":808,"stem":75,"__hash__":809},"docs\u002F2.packages\u002Fadonisjs-permission\u002F2.basic-usage\u002F3.middleware.md",{"type":127,"value":128,"toc":801},"minimark",[129,141,291,302,692,697,769,783,797],[130,131,132,136,137,140],"p",{},[133,134,135],"code",{},"node ace configure"," registers three named middlewares in ",[133,138,139],{},"start\u002Fkernel.ts",":",[142,143,148],"pre",{"className":144,"code":145,"filename":139,"language":146,"meta":147,"style":147},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export const middleware = router.named({\n  \u002F\u002F ...\n  role: () => import('@eienjs\u002Fadonisjs-permission\u002Fmiddleware\u002Frole_middleware'),\n  permission: () => import('@eienjs\u002Fadonisjs-permission\u002Fmiddleware\u002Fpermission_middleware'),\n  roleOrPermission: () => import('@eienjs\u002Fadonisjs-permission\u002Fmiddleware\u002Frole_or_permission_middleware'),\n})\n","ts","",[133,149,150,187,194,228,255,282],{"__ignoreMap":147},[151,152,155,159,163,167,171,174,177,181,184],"span",{"class":153,"line":154},"line",1,[151,156,158],{"class":157},"s7zQu","export",[151,160,162],{"class":161},"spNyl"," const",[151,164,166],{"class":165},"sTEyZ"," middleware ",[151,168,170],{"class":169},"sMK4o","=",[151,172,173],{"class":165}," router",[151,175,176],{"class":169},".",[151,178,180],{"class":179},"s2Zo4","named",[151,182,183],{"class":165},"(",[151,185,186],{"class":169},"{\n",[151,188,190],{"class":153,"line":189},2,[151,191,193],{"class":192},"sHwdD","  \u002F\u002F ...\n",[151,195,197,200,202,205,208,211,213,216,220,222,225],{"class":153,"line":196},3,[151,198,199],{"class":179},"  role",[151,201,140],{"class":169},[151,203,204],{"class":169}," ()",[151,206,207],{"class":161}," =>",[151,209,210],{"class":169}," import",[151,212,183],{"class":165},[151,214,215],{"class":169},"'",[151,217,219],{"class":218},"sfazB","@eienjs\u002Fadonisjs-permission\u002Fmiddleware\u002Frole_middleware",[151,221,215],{"class":169},[151,223,224],{"class":165},")",[151,226,227],{"class":169},",\n",[151,229,231,234,236,238,240,242,244,246,249,251,253],{"class":153,"line":230},4,[151,232,233],{"class":179},"  permission",[151,235,140],{"class":169},[151,237,204],{"class":169},[151,239,207],{"class":161},[151,241,210],{"class":169},[151,243,183],{"class":165},[151,245,215],{"class":169},[151,247,248],{"class":218},"@eienjs\u002Fadonisjs-permission\u002Fmiddleware\u002Fpermission_middleware",[151,250,215],{"class":169},[151,252,224],{"class":165},[151,254,227],{"class":169},[151,256,258,261,263,265,267,269,271,273,276,278,280],{"class":153,"line":257},5,[151,259,260],{"class":179},"  roleOrPermission",[151,262,140],{"class":169},[151,264,204],{"class":169},[151,266,207],{"class":161},[151,268,210],{"class":169},[151,270,183],{"class":165},[151,272,215],{"class":169},[151,274,275],{"class":218},"@eienjs\u002Fadonisjs-permission\u002Fmiddleware\u002Frole_or_permission_middleware",[151,277,215],{"class":169},[151,279,224],{"class":165},[151,281,227],{"class":169},[151,283,285,288],{"class":153,"line":284},6,[151,286,287],{"class":169},"}",[151,289,290],{"class":165},")\n",[130,292,293,294,298,299,140],{},"Use them ",[295,296,297],"strong",{},"after"," ",[133,300,301],{},"middleware.auth()",[142,303,306],{"className":144,"code":304,"filename":305,"language":146,"meta":147,"style":147},"import router from '@adonisjs\u002Fcore\u002Fservices\u002Frouter'\nimport { middleware } from '#start\u002Fkernel'\n\nrouter\n  .post('projects', [ProjectsController, 'store'])\n  .use([\n    middleware.auth(),\n    middleware.permission({ permissions: ['publish projects', 'edit projects'] }),\n  ])\n\nrouter\n  .get('admin', [AdminController, 'index'])\n  .use([middleware.auth(), middleware.role({ roles: ['admin', 'manager'] })])\n\nrouter\n  .get('reports', [ReportsController, 'index'])\n  .use([\n    middleware.auth(),\n    middleware.roleOrPermission({ roleOrPermission: ['administrator', 'view reports'] }),\n  ])\n","start\u002Froutes.ts",[133,307,308,328,351,357,362,397,407,423,472,478,483,488,521,579,584,589,620,629,642,687],{"__ignoreMap":147},[151,309,310,313,316,319,322,325],{"class":153,"line":154},[151,311,312],{"class":157},"import",[151,314,315],{"class":165}," router ",[151,317,318],{"class":157},"from",[151,320,321],{"class":169}," '",[151,323,324],{"class":218},"@adonisjs\u002Fcore\u002Fservices\u002Frouter",[151,326,327],{"class":169},"'\n",[151,329,330,332,335,338,341,344,346,349],{"class":153,"line":189},[151,331,312],{"class":157},[151,333,334],{"class":169}," {",[151,336,337],{"class":165}," middleware",[151,339,340],{"class":169}," }",[151,342,343],{"class":157}," from",[151,345,321],{"class":169},[151,347,348],{"class":218},"#start\u002Fkernel",[151,350,327],{"class":169},[151,352,353],{"class":153,"line":196},[151,354,356],{"emptyLinePlaceholder":355},true,"\n",[151,358,359],{"class":153,"line":230},[151,360,361],{"class":165},"router\n",[151,363,364,367,370,372,374,377,379,382,385,387,389,392,394],{"class":153,"line":257},[151,365,366],{"class":169},"  .",[151,368,369],{"class":179},"post",[151,371,183],{"class":165},[151,373,215],{"class":169},[151,375,376],{"class":218},"projects",[151,378,215],{"class":169},[151,380,381],{"class":169},",",[151,383,384],{"class":165}," [ProjectsController",[151,386,381],{"class":169},[151,388,321],{"class":169},[151,390,391],{"class":218},"store",[151,393,215],{"class":169},[151,395,396],{"class":165},"])\n",[151,398,399,401,404],{"class":153,"line":284},[151,400,366],{"class":169},[151,402,403],{"class":179},"use",[151,405,406],{"class":165},"([\n",[151,408,410,413,415,418,421],{"class":153,"line":409},7,[151,411,412],{"class":165},"    middleware",[151,414,176],{"class":169},[151,416,417],{"class":179},"auth",[151,419,420],{"class":165},"()",[151,422,227],{"class":169},[151,424,426,428,430,433,435,438,442,444,447,449,452,454,456,458,461,463,466,468,470],{"class":153,"line":425},8,[151,427,412],{"class":165},[151,429,176],{"class":169},[151,431,432],{"class":179},"permission",[151,434,183],{"class":165},[151,436,437],{"class":169},"{",[151,439,441],{"class":440},"swJcz"," permissions",[151,443,140],{"class":169},[151,445,446],{"class":165}," [",[151,448,215],{"class":169},[151,450,451],{"class":218},"publish projects",[151,453,215],{"class":169},[151,455,381],{"class":169},[151,457,321],{"class":169},[151,459,460],{"class":218},"edit projects",[151,462,215],{"class":169},[151,464,465],{"class":165},"] ",[151,467,287],{"class":169},[151,469,224],{"class":165},[151,471,227],{"class":169},[151,473,475],{"class":153,"line":474},9,[151,476,477],{"class":165},"  ])\n",[151,479,481],{"class":153,"line":480},10,[151,482,356],{"emptyLinePlaceholder":355},[151,484,486],{"class":153,"line":485},11,[151,487,361],{"class":165},[151,489,491,493,496,498,500,503,505,507,510,512,514,517,519],{"class":153,"line":490},12,[151,492,366],{"class":169},[151,494,495],{"class":179},"get",[151,497,183],{"class":165},[151,499,215],{"class":169},[151,501,502],{"class":218},"admin",[151,504,215],{"class":169},[151,506,381],{"class":169},[151,508,509],{"class":165}," [AdminController",[151,511,381],{"class":169},[151,513,321],{"class":169},[151,515,516],{"class":218},"index",[151,518,215],{"class":169},[151,520,396],{"class":165},[151,522,524,526,528,531,533,535,537,539,541,543,546,548,550,553,555,557,559,561,563,565,567,570,572,574,576],{"class":153,"line":523},13,[151,525,366],{"class":169},[151,527,403],{"class":179},[151,529,530],{"class":165},"([middleware",[151,532,176],{"class":169},[151,534,417],{"class":179},[151,536,420],{"class":165},[151,538,381],{"class":169},[151,540,337],{"class":165},[151,542,176],{"class":169},[151,544,545],{"class":179},"role",[151,547,183],{"class":165},[151,549,437],{"class":169},[151,551,552],{"class":440}," roles",[151,554,140],{"class":169},[151,556,446],{"class":165},[151,558,215],{"class":169},[151,560,502],{"class":218},[151,562,215],{"class":169},[151,564,381],{"class":169},[151,566,321],{"class":169},[151,568,569],{"class":218},"manager",[151,571,215],{"class":169},[151,573,465],{"class":165},[151,575,287],{"class":169},[151,577,578],{"class":165},")])\n",[151,580,582],{"class":153,"line":581},14,[151,583,356],{"emptyLinePlaceholder":355},[151,585,587],{"class":153,"line":586},15,[151,588,361],{"class":165},[151,590,592,594,596,598,600,603,605,607,610,612,614,616,618],{"class":153,"line":591},16,[151,593,366],{"class":169},[151,595,495],{"class":179},[151,597,183],{"class":165},[151,599,215],{"class":169},[151,601,602],{"class":218},"reports",[151,604,215],{"class":169},[151,606,381],{"class":169},[151,608,609],{"class":165}," [ReportsController",[151,611,381],{"class":169},[151,613,321],{"class":169},[151,615,516],{"class":218},[151,617,215],{"class":169},[151,619,396],{"class":165},[151,621,623,625,627],{"class":153,"line":622},17,[151,624,366],{"class":169},[151,626,403],{"class":179},[151,628,406],{"class":165},[151,630,632,634,636,638,640],{"class":153,"line":631},18,[151,633,412],{"class":165},[151,635,176],{"class":169},[151,637,417],{"class":179},[151,639,420],{"class":165},[151,641,227],{"class":169},[151,643,645,647,649,652,654,656,659,661,663,665,668,670,672,674,677,679,681,683,685],{"class":153,"line":644},19,[151,646,412],{"class":165},[151,648,176],{"class":169},[151,650,651],{"class":179},"roleOrPermission",[151,653,183],{"class":165},[151,655,437],{"class":169},[151,657,658],{"class":440}," roleOrPermission",[151,660,140],{"class":169},[151,662,446],{"class":165},[151,664,215],{"class":169},[151,666,667],{"class":218},"administrator",[151,669,215],{"class":169},[151,671,381],{"class":169},[151,673,321],{"class":169},[151,675,676],{"class":218},"view reports",[151,678,215],{"class":169},[151,680,465],{"class":165},[151,682,287],{"class":169},[151,684,224],{"class":165},[151,686,227],{"class":169},[151,688,690],{"class":153,"line":689},20,[151,691,477],{"class":165},[693,694,696],"h2",{"id":695},"options","Options",[698,699,700,715],"table",{},[701,702,703],"thead",{},[704,705,706,709,712],"tr",{},[707,708,73],"th",{},[707,710,711],{},"Option",[707,713,714],{},"Description",[716,717,718,736,752],"tbody",{},[704,719,720,725,730],{},[721,722,723],"td",{},[133,724,545],{},[721,726,727],{},[133,728,729],{},"roles",[721,731,732,733,176],{},"Role(s). Passes if the user has ",[295,734,735],{},"any",[704,737,738,742,747],{},[721,739,740],{},[133,741,432],{},[721,743,744],{},[133,745,746],{},"permissions",[721,748,749,750,176],{},"Permission(s). Passes if the user has ",[295,751,735],{},[704,753,754,758,762],{},[721,755,756],{},[133,757,651],{},[721,759,760],{},[133,761,651],{},[721,763,764,765,768],{},"Passes if the user has any of the roles ",[295,766,767],{},"or"," permissions.",[130,770,771,772,775,776,779,780,176],{},"Values can be an array or a string separated by ",[133,773,774],{},"|"," (e.g. ",[133,777,778],{},"'admin|manager'","). All of them also accept an optional ",[133,781,782],{},"guard",[130,784,785,786,789,790,298,793,796],{},"If there is no authenticated user, the user lacks the required access, or the user model does not use ",[133,787,788],{},"HasAuthorizable",", a ",[133,791,792],{},"403",[133,794,795],{},"E_PERMISSION_UNAUTHORIZED_ACCESS"," is thrown.",[798,799,800],"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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}",{"title":147,"searchDepth":154,"depth":189,"links":802},[803],{"id":695,"depth":189,"text":696},"Protect routes with role and permission middlewares.","md",{},{"icon":76},{"title":73,"description":804},"lM43bjzt0tXQ1g8ri--OMoQ3hnlWs0hR86PsTmBdfvc",[811,813],{"title":68,"path":69,"stem":70,"description":812,"icon":71,"children":-1},"Check roles and permissions on your models.",{"title":78,"path":79,"stem":80,"description":814,"icon":81,"children":-1},"Apache Shiro style wildcard permissions.",1793679731155]