我有一个位置策略,一个api和一个自定义助手,我都想使用相同的策略,
下面是一个例子:
1.读取位置记录的路由/API :
Route::group(['middleware' => 'policy:view,location'], function () {
// Read location
Route::post('/locations/{location_id}', [
'uses' => 'LocationApiController@read'
]);
});2.自定义函数/帮助读取位置记录
LocationHelper.php
/**
* Class LocationHelper.
*/
class LocationHelper
{
/** @var LocationRepositoryInterface */
private $locationRepo;
/**
* ReminderHelper constructor.
*/
public function __construct()
{
$this->locationRepo = App::make(LocationRepositoryInterface::class);
}
/**
* @param int $locationId
*/
public function readLocation($locationId)
{
$this->locationRepo->read($locationId);
}
}问题是:
当调用位置时,将应用读取路由/api策略,而从LocationHelper.php调用读取功能时则不适用
我想要的是对两者都适用相同的政策。
有什么办法吗??
发布于 2019-03-06 12:40:17
在检索用户之后,可以手动调用策略。例如:
$allowed = Auth::user()->can('view', Location::firstOrFail($locationId));如果不允许用户查看资源,则返回403,如下所示:
abort_unless($allowed, 403); https://stackoverflow.com/questions/55022982
复制相似问题