显示基于用户角色和当前用户的图标

时间:2014-11-27 17:39:26

标签: php arrays laravel conditional-statements

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

我目前已将它用于当前登录用户然后显示的数组中的用户相同的情况,那么它将不会以不会意外删除自身的方式显示图标。我不想显示编辑图标,因为他们只能转到他们的个人资料并以此方式编辑自己。我想继续这样做。

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

如果当前登录用户的角色ID低于正在显示的阵列中的用户,则它也不会显示操作。为了解释这一点,我将使用以下示例。如果当前登录的用户只有角色ID为4(admin),则他们将无法删除角色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
                }
        }
}

1 个答案:

答案 0 :(得分:1)

您需要将@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