這就是我現在所做的,雖然我不確定它是否遵循正確的傳統方法,但它的工作原理。
我所做的就是創建Role()
模型內部的靜態功能檢查role_id
與permission
和返回true或false。下面是代碼:
$hasPermission = Role::hasPermission($roleId, 'edit_post');
:在控制器
namespace App\Models;
use Zizaco\Entrust\EntrustRole;
use DB;
class Role extends EntrustRole {
/**
* Checks if the role has a permission by its name.
*
* @param numeric $roleId|string $permissionName - Role ID and permission name.
*
* @return bool
*/
public static function hasPermission($roleId, $permissionName)
{
$role = Role::findOrFail($roleId);
$role_permissions = $role->perms()->get();
foreach ($role_permissions as $permission) {
if ($permission->name == $permissionName) {
return true;
}
}
return false;
}
}
用法