【问题标题】:How to check if user owns a record with Entrust?如何检查用户是否拥有 Entrust 的记录?
【发布时间】:2016-04-28 18:52:03
【问题描述】:

我希望允许用户仅对他们拥有的帖子进行 CRUD。我不想创建一个新的中间件,而是利用现有的中间件。那么,Entrust 的默认中间件是否可以扩展来适应这个目的呢?

class PostsController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
        $this->middleware('role:blogger|owner'); // <-- implement additional logic in here
    }

    ...
}

【问题讨论】:

  • 您有没有过不在这里的答案/解决方案?我面临着类似的问题,我正在考虑转向标准的 Laravel 授权,因为它可用......
  • 据我记得,我还没有找到任何直接的方法来使用 Entrust 处理该问题

标签: laravel laravel-5 laravel-5.2 entrust


【解决方案1】:
 @if (Auth::id() === $user->id){
     Edit
    }

如果你在你的Kernel.php中定义了

protected $routeMiddleware = [ 'auth' => '...' ]

在你的构造中:

public function __construct()
{
    $this->middleware('auth', ['only' => ['create']]);
}

将 eloquent 与 Entrust 一起使用:

$users = User::whereHas('roles' => function($q){
$q->where('name', 'my-user-role')
})->get();

【讨论】:

  • 谢谢,但我想做中间件内部的检查
  • @AlexanderLomia 刚刚更新了答案,不确定是否是您要找的。​​span>
  • 我只想检查用户的角色(这是由 Entrust 的默认中间件完成的)&& 检查用户是否拥有他试图修改的帖子(这不是)
  • 对不起,我可能无法帮助您,但我使用 eloquent 和 Entrust 更新了答案,我之前使用过。我也在等待答案 - 学习新东西:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-09
  • 2012-01-12
相关资源
最近更新 更多