我想创建一个项目来添加编辑联系人。如何在Laravel 5.2中创建不带参数的策略?
要限制用户可以添加/编辑自己的联系人,因此增加政策ContactPolicy如下
<?php
namespace App\Policies;
use Illuminate\Auth\Access\HandlesAuthorization;
use App\User;
use App\Contact;
class ContactPolicy
{
use HandlesAuthorization;
/**
* Create a new policy instance.
*
* @return void
*/
public function __construct()
{
//
}
public function before($user, $ability)
{
if ($user->isAdmin == 1) {
return true;
}
}
public function add_contact(User $user)
{
return $user->id;
}
public function update_contact(User $user, Contact $contact)
{
return $user->id === $contact->user_id;
}
}
而且在AuthServiceProvider注册如下
protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
Contact::class => ContactPolicy::class,
];
要限制由当前用户的添加好友我在下面我的控制器功能中添加了Gate,但不通过参数
if (Gate::denies('add_contact')) {
return response('Unauthorized.', 401);
}
即使当前用户尝试添加联系人,它也会显示未经授权的消息。
我该如何解决这个问题?
该方法必须返回一个布尔值,但是您的* add_contact()*方法返回'return $ user-> id;'并且它可能不起作用,因为您需要参数** $ user **,而您不需要包括从控制器调用门的时候。 – TheFallen