猿问

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

对于角色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...


12345678_0001
浏览 146回答 2
2回答

浮云间

如果您只想向当前用户显示他的信息,而不允许他查看其他用户的信息,您可以在刀片文件中执行此操作,而无需返回数据库或首先通过集合发送正在通过你的Auth中间件。通过不从您的控制器发送用户集合,您将无法向当前用户显示任何其他用户的信息(从而阻止他查看除他自己的数据以外的任何内容)。在您的刀片页面上,只显示单个用户的信息,然后也许只有当他拥有允许他查看该信息的角色时(我猜这个角色被称为former此演示)。由于中间件,您已经在刀片页面上拥有用户对象,并且可以访问该hasRole()方法:@if (\Auth::user()->hasRole('former'))&nbsp; &nbsp;<td>&nbsp; &nbsp; &nbsp; &nbsp;\Auth::user()->name;&nbsp; &nbsp;</td>&nbsp; &nbsp;<td>&nbsp; &nbsp; &nbsp; &nbsp;\Auth::user()->address; // etc&nbsp; &nbsp;</td>@endif如果你想显示其他用户(我认为你没有,这就是问题所在),你需要从控制器中提取一组用户,然后执行相同的 if-check 以查看当前用户是否有查看其他用户信息的权限。

HUX布斯

用户登录时将角色存储在会话中在你的 Blade 中像这样使用@if(Session::get('role') == 'admin')&nbsp;<h1> you are admin </h1>@else&nbsp;<h1> you are not admin </h1>@endif
随时随地看视频慕课网APP
我要回答