Laravel auth用户角色更新

时间:2018-05-24 22:30:34

标签: laravel laravel-blade

我在拉拉维尔做了一个项目。在我的管理面板上,我可以查看用户列表并执行CRUD操作,一个操作是我可以使用一个简单的按钮在“用户”和“管理员”之间更改用户的角色。现在我不希望登录用户能够降级他们自己的权限,因为我显然会收到错误,因为它们本质上是他们不属于的地方。

我的实际表格代码:

@if($users->count() > 0)
     @foreach ($users as $user)
         <tr>
             <td><img src="{{ asset($user->avatar) }}" alt="Avatar" width="45px" height="45px" style="border-radius: 50%"></td>
             <td>{{ $user->firstname }}</td>
             <td>{{ $user->lastname }}</td>
             <td>{{ $user->username }}</td>
             <td>{{ $user->email }}</td>
             <td>
                                    @if($user->admin)
                                        <a class="button warning small warnBtn" href="{{ route('user.not.admin',['id' => $user->id]) }}" class="btn btn-xs btn-danger"><i class="fas fa-hand-point-down fa-lg" style="color: white"></i> Make User</a>
                                    @else
                                        <a class="button warning small warnBtn" href="{{ route('user.admin',['id' => $user->id]) }}" class="btn btn-xs btn-success"><i class="fas fa-hand-point-up fa-lg" style="color: white"></i> Make Admin</a>
                                    @endif</td>
                                <td align="center"><a href="{{ route('user.edit', [$user->id]) }}"class="btn.btn-info"><i class="fas fa-edit fa-lg" style="color: green"></i></a></td>
                                <td align="center"><a href="{{ route('user.delete', [$user->id]) }}"><i class="fas fa-trash-alt fa-lg" style="color: red"></i></a></td>
                            </tr>
                        @endforeach
                    @else
                        <tr>
                            <th colspan="8"><h2 align="center">There Are Currently No Users</h2></th>
                        </tr>
                    @endif

如何隐藏按钮,只是在登录用户的行上?我试过了:

@if($user->admin && !Auth::user())//Show the button

显然,这完全是我告诉它的,并且落入了else语句,并为每个管理员更改了按钮。

我其实很困惑,这可能是最简单的解决方案。如果有人提示,那就太棒了,谢谢。

2 个答案:

答案 0 :(得分:1)

您可以比较他们的ID,以查看该行的用户是否与登录用户相同。

@if($user->admin && $user->id != Auth::user()->id) // Show the button

答案 1 :(得分:1)

您只需要比较记录的用户是否与foreach内的呈现用户不同。

@if($user->admin && $user->id != Auth::user()->id) // Show the button
   <a class="button warning small warnBtn" href="{{ route('user.not.admin',['id' => $user->id]) }}" class="btn btn-xs btn-danger">
       <i class="fas fa-hand-point-down fa-lg" style="color: white></i> 
       Make User
   </a>
@else
   [...]
@endif

然后,如果它们没有不同,则用户将无法降级其权限。您是否考虑将这些按钮更改为选择?