This example shows how to register and login users to get API tokens. The /profile route is protected and returns user info only if the token is valid.
<?php
// routes/api.php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use App\Models\User;
use Illuminate\Support\Facades\Route;
// Register user and return token
Route::post('/register', function (Request $request) {
$user = User::create([
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password),
]);
$token = $user->createToken('api-token')->plainTextToken;
return ['token' => $token];
});
// Login user and return token
Route::post('/login', function (Request $request) {
$user = User::where('email', $request->email)->first();
if (! $user || ! Hash::check($request->password, $user->password)) {
return response(['message' => 'Invalid credentials'], 401);
}
$token = $user->createToken('api-token')->plainTextToken;
return ['token' => $token];
});
// Protected route
Route::middleware('auth:sanctum')->get('/profile', function (Request $request) {
return $request->user();
});