我有一个名为Former
的用户,该用户具有相似的用户角色Eric
。
我希望用户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();
}
仅看到他的机密信息,而看不到其他人的机密信息。
您是否知道我该怎么做?
谢谢您的帮助。
编辑控制器以前的
ListViewSkin
答案 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')
方法,将其替换为用于验证用户是否具有给定角色的逻辑。