在 Laravel 中,你可以使用 Laravel 的权限控制功能来实现只允许上级用户看到某些信息,而不让创建者看到。

以下是一种可能的实现方式:

  1. 定义用户模型之间的关系:

在 User 模型中,定义一个 supervisor_id 字段,用于存储上级用户的 ID。同时,在 User 模型中定义一个 supervisor() 方法,用于获取上级用户信息:

public function supervisor()
{
    return $this->belongsTo(User::class, 'supervisor_id');
}
  1. 定义用户授权策略:

创建一个名为 UserPolicy 的授权策略类,在该类中定义一个 view() 方法,用于判断是否允许查看用户信息。在 view() 方法中,判断当前用户是否为指定用户的上级用户:

public function view(User $user, User $targetUser)
{
    return $user->id === $targetUser->supervisor_id;
}
  1. 注册用户授权策略:

AuthServiceProviderboot() 方法中,注册用户授权策略:

public function boot()
{
    $this->registerPolicies();

    Gate::define('view-user', [UserPolicy::class, 'view']);
}
  1. 在控制器中使用授权策略:

在需要限制用户查看的控制器方法中,使用 authorize() 方法来验证用户是否有权限查看:

use Illuminate\Support\Facades\Gate;

public function show(User $user)
{
    $this->authorize('view-user', $user);

    // 允许查看用户信息的逻辑代码
}

通过以上步骤,你可以实现只让上级用户查看某个用户信息的功能。如果当前用户不是指定用户的上级用户,则会抛出 403 Forbidden 异常

laravel 查询怎么不让创建者看到只让他的上级看到

原文地址: http://www.cveoy.top/t/topic/i00m 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录