根据用户角色和当前用户显示图标


Showing Icons Based on User Role and Current User

我有一个页面列出了我的用户数据库表中的所有用户。我目前正在遍历我的用户数组,并在相应的表字段中输出每个用户的对象属性。在最后一个字段中,它显示登录用户有权访问的操作。我需要一些帮助来修改它以满足我的其他需求。

我目前拥有它,如果当前登录的用户和正在显示的数组中的用户相同,那么它不会以他们不会意外删除自己的方式显示图标。我不想显示的编辑图标,因为他们无论如何都可以转到他们的个人资料并编辑自己。我想保留这一点。

我想做的是获取此字段,如果当前登录的用户和正在显示的数组中的用户具有相同的角色ID,则它无法显示操作图标。解释一下,如果当前登录用户是管理员,并且要显示的数组中的用户也是管理员,他们将无法删除该用户。

此外,如果当前登录用户的角色 ID 低于正在显示的数组中的用户,则它也不会显示操作。为了解释这一点,我将使用以下示例。如果当前登录用户的角色 ID 仅为 4(管理员),则他们将无法删除角色 ID 为 5(所有者)的用户。

<tbody>
    @foreach($users as $user)
        <tr>
            <td class="center">{{ $user->id }}</td>
            <td>{{ $user->getFullName() }}</td>
            <td>{{ $user->email_address }}</td>
            <td>{{ $user->username }}</td>
            <td>{{ $user->role->role_name }}</td>
            <td>{{ $user->status->status_name }}</td>
            <td class="center">
                @if ( $user->id != Auth::id())
                    <a data-original-title="Edit" href="{{ route('backstage.users.edit', $user->id) }}" data-toggle="tooltip" title="" class="tooltips"><i class="fa fa-pencil"></i></a>
                    <a data-original-title="Delete" href="{{ route('backstage.users.destroy', $user->id) }}" data-toggle="tooltip" title="" class="tooltips js-ajax-delete"><i class="fa fa-trash-o"></i></a>
                @endif
            </td>
        </tr>
    @endforeach
</tbody>

下面是用户对象的预格式化数组。我只包括虚拟用户。

array(51) {
    [0]=>
        array(13) {
            ["id"]=> string(1) "1"
            ["first_name"]=> string(7) "Will"
            ["last_name"]=> string(8) "Stevens"
            ["username"]=> string(10) "wstevens"
            ["email_address"]=> string(20) "wstevens@gmail.com"
            ["avatar"]=> string(10) "wstevens" 
            ["role_id"]=> string(1) "4" 
            ["status_id"]=> string(1) "1"
            ["created_at"]=> string(19) "2014-11-26 22:27:38"
            ["updated_at"]=> string(19) "2014-11-26 22:27:38"
            ["deleted_at"]=> NULL
            ["role"]=>
                array(5) {
                    ["id"]=> string(1) "4"
                    ["role_name"]=> string(5) "Owner"
                    ["created_at"]=> string(19) "2014-11-26 22:27:38"
                    ["updated_at"]=> string(19) "2014-11-26 22:27:38"
                    ["deleted_at"]=> NULL
                }
            ["status"]=>
                array(5) {
                    ["id"]=> string(1) "1" 
                    ["status_name"]=> string(6) "Active"
                    ["created_at"]=> string(19) "2014-11-26 22:27:38"
                    ["updated_at"]=> string(19) "2014-11-26 22:27:38"
                    ["deleted_at"]=> NULL
                }
        }
    [1]=>
        array(13) {
            ["id"]=> string(1) "2"
            ["first_name"]=> string(6) "Furman"
            ["last_name"]=> string(8) "O'Reilly"
            ["username"]=> string(12) "wyman.haylie"
            ["email_address"]=> string(19) "pearlie17@yahoo.com"
            ["avatar"]=> string(8) "ikyyyhzn"
            ["role_id"]=> string(1) "2"
            ["status_id"]=> string(1) "2"
            ["created_at"]=> string(19) "2014-11-26 22:27:38"
            ["updated_at"]=> string(19) "2014-11-26 22:27:38"
            ["deleted_at"]=> NULL
            ["role"]=>
                array(5) {
                    ["id"]=> string(1) "2"
                    ["role_name"]=> string(6) "Editor"
                    ["created_at"]=> string(19) "2014-11-26 22:27:38"
                    ["updated_at"]=> string(19) "2014-11-26 22:27:38"
                    ["deleted_at"]=> NULL
                }
            ["status"]=>
                array(5) {
                    ["id"]=> string(1) "2"
                    ["status_name"]=> string(8) "Inactive"
                    ["created_at"]=> string(19) "2014-11-26 22:27:38"
                    ["updated_at"]=> string(19) "2014-11-26 22:27:38"
                    ["deleted_at"]=> NULL
                }
        }
}
您需要

@if语句的条件更改为:

@if($user->role['id'] < Auth::user()->role['id']) {
     <a data-original-title="Edit" href="{{ route('backstage.users.edit', $user->id) }}" data-toggle="tooltip" title="" class="tooltips"><i class="fa fa-pencil"></i></a>
     <a data-original-title="Delete" href="{{ route('backstage.users.destroy', $user->id) }}" data-toggle="tooltip" title="" class="tooltips js-ajax-delete"><i class="fa fa-trash-o"></i></a>
@endif