Отображение значков в зависимости от роли пользователя и текущего пользователя

У меня есть страница, на которой перечислены все пользователи из моей таблицы базы данных пользователей. В настоящее время я перебираю массив своих пользователей и выводю свойство объекта каждого пользователя в соответствующем поле таблицы. В последнем поле отображаются действия для пользователя, вошедшего в систему. Мне нужна помощь, чтобы немного изменить это для дополнительных нужд, которые у меня есть.

В настоящее время у меня есть его, где, если текущий вошедший в систему пользователь и затем отображаемый пользователь в массиве совпадают, значки не будут отображаться таким образом, что они не смогут случайно удалить себя. Значок редактирования, который я не хочу отображать, потому что они могут просто зайти в свой профиль и так или иначе отредактировать себя. Это я хотел бы сохранить.

То, что я хочу сделать, это взять это поле, и если текущий вошедший в систему пользователь и отображаемый массив имеют одинаковый идентификатор роли, тогда он НЕ МОЖЕТ отображать значки действий. Чтобы объяснить это, если текущий зарегистрированный пользователь является администратором, а пользователь в отображаемом массиве также является администратором, он не сможет удалить этого пользователя.

ТАКЖЕ, если текущий вошедший в систему пользователь имеет идентификатор роли ниже, чем у пользователя в отображаемом массиве, он ТАКЖЕ не отображает действия. Чтобы объяснить это, я буду использовать следующий пример. Если текущий зарегистрированный пользователь имеет только идентификатор роли 4 (администратор), он не сможет удалить пользователя с идентификатором роли 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
}
}
}

0

Решение

Вам нужно изменить состояние вашего @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
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector