В моем файле маршрутов я обычно проверяю одно разрешение с can:manage-admin
, которое работает нормально. Я прочитал в документации, что проверка нескольких разрешений может быть выполнена с помощью permission
и |
для их разделения, например permission:manage-admin|manage-whatever
. Я изменил значение can
usaged на permission
ниже, и теперь я получаю сообщение об ошибке «Разрешение класса не существует».
Я разместил свое разрешение. php файл под маршрутами ниже
Маршруты
Route::group(['middleware' => ['permission:view-user|edit-labels']], function () {
Route::post('admin/api/scan-barcode', 'Admin\UsersController@checkLabel');
});
Разрешения. php
<?php
namespace App\Models\Helpers;
use App\Models\User;
class Permissions
{
/**
* The user.
*
* @var App\Models\User
*/
protected $user;
/**
* The list of all possible permissions.
*
* @return array
*/
public function __construct(User $user)
{
$this->user = $user;
}
public static function list()
{
return [
'view-user' => 'View User',
'edit-labels' => 'Edit Labels',
];
}
public static function permissionKeys()
{
return array_keys(static::list());
}
public function has($permission)
{
if ($this->user->isSuperAdmin()) {
return true;
}
if (isset($this->user->permissions['all-permissions']) && $this->user->permissions['all-permissions'] == true) {
return true;
}
if (isset($this->user->permissions[$permission]) && $this->user->permissions[$permission] == true) {
return true;
}
return false;
}
}