我想創建一個項目來添加編輯聯繫人。如何在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