为了账号安全,请及时绑定邮箱和手机立即绑定

隐藏具有相同“角色”的用户的数据

隐藏具有相同“角色”的用户的数据

PHP
12345678_0001 2021-11-26 15:13:17
对于角色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 以查看当前用户是否有查看其他用户信息的权限。


查看完整回答
反对 回复 2021-11-26
?
HUX布斯

TA贡献1876条经验 获得超6个赞

用户登录时将角色存储在会话中


在你的 Blade 中像这样使用


@if(Session::get('role') == 'admin')

 <h1> you are admin </h1>

@else

 <h1> you are not admin </h1>

@endif


查看完整回答
反对 回复 2021-11-26
  • 2 回答
  • 0 关注
  • 128 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信