Аргумент 2 передан в Cartalyst \ Sentinel \ Permissions \ Standard Permissions :: prepare Permissions () должен иметь тип массива, ноль дан

У меня есть проект Laravel 5.3 с настроенным пакетом Cartalyst \ Sentinel (v2.0.15). У меня есть эта строка

$hasPermission = Sentinel::getUser()->hasAccess($routeName);

Но я продолжаю получать это сообщение об ошибке:

Argument 2 passed to
Cartalyst\Sentinel\Permissions\StandardPermissions::prepare Permissions() must be of the type array, null given

Я заглянул в Google и на страницу github пакета, но не смог найти ничего, что помогло бы мне решить эту проблему.

Когда я смотрю в исходный код пакета, я вижу этот кусок кода:

/**
* {@inheritDoc}
*/
protected function createPreparedPermissions()
{
$prepared = [];

// $this->secondaryPermissions equals to:
// [
//     0 => NULL,
// ]
if (! empty($this->secondaryPermissions)) {
foreach ($this->secondaryPermissions as $permissions) {
// this is the line where it throws the error as $permissions == NULL
$this->preparePermissions($prepared, $permissions);
}
}

if (! empty($this->permissions)) {
$permissions = [];

$this->preparePermissions($permissions, $this->permissions);

$prepared = array_merge($prepared, $permissions);
}

return $prepared;
}

Массив secondPermissions не пуст. Что это за «вторичные» разрешения? Я заглянул на страницу (а) документации Sentinel, но ничего не смог найти по этому поводу. Единственное, что я могу найти, — это то, что «пользователь» может иметь разрешения, но также и «роль». Моя текущая настройка базы данных заключается в том, что роли имеют разрешения, но ни один из моих пользователей не имеет каких-либо особых разрешений. Таким образом, поле «разрешения» в моей таблице пользователей всегда равно NULL.

Благодарю.

0

Решение

Починил это.
Проблема заключалась в том, что разрешения были неправильно сохранены в моей базе данных.

Это должно быть как:

{"controller.action": true, "controller.actionTwo": true}

Вместо:

{"controller.action: true", "controller.actionTwo: true"}
0

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

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

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