@alexeygavrilovs

Как обратиться к таблице ролей?

Всем добрый вечер!
У нас есть условие, которое проверяет role_id пользователя
@if(Auth::user() && Auth::user()->role_id===1)
Так уже у нас есть таблица user_role в которой есть колонки user_id и role_id, как нам обратиться к таблице user_role чтобы проверить наличие роли у пользователя там?
  • Вопрос задан
  • 118 просмотров
Решения вопроса 1
@jazzus
В модели user
//  отношение
public function roles()
{
  return $this->belongsToMany('App\Models\Role', 'user_role');
}
// проверка
public function hasRole($id)
{
  return $this->roles()
              ->where('roles.id', $id)
              ->exists();
}
// для наглядности
public function isAdmin()
{
  return $this->hasRole(Role::ID__ADMIN);
}

В модели Role
// 1 это ид роли
const ID__ADMIN = 1;

Проверять так
if ($user->isAdmin()) {
      // code...
}

Но так проверять не надо. Т.к. придется Auth::check() чекать и условия прав доступа могут постоянно меняться. И по всему приложению нужно будет переписывать. Поэтому лучше сразу повникать в политики и пермишины для ролей.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы