【发布时间】:2016-03-04 16:56:54
【问题描述】:
我目前正在尝试了解您是否可以将 Gate Fascade 添加到策略中,或者是否有更好的方法来处理我的情况。
我有一个用户列表,每个用户都有一个角色,每个角色可以有很多权限。所有这些都存储在我的数据库中,并在我的模型中建立了正确的关系。
我正在尝试根据用户是否可以在我的 HTML 用户列表中删除另一个用户来显示或不显示删除图标。
例子:
假设 user1 的角色为 3,即站点管理员。站点管理员有权删除用户,但他们无法删除与他们具有相同角色或高于他们的角色的其他用户。
当 user1 访问 /users uri 时,他们会看到数据库中用户的 HTML 表,并且作为最后一个表列是可以在该用户行的行上执行的操作。可用的操作图标是编辑和删除。对于删除图标,我希望运行一个策略以确保经过身份验证的用户可以先删除用户,但也可以传递当前行的用户对象,并查看用户是否具有相同或更高的角色 ID,在这种情况下它不会显示图标。
<?php
namespace App\Policies;
use App\User;
use Illuminate\Auth\Access\HandlesAuthorization;
class UserPolicy
{
use HandlesAuthorization;
/**
* Create a new policy instance.
*
* @return void
*/
public function __construct()
{
//
}
public function delete(User $user) {
return Auth::user()->role->permission and $user->role_id < Auth::user()->role_id and $user->id != Auth::user()->id;
}
}
/reources/views/partials/tables/actions.blade.php
<td class="actions">
<a href="{{ route('users.edit', $user->id) }}" class="btn btn-sm btn-icon btn-pure btn-default" data-toggle="tooltip" data-original-title="Edit"><i class="icon wb-edit" aria-hidden="true"></i></a>
<a href="{{ route('users.show', $user->id) }}" class="btn btn-sm btn-icon btn-pure btn-default" data-toggle="tooltip" data-original-title="Show"><i class="icon wb-eye" aria-hidden="true"></i></a>
@can('delete-user', $user)
<form class="inline" method="POST" action="{{ route('users.delete', [$user->id]) }}">
{{ method_field('DELETE') }}
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<button type="submit" class="btn btn-sm btn-icon btn-pure btn-default on-default" data-toggle="tooltip" data-original-title="Delete"><i class="icon wb-trash" aria-hidden="true"></i></button>
</form>
@endcan
</td>
【问题讨论】:
-
那么你的问题是什么?
-
如何检查是否代替 Auth::()->role->permission 我可以查看他们是否具有删除用户权限
标签: laravel laravel-5 laravel-5.2