【Laravel8】sanctumを利用しているユーザーのabilityを取得する方法

Laravelでログイン中のユーザーのabilityがわからなかったので調べる方法を記述しますね。

前提としてsanctumを使った認証機能はすでに作成されている前提で進めていきます。

sanctumを利用した認証については過去に記事に載せたので。

ほんなら進めていきます~

事前準備

routing

ログイン中のユーザーのabilityを確認する必要があるので、Route::middleware('auth:sanctum')でログイン中のユーザーしかアクセスできないroutingを作成しましょう。

//sanctum認証 Route::middleware('auth:sanctum')->group(function(){ Route::get('user/test', [UserController::class, 'test']); });
Code language: PHP (php)

controller

/user/testにアクセスすると、以下のcontrollerからログイン中ユーザーの情報を取得するようにします。

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\User; use Validator; use Storage; use Illuminate\Support\Facades\Auth; class UserController extends Controller { public function test() { return auth()->user()->currentAccessToken(); } }
Code language: HTML, XML (xml)

abilityを取得

testメソッドの中身

改めてController内でユーザー情報を取得したところだけをまとめてみますね。

auth()->user()->currentAccessToken(); //認証中ユーザーのすべての情報を取得 auth()->user()->currentAccessToken()->abilities; //abilityに絞って取得 //abilityの中に[admin]abilityがあるかチェック $abilities = auth()->user()->currentAccessToken()->abilities; in_array('admin', $abilities);
Code language: PHP (php)

ちなみにroutingでsanctum認証していなくても、tokenさえ持っていたら以下でもユーザー情報は取得できるっぽいぞ。

auth('sanctum')->user()->currentAccessToken();
Code language: PHP (php)

ってな感じでした。

まとめ

最近技術ブログに書くべきか、メモに残しておくべきかっていうのがすごく迷う。。。

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA