Files
relaticle-comments/essentials/authorization/_payload.json
github-actions[bot] b70b268201 Deploy 1.x docs
2026-03-27 12:09:26 +00:00

1 line
16 KiB
JSON

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