gpt4 book ai didi

laravel - 如何在 Laravel 中实现 'user can only edit his own post/model'

转载 作者:行者123 更新时间:2023-12-04 19:35:29 24 4
gpt4 key购买 nike

某些模型只能由其所有者编辑/删除:

$model->user_id

这是我应该如何检查用户是否拥有模型(在需要它的每个 Controller 操作中?):

if ($model->user_id == Auth::user()->id)

在每个需要此检查的 Controller 操作中添加它似乎是多余的?我正在寻找一个优雅和 DRY 的解决方案(过滤器?基于角色的权限?)

非常感谢。

最佳答案

如果您希望用户只编辑他们自己的帖子,那么这里可能是一个有意义的事情。

在您的Post 模型 中,创建此函数:

  public function isTheOwner($user)
{
return $this->user_id === $user->id;
}

接下来,在您的 PostController

  public function getEdit($id)
{
// 1st # Fetch the post with something like this:
$post = $this->post->findOrFail($id); // maybe this will not work for you, try to implement your own method here

// 2nd # Here is how you do the trick
// validate that the user updating the post is the post author:
if ( ! $post->isTheOwner(Auth::user())) return \Redirect::to('/');

// 3rd # Return the view with the post array

}

关于laravel - 如何在 Laravel 中实现 'user can only edit his own post/model',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22476117/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com