.php恢复所有者,php – Laravel 5:如果用户是帖子的所有者或论坛类别的所有者,则允许用户编辑帖子...

到目前为止,我能够允许用户编辑他自己的帖子,但每当我通过他是subreddit / category条件的所有者时,它就会完全停止工作.

我有这3张桌子

Users: id,name,email...

Subreddits: id,user_id...

Posts: id,link,title,user_id,subreddit_id...

这是PostsController.PHP中的edit()方法

public function edit(Post $post,Subreddit $subreddit)

{

if(Auth::id() !== $post->user_id) {

return view('home')->withErrors('You cannot do that');

} else {

return view('post/edit')->with('post',$post)->with('subreddit',$subreddit);

}

}

这就是观点

@if(Auth::id() == $post->user_id)

Edit

@endif

这工作正常,它只检查登录的user_id是否与帖子的user_id相同,并且更新是否通过.

但是如果我添加if(Auth :: id()== $subreddit-> user_id)它就会停止工作.它在所有帖子的视图上显示“编辑”链接,但点击其中任何一个都会给我验证错误即使对于我拥有的帖子也不能这样做.

那么如何检查用户是文章的所有者还是要显示的类别的所有者并允许编辑?

使用$subreddit-> user_id更新了方法

public function edit(Post $post,Subreddit $subreddit)

{

if(Auth::id() == $post->user_id || Auth::id() == $subreddit->user_id) {

return view('post/edit')->with('post',$subreddit);

} else {

return view('home')->withErrors('You cannot do that');

}

}

视图

@if(Auth::id() == $post->user_id || Auth::id() == $subreddit->user_id)

Edit

@endif

这将允许我编辑我自己的帖子,但仍然会给我验证错误你不能在我自己的论坛类别/ subreddit上的帖子上这样做.

这是我尝试过的Gate策略,但它也没有用

class AuthServiceProvider extends ServiceProvider

{

// Authorizations and Permissions

public function boot(GateContract $gate)

{

parent::registerPolicies($gate);

$gate->define('update-post',function ($user,$post) {

return $user->id === $post->user_id;

});

$gate->define('mod-update-post',$subreddit) {

return $user->id === $subreddit->user_id;

});

}

PostsController.PHP

public function edit(Post $post,Subreddit $subreddit,User $user)

{

if(Gate::denies('update-post',$post) && Gate::denies('mod-update-post',$subreddit)) {

return view('home')->withErrors('You cannot do that');

} else {

return view('post/edit')->with('post',$subreddit);

}

}

视图

@can('update-post',$post)

Edit

@endcan

使用上面的代码,如果’update-post’为true,我终于能够编辑帖子但是我无法检查mod-update-post是否也是真的,我一直收到验证错误你不能这样做

编辑:我想我已经解决了.我使用$post-> subreddit-> user-> id而不是$subreddit-> user_id,因为它返回null.现在这一切似乎都基于帖子属于用户或用户是论坛所有者.

但是视图上的编辑链接仍然显示我是否有权访问.我无法同时检查update-post和mod-update-post.并使用@can(‘update-post’,$post)只能工作一次,我不能仔细检查.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值