Files
KanbanGit/app/Http/Middleware/AuthenticateApiApplicationKey.php
T
Twyco bf0e50464a
linter / quality (pull_request) Successful in 1m19s
tests / ci (8.4) (pull_request) Successful in 1m32s
Add application API keys
2026-04-20 19:58:24 +02:00

45 lines
1.2 KiB
PHP

<?php
namespace App\Http\Middleware;
use App\Models\UserApplication;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Symfony\Component\HttpFoundation\Response;
class AuthenticateApiApplicationKey
{
/**
* Handle an incoming request.
*
* @param Closure(Request): (Response) $next
*/
public function handle(Request $request, Closure $next): Response
{
$plainTextKey = $request->bearerToken();
if ($plainTextKey === null || trim($plainTextKey) === '') {
return response()->json(['message' => 'Unauthenticated.'], 401);
}
$application = UserApplication::query()
->with('user')
->where('key_hash', UserApplication::hashKey($plainTextKey))
->first();
if ($application === null || $application->user === null) {
return response()->json(['message' => 'Unauthenticated.'], 401);
}
Auth::setUser($application->user);
$request->setUserResolver(fn () => $application->user);
$application->forceFill([
'last_used_at' => now(),
])->save();
return $next($request);
}
}