Files
relaticle-comments/essentials/authorization/_payload.json
github-actions[bot] 3ab8c24b67 Deploy 1.x docs
2026-03-27 10:57:56 +00:00

1 line
16 KiB
JSON

[{"data":1,"prerenderedAt":754},["ShallowReactive",2],{"navigation_docs":3,"-essentials-authorization":80,"-essentials-authorization-surround":749},[4,25,65],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"\u002Fgetting-started","1.getting-started",[10,15,20],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-home",{"title":16,"path":17,"stem":18,"icon":19},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Upgrading","\u002Fgetting-started\u002Fupgrading","1.getting-started\u002F3.upgrading","i-lucide-arrow-up-circle",{"title":26,"path":27,"stem":28,"children":29,"page":6},"Essentials","\u002Fessentials","2.essentials",[30,35,40,45,50,55,60],{"title":31,"path":32,"stem":33,"icon":34},"Configuration","\u002Fessentials\u002Fconfiguration","2.essentials\u002F1.configuration","i-lucide-settings",{"title":36,"path":37,"stem":38,"icon":39},"Authorization","\u002Fessentials\u002Fauthorization","2.essentials\u002F2.authorization","i-lucide-shield",{"title":41,"path":42,"stem":43,"icon":44},"Mentions","\u002Fessentials\u002Fmentions","2.essentials\u002F3.mentions","i-lucide-at-sign",{"title":46,"path":47,"stem":48,"icon":49},"Reactions","\u002Fessentials\u002Freactions","2.essentials\u002F4.reactions","i-lucide-smile",{"title":51,"path":52,"stem":53,"icon":54},"Attachments","\u002Fessentials\u002Fattachments","2.essentials\u002F5.attachments","i-lucide-paperclip",{"title":56,"path":57,"stem":58,"icon":59},"Notifications","\u002Fessentials\u002Fnotifications","2.essentials\u002F6.notifications","i-lucide-bell",{"title":61,"path":62,"stem":63,"icon":64},"Database Schema","\u002Fessentials\u002Fdatabase-schema","2.essentials\u002F7.database-schema","i-lucide-database",{"title":66,"path":67,"stem":68,"children":69,"page":6},"Community","\u002Fcommunity","4.community",[70,75],{"title":71,"path":72,"stem":73,"icon":74},"Contributing","\u002Fcommunity\u002Fcontributing","4.community\u002F1.contributing","i-lucide-heart-handshake",{"title":76,"path":77,"stem":78,"icon":79},"License","\u002Fcommunity\u002Flicense","4.community\u002F2.license","i-lucide-scale",{"id":81,"title":36,"body":82,"description":741,"extension":742,"links":743,"meta":744,"navigation":745,"path":37,"seo":746,"stem":38,"__hash__":748},"docs\u002F2.essentials\u002F2.authorization.md",{"type":83,"value":84,"toc":736},"minimark",[85,90,99,193,197,200,674,677,719,723,729,732],[86,87,89],"h2",{"id":88},"default-policy","Default Policy",[91,92,93,94,98],"p",{},"The built-in ",[95,96,97],"code",{},"CommentPolicy"," provides sensible defaults:",[100,101,102,118],"table",{},[103,104,105],"thead",{},[106,107,108,112,115],"tr",{},[109,110,111],"th",{},"Method",[109,113,114],{},"Default",[109,116,117],{},"Description",[119,120,121,137,151,164,176],"tbody",{},[106,122,123,129,134],{},[124,125,126],"td",{},[95,127,128],{},"viewAny()",[124,130,131],{},[95,132,133],{},"true",[124,135,136],{},"Everyone can view comments",[106,138,139,144,148],{},[124,140,141],{},[95,142,143],{},"create()",[124,145,146],{},[95,147,133],{},[124,149,150],{},"Everyone can create comments",[106,152,153,158,161],{},[124,154,155],{},[95,156,157],{},"update()",[124,159,160],{},"Owner only",[124,162,163],{},"Only the comment author can edit",[106,165,166,171,173],{},[124,167,168],{},[95,169,170],{},"delete()",[124,172,160],{},[124,174,175],{},"Only the comment author can delete",[106,177,178,183,186],{},[124,179,180],{},[95,181,182],{},"reply()",[124,184,185],{},"Depth check",[124,187,188,189,192],{},"Can reply if ",[95,190,191],{},"max_depth"," not exceeded",[86,194,196],{"id":195},"custom-policy","Custom Policy",[91,198,199],{},"Create your own policy to customize authorization:",[201,202,207],"pre",{"className":203,"code":204,"language":205,"meta":206,"style":206},"language-php shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","namespace App\\Policies;\n\nuse Relaticle\\Comments\\Comment;\nuse Relaticle\\Comments\\Contracts\\Commenter;\n\nclass CustomCommentPolicy\n{\n public function viewAny(Commenter $user): bool\n {\n return true;\n }\n\n public function create(Commenter $user): bool\n {\n return true;\n }\n\n public function update(Commenter $user, Comment $comment): bool\n {\n return $comment->user_id === $user->getKey()\n && $comment->user_type === $user->getMorphClass();\n }\n\n public function delete(Commenter $user, Comment $comment): bool\n {\n return $comment->user_id === $user->getKey()\n || $user->hasRole('admin');\n }\n\n public function reply(Commenter $user, Comment $comment): bool\n {\n return $comment->canReply();\n }\n}\n","php","",[95,208,209,232,239,261,284,289,299,305,335,341,351,357,362,384,389,396,401,406,439,444,474,503,508,513,543,548,573,602,607,612,642,647,663,668],{"__ignoreMap":206},[210,211,214,218,222,226,229],"span",{"class":212,"line":213},"line",1,[210,215,217],{"class":216},"sbssI","namespace",[210,219,221],{"class":220},"sBMFI"," App",[210,223,225],{"class":224},"sMK4o","\\",[210,227,228],{"class":220},"Policies",[210,230,231],{"class":224},";\n",[210,233,235],{"class":212,"line":234},2,[210,236,238],{"emptyLinePlaceholder":237},true,"\n",[210,240,242,245,249,251,254,256,259],{"class":212,"line":241},3,[210,243,244],{"class":216},"use",[210,246,248],{"class":247},"sTEyZ"," Relaticle",[210,250,225],{"class":224},[210,252,253],{"class":247},"Comments",[210,255,225],{"class":224},[210,257,258],{"class":247},"Comment",[210,260,231],{"class":224},[210,262,264,266,268,270,272,274,277,279,282],{"class":212,"line":263},4,[210,265,244],{"class":216},[210,267,248],{"class":247},[210,269,225],{"class":224},[210,271,253],{"class":247},[210,273,225],{"class":224},[210,275,276],{"class":247},"Contracts",[210,278,225],{"class":224},[210,280,281],{"class":247},"Commenter",[210,283,231],{"class":224},[210,285,287],{"class":212,"line":286},5,[210,288,238],{"emptyLinePlaceholder":237},[210,290,292,296],{"class":212,"line":291},6,[210,293,295],{"class":294},"spNyl","class",[210,297,298],{"class":220}," CustomCommentPolicy\n",[210,300,302],{"class":212,"line":301},7,[210,303,304],{"class":224},"{\n",[210,306,308,311,314,318,321,323,326,329,332],{"class":212,"line":307},8,[210,309,310],{"class":294}," public",[210,312,313],{"class":294}," function",[210,315,317],{"class":316},"s2Zo4"," viewAny",[210,319,320],{"class":224},"(",[210,322,281],{"class":220},[210,324,325],{"class":224}," $",[210,327,328],{"class":247},"user",[210,330,331],{"class":224},"):",[210,333,334],{"class":216}," bool\n",[210,336,338],{"class":212,"line":337},9,[210,339,340],{"class":224}," {\n",[210,342,344,348],{"class":212,"line":343},10,[210,345,347],{"class":346},"s7zQu"," return",[210,349,350],{"class":224}," true;\n",[210,352,354],{"class":212,"line":353},11,[210,355,356],{"class":224}," }\n",[210,358,360],{"class":212,"line":359},12,[210,361,238],{"emptyLinePlaceholder":237},[210,363,365,367,369,372,374,376,378,380,382],{"class":212,"line":364},13,[210,366,310],{"class":294},[210,368,313],{"class":294},[210,370,371],{"class":316}," create",[210,373,320],{"class":224},[210,375,281],{"class":220},[210,377,325],{"class":224},[210,379,328],{"class":247},[210,381,331],{"class":224},[210,383,334],{"class":216},[210,385,387],{"class":212,"line":386},14,[210,388,340],{"class":224},[210,390,392,394],{"class":212,"line":391},15,[210,393,347],{"class":346},[210,395,350],{"class":224},[210,397,399],{"class":212,"line":398},16,[210,400,356],{"class":224},[210,402,404],{"class":212,"line":403},17,[210,405,238],{"emptyLinePlaceholder":237},[210,407,409,411,413,416,418,420,422,424,427,430,432,435,437],{"class":212,"line":408},18,[210,410,310],{"class":294},[210,412,313],{"class":294},[210,414,415],{"class":316}," update",[210,417,320],{"class":224},[210,419,281],{"class":220},[210,421,325],{"class":224},[210,423,328],{"class":247},[210,425,426],{"class":224},",",[210,428,429],{"class":220}," Comment",[210,431,325],{"class":224},[210,433,434],{"class":247},"comment",[210,436,331],{"class":224},[210,438,334],{"class":216},[210,440,442],{"class":212,"line":441},19,[210,443,340],{"class":224},[210,445,447,449,451,453,456,459,462,464,466,468,471],{"class":212,"line":446},20,[210,448,347],{"class":346},[210,450,325],{"class":224},[210,452,434],{"class":247},[210,454,455],{"class":224},"->",[210,457,458],{"class":247},"user_id ",[210,460,461],{"class":224},"===",[210,463,325],{"class":224},[210,465,328],{"class":247},[210,467,455],{"class":224},[210,469,470],{"class":316},"getKey",[210,472,473],{"class":224},"()\n",[210,475,477,480,482,484,486,489,491,493,495,497,500],{"class":212,"line":476},21,[210,478,479],{"class":224}," &&",[210,481,325],{"class":224},[210,483,434],{"class":247},[210,485,455],{"class":224},[210,487,488],{"class":247},"user_type ",[210,490,461],{"class":224},[210,492,325],{"class":224},[210,494,328],{"class":247},[210,496,455],{"class":224},[210,498,499],{"class":316},"getMorphClass",[210,501,502],{"class":224},"();\n",[210,504,506],{"class":212,"line":505},22,[210,507,356],{"class":224},[210,509,511],{"class":212,"line":510},23,[210,512,238],{"emptyLinePlaceholder":237},[210,514,516,518,520,523,525,527,529,531,533,535,537,539,541],{"class":212,"line":515},24,[210,517,310],{"class":294},[210,519,313],{"class":294},[210,521,522],{"class":316}," delete",[210,524,320],{"class":224},[210,526,281],{"class":220},[210,528,325],{"class":224},[210,530,328],{"class":247},[210,532,426],{"class":224},[210,534,429],{"class":220},[210,536,325],{"class":224},[210,538,434],{"class":247},[210,540,331],{"class":224},[210,542,334],{"class":216},[210,544,546],{"class":212,"line":545},25,[210,547,340],{"class":224},[210,549,551,553,555,557,559,561,563,565,567,569,571],{"class":212,"line":550},26,[210,552,347],{"class":346},[210,554,325],{"class":224},[210,556,434],{"class":247},[210,558,455],{"class":224},[210,560,458],{"class":247},[210,562,461],{"class":224},[210,564,325],{"class":224},[210,566,328],{"class":247},[210,568,455],{"class":224},[210,570,470],{"class":316},[210,572,473],{"class":224},[210,574,576,579,581,583,585,588,590,593,597,599],{"class":212,"line":575},27,[210,577,578],{"class":224}," ||",[210,580,325],{"class":224},[210,582,328],{"class":247},[210,584,455],{"class":224},[210,586,587],{"class":316},"hasRole",[210,589,320],{"class":224},[210,591,592],{"class":224},"'",[210,594,596],{"class":595},"sfazB","admin",[210,598,592],{"class":224},[210,600,601],{"class":224},");\n",[210,603,605],{"class":212,"line":604},28,[210,606,356],{"class":224},[210,608,610],{"class":212,"line":609},29,[210,611,238],{"emptyLinePlaceholder":237},[210,613,615,617,619,622,624,626,628,630,632,634,636,638,640],{"class":212,"line":614},30,[210,616,310],{"class":294},[210,618,313],{"class":294},[210,620,621],{"class":316}," reply",[210,623,320],{"class":224},[210,625,281],{"class":220},[210,627,325],{"class":224},[210,629,328],{"class":247},[210,631,426],{"class":224},[210,633,429],{"class":220},[210,635,325],{"class":224},[210,637,434],{"class":247},[210,639,331],{"class":224},[210,641,334],{"class":216},[210,643,645],{"class":212,"line":644},31,[210,646,340],{"class":224},[210,648,650,652,654,656,658,661],{"class":212,"line":649},32,[210,651,347],{"class":346},[210,653,325],{"class":224},[210,655,434],{"class":247},[210,657,455],{"class":224},[210,659,660],{"class":316},"canReply",[210,662,502],{"class":224},[210,664,666],{"class":212,"line":665},33,[210,667,356],{"class":224},[210,669,671],{"class":212,"line":670},34,[210,672,673],{"class":224},"}\n",[91,675,676],{},"Register it in your config:",[201,678,680],{"className":203,"code":679,"language":205,"meta":206,"style":206},"\u002F\u002F config\u002Fcomments.php\n'policy' => App\\Policies\\CustomCommentPolicy::class,\n",[95,681,682,688],{"__ignoreMap":206},[210,683,684],{"class":212,"line":213},[210,685,687],{"class":686},"sHwdD","\u002F\u002F config\u002Fcomments.php\n",[210,689,690,692,695,697,700,702,704,706,708,711,714,716],{"class":212,"line":234},[210,691,592],{"class":224},[210,693,694],{"class":595},"policy",[210,696,592],{"class":224},[210,698,699],{"class":224}," =>",[210,701,221],{"class":247},[210,703,225],{"class":224},[210,705,228],{"class":247},[210,707,225],{"class":224},[210,709,710],{"class":220},"CustomCommentPolicy",[210,712,713],{"class":224},"::",[210,715,295],{"class":216},[210,717,718],{"class":224},",\n",[86,720,722],{"id":721},"how-authorization-works","How Authorization Works",[91,724,725,726,728],{},"The Livewire components check the policy before rendering action buttons. Edit and delete buttons only appear for authorized users. Reply buttons are hidden when the thread has reached the configured ",[95,727,191],{},".",[91,730,731],{},"The policy is registered automatically by the service provider using Laravel's Gate system.",[733,734,735],"style",{},"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 .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 .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 .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 .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}",{"title":206,"searchDepth":234,"depth":234,"links":737},[738,739,740],{"id":88,"depth":234,"text":89},{"id":195,"depth":234,"text":196},{"id":721,"depth":234,"text":722},"Control who can create, edit, delete, and reply to comments.","md",null,{},{"icon":39},{"description":747,"title":36},"Configure comment authorization policies.","YnHyEHTZ0JhpjKoVXd3F9RBoyGiM3pyczDpn5a5Grfo",[750,752],{"title":31,"path":32,"stem":33,"description":751,"icon":34,"children":-1},"Configure threading, reactions, mentions, attachments, notifications, and more.",{"title":41,"path":42,"stem":43,"description":753,"icon":44,"children":-1},"User @mentions with autocomplete and notification support.",1774609070232]