对于角色Former,我有 2 个用户。比如Eric想查看他的私人信息。他可以看到 的私人信息Jean。有问题...我可以阻止吗我试过这个,但没有成功:$has_role = auth()->user()->hasRole('former'); $user = User::when($has_role, function ($query) { return $query->where('email', auth()->user()->email);})->get();我的文件 index.blade.php@foreach($formers as $former) <tr> <td> {{$former->name}}</td> <td> {{$former->firstname}}</td> etc...
2 回答
浮云间
TA贡献1829条经验 获得超4个赞
如果您只想向当前用户显示他的信息,而不允许他查看其他用户的信息,您可以在刀片文件中执行此操作,而无需返回数据库或首先通过集合发送正在通过你的Auth中间件。通过不从您的控制器发送用户集合,您将无法向当前用户显示任何其他用户的信息(从而阻止他查看除他自己的数据以外的任何内容)。
在您的刀片页面上,只显示单个用户的信息,然后也许只有当他拥有允许他查看该信息的角色时(我猜这个角色被称为former此演示)。由于中间件,您已经在刀片页面上拥有用户对象,并且可以访问该hasRole()方法:
@if (\Auth::user()->hasRole('former'))
<td>
\Auth::user()->name;
</td>
<td>
\Auth::user()->address; // etc
</td>
@endif
如果你想显示其他用户(我认为你没有,这就是问题所在),你需要从控制器中提取一组用户,然后执行相同的 if-check 以查看当前用户是否有查看其他用户信息的权限。
HUX布斯
TA贡献1876条经验 获得超6个赞
用户登录时将角色存储在会话中
在你的 Blade 中像这样使用
@if(Session::get('role') == 'admin')
<h1> you are admin </h1>
@else
<h1> you are not admin </h1>
@endif
- 2 回答
- 0 关注
- 145 浏览
添加回答
举报
0/150
提交
取消