Laravel sanctum scope for nuxt js frontend - PullRequest
0 голосов
/ 01 мая 2020

Итак, я пытаюсь установить sh какую-то политику между внешним и внутренним интерфейсом, все работает нормально, однако я немного запутался в том, чтобы объявить область действия для пользователей моего приложения

ApiSessionController.php

public function login(Request $request)
{
    $email = $request->get('email');
    $password = $request->get('password');
    $user = User::where('email', $email)->first();
    $token = $user->createToken(
        'token',
        ['role' => $user->getRoleNames()->first()]
    );

    if (Auth::attempt(['email' => $email, 'password' => $password])) {
        return response()->json('', 204);
    } else {
        return response()->json('Invalid credentials', 403);
    }
}

Я понимаю, что этот код в настоящее время не использует токен, однако я не вижу изменений, когда я

return response () -> json ($ token, 200);


Nuxt.js frontend default.vue

<v-btn v-if="this.$auth.hasScope('admin')">admin</v-btn>
<v-btn v-else>No admin</v-btn>

Теперь я прочитал https://laravel.com/docs/7.x/sanctum много-много раз - и

Route::middleware('auth:sanctum')->get('/user', function(Request $request) {
   return $request->user();
});

возвращает моего пользователя в порядке, однако я понятия не имею, как создать область в бэкэнде через токен (я полагаю?) и доступ к этой области во внешнем интерфейсе nuxt js.

1 Ответ

0 голосов
/ 04 мая 2020

На данный момент найдено решение :) Объяснение: Задайте область, когда nuxt js извлекает информацию о вашем пользователе из laravel GET вызова пользователя

Route::middleware('auth:sanctum')->get('/user', function(Request $request) {
 $user = $request->user();
 $user['scope'] = $user->insertScopeMethod();
 return $user;
});
...