我使用惯性JS。我创建了一个论坛,你可以管理你的帖子和评论(CRUD)。
通常情况下,可以修改或删除其帖子或评论的人是创建者和管理员。
我能够为帖子设置一个策略,但对于评论它不工作。我需要你的帮助来解决这个问题。
这是我的显示功能的职位和评论
public function show(Post $post, Comment $comment)
{
usleep(500000);
$post->incrementReadCount();
$updateableCommentIds = $post->comments
->map(function ($comment) {
if (Auth::user()->can('update', $comment)) {
return $comment->id;
}
})
->filter();
return Inertia::render('Frontend/Forum/Helpers/PostDetails', [
'post' => PostResource::make(
$post->load('user')->loadCount('comments')
),
'comments' => CommentResource::collection(
Comment::where('post_id', $post->id)
->with('user')
->paginate(10)
->withQueryString()
),
'categories' => Category::all(),
'can' => [
'edit' => Auth::check() && Auth::user()->can('edit', $post),
'commentEdit' => $updateableCommentIds
]
]);
}
这是我的评论政策
class CommentPolicy
{
use HandlesAuthorization;
public function update(User $user, Comment $comment): bool
{
return $user->is_admin || $user->id === (int) $comment->user_id;
}
}
这是我的视频文件
<div
v-if="can.commentEdit.includes(comment.id)"
>
//show me this if im the auther of this comment
</div>
我试过了也不行
public function show(Post $post)
{
$canUpdateComments = $post->comments->every(function ($comment) {
return Auth::user()->can('update', $comment);
});
// Return the view with the ability to update the comments
return view('posts.show', compact('post', 'canUpdateComments'));
}
1条答案
按热度按时间yjghlzjz1#
我只是注意到我有一个评论资源,只是有了它,我找到了解决方案,而不是每次检查帖子,而不是直接在评论上...