我正在编写适用于多个模型的一般政策。如何检索需要授权的类的类名?
策略:
protected $policies = [
'App\User' => 'App\Policies\ModelPolicy',
'App\Customer' => 'App\Policies\ModelPolicy',
];
ModelPolicy:
class ModelPolicy
{
use HandlesAuthorization;
/**
* Create a new policy instance.
*
* @return void
*/
public function __construct()
{
}
public function index(User $user){
// how can I retrieve the class name, like User or Customer?
return true;
}
}
这是我的客户控制员。所以在策略中我想要检索类似的东西:App \ Customer。
class CustomerController extends Controller
{
public function index(){
$this->authorize('index', Customer::class);
echo "test";
}
}
答案 0 :(得分:1)
你需要定制门。
在您的控制器中:
$this->authorize('model-index', Appointment::first());
在AuthServiceProvider中:
Gate::define('model-index', function ($user, $model) {
var_dump(get_class($model));
die();
});
通过这种方式,您可以获取授权方法所需的参数。
请参阅
https://laravel.com/docs/5.5/authorization#gates
Laravel Policies - How to Pass Multiple Arguments to function