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": { "require": {
"php": ">=8.0", "php": ">=8.0",
"laravel/framework": "*", "laravel/framework": "*",
"laravel/sanctum": "^4.2",
"spatie/once": "*" "spatie/once": "*"
}, },
"require-dev": { "require-dev": {
@ -45,23 +46,15 @@
"psr-4": {} "psr-4": {}
}, },
"scripts": { "scripts": {
"post-autoload-dump": [ "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",
"serve": [ "serve": [
"Composer\\Config::disableProcessTimeout", "Composer\\Config::disableProcessTimeout",
"@build", "@build"
"@php vendor/bin/testbench serve --ansi"
], ],
"lint": [ "lint": [
"@php vendor/bin/pint --ansi" "@php vendor/bin/pint --ansi"
], ],
"test": [ "test": [
"@clear",
"@php vendor/bin/phpunit" "@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);
}
}