隐藏多个用户的机密数据

时间:2019-08-11 22:16:50

标签: php laravel authentication laravel-5 laravel-5.8

我有一个名为Former的用户,该用户具有相似的用户角色Ericenter image description here

我希望用户public function index(Request $req) { if ($req->search == "") { $formers = Former::paginate(5); $formerIdsDown = Cours::where('date_seance', "<=" , Carbon::now())->pluck('fk_former')->toArray(); return view('admin.formers.index', compact('formers', 'formerIdsDown')); } else { $validated = $req->validate([ 'search' => 'alpha', ]); $formers = Former::where('nom', 'LIKE', '%' . $validated['search'] . '%')->paginate(5); $formers->appends($req->only('search')); $bikeIdsDown = Cours::where('date_seance', "<=" , Carbon::now())->pluck('fk_former')->toArray(); return view('admin.formers.index', compact('formers', 'formerIdsDown')); } $user = User::when($has_role, function ($query) { return $query->where('id', auth()->id()); }) ->get(); } 仅看到他的机密信息,而看不到其他人的机密信息。

enter image description here

您是否知道我该怎么做?

谢谢您的帮助。

编辑控制器以前的

ListViewSkin

1 个答案:

答案 0 :(得分:3)

您可以通过两种方式处理此问题。

限制服务器中的数据

这应该是您的方法。您可以在此处添加condition in your query来了解用户是否具有受限角色以限制数据:

# InSomeController.php

$has_role = auth()->user()->hasRole('former'); // checking if the user has the role

$user = User
    ::when($has_role, function ($query) {
        return $query->where('a_column', 'a_value'); // The limitation you want to apply
    })
    ->get(); // executing the query

视图中的限制

如果您使用的是刀片模板引擎,则可以使用一些Blade directives

# in_some_view.blade.php

@if (auth()->user()->hasRole('former'))
    /** Your limited data goes here.. */ 
@else
    /** The default data goes here.. */
@endif

obs:在两种情况下,我都使用hasRole('role')方法,将其替换为用于验证用户是否具有给定角色的逻辑。