This example shows a simple login route that creates a token, a protected route that returns user info if token is valid, and a logout route that deletes tokens.
<?php
use Illuminate\Support\Facades\Route;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
Route::post('/login', function (Request $request) {
$user = App\Models\User::where('email', $request->email)->first();
if (! $user || ! Hash::check($request->password, $user->password)) {
return response()->json(['message' => 'Invalid credentials'], 401);
}
$token = $user->createToken('api-token')->plainTextToken;
return response()->json(['token' => $token]);
});
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
Route::middleware('auth:sanctum')->post('/logout', function (Request $request) {
$request->user()->tokens()->delete();
return response()->json(['message' => 'Logged out']);
});