Определить модель на основе роли

У меня есть таблица, где я сохраняю пользователей. Пользователи могут быть студентом, учителем, директором или их комбинацией, я использую роли для достижения этой цели (пакет называется spatie / Laravel-разрешение).

Я предоставляю конкретные модели для студентов, преподавателей и директоров школ с их собственной логикой, запросами и т. Д., Но у меня нет конкретных таблиц для этих моделей.

В настоящее время я определяю, является ли пользователь учителем, используя функцию boot () в модели Teacher (то же самое касается студентов и директоров школ):

protected static function boot()
{
parent::boot();

//Todo: make use of role package to determine if model is teacher or not.
static::addGlobalScope('teacher', function (Builder $builder) {
$builder->whereExists(function ($query) {
$query->select(DB::raw(1))
->from('teacher_offering')
->whereRaw('teacher_offering.user_id = users.id');
});
});
}

Этот запрос работает хорошо, но мне было интересно, смогу ли я упростить это, используя пакет разрешений Laravel, предоставленный Spatie.

Мои вопросы: могу ли я заменить запрос внутри функции boot (), проверив, назначена ли роль учителя пользователю?

Могу ли я достичь этого с помощью этого пакета или я должен остаться с этим запросом?

0

Решение

Какой у вас сценарий использования для проверки роли пользователя? Если вы пытаетесь запретить доступ к определенным страницам, используйте Промежуточное проверять роли. Я не думаю, что рамки подходят для этого.

spatie / Laravel-разрешение Пакет обеспечивает hasRole($role) метод, предполагая, что ваш User реализует HasRoles черта характера:

$isTeacher = Auth::user()->hasRole('teacher');
0

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

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

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