Как получить доступ к авторизованному пользователю из API внутри модели Laravel Eloquent? - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть пользовательский атрибут, который я должен показывать только авторизованным пользователям с определенными ролями:

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')

Но как я могу сделать это внутри модели?

1 Ответ

0 голосов
/ 27 сентября 2019

Вы можете напрямую пройти охрану вспомогательным методом

$user = auth('api')->user();

Или Фасад

use Illuminate\Support\Facades\Auth;
Auth::guard('api')->user();
...