首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以将Laravel策略应用于路由和自定义功能?

是否可以将Laravel策略应用于路由和自定义功能?
EN

Stack Overflow用户
提问于 2019-03-06 12:19:24
回答 1查看 229关注 0票数 1

我有一个位置策略,一个api和一个自定义助手,我都想使用相同的策略,

下面是一个例子:

1.读取位置记录的路由/API :

代码语言:javascript
复制
 Route::group(['middleware' => 'policy:view,location'], function () {
        // Read location
        Route::post('/locations/{location_id}', [
            'uses'       => 'LocationApiController@read'
        ]);
  });

2.自定义函数/帮助读取位置记录

LocationHelper.php

代码语言:javascript
复制
/**
 * 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调用读取功能时则不适用

我想要的是对两者都适用相同的政策。

有什么办法吗??

EN

回答 1

Stack Overflow用户

发布于 2019-03-06 12:40:17

在检索用户之后,可以手动调用策略。例如:

代码语言:javascript
复制
$allowed = Auth::user()->can('view', Location::firstOrFail($locationId));

如果不允许用户查看资源,则返回403,如下所示:

代码语言:javascript
复制
abort_unless($allowed, 403); 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55022982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档