HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux ip-10-0-8-47 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:31:58 UTC 2024 aarch64
User: ubuntu (1000)
PHP: 8.1.2-1ubuntu2.22
Disabled: NONE
Upload Files
File: /var/www/javago-portal-updates/app/Http/Middleware/TokenAuthMiddleware.php
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
use Laravel\Sanctum\PersonalAccessToken;
use App\Models\Cafe; // Update with your actual user model

class TokenAuthMiddleware
{
    public function handle(Request $request, Closure $next): Response
    {
        // Get the token from custom header `x-access-token`
        $token = $request->header('x-access-token');

        if (empty($token)) {
            return response()->json(['error' => 'x-access-token header is missing or empty'], 401);
        }

        // Validate the token using Sanctum
        $accessToken = PersonalAccessToken::findToken($token);

        if (!$accessToken) {
            return response()->json(['error' => 'Invalid or expired token'], 401);
        }

        // Retrieve the user associated with the token
        $user = Cafe::find($accessToken->tokenable_id);

        if (!$user) {
            return response()->json(['error' => 'User not found or inactive'], 401);
        }

        // Inject user into the request for later use
        $request->merge(['user' => $user]);

        return $next($request);
    }
}