Новые роли не назначаются пользователю (для role_id в таблице users установлено значение null)

Я создал новую роль и попытался назначить новому пользователю, она работает отлично, но когда я попытался войти в систему с учетными данными нового пользователя, я вошел в систему, но я получил ошибку. Пожалуйста, проверьте скриншот:

введите описание изображения здесь

Ошибка появляется, потому что она устанавливает значение role_id равным нулю, даже если выбрано созданное разрешение. Пожалуйста, проверьте скриншот:

введите описание изображения здесь

 <?php

namespace TCG\Voyager\Traits;

use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException;
use TCG\Voyager\Facades\Voyager;
use TCG\Voyager\Models\Role;

/**
* @property  \Illuminate\Database\Eloquent\Collection  roles
*/
trait VoyagerUser
{
public function role()
{
return $this->belongsTo(Voyager::modelClass('Role'));
}

/**
* Check if User has a Role(s) associated.
*
* @param string|array $name The role to check.
*
* @return bool
*/
public function hasRole($name)
{
if (!$this->relationLoaded('role')) {
$this->load('role');
}

return in_array($this->role->name, (is_array($name) ? $name : [$name]));
}

public function setRole($name)
{
$role = Voyager::model('Role')->where('name', '=', $name)->first();

if ($role) {
$this->role()->associate($role);
$this->save();
}

return $this;
}

public function hasPermission($name)
{
if (!$this->relationLoaded('role')) {
$this->load('role');
}

if (!$this->role->relationLoaded('permissions')) {
$this->role->load('permissions');
}

return in_array($name, $this->role->permissions->pluck('key')->toArray());
}

public function hasPermissionOrFail($name)
{
if (!$this->hasPermission($name)) {
throw new UnauthorizedHttpException(null);
}

return true;
}

public function hasPermissionOrAbort($name, $statusCode = 403)
{
if (!$this->hasPermission($name)) {
return abort($statusCode);
}

return true;
}
}

Может кто-нибудь помочь? Благодарю.

0

Решение

Задача ещё не решена.

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

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

По вопросам рекламы [email protected]