gpt4 book ai didi

php - 拉维尔 5.5 : Authorization with pivot table

转载 作者:行者123 更新时间:2023-11-29 07:38:17 25 4
gpt4 key购买 nike

我有四个表 usersgroupspostsgroup_user。用户可以关注不同的组。 group_user 表 用于多对多关系。

每个帖子都属于一个组和一个用户。我希望用户只有关注该组才能在该组上发帖。我可以使用 if 语句轻松检查用户是否关注该组。但是我如何授权用户使用策略发布。

最佳答案

创建策略:php artisan make:policy

注册政策:

class AuthServiceProvider extends ServiceProvider
{
/**
* The policy mappings for the application.
*
* @var array
*/
protected $policies = [
Post::class => PostPolicy::class,
];

在您的政策中的逻辑,例如:

public function create(User $user, Post $post)
{
$groupsOfUser = $user->groups()->get();

foreach ($groupsOfUser as $group) {
if($group->id == request('groupId'))return true;
}
}

在你的 Controller 中:

public function store(Post $post, $groupId)
{
$this->authorize('create', $post);

Post::create([
'user_id' =>auth()->id(),
'group_id' => $groupId,
'title' => 'sometitle',
]);
}

我已经用路由测试过它:

Route::get('/post/{groupId}', 'PostController@store');

但是您可能会通过输入获取 groupId,但您明白了。

关于php - 拉维尔 5.5 : Authorization with pivot table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47709791/

25 4 0