[{"data":1,"prerenderedAt":2425},["ShallowReactive",2],{"navigation":3,"\u002Fpackages\u002Fadonisjs-permission\u002Fupgrading\u002Ffrom-adonis-lucid-permission":124,"\u002Fpackages\u002Fadonisjs-permission\u002Fupgrading\u002Ffrom-adonis-lucid-permission-surround":2421},[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":120,"body":126,"description":2415,"extension":2416,"meta":2417,"navigation":2418,"path":121,"seo":2419,"stem":122,"__hash__":2420},"docs\u002F2.packages\u002Fadonisjs-permission\u002F4.upgrading\u002F1.from-adonis-lucid-permission.md",{"type":127,"value":128,"toc":2405},"minimark",[129,148,159,164,276,280,320,327,341,345,547,550,642,652,785,789,796,1940,1965,1980,1994,1998,2132,2135,2166,2170,2177,2289,2302,2306,2329,2332,2363,2367,2401],[130,131,132,133,143,144,147],"p",{},"This guide migrates an app from ",[134,135,139],"a",{"href":136,"rel":137},"https:\u002F\u002Fgithub.com\u002Fluffynando\u002Fadonis-lucid-permission",[138],"nofollow",[140,141,142],"code",{},"adonis-lucid-permission"," to ",[140,145,146],{},"@eienjs\u002Fadonisjs-permission",".",[149,150,151],"warning",{},[130,152,153,154,158],{},"Back up your database and work on a branch. Make sure your app is already on ",[155,156,157],"strong",{},"AdonisJS v7"," (Node >= 24) before starting.",[160,161,163],"h2",{"id":162},"what-changed","What changed",[165,166,167,180],"table",{},[168,169,170],"thead",{},[171,172,173,177],"tr",{},[174,175,176],"th",{},"Before",[174,178,179],{},"Now",[181,182,183,197,225,243,253,264],"tbody",{},[171,184,185,191],{},[186,187,188],"td",{},[140,189,190],{},"withAuthorizable({ rolesPivotTable, permissionsPivotTable })",[186,192,193,196],{},[140,194,195],{},"HasAuthorizable"," mixin, no arguments",[171,198,199,208],{},[186,200,201,204,205],{},[140,202,203],{},"adonis-lucid-permission\u002Fservices\u002Frole"," and ",[140,206,207],{},"\u002Fservices\u002Fpermission",[186,209,210,211,204,214,217,218,221,222],{},"Your own ",[140,212,213],{},"Role",[140,215,216],{},"Permission"," models using ",[140,219,220],{},"Roleable"," \u002F ",[140,223,224],{},"Permissible",[171,226,227,234],{},[186,228,229,230,233],{},"One pivot table per model type (",[140,231,232],{},"user_has_roles",", ...)",[186,235,236,237,204,240],{},"Shared polymorphic ",[140,238,239],{},"model_has_roles",[140,241,242],{},"model_has_permissions",[171,244,245,250],{},[186,246,247],{},[140,248,249],{},"node ace permissions:pivot-table",[186,251,252],{},"Removed",[171,254,255,261],{},[186,256,257,258],{},"Config only had ",[140,259,260],{},"tableNames",[186,262,263],{},"Models, morph map, guards, teams, wildcard, catalog...",[171,265,266,271],{},[186,267,268],{},[140,269,270],{},"adonis-lucid-permission\u002Frole_middleware",[186,272,273],{},[140,274,275],{},"@eienjs\u002Fadonisjs-permission\u002Fmiddleware\u002Frole_middleware",[160,277,279],{"id":278},"_1-replace-the-package","1. Replace the package",[281,282,287],"pre",{"className":283,"code":284,"language":285,"meta":286,"style":286},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npm uninstall adonis-lucid-permission\nnode ace add @eienjs\u002Fadonisjs-permission\n","bash","",[140,288,289,305],{"__ignoreMap":286},[290,291,294,298,302],"span",{"class":292,"line":293},"line",1,[290,295,297],{"class":296},"sBMFI","npm",[290,299,301],{"class":300},"sfazB"," uninstall",[290,303,304],{"class":300}," adonis-lucid-permission\n",[290,306,308,311,314,317],{"class":292,"line":307},2,[290,309,310],{"class":296},"node",[290,312,313],{"class":300}," ace",[290,315,316],{"class":300}," add",[290,318,319],{"class":300}," @eienjs\u002Fadonisjs-permission\n",[130,321,322,323,326],{},"When prompted, scaffold the models and middlewares, but ",[155,324,325],{},"say no to migrations"," (you will adapt your existing tables in step 3).",[130,328,329,330,333,334,204,337,340],{},"Then remove the old entries in ",[140,331,332],{},"adonisrc.ts"," (",[140,335,336],{},"adonis-lucid-permission\u002Fcommands",[140,338,339],{},"adonis-lucid-permission\u002Fpermissions_provider",") if they are still there.",[160,342,344],{"id":343},"_2-update-the-models","2. Update the models",[346,347,348,496],"code-group",{},[281,349,354],{"className":350,"code":351,"filename":352,"language":353,"meta":286,"style":286},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { withAuthorizable } from 'adonis-lucid-permission'\n\nconst HasAuthorizable = withAuthorizable({\n  rolesPivotTable: 'user_has_roles',\n  permissionsPivotTable: 'user_has_permissions',\n})\n\nexport default class User extends compose(BaseModel, HasAuthorizable) {}\n","Before: app\u002Fmodels\u002Fuser.ts","ts",[140,355,356,384,390,412,432,449,458,463],{"__ignoreMap":286},[290,357,358,362,366,370,373,376,379,381],{"class":292,"line":293},[290,359,361],{"class":360},"s7zQu","import",[290,363,365],{"class":364},"sMK4o"," {",[290,367,369],{"class":368},"sTEyZ"," withAuthorizable",[290,371,372],{"class":364}," }",[290,374,375],{"class":360}," from",[290,377,378],{"class":364}," '",[290,380,142],{"class":300},[290,382,383],{"class":364},"'\n",[290,385,386],{"class":292,"line":307},[290,387,389],{"emptyLinePlaceholder":388},true,"\n",[290,391,393,397,400,403,406,409],{"class":292,"line":392},3,[290,394,396],{"class":395},"spNyl","const",[290,398,399],{"class":368}," HasAuthorizable ",[290,401,402],{"class":364},"=",[290,404,369],{"class":405},"s2Zo4",[290,407,408],{"class":368},"(",[290,410,411],{"class":364},"{\n",[290,413,415,419,422,424,426,429],{"class":292,"line":414},4,[290,416,418],{"class":417},"swJcz","  rolesPivotTable",[290,420,421],{"class":364},":",[290,423,378],{"class":364},[290,425,232],{"class":300},[290,427,428],{"class":364},"'",[290,430,431],{"class":364},",\n",[290,433,435,438,440,442,445,447],{"class":292,"line":434},5,[290,436,437],{"class":417},"  permissionsPivotTable",[290,439,421],{"class":364},[290,441,378],{"class":364},[290,443,444],{"class":300},"user_has_permissions",[290,446,428],{"class":364},[290,448,431],{"class":364},[290,450,452,455],{"class":292,"line":451},6,[290,453,454],{"class":364},"}",[290,456,457],{"class":368},")\n",[290,459,461],{"class":292,"line":460},7,[290,462,389],{"emptyLinePlaceholder":388},[290,464,466,469,472,475,478,481,484,487,490,493],{"class":292,"line":465},8,[290,467,468],{"class":360},"export",[290,470,471],{"class":360}," default",[290,473,474],{"class":395}," class",[290,476,477],{"class":296}," User",[290,479,480],{"class":395}," extends",[290,482,483],{"class":405}," compose",[290,485,486],{"class":368},"(BaseModel",[290,488,489],{"class":364},",",[290,491,492],{"class":368}," HasAuthorizable) ",[290,494,495],{"class":364},"{}\n",[281,497,500],{"className":350,"code":498,"filename":499,"language":353,"meta":286,"style":286},"import { HasAuthorizable } from '@eienjs\u002Fadonisjs-permission'\n\nexport default class User extends compose(BaseModel, HasAuthorizable) {}\n","After: app\u002Fmodels\u002Fuser.ts",[140,501,502,521,525],{"__ignoreMap":286},[290,503,504,506,508,511,513,515,517,519],{"class":292,"line":293},[290,505,361],{"class":360},[290,507,365],{"class":364},[290,509,510],{"class":368}," HasAuthorizable",[290,512,372],{"class":364},[290,514,375],{"class":360},[290,516,378],{"class":364},[290,518,146],{"class":300},[290,520,383],{"class":364},[290,522,523],{"class":292,"line":307},[290,524,389],{"emptyLinePlaceholder":388},[290,526,527,529,531,533,535,537,539,541,543,545],{"class":292,"line":392},[290,528,468],{"class":360},[290,530,471],{"class":360},[290,532,474],{"class":395},[290,534,477],{"class":296},[290,536,480],{"class":395},[290,538,483],{"class":405},[290,540,486],{"class":368},[290,542,489],{"class":364},[290,544,492],{"class":368},[290,546,495],{"class":364},[130,548,549],{},"Replace the old service imports with your own models:",[281,551,553],{"className":350,"code":552,"language":353,"meta":286,"style":286},"\u002F\u002F Before\nimport { Role } from 'adonis-lucid-permission\u002Fservices\u002Frole'\nimport { Permission } from 'adonis-lucid-permission\u002Fservices\u002Fpermission'\n\n\u002F\u002F After\nimport Role from '#models\u002Frole'\nimport Permission from '#models\u002Fpermission'\n",[140,554,555,561,580,600,604,609,626],{"__ignoreMap":286},[290,556,557],{"class":292,"line":293},[290,558,560],{"class":559},"sHwdD","\u002F\u002F Before\n",[290,562,563,565,567,570,572,574,576,578],{"class":292,"line":307},[290,564,361],{"class":360},[290,566,365],{"class":364},[290,568,569],{"class":368}," Role",[290,571,372],{"class":364},[290,573,375],{"class":360},[290,575,378],{"class":364},[290,577,203],{"class":300},[290,579,383],{"class":364},[290,581,582,584,586,589,591,593,595,598],{"class":292,"line":392},[290,583,361],{"class":360},[290,585,365],{"class":364},[290,587,588],{"class":368}," Permission",[290,590,372],{"class":364},[290,592,375],{"class":360},[290,594,378],{"class":364},[290,596,597],{"class":300},"adonis-lucid-permission\u002Fservices\u002Fpermission",[290,599,383],{"class":364},[290,601,602],{"class":292,"line":414},[290,603,389],{"emptyLinePlaceholder":388},[290,605,606],{"class":292,"line":434},[290,607,608],{"class":559},"\u002F\u002F After\n",[290,610,611,613,616,619,621,624],{"class":292,"line":451},[290,612,361],{"class":360},[290,614,615],{"class":368}," Role ",[290,617,618],{"class":360},"from",[290,620,378],{"class":364},[290,622,623],{"class":300},"#models\u002Frole",[290,625,383],{"class":364},[290,627,628,630,633,635,637,640],{"class":292,"line":460},[290,629,361],{"class":360},[290,631,632],{"class":368}," Permission ",[290,634,618],{"class":360},[290,636,378],{"class":364},[290,638,639],{"class":300},"#models\u002Fpermission",[290,641,383],{"class":364},[130,643,644,645,648,649,421],{},"Register a ",[140,646,647],{},"morphMap"," alias for every model that has roles or permissions in ",[140,650,651],{},"config\u002Fpermissions.ts",[281,653,655],{"className":350,"code":654,"filename":651,"language":353,"meta":286,"style":286},"export default defineConfig({\n  models: {\n    role: () => import('#models\u002Frole'),\n    permission: () => import('#models\u002Fpermission'),\n  },\n  morphMap: {\n    user: () => import('#models\u002Fuser'),\n  },\n})\n",[140,656,657,670,680,709,734,739,748,774,778],{"__ignoreMap":286},[290,658,659,661,663,666,668],{"class":292,"line":293},[290,660,468],{"class":360},[290,662,471],{"class":360},[290,664,665],{"class":405}," defineConfig",[290,667,408],{"class":368},[290,669,411],{"class":364},[290,671,672,675,677],{"class":292,"line":307},[290,673,674],{"class":417},"  models",[290,676,421],{"class":364},[290,678,679],{"class":364}," {\n",[290,681,682,685,687,690,693,696,698,700,702,704,707],{"class":292,"line":392},[290,683,684],{"class":405},"    role",[290,686,421],{"class":364},[290,688,689],{"class":364}," ()",[290,691,692],{"class":395}," =>",[290,694,695],{"class":364}," import",[290,697,408],{"class":368},[290,699,428],{"class":364},[290,701,623],{"class":300},[290,703,428],{"class":364},[290,705,706],{"class":368},")",[290,708,431],{"class":364},[290,710,711,714,716,718,720,722,724,726,728,730,732],{"class":292,"line":414},[290,712,713],{"class":405},"    permission",[290,715,421],{"class":364},[290,717,689],{"class":364},[290,719,692],{"class":395},[290,721,695],{"class":364},[290,723,408],{"class":368},[290,725,428],{"class":364},[290,727,639],{"class":300},[290,729,428],{"class":364},[290,731,706],{"class":368},[290,733,431],{"class":364},[290,735,736],{"class":292,"line":434},[290,737,738],{"class":364},"  },\n",[290,740,741,744,746],{"class":292,"line":451},[290,742,743],{"class":417},"  morphMap",[290,745,421],{"class":364},[290,747,679],{"class":364},[290,749,750,753,755,757,759,761,763,765,768,770,772],{"class":292,"line":460},[290,751,752],{"class":405},"    user",[290,754,421],{"class":364},[290,756,689],{"class":364},[290,758,692],{"class":395},[290,760,695],{"class":364},[290,762,408],{"class":368},[290,764,428],{"class":364},[290,766,767],{"class":300},"#models\u002Fuser",[290,769,428],{"class":364},[290,771,706],{"class":368},[290,773,431],{"class":364},[290,775,776],{"class":292,"line":465},[290,777,738],{"class":364},[290,779,781,783],{"class":292,"line":780},9,[290,782,454],{"class":364},[290,784,457],{"class":368},[160,786,788],{"id":787},"_3-migrate-the-database","3. Migrate the database",[130,790,791,792,795],{},"The new package stores assignments for ",[155,793,794],{},"all"," models in two polymorphic tables. Create a migration that adapts your schema and copies the data. Adjust names to your project:",[281,797,800],{"className":350,"code":798,"filename":799,"language":353,"meta":286,"style":286},"import { BaseSchema } from '@adonisjs\u002Flucid\u002Fschema'\n\nexport default class extends BaseSchema {\n  async up() {\n    \u002F\u002F roles \u002F permissions: add guard column\n    this.schema.alterTable('roles', (table) => {\n      table.string('guard_name').notNullable().defaultTo('web')\n    })\n    this.schema.alterTable('permissions', (table) => {\n      table.string('guard_name').notNullable().defaultTo('web')\n    })\n\n    \u002F\u002F polymorphic pivots\n    this.schema.createTable('model_has_roles', (table) => {\n      table.integer('role_id').unsigned().references('id').inTable('roles').onDelete('CASCADE')\n      table.string('model_type').notNullable()\n      table.string('model_id').notNullable()\n      table.index(['model_id', 'model_type'])\n      table.index(['role_id', 'model_id', 'model_type'])\n    })\n    this.schema.createTable('model_has_permissions', (table) => {\n      table.integer('permission_id').unsigned().references('id').inTable('permissions').onDelete('CASCADE')\n      table.string('model_type').notNullable()\n      table.string('model_id').notNullable()\n      table.index(['model_id', 'model_type'])\n      table.index(['permission_id', 'model_id', 'model_type'])\n    })\n\n    \u002F\u002F copy data from the old pivots (\"user\" must match your morphMap alias)\n    this.defer(async (db) => {\n      const roles = await db.from('user_has_roles').select('*')\n      for (const row of roles) {\n        await db.table('model_has_roles').insert({\n          role_id: row.role_id,\n          model_type: 'user',\n          model_id: String(row.user_id),\n        })\n      }\n      const permissions = await db.from('user_has_permissions').select('*')\n      for (const row of permissions) {\n        await db.table('model_has_permissions').insert({\n          permission_id: row.permission_id,\n          model_type: 'user',\n          model_id: String(row.user_id),\n        })\n      }\n    })\n\n    this.schema.dropTable('user_has_roles')\n    this.schema.dropTable('user_has_permissions')\n  }\n\n  async down() {\n    \u002F\u002F restore the old tables if you need a rollback path\n  }\n}\n","database\u002Fmigrations\u002Fxxxx_migrate_to_eienjs_permission.ts",[140,801,802,822,826,840,853,858,893,937,944,975,1014,1021,1026,1032,1064,1139,1166,1192,1222,1257,1264,1295,1363,1388,1413,1440,1475,1482,1487,1493,1517,1565,1588,1619,1635,1652,1677,1685,1691,1733,1752,1781,1797,1812,1833,1840,1845,1852,1857,1879,1900,1906,1911,1923,1929,1934],{"__ignoreMap":286},[290,803,804,806,808,811,813,815,817,820],{"class":292,"line":293},[290,805,361],{"class":360},[290,807,365],{"class":364},[290,809,810],{"class":368}," BaseSchema",[290,812,372],{"class":364},[290,814,375],{"class":360},[290,816,378],{"class":364},[290,818,819],{"class":300},"@adonisjs\u002Flucid\u002Fschema",[290,821,383],{"class":364},[290,823,824],{"class":292,"line":307},[290,825,389],{"emptyLinePlaceholder":388},[290,827,828,830,832,834,836,838],{"class":292,"line":392},[290,829,468],{"class":360},[290,831,471],{"class":360},[290,833,474],{"class":395},[290,835,480],{"class":395},[290,837,810],{"class":296},[290,839,679],{"class":364},[290,841,842,845,848,851],{"class":292,"line":414},[290,843,844],{"class":395},"  async",[290,846,847],{"class":417}," up",[290,849,850],{"class":364},"()",[290,852,679],{"class":364},[290,854,855],{"class":292,"line":434},[290,856,857],{"class":559},"    \u002F\u002F roles \u002F permissions: add guard column\n",[290,859,860,863,866,868,871,873,875,878,880,882,884,887,889,891],{"class":292,"line":451},[290,861,862],{"class":364},"    this.",[290,864,865],{"class":368},"schema",[290,867,147],{"class":364},[290,869,870],{"class":405},"alterTable",[290,872,408],{"class":417},[290,874,428],{"class":364},[290,876,877],{"class":300},"roles",[290,879,428],{"class":364},[290,881,489],{"class":364},[290,883,333],{"class":364},[290,885,165],{"class":886},"sHdIc",[290,888,706],{"class":364},[290,890,692],{"class":395},[290,892,679],{"class":364},[290,894,895,898,900,903,905,907,910,912,914,916,919,921,923,926,928,930,933,935],{"class":292,"line":460},[290,896,897],{"class":368},"      table",[290,899,147],{"class":364},[290,901,902],{"class":405},"string",[290,904,408],{"class":417},[290,906,428],{"class":364},[290,908,909],{"class":300},"guard_name",[290,911,428],{"class":364},[290,913,706],{"class":417},[290,915,147],{"class":364},[290,917,918],{"class":405},"notNullable",[290,920,850],{"class":417},[290,922,147],{"class":364},[290,924,925],{"class":405},"defaultTo",[290,927,408],{"class":417},[290,929,428],{"class":364},[290,931,932],{"class":300},"web",[290,934,428],{"class":364},[290,936,457],{"class":417},[290,938,939,942],{"class":292,"line":465},[290,940,941],{"class":364},"    }",[290,943,457],{"class":417},[290,945,946,948,950,952,954,956,958,961,963,965,967,969,971,973],{"class":292,"line":780},[290,947,862],{"class":364},[290,949,865],{"class":368},[290,951,147],{"class":364},[290,953,870],{"class":405},[290,955,408],{"class":417},[290,957,428],{"class":364},[290,959,960],{"class":300},"permissions",[290,962,428],{"class":364},[290,964,489],{"class":364},[290,966,333],{"class":364},[290,968,165],{"class":886},[290,970,706],{"class":364},[290,972,692],{"class":395},[290,974,679],{"class":364},[290,976,978,980,982,984,986,988,990,992,994,996,998,1000,1002,1004,1006,1008,1010,1012],{"class":292,"line":977},10,[290,979,897],{"class":368},[290,981,147],{"class":364},[290,983,902],{"class":405},[290,985,408],{"class":417},[290,987,428],{"class":364},[290,989,909],{"class":300},[290,991,428],{"class":364},[290,993,706],{"class":417},[290,995,147],{"class":364},[290,997,918],{"class":405},[290,999,850],{"class":417},[290,1001,147],{"class":364},[290,1003,925],{"class":405},[290,1005,408],{"class":417},[290,1007,428],{"class":364},[290,1009,932],{"class":300},[290,1011,428],{"class":364},[290,1013,457],{"class":417},[290,1015,1017,1019],{"class":292,"line":1016},11,[290,1018,941],{"class":364},[290,1020,457],{"class":417},[290,1022,1024],{"class":292,"line":1023},12,[290,1025,389],{"emptyLinePlaceholder":388},[290,1027,1029],{"class":292,"line":1028},13,[290,1030,1031],{"class":559},"    \u002F\u002F polymorphic pivots\n",[290,1033,1035,1037,1039,1041,1044,1046,1048,1050,1052,1054,1056,1058,1060,1062],{"class":292,"line":1034},14,[290,1036,862],{"class":364},[290,1038,865],{"class":368},[290,1040,147],{"class":364},[290,1042,1043],{"class":405},"createTable",[290,1045,408],{"class":417},[290,1047,428],{"class":364},[290,1049,239],{"class":300},[290,1051,428],{"class":364},[290,1053,489],{"class":364},[290,1055,333],{"class":364},[290,1057,165],{"class":886},[290,1059,706],{"class":364},[290,1061,692],{"class":395},[290,1063,679],{"class":364},[290,1065,1067,1069,1071,1074,1076,1078,1081,1083,1085,1087,1090,1092,1094,1097,1099,1101,1104,1106,1108,1110,1113,1115,1117,1119,1121,1123,1125,1128,1130,1132,1135,1137],{"class":292,"line":1066},15,[290,1068,897],{"class":368},[290,1070,147],{"class":364},[290,1072,1073],{"class":405},"integer",[290,1075,408],{"class":417},[290,1077,428],{"class":364},[290,1079,1080],{"class":300},"role_id",[290,1082,428],{"class":364},[290,1084,706],{"class":417},[290,1086,147],{"class":364},[290,1088,1089],{"class":405},"unsigned",[290,1091,850],{"class":417},[290,1093,147],{"class":364},[290,1095,1096],{"class":405},"references",[290,1098,408],{"class":417},[290,1100,428],{"class":364},[290,1102,1103],{"class":300},"id",[290,1105,428],{"class":364},[290,1107,706],{"class":417},[290,1109,147],{"class":364},[290,1111,1112],{"class":405},"inTable",[290,1114,408],{"class":417},[290,1116,428],{"class":364},[290,1118,877],{"class":300},[290,1120,428],{"class":364},[290,1122,706],{"class":417},[290,1124,147],{"class":364},[290,1126,1127],{"class":405},"onDelete",[290,1129,408],{"class":417},[290,1131,428],{"class":364},[290,1133,1134],{"class":300},"CASCADE",[290,1136,428],{"class":364},[290,1138,457],{"class":417},[290,1140,1142,1144,1146,1148,1150,1152,1155,1157,1159,1161,1163],{"class":292,"line":1141},16,[290,1143,897],{"class":368},[290,1145,147],{"class":364},[290,1147,902],{"class":405},[290,1149,408],{"class":417},[290,1151,428],{"class":364},[290,1153,1154],{"class":300},"model_type",[290,1156,428],{"class":364},[290,1158,706],{"class":417},[290,1160,147],{"class":364},[290,1162,918],{"class":405},[290,1164,1165],{"class":417},"()\n",[290,1167,1169,1171,1173,1175,1177,1179,1182,1184,1186,1188,1190],{"class":292,"line":1168},17,[290,1170,897],{"class":368},[290,1172,147],{"class":364},[290,1174,902],{"class":405},[290,1176,408],{"class":417},[290,1178,428],{"class":364},[290,1180,1181],{"class":300},"model_id",[290,1183,428],{"class":364},[290,1185,706],{"class":417},[290,1187,147],{"class":364},[290,1189,918],{"class":405},[290,1191,1165],{"class":417},[290,1193,1195,1197,1199,1202,1205,1207,1209,1211,1213,1215,1217,1219],{"class":292,"line":1194},18,[290,1196,897],{"class":368},[290,1198,147],{"class":364},[290,1200,1201],{"class":405},"index",[290,1203,1204],{"class":417},"([",[290,1206,428],{"class":364},[290,1208,1181],{"class":300},[290,1210,428],{"class":364},[290,1212,489],{"class":364},[290,1214,378],{"class":364},[290,1216,1154],{"class":300},[290,1218,428],{"class":364},[290,1220,1221],{"class":417},"])\n",[290,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255],{"class":292,"line":1224},19,[290,1226,897],{"class":368},[290,1228,147],{"class":364},[290,1230,1201],{"class":405},[290,1232,1204],{"class":417},[290,1234,428],{"class":364},[290,1236,1080],{"class":300},[290,1238,428],{"class":364},[290,1240,489],{"class":364},[290,1242,378],{"class":364},[290,1244,1181],{"class":300},[290,1246,428],{"class":364},[290,1248,489],{"class":364},[290,1250,378],{"class":364},[290,1252,1154],{"class":300},[290,1254,428],{"class":364},[290,1256,1221],{"class":417},[290,1258,1260,1262],{"class":292,"line":1259},20,[290,1261,941],{"class":364},[290,1263,457],{"class":417},[290,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293],{"class":292,"line":1266},21,[290,1268,862],{"class":364},[290,1270,865],{"class":368},[290,1272,147],{"class":364},[290,1274,1043],{"class":405},[290,1276,408],{"class":417},[290,1278,428],{"class":364},[290,1280,242],{"class":300},[290,1282,428],{"class":364},[290,1284,489],{"class":364},[290,1286,333],{"class":364},[290,1288,165],{"class":886},[290,1290,706],{"class":364},[290,1292,692],{"class":395},[290,1294,679],{"class":364},[290,1296,1298,1300,1302,1304,1306,1308,1311,1313,1315,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361],{"class":292,"line":1297},22,[290,1299,897],{"class":368},[290,1301,147],{"class":364},[290,1303,1073],{"class":405},[290,1305,408],{"class":417},[290,1307,428],{"class":364},[290,1309,1310],{"class":300},"permission_id",[290,1312,428],{"class":364},[290,1314,706],{"class":417},[290,1316,147],{"class":364},[290,1318,1089],{"class":405},[290,1320,850],{"class":417},[290,1322,147],{"class":364},[290,1324,1096],{"class":405},[290,1326,408],{"class":417},[290,1328,428],{"class":364},[290,1330,1103],{"class":300},[290,1332,428],{"class":364},[290,1334,706],{"class":417},[290,1336,147],{"class":364},[290,1338,1112],{"class":405},[290,1340,408],{"class":417},[290,1342,428],{"class":364},[290,1344,960],{"class":300},[290,1346,428],{"class":364},[290,1348,706],{"class":417},[290,1350,147],{"class":364},[290,1352,1127],{"class":405},[290,1354,408],{"class":417},[290,1356,428],{"class":364},[290,1358,1134],{"class":300},[290,1360,428],{"class":364},[290,1362,457],{"class":417},[290,1364,1366,1368,1370,1372,1374,1376,1378,1380,1382,1384,1386],{"class":292,"line":1365},23,[290,1367,897],{"class":368},[290,1369,147],{"class":364},[290,1371,902],{"class":405},[290,1373,408],{"class":417},[290,1375,428],{"class":364},[290,1377,1154],{"class":300},[290,1379,428],{"class":364},[290,1381,706],{"class":417},[290,1383,147],{"class":364},[290,1385,918],{"class":405},[290,1387,1165],{"class":417},[290,1389,1391,1393,1395,1397,1399,1401,1403,1405,1407,1409,1411],{"class":292,"line":1390},24,[290,1392,897],{"class":368},[290,1394,147],{"class":364},[290,1396,902],{"class":405},[290,1398,408],{"class":417},[290,1400,428],{"class":364},[290,1402,1181],{"class":300},[290,1404,428],{"class":364},[290,1406,706],{"class":417},[290,1408,147],{"class":364},[290,1410,918],{"class":405},[290,1412,1165],{"class":417},[290,1414,1416,1418,1420,1422,1424,1426,1428,1430,1432,1434,1436,1438],{"class":292,"line":1415},25,[290,1417,897],{"class":368},[290,1419,147],{"class":364},[290,1421,1201],{"class":405},[290,1423,1204],{"class":417},[290,1425,428],{"class":364},[290,1427,1181],{"class":300},[290,1429,428],{"class":364},[290,1431,489],{"class":364},[290,1433,378],{"class":364},[290,1435,1154],{"class":300},[290,1437,428],{"class":364},[290,1439,1221],{"class":417},[290,1441,1443,1445,1447,1449,1451,1453,1455,1457,1459,1461,1463,1465,1467,1469,1471,1473],{"class":292,"line":1442},26,[290,1444,897],{"class":368},[290,1446,147],{"class":364},[290,1448,1201],{"class":405},[290,1450,1204],{"class":417},[290,1452,428],{"class":364},[290,1454,1310],{"class":300},[290,1456,428],{"class":364},[290,1458,489],{"class":364},[290,1460,378],{"class":364},[290,1462,1181],{"class":300},[290,1464,428],{"class":364},[290,1466,489],{"class":364},[290,1468,378],{"class":364},[290,1470,1154],{"class":300},[290,1472,428],{"class":364},[290,1474,1221],{"class":417},[290,1476,1478,1480],{"class":292,"line":1477},27,[290,1479,941],{"class":364},[290,1481,457],{"class":417},[290,1483,1485],{"class":292,"line":1484},28,[290,1486,389],{"emptyLinePlaceholder":388},[290,1488,1490],{"class":292,"line":1489},29,[290,1491,1492],{"class":559},"    \u002F\u002F copy data from the old pivots (\"user\" must match your morphMap alias)\n",[290,1494,1496,1498,1501,1503,1506,1508,1511,1513,1515],{"class":292,"line":1495},30,[290,1497,862],{"class":364},[290,1499,1500],{"class":405},"defer",[290,1502,408],{"class":417},[290,1504,1505],{"class":395},"async",[290,1507,333],{"class":364},[290,1509,1510],{"class":886},"db",[290,1512,706],{"class":364},[290,1514,692],{"class":395},[290,1516,679],{"class":364},[290,1518,1520,1523,1526,1529,1532,1535,1537,1539,1541,1543,1545,1547,1549,1551,1554,1556,1558,1561,1563],{"class":292,"line":1519},31,[290,1521,1522],{"class":395},"      const",[290,1524,1525],{"class":368}," roles",[290,1527,1528],{"class":364}," =",[290,1530,1531],{"class":360}," await",[290,1533,1534],{"class":368}," db",[290,1536,147],{"class":364},[290,1538,618],{"class":405},[290,1540,408],{"class":417},[290,1542,428],{"class":364},[290,1544,232],{"class":300},[290,1546,428],{"class":364},[290,1548,706],{"class":417},[290,1550,147],{"class":364},[290,1552,1553],{"class":405},"select",[290,1555,408],{"class":417},[290,1557,428],{"class":364},[290,1559,1560],{"class":300},"*",[290,1562,428],{"class":364},[290,1564,457],{"class":417},[290,1566,1568,1571,1573,1575,1578,1581,1583,1586],{"class":292,"line":1567},32,[290,1569,1570],{"class":360},"      for",[290,1572,333],{"class":417},[290,1574,396],{"class":395},[290,1576,1577],{"class":368}," row",[290,1579,1580],{"class":364}," of",[290,1582,1525],{"class":368},[290,1584,1585],{"class":417},") ",[290,1587,411],{"class":364},[290,1589,1591,1594,1596,1598,1600,1602,1604,1606,1608,1610,1612,1615,1617],{"class":292,"line":1590},33,[290,1592,1593],{"class":360},"        await",[290,1595,1534],{"class":368},[290,1597,147],{"class":364},[290,1599,165],{"class":405},[290,1601,408],{"class":417},[290,1603,428],{"class":364},[290,1605,239],{"class":300},[290,1607,428],{"class":364},[290,1609,706],{"class":417},[290,1611,147],{"class":364},[290,1613,1614],{"class":405},"insert",[290,1616,408],{"class":417},[290,1618,411],{"class":364},[290,1620,1622,1625,1627,1629,1631,1633],{"class":292,"line":1621},34,[290,1623,1624],{"class":417},"          role_id",[290,1626,421],{"class":364},[290,1628,1577],{"class":368},[290,1630,147],{"class":364},[290,1632,1080],{"class":368},[290,1634,431],{"class":364},[290,1636,1638,1641,1643,1645,1648,1650],{"class":292,"line":1637},35,[290,1639,1640],{"class":417},"          model_type",[290,1642,421],{"class":364},[290,1644,378],{"class":364},[290,1646,1647],{"class":300},"user",[290,1649,428],{"class":364},[290,1651,431],{"class":364},[290,1653,1655,1658,1660,1663,1665,1668,1670,1673,1675],{"class":292,"line":1654},36,[290,1656,1657],{"class":417},"          model_id",[290,1659,421],{"class":364},[290,1661,1662],{"class":405}," String",[290,1664,408],{"class":417},[290,1666,1667],{"class":368},"row",[290,1669,147],{"class":364},[290,1671,1672],{"class":368},"user_id",[290,1674,706],{"class":417},[290,1676,431],{"class":364},[290,1678,1680,1683],{"class":292,"line":1679},37,[290,1681,1682],{"class":364},"        }",[290,1684,457],{"class":417},[290,1686,1688],{"class":292,"line":1687},38,[290,1689,1690],{"class":364},"      }\n",[290,1692,1694,1696,1699,1701,1703,1705,1707,1709,1711,1713,1715,1717,1719,1721,1723,1725,1727,1729,1731],{"class":292,"line":1693},39,[290,1695,1522],{"class":395},[290,1697,1698],{"class":368}," permissions",[290,1700,1528],{"class":364},[290,1702,1531],{"class":360},[290,1704,1534],{"class":368},[290,1706,147],{"class":364},[290,1708,618],{"class":405},[290,1710,408],{"class":417},[290,1712,428],{"class":364},[290,1714,444],{"class":300},[290,1716,428],{"class":364},[290,1718,706],{"class":417},[290,1720,147],{"class":364},[290,1722,1553],{"class":405},[290,1724,408],{"class":417},[290,1726,428],{"class":364},[290,1728,1560],{"class":300},[290,1730,428],{"class":364},[290,1732,457],{"class":417},[290,1734,1736,1738,1740,1742,1744,1746,1748,1750],{"class":292,"line":1735},40,[290,1737,1570],{"class":360},[290,1739,333],{"class":417},[290,1741,396],{"class":395},[290,1743,1577],{"class":368},[290,1745,1580],{"class":364},[290,1747,1698],{"class":368},[290,1749,1585],{"class":417},[290,1751,411],{"class":364},[290,1753,1755,1757,1759,1761,1763,1765,1767,1769,1771,1773,1775,1777,1779],{"class":292,"line":1754},41,[290,1756,1593],{"class":360},[290,1758,1534],{"class":368},[290,1760,147],{"class":364},[290,1762,165],{"class":405},[290,1764,408],{"class":417},[290,1766,428],{"class":364},[290,1768,242],{"class":300},[290,1770,428],{"class":364},[290,1772,706],{"class":417},[290,1774,147],{"class":364},[290,1776,1614],{"class":405},[290,1778,408],{"class":417},[290,1780,411],{"class":364},[290,1782,1784,1787,1789,1791,1793,1795],{"class":292,"line":1783},42,[290,1785,1786],{"class":417},"          permission_id",[290,1788,421],{"class":364},[290,1790,1577],{"class":368},[290,1792,147],{"class":364},[290,1794,1310],{"class":368},[290,1796,431],{"class":364},[290,1798,1800,1802,1804,1806,1808,1810],{"class":292,"line":1799},43,[290,1801,1640],{"class":417},[290,1803,421],{"class":364},[290,1805,378],{"class":364},[290,1807,1647],{"class":300},[290,1809,428],{"class":364},[290,1811,431],{"class":364},[290,1813,1815,1817,1819,1821,1823,1825,1827,1829,1831],{"class":292,"line":1814},44,[290,1816,1657],{"class":417},[290,1818,421],{"class":364},[290,1820,1662],{"class":405},[290,1822,408],{"class":417},[290,1824,1667],{"class":368},[290,1826,147],{"class":364},[290,1828,1672],{"class":368},[290,1830,706],{"class":417},[290,1832,431],{"class":364},[290,1834,1836,1838],{"class":292,"line":1835},45,[290,1837,1682],{"class":364},[290,1839,457],{"class":417},[290,1841,1843],{"class":292,"line":1842},46,[290,1844,1690],{"class":364},[290,1846,1848,1850],{"class":292,"line":1847},47,[290,1849,941],{"class":364},[290,1851,457],{"class":417},[290,1853,1855],{"class":292,"line":1854},48,[290,1856,389],{"emptyLinePlaceholder":388},[290,1858,1860,1862,1864,1866,1869,1871,1873,1875,1877],{"class":292,"line":1859},49,[290,1861,862],{"class":364},[290,1863,865],{"class":368},[290,1865,147],{"class":364},[290,1867,1868],{"class":405},"dropTable",[290,1870,408],{"class":417},[290,1872,428],{"class":364},[290,1874,232],{"class":300},[290,1876,428],{"class":364},[290,1878,457],{"class":417},[290,1880,1882,1884,1886,1888,1890,1892,1894,1896,1898],{"class":292,"line":1881},50,[290,1883,862],{"class":364},[290,1885,865],{"class":368},[290,1887,147],{"class":364},[290,1889,1868],{"class":405},[290,1891,408],{"class":417},[290,1893,428],{"class":364},[290,1895,444],{"class":300},[290,1897,428],{"class":364},[290,1899,457],{"class":417},[290,1901,1903],{"class":292,"line":1902},51,[290,1904,1905],{"class":364},"  }\n",[290,1907,1909],{"class":292,"line":1908},52,[290,1910,389],{"emptyLinePlaceholder":388},[290,1912,1914,1916,1919,1921],{"class":292,"line":1913},53,[290,1915,844],{"class":395},[290,1917,1918],{"class":417}," down",[290,1920,850],{"class":364},[290,1922,679],{"class":364},[290,1924,1926],{"class":292,"line":1925},54,[290,1927,1928],{"class":559},"    \u002F\u002F restore the old tables if you need a rollback path\n",[290,1930,1932],{"class":292,"line":1931},55,[290,1933,1905],{"class":364},[290,1935,1937],{"class":292,"line":1936},56,[290,1938,1939],{"class":364},"}\n",[1941,1942,1943],"note",{},[130,1944,1945,1946,1948,1949,1951,1952,221,1955,1958,1959,1961,1962,1964],{},"The foreign key column names in the old pivots (",[140,1947,1080],{},", ",[140,1950,1672],{},", ...) may differ in your app. Check your existing tables first. Column types must match your primary keys: use ",[140,1953,1954],{},"uuid",[140,1956,1957],{},"bigInteger"," instead of ",[140,1960,1073],{}," where needed. If you used custom table names, set them in ",[140,1963,260],{}," instead of renaming tables.",[130,1966,1967,1968,1971,1972,204,1974,1976,1977,147],{},"Your ",[140,1969,1970],{},"role_has_permissions"," table is kept as it is (the default name is the same), as long as the columns are ",[140,1973,1080],{},[140,1975,1310],{},". Otherwise map them with ",[140,1978,1979],{},"columnNames",[281,1981,1983],{"className":283,"code":1982,"language":285,"meta":286,"style":286},"node ace migration:run\n",[140,1984,1985],{"__ignoreMap":286},[290,1986,1987,1989,1991],{"class":292,"line":293},[290,1988,310],{"class":296},[290,1990,313],{"class":300},[290,1992,1993],{"class":300}," migration:run\n",[160,1995,1997],{"id":1996},"_4-rename-the-methods","4. Rename the methods",[165,1999,2000,2008],{},[168,2001,2002],{},[171,2003,2004,2006],{},[174,2005,176],{},[174,2007,179],{},[181,2009,2010,2022,2038,2050,2066,2081,2096,2120],{},[171,2011,2012,2017],{},[186,2013,2014],{},[140,2015,2016],{},"role.hasAnyRoles(...)",[186,2018,2019],{},[140,2020,2021],{},"hasAnyRole(...)",[171,2023,2024,2029],{},[186,2025,2026],{},[140,2027,2028],{},"user.withPermissionTo(p)",[186,2030,2031,333,2034,2037],{},[140,2032,2033],{},"user.hasPermissionTo(p)",[140,2035,2036],{},"user.can(p)"," is an alias)",[171,2039,2040,2045],{},[186,2041,2042],{},[140,2043,2044],{},"user.canAnyPermission(...)",[186,2046,2047],{},[140,2048,2049],{},"user.hasAnyPermission(...)",[171,2051,2052,2063],{},[186,2053,2054,1948,2057,1948,2060],{},[140,2055,2056],{},"revokeRole",[140,2058,2059],{},"syncRoles",[140,2061,2062],{},"assignRole",[186,2064,2065],{},"unchanged",[171,2067,2068,2079],{},[186,2069,2070,1948,2073,1948,2076],{},[140,2071,2072],{},"givePermissionTo",[140,2074,2075],{},"revokePermissionTo",[140,2077,2078],{},"syncPermissions",[186,2080,2065],{},[171,2082,2083,2094],{},[186,2084,2085,1948,2088,1948,2091],{},[140,2086,2087],{},"hasRole",[140,2089,2090],{},"hasAllRoles",[140,2092,2093],{},"getRoleNames",[186,2095,2065],{},[171,2097,2098,2118],{},[186,2099,2100,1948,2103,1948,2106,1948,2109,1948,2112,1948,2115],{},[140,2101,2102],{},"hasDirectPermission",[140,2104,2105],{},"hasPermissionViaRole",[140,2107,2108],{},"getDirectPermissions",[140,2110,2111],{},"getPermissionsViaRoles",[140,2113,2114],{},"getAllPermissions",[140,2116,2117],{},"getPermissionNames",[186,2119,2065],{},[171,2121,2122,2130],{},[186,2123,2124,1948,2127],{},[140,2125,2126],{},"checkPermissionTo",[140,2128,2129],{},"hasAllPermissions",[186,2131,2065],{},[130,2133,2134],{},"Search your project for the old names:",[281,2136,2138],{"className":283,"code":2137,"language":285,"meta":286,"style":286},"grep -rnE \"hasAnyRoles|withPermissionTo|canAnyPermission|adonis-lucid-permission\" app start config\n",[140,2139,2140],{"__ignoreMap":286},[290,2141,2142,2145,2148,2151,2154,2157,2160,2163],{"class":292,"line":293},[290,2143,2144],{"class":296},"grep",[290,2146,2147],{"class":300}," -rnE",[290,2149,2150],{"class":364}," \"",[290,2152,2153],{"class":300},"hasAnyRoles|withPermissionTo|canAnyPermission|adonis-lucid-permission",[290,2155,2156],{"class":364},"\"",[290,2158,2159],{"class":300}," app",[290,2161,2162],{"class":300}," start",[290,2164,2165],{"class":300}," config\n",[160,2167,2169],{"id":2168},"_5-update-the-middlewares","5. Update the middlewares",[130,2171,2172,2173,2176],{},"In ",[140,2174,2175],{},"start\u002Fkernel.ts",", change the import paths:",[281,2178,2180],{"className":350,"code":2179,"language":353,"meta":286,"style":286},"export const middleware = router.named({\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",[140,2181,2182,2206,2231,2257,2283],{"__ignoreMap":286},[290,2183,2184,2186,2189,2192,2194,2197,2199,2202,2204],{"class":292,"line":293},[290,2185,468],{"class":360},[290,2187,2188],{"class":395}," const",[290,2190,2191],{"class":368}," middleware ",[290,2193,402],{"class":364},[290,2195,2196],{"class":368}," router",[290,2198,147],{"class":364},[290,2200,2201],{"class":405},"named",[290,2203,408],{"class":368},[290,2205,411],{"class":364},[290,2207,2208,2211,2213,2215,2217,2219,2221,2223,2225,2227,2229],{"class":292,"line":307},[290,2209,2210],{"class":405},"  role",[290,2212,421],{"class":364},[290,2214,689],{"class":364},[290,2216,692],{"class":395},[290,2218,695],{"class":364},[290,2220,408],{"class":368},[290,2222,428],{"class":364},[290,2224,275],{"class":300},[290,2226,428],{"class":364},[290,2228,706],{"class":368},[290,2230,431],{"class":364},[290,2232,2233,2236,2238,2240,2242,2244,2246,2248,2251,2253,2255],{"class":292,"line":392},[290,2234,2235],{"class":405},"  permission",[290,2237,421],{"class":364},[290,2239,689],{"class":364},[290,2241,692],{"class":395},[290,2243,695],{"class":364},[290,2245,408],{"class":368},[290,2247,428],{"class":364},[290,2249,2250],{"class":300},"@eienjs\u002Fadonisjs-permission\u002Fmiddleware\u002Fpermission_middleware",[290,2252,428],{"class":364},[290,2254,706],{"class":368},[290,2256,431],{"class":364},[290,2258,2259,2262,2264,2266,2268,2270,2272,2274,2277,2279,2281],{"class":292,"line":414},[290,2260,2261],{"class":405},"  roleOrPermission",[290,2263,421],{"class":364},[290,2265,689],{"class":364},[290,2267,692],{"class":395},[290,2269,695],{"class":364},[290,2271,408],{"class":368},[290,2273,428],{"class":364},[290,2275,2276],{"class":300},"@eienjs\u002Fadonisjs-permission\u002Fmiddleware\u002Frole_or_permission_middleware",[290,2278,428],{"class":364},[290,2280,706],{"class":368},[290,2282,431],{"class":364},[290,2284,2285,2287],{"class":292,"line":434},[290,2286,454],{"class":364},[290,2288,457],{"class":368},[130,2290,2291,2292,1948,2295,1948,2298,2301],{},"Route usage (",[140,2293,2294],{},"middleware.role({ roles })",[140,2296,2297],{},"middleware.permission({ permissions })",[140,2299,2300],{},"middleware.roleOrPermission({ roleOrPermission })",") is the same.",[160,2303,2305],{"id":2304},"_6-verify","6. Verify",[281,2307,2309],{"className":283,"code":2308,"language":285,"meta":286,"style":286},"node ace permissions:show\nnode ace permissions:cache-reset\n",[140,2310,2311,2320],{"__ignoreMap":286},[290,2312,2313,2315,2317],{"class":292,"line":293},[290,2314,310],{"class":296},[290,2316,313],{"class":300},[290,2318,2319],{"class":300}," permissions:show\n",[290,2321,2322,2324,2326],{"class":292,"line":307},[290,2323,310],{"class":296},[290,2325,313],{"class":300},[290,2327,2328],{"class":300}," permissions:cache-reset\n",[130,2330,2331],{},"Run your test suite and confirm that roles and permissions of an existing user are still resolved:",[281,2333,2335],{"className":350,"code":2334,"language":353,"meta":286,"style":286},"await user.getRoleNames()\nawait user.getAllPermissions()\n",[140,2336,2337,2351],{"__ignoreMap":286},[290,2338,2339,2342,2345,2347,2349],{"class":292,"line":293},[290,2340,2341],{"class":360},"await",[290,2343,2344],{"class":368}," user",[290,2346,147],{"class":364},[290,2348,2093],{"class":405},[290,2350,1165],{"class":368},[290,2352,2353,2355,2357,2359,2361],{"class":292,"line":307},[290,2354,2341],{"class":360},[290,2356,2344],{"class":368},[290,2358,147],{"class":364},[290,2360,2114],{"class":405},[290,2362,1165],{"class":368},[160,2364,2366],{"id":2365},"new-features-you-can-adopt","New features you can adopt",[2368,2369,2370,2377,2381,2386,2390,2395],"ul",{},[2371,2372,2373],"li",{},[134,2374,2376],{"href":2375},"\u002Fpackages\u002Fadonisjs-permission\u002Fbasic-usage\u002Froles-and-permissions#guards","Guards",[2371,2378,2379],{},[134,2380,94],{"href":95},[2371,2382,2383],{},[134,2384,2385],{"href":79},"Wildcard permissions",[2371,2387,2388],{},[134,2389,99],{"href":100},[2371,2391,2392],{},[134,2393,2394],{"href":84},"Catalog & sync commands",[2371,2396,2397],{},[134,2398,2400],{"href":2399},"\u002Fpackages\u002Fadonisjs-permission\u002Fbasic-usage\u002Fchecking#edge","Edge tags and events",[2402,2403,2404],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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 .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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":286,"searchDepth":293,"depth":307,"links":2406},[2407,2408,2409,2410,2411,2412,2413,2414],{"id":162,"depth":307,"text":163},{"id":278,"depth":307,"text":279},{"id":343,"depth":307,"text":344},{"id":787,"depth":307,"text":788},{"id":1996,"depth":307,"text":1997},{"id":2168,"depth":307,"text":2169},{"id":2304,"depth":307,"text":2305},{"id":2365,"depth":307,"text":2366},"Step by step migration from adonis-lucid-permission (AdonisJS v6) to @eienjs\u002Fadonisjs-permission (AdonisJS v7).","md",{},{"icon":123},{"title":120,"description":2415},"JYiDNC8AU243pzEfZ_eBRzVP0vuQgeC5Zxiiht9_NPc",[2422,2424],{"title":109,"path":110,"stem":111,"description":2423,"icon":112,"children":-1},"In-memory cache of permissions and roles.",null,1793679731556]