[{"data":1,"prerenderedAt":2050},["ShallowReactive",2],{"navigation":3,"\u002F2.x\u002Fdigging-deeper\u002Fauthorizations":307,"\u002F2.x\u002Fdigging-deeper\u002Fauthorizations-surround":2045},{"3.x":4,"2.x":203},[5,32,61,99,121,147,165],{"title":6,"icon":7,"path":8,"stem":9,"children":10,"page":31},"Getting Started","i-heroicons-star","\u002Fgetting-started","1.getting-started",[11,15,19,23,27],{"title":12,"path":13,"stem":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":16,"path":17,"stem":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":20,"path":21,"stem":22},"Quick start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start",{"title":24,"path":25,"stem":26},"Configuration","\u002Fgetting-started\u002Fconfiguration","1.getting-started\u002F4.configuration",{"title":28,"path":29,"stem":30},"Upgrade guide","\u002Fgetting-started\u002Fupgrade-guide","1.getting-started\u002F5.upgrade-guide",false,{"title":33,"icon":34,"path":35,"stem":36,"children":37,"page":31},"Resources","i-heroicons-document-text","\u002Fresources","2.resources",[38,41,45,49,53,57],{"title":33,"path":39,"stem":40},"\u002Fresources\u002Fresources","2.resources\u002F1.resources",{"title":42,"path":43,"stem":44},"Fields","\u002Fresources\u002Ffields","2.resources\u002F2.fields",{"title":46,"path":47,"stem":48},"Relationships","\u002Fresources\u002Frelations","2.resources\u002F3.relations",{"title":50,"path":51,"stem":52},"Validation","\u002Fresources\u002Fvalidation","2.resources\u002F4.validation",{"title":54,"path":55,"stem":56},"Perimeter","\u002Fresources\u002Fperimeter","2.resources\u002F5.perimeter",{"title":58,"path":59,"stem":60},"Limits","\u002Fresources\u002Flimits","2.resources\u002F6.limits",{"title":62,"icon":63,"path":64,"stem":65,"children":66,"page":31},"Search","i-heroicons-magnifying-glass","\u002Fsearch","3.search",[67,71,75,79,83,87,91,95],{"title":68,"path":69,"stem":70},"Search overview","\u002Fsearch\u002Foverview","3.search\u002F1.overview",{"title":72,"path":73,"stem":74},"Search filters","\u002Fsearch\u002Ffilters","3.search\u002F2.filters",{"title":76,"path":77,"stem":78},"Sorts and selects","\u002Fsearch\u002Fsorts-and-selects","3.search\u002F3.sorts-and-selects",{"title":80,"path":81,"stem":82},"Includes and aggregates","\u002Fsearch\u002Fincludes-and-aggregates","3.search\u002F4.includes-and-aggregates",{"title":84,"path":85,"stem":86},"Scopes and instructions","\u002Fsearch\u002Fscopes-and-instructions","3.search\u002F5.scopes-and-instructions",{"title":88,"path":89,"stem":90},"Text search","\u002Fsearch\u002Ftext-search","3.search\u002F6.text-search",{"title":92,"path":93,"stem":94},"Search engines","\u002Fsearch\u002Fsearch-engines","3.search\u002F7.search-engines",{"title":96,"path":97,"stem":98},"Searching outside HTTP","\u002Fsearch\u002Foutside-http","3.search\u002F8.outside-http",{"title":100,"icon":101,"path":102,"stem":103,"children":104,"page":31},"Writing","i-heroicons-pencil-square","\u002Fwriting","4.writing",[105,109,113,117],{"title":106,"path":107,"stem":108},"Mutate","\u002Fwriting\u002Fmutate","4.writing\u002F1.mutate",{"title":110,"path":111,"stem":112},"Writing relations","\u002Fwriting\u002Frelations","4.writing\u002F2.relations",{"title":114,"path":115,"stem":116},"Versioned rows","\u002Fwriting\u002Fversioned-rows","4.writing\u002F3.versioned-rows",{"title":118,"path":119,"stem":120},"Deleting and restoring","\u002Fwriting\u002Fdeleting","4.writing\u002F4.deleting",{"title":122,"icon":123,"path":124,"stem":125,"children":126,"page":31},"Actions and Metrics","i-heroicons-bolt","\u002Factions-and-metrics","5.actions-and-metrics",[127,131,135,139,143],{"title":128,"path":129,"stem":130},"Actions","\u002Factions-and-metrics\u002Factions","5.actions-and-metrics\u002F1.actions",{"title":132,"path":133,"stem":134},"Queued Actions","\u002Factions-and-metrics\u002Fqueued-actions","5.actions-and-metrics\u002F2.queued-actions",{"title":136,"path":137,"stem":138},"Confirmation","\u002Factions-and-metrics\u002Fconfirmation","5.actions-and-metrics\u002F3.confirmation",{"title":140,"path":141,"stem":142},"Metrics","\u002Factions-and-metrics\u002Fmetrics","5.actions-and-metrics\u002F4.metrics",{"title":144,"path":145,"stem":146},"Exports","\u002Factions-and-metrics\u002Fexports","5.actions-and-metrics\u002F5.exports",{"title":148,"icon":149,"path":150,"stem":151,"children":152,"page":31},"Authorization","i-heroicons-lock-closed","\u002Fauthorization","6.authorization",[153,157,161],{"title":154,"path":155,"stem":156},"Policies","\u002Fauthorization\u002Fpolicies","6.authorization\u002F1.policies",{"title":158,"path":159,"stem":160},"Gates","\u002Fauthorization\u002Fgates","6.authorization\u002F2.gates",{"title":162,"path":163,"stem":164},"Decision Cache","\u002Fauthorization\u002Fdecision-cache","6.authorization\u002F3.decision-cache",{"title":166,"icon":167,"path":168,"stem":169,"children":170,"page":31},"Digging Deeper","i-heroicons-list-bullet","\u002Fdigging-deeper","7.digging-deeper",[171,175,179,183,187,191,195,199],{"title":172,"path":173,"stem":174},"Details","\u002Fdigging-deeper\u002Fdetails","7.digging-deeper\u002F1.details",{"title":176,"path":177,"stem":178},"Events and Hooks","\u002Fdigging-deeper\u002Fevents-and-hooks","7.digging-deeper\u002F2.events-and-hooks",{"title":180,"path":181,"stem":182},"Custom Responses","\u002Fdigging-deeper\u002Fresponses","7.digging-deeper\u002F3.responses",{"title":184,"path":185,"stem":186},"OpenAPI Documentation","\u002Fdigging-deeper\u002Fopenapi","7.digging-deeper\u002F4.openapi",{"title":188,"path":189,"stem":190},"Precognition","\u002Fdigging-deeper\u002Fprecognition","7.digging-deeper\u002F5.precognition",{"title":192,"path":193,"stem":194},"Artisan Commands","\u002Fdigging-deeper\u002Fartisan","7.digging-deeper\u002F6.artisan",{"title":196,"path":197,"stem":198},"Laravel Boost Skill","\u002Fdigging-deeper\u002Fai-skill","7.digging-deeper\u002F7.ai-skill",{"title":200,"path":201,"stem":202},"Translations","\u002Fdigging-deeper\u002Ftranslations","7.digging-deeper\u002F8.translations",[204,215,237,260,297],{"title":6,"icon":7,"path":205,"stem":206,"children":207,"page":31},"\u002F2.x\u002Fgetting-started","2.x\u002F1.getting-started",[208,211],{"title":16,"path":209,"stem":210},"\u002F2.x\u002Fgetting-started\u002Finstallation","2.x\u002F1.getting-started\u002F1.installation",{"title":212,"path":213,"stem":214},"Upgrade Guide","\u002F2.x\u002Fgetting-started\u002Fupgrade-guide","2.x\u002F1.getting-started\u002F2.upgrade-guide",{"title":216,"icon":217,"path":218,"stem":219,"children":220,"page":31},"Endpoints","i-heroicons-arrow-uturn-left","\u002F2.x\u002Fendpoints","2.x\u002F2.endpoints",[221,224,227,230,233],{"title":172,"path":222,"stem":223},"\u002F2.x\u002Fendpoints\u002Fdetails","2.x\u002F2.endpoints\u002F1.details",{"title":62,"path":225,"stem":226},"\u002F2.x\u002Fendpoints\u002Fsearch","2.x\u002F2.endpoints\u002F2.search",{"title":106,"path":228,"stem":229},"\u002F2.x\u002Fendpoints\u002Fmutate","2.x\u002F2.endpoints\u002F3.mutate",{"title":128,"path":231,"stem":232},"\u002F2.x\u002Fendpoints\u002Factions","2.x\u002F2.endpoints\u002F4.actions",{"title":234,"path":235,"stem":236},"Delete","\u002F2.x\u002Fendpoints\u002Fdelete","2.x\u002F2.endpoints\u002F5.delete",{"title":33,"icon":34,"path":238,"stem":239,"children":240,"page":31},"\u002F2.x\u002Fresources","2.x\u002F3.resources",[241,245,249,252,256],{"title":242,"path":243,"stem":244},"Basics","\u002F2.x\u002Fresources\u002Fbasics","2.x\u002F3.resources\u002F1.basics",{"title":246,"path":247,"stem":248},"Exposed Data","\u002F2.x\u002Fresources\u002Fexposed-data","2.x\u002F3.resources\u002F2.exposed-data",{"title":46,"path":250,"stem":251},"\u002F2.x\u002Fresources\u002Frelationships","2.x\u002F3.resources\u002F3.relationships",{"title":253,"path":254,"stem":255},"Validations","\u002F2.x\u002Fresources\u002Fvalidations","2.x\u002F3.resources\u002F4.validations",{"title":257,"path":258,"stem":259},"Interactions","\u002F2.x\u002Fresources\u002Finteractions","2.x\u002F3.resources\u002F5.interactions",{"title":166,"icon":167,"path":261,"stem":262,"children":263,"page":31},"\u002F2.x\u002Fdigging-deeper","2.x\u002F4.digging-deeper",[264,267,271,274,278,282,286,290,294],{"title":128,"path":265,"stem":266},"\u002F2.x\u002Fdigging-deeper\u002Factions","2.x\u002F4.digging-deeper\u002F1.actions",{"title":268,"path":269,"stem":270},"Hooks","\u002F2.x\u002Fdigging-deeper\u002Fhooks","2.x\u002F4.digging-deeper\u002F2.hooks",{"title":158,"path":272,"stem":273},"\u002F2.x\u002Fdigging-deeper\u002Fgates","2.x\u002F4.digging-deeper\u002F3.gates",{"title":275,"path":276,"stem":277},"Authorizations","\u002F2.x\u002Fdigging-deeper\u002Fauthorizations","2.x\u002F4.digging-deeper\u002F4.authorizations",{"title":279,"path":280,"stem":281},"Full Text Search","\u002F2.x\u002Fdigging-deeper\u002Ffull-text-search","2.x\u002F4.digging-deeper\u002F5.full-text-search",{"title":283,"path":284,"stem":285},"Instructions","\u002F2.x\u002Fdigging-deeper\u002Finstructions","2.x\u002F4.digging-deeper\u002F6.instructions",{"title":287,"path":288,"stem":289},"Responses","\u002F2.x\u002Fdigging-deeper\u002Fresponses","2.x\u002F4.digging-deeper\u002F7.responses",{"title":291,"path":292,"stem":293},"Documentation","\u002F2.x\u002Fdigging-deeper\u002Fdocumentation","2.x\u002F4.digging-deeper\u002F8.documentation",{"title":188,"path":295,"stem":296},"\u002F2.x\u002Fdigging-deeper\u002Fprecognition","2.x\u002F4.digging-deeper\u002F9.precognition",{"title":298,"icon":299,"path":300,"stem":301,"children":302,"page":31},"Integrations","i-lucide-puzzle","\u002F2.x\u002Fintegrations","2.x\u002F5.integrations",[303],{"title":304,"path":305,"stem":306},"Flutter","\u002F2.x\u002Fintegrations\u002Fflutter","2.x\u002F5.integrations\u002F1.flutter",{"id":308,"title":275,"body":309,"description":2039,"extension":2040,"links":2041,"meta":2042,"navigation":483,"path":276,"seo":2043,"stem":277,"__hash__":2044},"docs2x\u002F2.x\u002F4.digging-deeper\u002F4.authorizations.md",{"type":310,"value":311,"toc":2024},"minimark",[312,328,332,347,350,450,456,759,764,767,773,777,784,849,853,860,926,929,932,936,947,962,1388,1392,1395,1399,1406,1615,1619,1622,1626,1631,1704,1707,1713,1821,1825,1828,1835,1955,1958,1963,2020],[313,314,315],"warning",{},[316,317,318,319,323,324,327],"p",{},"Laravel Rest Api doesn't provide authentication, you can define it on your project using for example ",[320,321,322],"code",{},"Laravel Passport",", ",[320,325,326],{},"Laravel Sanctum"," or make your own.",[329,330,154],"h2",{"id":331},"policies",[316,333,334,335,342,343,346],{},"To restrict access to viewing, creating, updating, or deleting resources, Laravel Rest Api relies on Laravel's ",[336,337,341],"a",{"href":338,"rel":339},"https:\u002F\u002Flaravel.com\u002Fdocs\u002Fauthorization#creating-policies",[340],"nofollow","authorization policies",".\nBy default, Laravel automatically associates the appropriate authorization policies with your models.\nYou can also manually associate a policy in your ",[320,344,345],{},"AppServiceProvider",". In either case, Laravel REST API will use it automatically, without requiring any additional configuration.",[316,348,349],{},"This concerns the following methods:",[351,352,353,366],"table",{},[354,355,356],"thead",{},[357,358,359,363],"tr",{},[360,361,362],"th",{},"Policy method",[360,364,365],{},"Used when",[367,368,369,380,390,400,410,420,430,440],"tbody",{},[357,370,371,377],{},[372,373,374],"td",{},[320,375,376],{},"viewAny",[372,378,379],{},"Listing \u002F searching resources",[357,381,382,387],{},[372,383,384],{},[320,385,386],{},"view",[372,388,389],{},"Reading a specific model",[357,391,392,397],{},[372,393,394],{},[320,395,396],{},"create",[372,398,399],{},"Creating a new model",[357,401,402,407],{},[372,403,404],{},[320,405,406],{},"update",[372,408,409],{},"Updating an existing model",[357,411,412,417],{},[372,413,414],{},[320,415,416],{},"replicate",[372,418,419],{},"Duplicating a model via mutate",[357,421,422,427],{},[372,423,424],{},[320,425,426],{},"delete",[372,428,429],{},"Deleting a model",[357,431,432,437],{},[372,433,434],{},[320,435,436],{},"restore",[372,438,439],{},"Restoring a soft-deleted model",[357,441,442,447],{},[372,443,444],{},[320,445,446],{},"forceDelete",[372,448,449],{},"Force-deleting a model",[316,451,452,453,455],{},"For example, to determine which users are allowed to view a User model, you simply need to define a ",[320,454,386],{}," method on the model's corresponding policy class:",[457,458,463],"pre",{"className":459,"code":460,"language":461,"meta":462,"style":462},"language-php shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003C?php\n\nnamespace App\\Policies;\n\nuse App\\Models\\User;\nuse Illuminate\\Auth\\Access\\HandlesAuthorization;\n\nclass UserPolicy\n{\n    use HandlesAuthorization;\n\n    \u002F**\n     * Determine whether the user can view the user.\n     *\n     * @param  \\App\\Models\\User  $user\n     * @param  \\App\\Models\\User  $model\n     * @return mixed\n     *\u002F\n    public function view(User $user, User $model)\n    {\n        return $user->is($model);\n    }\n}\n","php","",[320,464,465,478,485,504,509,529,554,559,569,575,586,591,598,604,610,640,662,673,679,717,723,747,753],{"__ignoreMap":462},[466,467,470,474],"span",{"class":468,"line":469},"line",1,[466,471,473],{"class":472},"sMK4o","\u003C?",[466,475,477],{"class":476},"sTEyZ","php\n",[466,479,481],{"class":468,"line":480},2,[466,482,484],{"emptyLinePlaceholder":483},true,"\n",[466,486,488,492,496,499,501],{"class":468,"line":487},3,[466,489,491],{"class":490},"sbssI","namespace",[466,493,495],{"class":494},"sBMFI"," App",[466,497,498],{"class":472},"\\",[466,500,154],{"class":494},[466,502,503],{"class":472},";\n",[466,505,507],{"class":468,"line":506},4,[466,508,484],{"emptyLinePlaceholder":483},[466,510,512,515,517,519,522,524,527],{"class":468,"line":511},5,[466,513,514],{"class":490},"use",[466,516,495],{"class":476},[466,518,498],{"class":472},[466,520,521],{"class":476},"Models",[466,523,498],{"class":472},[466,525,526],{"class":476},"User",[466,528,503],{"class":472},[466,530,532,534,537,539,542,544,547,549,552],{"class":468,"line":531},6,[466,533,514],{"class":490},[466,535,536],{"class":476}," Illuminate",[466,538,498],{"class":472},[466,540,541],{"class":476},"Auth",[466,543,498],{"class":472},[466,545,546],{"class":476},"Access",[466,548,498],{"class":472},[466,550,551],{"class":476},"HandlesAuthorization",[466,553,503],{"class":472},[466,555,557],{"class":468,"line":556},7,[466,558,484],{"emptyLinePlaceholder":483},[466,560,562,566],{"class":468,"line":561},8,[466,563,565],{"class":564},"spNyl","class",[466,567,568],{"class":494}," UserPolicy\n",[466,570,572],{"class":468,"line":571},9,[466,573,574],{"class":472},"{\n",[466,576,578,581,584],{"class":468,"line":577},10,[466,579,580],{"class":490},"    use",[466,582,583],{"class":476}," HandlesAuthorization",[466,585,503],{"class":472},[466,587,589],{"class":468,"line":588},11,[466,590,484],{"emptyLinePlaceholder":483},[466,592,594],{"class":468,"line":593},12,[466,595,597],{"class":596},"sHwdD","    \u002F**\n",[466,599,601],{"class":468,"line":600},13,[466,602,603],{"class":596},"     * Determine whether the user can view the user.\n",[466,605,607],{"class":468,"line":606},14,[466,608,609],{"class":596},"     *\n",[466,611,613,616,620,624,628,630,632,634,637],{"class":468,"line":612},15,[466,614,615],{"class":596},"     * ",[466,617,619],{"class":618},"svl4J","@param",[466,621,623],{"class":622},"s7zQu","  \\",[466,625,627],{"class":626},"sHdIc","App",[466,629,498],{"class":622},[466,631,521],{"class":626},[466,633,498],{"class":622},[466,635,526],{"class":636},"sFweD",[466,638,639],{"class":596},"  $user\n",[466,641,643,645,647,649,651,653,655,657,659],{"class":468,"line":642},16,[466,644,615],{"class":596},[466,646,619],{"class":618},[466,648,623],{"class":622},[466,650,627],{"class":626},[466,652,498],{"class":622},[466,654,521],{"class":626},[466,656,498],{"class":622},[466,658,526],{"class":636},[466,660,661],{"class":596},"  $model\n",[466,663,665,667,670],{"class":468,"line":664},17,[466,666,615],{"class":596},[466,668,669],{"class":618},"@return",[466,671,672],{"class":618}," mixed\n",[466,674,676],{"class":468,"line":675},18,[466,677,678],{"class":596},"     *\u002F\n",[466,680,682,685,688,692,695,697,700,703,706,709,711,714],{"class":468,"line":681},19,[466,683,684],{"class":564},"    public",[466,686,687],{"class":564}," function",[466,689,691],{"class":690},"s2Zo4"," view",[466,693,694],{"class":472},"(",[466,696,526],{"class":494},[466,698,699],{"class":472}," $",[466,701,702],{"class":476},"user",[466,704,705],{"class":472},",",[466,707,708],{"class":494}," User",[466,710,699],{"class":472},[466,712,713],{"class":476},"model",[466,715,716],{"class":472},")\n",[466,718,720],{"class":468,"line":719},20,[466,721,722],{"class":472},"    {\n",[466,724,726,729,731,733,736,739,742,744],{"class":468,"line":725},21,[466,727,728],{"class":622},"        return",[466,730,699],{"class":472},[466,732,702],{"class":476},[466,734,735],{"class":472},"->",[466,737,738],{"class":690},"is",[466,740,741],{"class":472},"($",[466,743,713],{"class":476},[466,745,746],{"class":472},");\n",[466,748,750],{"class":468,"line":749},22,[466,751,752],{"class":472},"    }\n",[466,754,756],{"class":468,"line":755},23,[466,757,758],{"class":472},"}\n",[760,761,763],"h3",{"id":762},"disable-authorizations","Disable Authorizations",[316,765,766],{},"By default, authorizations are enabled but you can disable them in certain situations.",[768,769,770],"note",{},[316,771,772],{},"When you are mutating \u002F searching distant relations, this will apply the relation resource state.",[760,774,776],{"id":775},"globally","Globally",[316,778,779,780,783],{},"In your ",[320,781,782],{},"config\u002Frest.php"," file, you can directly specify to disable this feature:",[457,785,787],{"className":459,"code":786,"language":461,"meta":462,"style":462},"[\n    \u002F\u002F ...\n    'authorizations' => [\n        'enabled' => false, \u002F\u002F Switch this to false\n    ]\n    \u002F\u002F ...\n]\n",[320,788,789,794,799,817,835,840,844],{"__ignoreMap":462},[466,790,791],{"class":468,"line":469},[466,792,793],{"class":472},"[\n",[466,795,796],{"class":468,"line":480},[466,797,798],{"class":596},"    \u002F\u002F ...\n",[466,800,801,804,808,811,814],{"class":468,"line":487},[466,802,803],{"class":472},"    '",[466,805,807],{"class":806},"sfazB","authorizations",[466,809,810],{"class":472},"'",[466,812,813],{"class":472}," =>",[466,815,816],{"class":472}," [\n",[466,818,819,822,825,827,829,832],{"class":468,"line":506},[466,820,821],{"class":472},"        '",[466,823,824],{"class":806},"enabled",[466,826,810],{"class":472},[466,828,813],{"class":472},[466,830,831],{"class":472}," false,",[466,833,834],{"class":596}," \u002F\u002F Switch this to false\n",[466,836,837],{"class":468,"line":511},[466,838,839],{"class":472},"    ]\n",[466,841,842],{"class":468,"line":531},[466,843,798],{"class":596},[466,845,846],{"class":468,"line":556},[466,847,848],{"class":472},"]\n",[760,850,852],{"id":851},"resource","Resource",[316,854,855,856,859],{},"If you want to disable this feature for certain resources only, you can use the ",[320,857,858],{},"DisableAuthorizations"," trait on your resource file:",[457,861,864],{"className":459,"code":862,"filename":863,"language":461,"meta":462,"style":462},"class UserResource extends Resource\n{\n    use \\Lomkit\\Rest\\Concerns\\Resource\\DisableAuthorizations;\n    \n    \u002F\u002F ...\n}\n","UserResource.php",[320,865,866,879,883,913,918,922],{"__ignoreMap":462},[466,867,868,870,873,876],{"class":468,"line":469},[466,869,565],{"class":564},[466,871,872],{"class":494}," UserResource",[466,874,875],{"class":564}," extends",[466,877,878],{"class":494}," Resource\n",[466,880,881],{"class":468,"line":480},[466,882,574],{"class":472},[466,884,885,887,890,893,895,898,900,903,905,907,909,911],{"class":468,"line":487},[466,886,580],{"class":490},[466,888,889],{"class":472}," \\",[466,891,892],{"class":476},"Lomkit",[466,894,498],{"class":472},[466,896,897],{"class":476},"Rest",[466,899,498],{"class":472},[466,901,902],{"class":476},"Concerns",[466,904,498],{"class":472},[466,906,852],{"class":476},[466,908,498],{"class":472},[466,910,858],{"class":476},[466,912,503],{"class":472},[466,914,915],{"class":468,"line":506},[466,916,917],{"class":476},"    \n",[466,919,920],{"class":468,"line":511},[466,921,798],{"class":596},[466,923,924],{"class":468,"line":531},[466,925,758],{"class":472},[329,927,46],{"id":928},"relationships",[316,930,931],{},"Because you may want to be able to control what models front end users are linking, Laravel Rest Api provides full control over relationship operations.",[760,933,935],{"id":934},"attaching-detaching","Attaching \u002F Detaching",[316,937,938,939,942,943,946],{},"When working with relationships, Laravel Rest Api uses a simple policy method naming convention: ",[320,940,941],{},"attach{Model}"," \u002F ",[320,944,945],{},"detach{Model}",".",[316,948,949,950,953,954,957,958,961],{},"To illustrate this convention, let's assume your application has a ",[320,951,952],{},"Post"," resource and a ",[320,955,956],{},"Comment"," resource. If you would like to authorize which users can add comments to a post, you should define an ",[320,959,960],{},"attachComment"," method on your post model's policy class:",[457,963,965],{"className":459,"code":964,"language":461,"meta":462,"style":462},"\u003C?php\n\nnamespace App\\Policies;\n\nuse App\\Models\\Comment;\nuse App\\Models\\User;\nuse App\\Models\\Post;\nuse Illuminate\\Auth\\Access\\HandlesAuthorization;\n\nclass PostPolicy\n{\n    use HandlesAuthorization;\n\n    \u002F**\n     * Determine whether the user can attach a comment to a post.\n     *\n     * @param  \\App\\Models\\User    $user\n     * @param  \\App\\Models\\Post    $post\n     * @param  \\App\\Models\\Comment $comment\n     * @return mixed\n     *\u002F\n    public function attachComment(User $user, Post $post, Comment $comment)\n    {\n        return true;\n    }\n\n    \u002F**\n     * Determine whether the user can detach a comment from a post.\n     *\n     * @param  \\App\\Models\\User    $user\n     * @param  \\App\\Models\\Post    $post\n     * @param  \\App\\Models\\Comment $comment\n     * @return mixed\n     *\u002F\n    public function detachComment(User $user, Post $post, Comment $comment)\n    {\n        return true;\n    }\n}\n",[320,966,967,973,977,989,993,1009,1025,1041,1061,1065,1072,1076,1084,1088,1092,1097,1101,1122,1143,1164,1172,1176,1215,1219,1227,1232,1237,1242,1248,1253,1274,1295,1316,1325,1330,1366,1371,1378,1383],{"__ignoreMap":462},[466,968,969,971],{"class":468,"line":469},[466,970,473],{"class":472},[466,972,477],{"class":476},[466,974,975],{"class":468,"line":480},[466,976,484],{"emptyLinePlaceholder":483},[466,978,979,981,983,985,987],{"class":468,"line":487},[466,980,491],{"class":490},[466,982,495],{"class":494},[466,984,498],{"class":472},[466,986,154],{"class":494},[466,988,503],{"class":472},[466,990,991],{"class":468,"line":506},[466,992,484],{"emptyLinePlaceholder":483},[466,994,995,997,999,1001,1003,1005,1007],{"class":468,"line":511},[466,996,514],{"class":490},[466,998,495],{"class":476},[466,1000,498],{"class":472},[466,1002,521],{"class":476},[466,1004,498],{"class":472},[466,1006,956],{"class":476},[466,1008,503],{"class":472},[466,1010,1011,1013,1015,1017,1019,1021,1023],{"class":468,"line":531},[466,1012,514],{"class":490},[466,1014,495],{"class":476},[466,1016,498],{"class":472},[466,1018,521],{"class":476},[466,1020,498],{"class":472},[466,1022,526],{"class":476},[466,1024,503],{"class":472},[466,1026,1027,1029,1031,1033,1035,1037,1039],{"class":468,"line":556},[466,1028,514],{"class":490},[466,1030,495],{"class":476},[466,1032,498],{"class":472},[466,1034,521],{"class":476},[466,1036,498],{"class":472},[466,1038,952],{"class":476},[466,1040,503],{"class":472},[466,1042,1043,1045,1047,1049,1051,1053,1055,1057,1059],{"class":468,"line":561},[466,1044,514],{"class":490},[466,1046,536],{"class":476},[466,1048,498],{"class":472},[466,1050,541],{"class":476},[466,1052,498],{"class":472},[466,1054,546],{"class":476},[466,1056,498],{"class":472},[466,1058,551],{"class":476},[466,1060,503],{"class":472},[466,1062,1063],{"class":468,"line":571},[466,1064,484],{"emptyLinePlaceholder":483},[466,1066,1067,1069],{"class":468,"line":577},[466,1068,565],{"class":564},[466,1070,1071],{"class":494}," PostPolicy\n",[466,1073,1074],{"class":468,"line":588},[466,1075,574],{"class":472},[466,1077,1078,1080,1082],{"class":468,"line":593},[466,1079,580],{"class":490},[466,1081,583],{"class":476},[466,1083,503],{"class":472},[466,1085,1086],{"class":468,"line":600},[466,1087,484],{"emptyLinePlaceholder":483},[466,1089,1090],{"class":468,"line":606},[466,1091,597],{"class":596},[466,1093,1094],{"class":468,"line":612},[466,1095,1096],{"class":596},"     * Determine whether the user can attach a comment to a post.\n",[466,1098,1099],{"class":468,"line":642},[466,1100,609],{"class":596},[466,1102,1103,1105,1107,1109,1111,1113,1115,1117,1119],{"class":468,"line":664},[466,1104,615],{"class":596},[466,1106,619],{"class":618},[466,1108,623],{"class":622},[466,1110,627],{"class":626},[466,1112,498],{"class":622},[466,1114,521],{"class":626},[466,1116,498],{"class":622},[466,1118,526],{"class":636},[466,1120,1121],{"class":596},"    $user\n",[466,1123,1124,1126,1128,1130,1132,1134,1136,1138,1140],{"class":468,"line":675},[466,1125,615],{"class":596},[466,1127,619],{"class":618},[466,1129,623],{"class":622},[466,1131,627],{"class":626},[466,1133,498],{"class":622},[466,1135,521],{"class":626},[466,1137,498],{"class":622},[466,1139,952],{"class":636},[466,1141,1142],{"class":596},"    $post\n",[466,1144,1145,1147,1149,1151,1153,1155,1157,1159,1161],{"class":468,"line":681},[466,1146,615],{"class":596},[466,1148,619],{"class":618},[466,1150,623],{"class":622},[466,1152,627],{"class":626},[466,1154,498],{"class":622},[466,1156,521],{"class":626},[466,1158,498],{"class":622},[466,1160,956],{"class":636},[466,1162,1163],{"class":596}," $comment\n",[466,1165,1166,1168,1170],{"class":468,"line":719},[466,1167,615],{"class":596},[466,1169,669],{"class":618},[466,1171,672],{"class":618},[466,1173,1174],{"class":468,"line":725},[466,1175,678],{"class":596},[466,1177,1178,1180,1182,1185,1187,1189,1191,1193,1195,1198,1200,1203,1205,1208,1210,1213],{"class":468,"line":749},[466,1179,684],{"class":564},[466,1181,687],{"class":564},[466,1183,1184],{"class":690}," attachComment",[466,1186,694],{"class":472},[466,1188,526],{"class":494},[466,1190,699],{"class":472},[466,1192,702],{"class":476},[466,1194,705],{"class":472},[466,1196,1197],{"class":494}," Post",[466,1199,699],{"class":472},[466,1201,1202],{"class":476},"post",[466,1204,705],{"class":472},[466,1206,1207],{"class":494}," Comment",[466,1209,699],{"class":472},[466,1211,1212],{"class":476},"comment",[466,1214,716],{"class":472},[466,1216,1217],{"class":468,"line":755},[466,1218,722],{"class":472},[466,1220,1222,1224],{"class":468,"line":1221},24,[466,1223,728],{"class":622},[466,1225,1226],{"class":472}," true;\n",[466,1228,1230],{"class":468,"line":1229},25,[466,1231,752],{"class":472},[466,1233,1235],{"class":468,"line":1234},26,[466,1236,484],{"emptyLinePlaceholder":483},[466,1238,1240],{"class":468,"line":1239},27,[466,1241,597],{"class":596},[466,1243,1245],{"class":468,"line":1244},28,[466,1246,1247],{"class":596},"     * Determine whether the user can detach a comment from a post.\n",[466,1249,1251],{"class":468,"line":1250},29,[466,1252,609],{"class":596},[466,1254,1256,1258,1260,1262,1264,1266,1268,1270,1272],{"class":468,"line":1255},30,[466,1257,615],{"class":596},[466,1259,619],{"class":618},[466,1261,623],{"class":622},[466,1263,627],{"class":626},[466,1265,498],{"class":622},[466,1267,521],{"class":626},[466,1269,498],{"class":622},[466,1271,526],{"class":636},[466,1273,1121],{"class":596},[466,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293],{"class":468,"line":1276},31,[466,1278,615],{"class":596},[466,1280,619],{"class":618},[466,1282,623],{"class":622},[466,1284,627],{"class":626},[466,1286,498],{"class":622},[466,1288,521],{"class":626},[466,1290,498],{"class":622},[466,1292,952],{"class":636},[466,1294,1142],{"class":596},[466,1296,1298,1300,1302,1304,1306,1308,1310,1312,1314],{"class":468,"line":1297},32,[466,1299,615],{"class":596},[466,1301,619],{"class":618},[466,1303,623],{"class":622},[466,1305,627],{"class":626},[466,1307,498],{"class":622},[466,1309,521],{"class":626},[466,1311,498],{"class":622},[466,1313,956],{"class":636},[466,1315,1163],{"class":596},[466,1317,1319,1321,1323],{"class":468,"line":1318},33,[466,1320,615],{"class":596},[466,1322,669],{"class":618},[466,1324,672],{"class":618},[466,1326,1328],{"class":468,"line":1327},34,[466,1329,678],{"class":596},[466,1331,1333,1335,1337,1340,1342,1344,1346,1348,1350,1352,1354,1356,1358,1360,1362,1364],{"class":468,"line":1332},35,[466,1334,684],{"class":564},[466,1336,687],{"class":564},[466,1338,1339],{"class":690}," detachComment",[466,1341,694],{"class":472},[466,1343,526],{"class":494},[466,1345,699],{"class":472},[466,1347,702],{"class":476},[466,1349,705],{"class":472},[466,1351,1197],{"class":494},[466,1353,699],{"class":472},[466,1355,1202],{"class":476},[466,1357,705],{"class":472},[466,1359,1207],{"class":494},[466,1361,699],{"class":472},[466,1363,1212],{"class":476},[466,1365,716],{"class":472},[466,1367,1369],{"class":468,"line":1368},36,[466,1370,722],{"class":472},[466,1372,1374,1376],{"class":468,"line":1373},37,[466,1375,728],{"class":622},[466,1377,1226],{"class":472},[466,1379,1381],{"class":468,"line":1380},38,[466,1382,752],{"class":472},[466,1384,1386],{"class":468,"line":1385},39,[466,1387,758],{"class":472},[329,1389,1391],{"id":1390},"cache","Cache",[316,1393,1394],{},"In order to make Laravel Rest Api faster, authorizations are cached automatically.",[760,1396,1398],{"id":1397},"cache-key","Cache key",[316,1400,1401,1402,1405],{},"By default, caches is proper to each authenticated user and resource. If you want to change this behavior, please override the ",[320,1403,1404],{},"getCacheKey"," method in your resource:",[457,1407,1409],{"className":459,"code":1408,"language":461,"meta":462,"style":462},"class UserResource\n{\n    \u002F**\n     * Get the authorization cache key.\n     *\n     * @param RestRequest $request\n     *\n     * @return string\n     *\u002F\n    public function getAuthorizationCacheKey(RestRequest $request, string $identifier)\n    {\n        $class = Str::snake((new \\ReflectionClass($this))->getShortName());\n\n        return sprintf(\n            'rest.authorization.%s.%s.%s',\n            $class,\n            $identifier,\n            $request->user()?->getKey()\n        );\n    }\n}\n",[320,1410,1411,1418,1422,1426,1431,1435,1447,1451,1460,1464,1495,1499,1539,1543,1553,1566,1575,1583,1602,1607,1611],{"__ignoreMap":462},[466,1412,1413,1415],{"class":468,"line":469},[466,1414,565],{"class":564},[466,1416,1417],{"class":494}," UserResource\n",[466,1419,1420],{"class":468,"line":480},[466,1421,574],{"class":472},[466,1423,1424],{"class":468,"line":487},[466,1425,597],{"class":596},[466,1427,1428],{"class":468,"line":506},[466,1429,1430],{"class":596},"     * Get the authorization cache key.\n",[466,1432,1433],{"class":468,"line":511},[466,1434,609],{"class":596},[466,1436,1437,1439,1441,1444],{"class":468,"line":531},[466,1438,615],{"class":596},[466,1440,619],{"class":618},[466,1442,1443],{"class":636}," RestRequest",[466,1445,1446],{"class":596}," $request\n",[466,1448,1449],{"class":468,"line":556},[466,1450,609],{"class":596},[466,1452,1453,1455,1457],{"class":468,"line":561},[466,1454,615],{"class":596},[466,1456,669],{"class":618},[466,1458,1459],{"class":618}," string\n",[466,1461,1462],{"class":468,"line":571},[466,1463,678],{"class":596},[466,1465,1466,1468,1470,1473,1475,1478,1480,1483,1485,1488,1490,1493],{"class":468,"line":577},[466,1467,684],{"class":564},[466,1469,687],{"class":564},[466,1471,1472],{"class":690}," getAuthorizationCacheKey",[466,1474,694],{"class":472},[466,1476,1477],{"class":494},"RestRequest",[466,1479,699],{"class":472},[466,1481,1482],{"class":476},"request",[466,1484,705],{"class":472},[466,1486,1487],{"class":490}," string",[466,1489,699],{"class":472},[466,1491,1492],{"class":476},"identifier",[466,1494,716],{"class":472},[466,1496,1497],{"class":468,"line":588},[466,1498,722],{"class":472},[466,1500,1501,1504,1507,1510,1513,1516,1519,1522,1525,1527,1530,1533,1536],{"class":468,"line":593},[466,1502,1503],{"class":472},"        $",[466,1505,1506],{"class":476},"class ",[466,1508,1509],{"class":472},"=",[466,1511,1512],{"class":494}," Str",[466,1514,1515],{"class":472},"::",[466,1517,1518],{"class":690},"snake",[466,1520,1521],{"class":472},"((",[466,1523,1524],{"class":490},"new",[466,1526,889],{"class":472},[466,1528,1529],{"class":494},"ReflectionClass",[466,1531,1532],{"class":472},"($this))->",[466,1534,1535],{"class":690},"getShortName",[466,1537,1538],{"class":472},"());\n",[466,1540,1541],{"class":468,"line":600},[466,1542,484],{"emptyLinePlaceholder":483},[466,1544,1545,1547,1550],{"class":468,"line":606},[466,1546,728],{"class":622},[466,1548,1549],{"class":690}," sprintf",[466,1551,1552],{"class":472},"(\n",[466,1554,1555,1558,1561,1563],{"class":468,"line":612},[466,1556,1557],{"class":472},"            '",[466,1559,1560],{"class":806},"rest.authorization.%s.%s.%s",[466,1562,810],{"class":472},[466,1564,1565],{"class":472},",\n",[466,1567,1568,1571,1573],{"class":468,"line":642},[466,1569,1570],{"class":472},"            $",[466,1572,565],{"class":476},[466,1574,1565],{"class":472},[466,1576,1577,1579,1581],{"class":468,"line":664},[466,1578,1570],{"class":472},[466,1580,1492],{"class":476},[466,1582,1565],{"class":472},[466,1584,1585,1587,1589,1591,1593,1596,1599],{"class":468,"line":675},[466,1586,1570],{"class":472},[466,1588,1482],{"class":476},[466,1590,735],{"class":472},[466,1592,702],{"class":690},[466,1594,1595],{"class":472},"()?->",[466,1597,1598],{"class":690},"getKey",[466,1600,1601],{"class":472},"()\n",[466,1603,1604],{"class":468,"line":681},[466,1605,1606],{"class":472},"        );\n",[466,1608,1609],{"class":468,"line":719},[466,1610,752],{"class":472},[466,1612,1613],{"class":468,"line":725},[466,1614,758],{"class":472},[760,1616,1618],{"id":1617},"cache-time-to-live","Cache time to live",[316,1620,1621],{},"Cache is by default persisted for 5 minutes, if you want to change this feature:",[1623,1624,776],"h4",{"id":1625},"globally-1",[316,1627,779,1628,1630],{},[320,1629,782],{}," file, you can directly specify the number of minutes for the cache:",[457,1632,1634],{"className":459,"code":1633,"language":461,"meta":462,"style":462},"[\n    \u002F\u002F ...\n    'authorizations' => [\n        'cache'   => [\n            'default' => 5 \u002F\u002F Cache minutes by default\n        ],\n    ],\n    \u002F\u002F ...\n]\n",[320,1635,1636,1640,1644,1656,1669,1686,1691,1696,1700],{"__ignoreMap":462},[466,1637,1638],{"class":468,"line":469},[466,1639,793],{"class":472},[466,1641,1642],{"class":468,"line":480},[466,1643,798],{"class":596},[466,1645,1646,1648,1650,1652,1654],{"class":468,"line":487},[466,1647,803],{"class":472},[466,1649,807],{"class":806},[466,1651,810],{"class":472},[466,1653,813],{"class":472},[466,1655,816],{"class":472},[466,1657,1658,1660,1662,1664,1667],{"class":468,"line":506},[466,1659,821],{"class":472},[466,1661,1390],{"class":806},[466,1663,810],{"class":472},[466,1665,1666],{"class":472},"   =>",[466,1668,816],{"class":472},[466,1670,1671,1673,1676,1678,1680,1683],{"class":468,"line":511},[466,1672,1557],{"class":472},[466,1674,1675],{"class":806},"default",[466,1677,810],{"class":472},[466,1679,813],{"class":472},[466,1681,1682],{"class":490}," 5",[466,1684,1685],{"class":596}," \u002F\u002F Cache minutes by default\n",[466,1687,1688],{"class":468,"line":531},[466,1689,1690],{"class":472},"        ],\n",[466,1692,1693],{"class":468,"line":556},[466,1694,1695],{"class":472},"    ],\n",[466,1697,1698],{"class":468,"line":561},[466,1699,798],{"class":596},[466,1701,1702],{"class":468,"line":571},[466,1703,848],{"class":472},[1623,1705,852],{"id":1706},"resource-1",[316,1708,1709,1710,1405],{},"If you want to adjust this in your resource, please add the ",[320,1711,1712],{},"cacheFor",[457,1714,1716],{"className":459,"code":1715,"language":461,"meta":462,"style":462},"class UserResource\n{\n    \u002F**\n     * Determine for how much time the cache should be kept.\n     *\n     * @return \\DateTimeInterface|\\DateInterval|float|int|null\n     *\u002F\n    public function authorizationCacheFor()\n    {\n        return now()->addMinutes(5);\n    }\n}\n",[320,1717,1718,1724,1728,1732,1737,1741,1774,1778,1789,1793,1813,1817],{"__ignoreMap":462},[466,1719,1720,1722],{"class":468,"line":469},[466,1721,565],{"class":564},[466,1723,1417],{"class":494},[466,1725,1726],{"class":468,"line":480},[466,1727,574],{"class":472},[466,1729,1730],{"class":468,"line":487},[466,1731,597],{"class":596},[466,1733,1734],{"class":468,"line":506},[466,1735,1736],{"class":596},"     * Determine for how much time the cache should be kept.\n",[466,1738,1739],{"class":468,"line":511},[466,1740,609],{"class":596},[466,1742,1743,1745,1747,1749,1752,1755,1758,1761,1764,1766,1769,1771],{"class":468,"line":531},[466,1744,615],{"class":596},[466,1746,669],{"class":618},[466,1748,889],{"class":622},[466,1750,1751],{"class":636},"DateTimeInterface",[466,1753,1754],{"class":622},"|\\",[466,1756,1757],{"class":636},"DateInterval",[466,1759,1760],{"class":622},"|",[466,1762,1763],{"class":618},"float",[466,1765,1760],{"class":622},[466,1767,1768],{"class":618},"int",[466,1770,1760],{"class":622},[466,1772,1773],{"class":618},"null\n",[466,1775,1776],{"class":468,"line":556},[466,1777,678],{"class":596},[466,1779,1780,1782,1784,1787],{"class":468,"line":561},[466,1781,684],{"class":564},[466,1783,687],{"class":564},[466,1785,1786],{"class":690}," authorizationCacheFor",[466,1788,1601],{"class":472},[466,1790,1791],{"class":468,"line":571},[466,1792,722],{"class":472},[466,1794,1795,1797,1800,1803,1806,1808,1811],{"class":468,"line":577},[466,1796,728],{"class":622},[466,1798,1799],{"class":690}," now",[466,1801,1802],{"class":472},"()->",[466,1804,1805],{"class":690},"addMinutes",[466,1807,694],{"class":472},[466,1809,1810],{"class":490},"5",[466,1812,746],{"class":472},[466,1814,1815],{"class":468,"line":588},[466,1816,752],{"class":472},[466,1818,1819],{"class":468,"line":593},[466,1820,758],{"class":472},[760,1822,1824],{"id":1823},"disable-cache","Disable cache",[1623,1826,776],{"id":1827},"globally-2",[316,1829,1830,1831,1834],{},"If you want to disable it globally, change your config in the ",[320,1832,1833],{},"rest.php"," file",[457,1836,1838],{"className":459,"code":1837,"language":461,"meta":462,"style":462},"\u003C?php\n\nreturn [\n    \u002F*\n    |--------------------------------------------------------------------------\n    | Rest Authorizations\n    |--------------------------------------------------------------------------\n    |\n    | This is the feature that automatically binds to policies to validate incoming requests.\n    | Laravel Rest Api will validate each models searched \u002F mutated \u002F deleted to avoid leaks in your API.\n    |\n    *\u002F\n\n    'authorizations' => [\n        'cache'   => [\n            'enabled' => false, \u002F\u002F Set this to false\n        ],\n    ],\n]\n",[320,1839,1840,1846,1850,1857,1862,1867,1872,1876,1881,1886,1891,1895,1900,1904,1916,1928,1943,1947,1951],{"__ignoreMap":462},[466,1841,1842,1844],{"class":468,"line":469},[466,1843,473],{"class":472},[466,1845,477],{"class":476},[466,1847,1848],{"class":468,"line":480},[466,1849,484],{"emptyLinePlaceholder":483},[466,1851,1852,1855],{"class":468,"line":487},[466,1853,1854],{"class":622},"return",[466,1856,816],{"class":472},[466,1858,1859],{"class":468,"line":506},[466,1860,1861],{"class":596},"    \u002F*\n",[466,1863,1864],{"class":468,"line":511},[466,1865,1866],{"class":596},"    |--------------------------------------------------------------------------\n",[466,1868,1869],{"class":468,"line":531},[466,1870,1871],{"class":596},"    | Rest Authorizations\n",[466,1873,1874],{"class":468,"line":556},[466,1875,1866],{"class":596},[466,1877,1878],{"class":468,"line":561},[466,1879,1880],{"class":596},"    |\n",[466,1882,1883],{"class":468,"line":571},[466,1884,1885],{"class":596},"    | This is the feature that automatically binds to policies to validate incoming requests.\n",[466,1887,1888],{"class":468,"line":577},[466,1889,1890],{"class":596},"    | Laravel Rest Api will validate each models searched \u002F mutated \u002F deleted to avoid leaks in your API.\n",[466,1892,1893],{"class":468,"line":588},[466,1894,1880],{"class":596},[466,1896,1897],{"class":468,"line":593},[466,1898,1899],{"class":596},"    *\u002F\n",[466,1901,1902],{"class":468,"line":600},[466,1903,484],{"emptyLinePlaceholder":483},[466,1905,1906,1908,1910,1912,1914],{"class":468,"line":606},[466,1907,803],{"class":472},[466,1909,807],{"class":806},[466,1911,810],{"class":472},[466,1913,813],{"class":472},[466,1915,816],{"class":472},[466,1917,1918,1920,1922,1924,1926],{"class":468,"line":612},[466,1919,821],{"class":472},[466,1921,1390],{"class":806},[466,1923,810],{"class":472},[466,1925,1666],{"class":472},[466,1927,816],{"class":472},[466,1929,1930,1932,1934,1936,1938,1940],{"class":468,"line":642},[466,1931,1557],{"class":472},[466,1933,824],{"class":806},[466,1935,810],{"class":472},[466,1937,813],{"class":472},[466,1939,831],{"class":472},[466,1941,1942],{"class":596}," \u002F\u002F Set this to false\n",[466,1944,1945],{"class":468,"line":664},[466,1946,1690],{"class":472},[466,1948,1949],{"class":468,"line":675},[466,1950,1695],{"class":472},[466,1952,1953],{"class":468,"line":681},[466,1954,848],{"class":472},[1623,1956,852],{"id":1957},"resource-2",[316,1959,855,1960,859],{},[320,1961,1962],{},"DisableAuthorizationsCache",[457,1964,1966],{"className":459,"code":1965,"filename":863,"language":461,"meta":462,"style":462},"class UserResource extends Resource\n{\n    use \\Lomkit\\Rest\\Concerns\\Resource\\DisableAuthorizationsCache;\n    \n    \u002F\u002F ...\n}\n",[320,1967,1968,1978,1982,2008,2012,2016],{"__ignoreMap":462},[466,1969,1970,1972,1974,1976],{"class":468,"line":469},[466,1971,565],{"class":564},[466,1973,872],{"class":494},[466,1975,875],{"class":564},[466,1977,878],{"class":494},[466,1979,1980],{"class":468,"line":480},[466,1981,574],{"class":472},[466,1983,1984,1986,1988,1990,1992,1994,1996,1998,2000,2002,2004,2006],{"class":468,"line":487},[466,1985,580],{"class":490},[466,1987,889],{"class":472},[466,1989,892],{"class":476},[466,1991,498],{"class":472},[466,1993,897],{"class":476},[466,1995,498],{"class":472},[466,1997,902],{"class":476},[466,1999,498],{"class":472},[466,2001,852],{"class":476},[466,2003,498],{"class":472},[466,2005,1962],{"class":476},[466,2007,503],{"class":472},[466,2009,2010],{"class":468,"line":506},[466,2011,917],{"class":476},[466,2013,2014],{"class":468,"line":511},[466,2015,798],{"class":596},[466,2017,2018],{"class":468,"line":531},[466,2019,758],{"class":472},[2021,2022,2023],"style",{},"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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .svl4J, html code.shiki .svl4J{--shiki-light:#F76D47;--shiki-light-font-style:italic;--shiki-default:#F78C6C;--shiki-default-font-style:italic;--shiki-dark:#F78C6C;--shiki-dark-font-style:italic}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 .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}html pre.shiki code .sFweD, html code.shiki .sFweD{--shiki-light:#E2931D;--shiki-light-font-style:italic;--shiki-default:#FFCB6B;--shiki-default-font-style:italic;--shiki-dark:#FFCB6B;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}",{"title":462,"searchDepth":469,"depth":480,"links":2025},[2026,2031,2034],{"id":331,"depth":480,"text":154,"children":2027},[2028,2029,2030],{"id":762,"depth":487,"text":763},{"id":775,"depth":487,"text":776},{"id":851,"depth":487,"text":852},{"id":928,"depth":480,"text":46,"children":2032},[2033],{"id":934,"depth":487,"text":935},{"id":1390,"depth":480,"text":1391,"children":2035},[2036,2037,2038],{"id":1397,"depth":487,"text":1398},{"id":1617,"depth":487,"text":1618},{"id":1823,"depth":487,"text":1824},"Laravel Rest Api exposes a lot of information and it is crucial for your applications to secure the access to resources. Thankfully, Laravel Rest Api seamlessly integrates with Laravel, ensuring a straightforward approach to securing your API.","md",null,{},{"description":2039},"jmWBZF8ws0v7pflszAktMW72xNrKoBHL_WMvHDrmbw0",[2046,2048],{"title":158,"path":272,"stem":273,"description":2047,"children":-1},"Gates is the way to inform your api consumers what actions are allowed on different models.",{"title":279,"path":280,"stem":281,"description":2049,"children":-1},"Laravel Rest Api fully integrates with Laravel Scout, discover how you can implement this in a few steps.",1794181353271]