I am accessing a PayPalController
through routes in routes/api.php
but when I try to check if a user is authenticated, it returns null
.
PayPalController
:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Srmklive\PayPal\Service\Paypal;
class PayPalController extends Controller
{
public function create(Request $request)
{
// returns null
$id = Auth::id();
// can't read "id" of null
$id = auth('api')->user()->id;
}
}
routes/api.php
:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::post('/paypal/order/create', [PayPalController::class, 'create']);
I've tried creating an api guard
in config/auth.php
and using it like so:
auth('api')->user()->id
but it changes nothing.
Edit:
A user is authenticated and it still returns null.
My Answer:
php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class PayPalController extends Controller
{
public function processPayment(Request $request)
{
if (Auth::check()) {
// User is authenticated
return response()->json(['message' => 'User is authenticated']);
} else {
// User is not authenticated
return response()->json(['message' => 'User is not authenticated']);
}
}
}
In order to access the Auth facade in a controller, make sure that the controller extends the `Controller` class provided by Laravel. Also, ensure that you are using the correct namespace for the `Auth` facade. If you are still facing issues with the Auth facade returning null, you may need to check your authentication setup and configuration in your Laravel application.
Rate this post
5 of 5 based on 2120 votesComments