A sanctum & AuthenticateByBearerTokenMiddleware

This commit is contained in:
Fabian Wagner 2025-12-01 16:59:45 +01:00
parent ab6d2f29d2
commit 67a51602c4
2 changed files with 42 additions and 11 deletions

View File

@ -27,6 +27,7 @@
"require": {
"php": ">=8.0",
"laravel/framework": "*",
"laravel/sanctum": "^4.2",
"spatie/once": "*"
},
"require-dev": {
@ -45,24 +46,16 @@
"psr-4": {}
},
"scripts": {
"post-autoload-dump": [
"@clear",
"@prepare"
],
"clear": "@php vendor/bin/testbench package:purge-skeleton --ansi",
"prepare": "@php vendor/bin/testbench package:discover --ansi",
"build": "@php vendor/bin/testbench workbench:build --ansi",
"post-autoload-dump": [],
"serve": [
"Composer\\Config::disableProcessTimeout",
"@build",
"@php vendor/bin/testbench serve --ansi"
"@build"
],
"lint": [
"@php vendor/bin/pint --ansi"
],
"test": [
"@clear",
"@php vendor/bin/phpunit"
]
}
}
}

View File

@ -0,0 +1,38 @@
<?php
namespace Blax\Workkit\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Symfony\Component\HttpFoundation\Response;
use Laravel\Sanctum\PersonalAccessToken;
class AuthenticateByBearerTokenMiddleware
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next): Response
{
try {
$bearer = request()->header('Authorization', $request->get('token'));
cache()->remember('bearer_' . $bearer, 1800, function () use ($bearer) {
$bearer = explode(' ', $bearer);
$bearer = end($bearer);
$tokenable = optional(PersonalAccessToken::findToken(@$bearer))->tokenable;
if ($tokenable) {
Auth::login($tokenable);
}
});
} catch (\Exception $e) {
}
return $next($request);
}
}