A sanctum & AuthenticateByBearerTokenMiddleware
This commit is contained in:
parent
ab6d2f29d2
commit
67a51602c4
|
|
@ -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,24 +46,16 @@
|
||||||
"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"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue