gpt4 book ai didi

laravel - 我怎样才能让用户只对他/她在 Voyager Laravel 中创建的记录进行 CRUD?

转载 作者:行者123 更新时间:2023-12-05 06:33:52 25 4
gpt4 key购买 nike

我是 laravel 和 voyager 的新手

我有一个关于航海者的问题。问题是 .. 我想让用户只对他/她创建的记录进行 CRUD,因此他/她将无法访问其他用户的记录,但只能对他的记录进行添加-编辑-删除。我怎样才能在 voyager 中存档它?默认权限适用于所有记录,那些不过滤用户特定记录:(

最佳答案

Landlord应该非常适合这个。

Landlord 将全局作用域应用于自动过滤记录的 Eloquent。它在堆栈中低于 Voyager 的级别执行此操作,这意味着您不需要在 Voyager 端进行任何额外配置。

使用 Landlord,您只需在所有 CRUD 表中添加一列来标识记录的所有权,然后让 Landlord 知道这一点。

例如,如果您使用列名称 user_id,那么您可以通过调用像 Landlord::addTenant(' user_id', $userIdHere); 下面是一个示例中间件:

<?php
namespace App\Http\Middleware;
use Closure;
use App\User;
use Landlord as LandlordManager;

class Landlord {
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($request->user()) {
LandlordManager::addTenant($request->user());
LandlordManager::applyTenantScopesToDeferredModels();
}
}
}

然后转到App/Http/Kernel.php,找到$routeMiddleware 数组并添加:

'landlord' => \App\Http\Middleware\Landlord::class

然后转到 app/routes/web.php 并根据您在文档中喜欢的风格将此中间件应用于任何单个路由或路由组 https://laravel.com/docs/master/middleware .一个例子是:

Route::group(['prefix' => 'admin', 'middleware'=>'landlord'], function () {
// routes here
});

关于laravel - 我怎样才能让用户只对他/她在 Voyager Laravel 中创建的记录进行 CRUD?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50473926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com