У меня есть пользовательский атрибут, который я должен показывать только авторизованным пользователям с определенными ролями:
protected $appends = ['count'];
public function getCountAttribute()
{
$user = auth()->guard('api')->user();
if($user && $user->hasAnyRole(['company', 'editor'])) {
$unmoderated = $this->jobs()->where('status', 0)->count();
$active = $this->jobs()->where('status', 1)->count();
$closed = $this->jobs()->where('status', 2)->count();
return [
'all' => $unmoderated + $active + $closed,
'unmoderated' => $unmoderated,
'active' => $active,
'closed' => $closed
];
}
}
Этот код каждый раз возвращает null
в результате.Потому что не может видеть авторизованного пользователя из API с Laravel Passport.По умолчанию из контроллеров мы можем получить доступ к авторизованному пользователю из API, добавив промежуточное ПО:
->middleware('auth:api')
Но как я могу сделать это внутри модели?