How can retrive current user id on Laravel 8 api controller?

Viewed 679

i searched everywhere for solution, the problem is that i need current user logged id in my api controller. in the api controller i put the middleware api. Here is the code of ApiController.php:

 public function __construct()
{
    $this->middleware('auth:api');
}
public function createcorso(Request $request)
{

    $corsoscii = new CorsoScii();

    $corsoscii->tipo = $request->input('tipo');
    $corsoscii->nome = $request->input('nome');
    $corsoscii->membriMax = $request->input('membriMax');
    $corsoscii->orario_inizio = $request->input('orario_inizio');
    $corsoscii->orario_fine = $request->input('orario_fine');
    $corsoscii->inizio = $request->input('inizio');
    $corsoscii->fine = $request->input('fine');

    $corsoscii->save();

    $idUtente =  $request->user('api')->id;  
    $idCorso = CorsoScii::latest()->first();
    DB::table('iscrizione')->insert(
        array('idUtente' => $idUtente, 'idCorso' => $idCorso)
    );
    return response()->json($corsoscii);
}

This is the api.php routes:

Auth::routes();

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});


//Operazioni di gestione e creazione corso scii per maestri
Route::post('/tipo', [App\Http\Controllers\ApiController::class, 'createtipo']);
Route::post('/corso', [App\Http\Controllers\ApiController::class, 'createcorso']);
Route::get('/mostracorsi', [App\Http\Controllers\ApiController::class, 'mostracorsi']);
Route::get('/mostracorso/{idCorso}', [App\Http\Controllers\ApiController::class, 'mostracorso']);
Route::put('/updatecorso/{idCorso}', [App\Http\Controllers\ApiController::class, 'updatecorso']);
Route::delete('/deletecorso/{idCorso}', [App\Http\Controllers\ApiController::class, 'deletecorso']);

//Operazioni di gestione prenotazioni ed iscrizioni per clienti impianto scii
Route::post('/iscrizione', [App\Http\Controllers\ApiController::class, 'iscrizione']);
Route::get('/vedicorso/{idCorso}', [App\Http\Controllers\ApiController::class, 'vedicorso']);
Route::delete('/deleteiscrizione/{idUtente}', [App\Http\Controllers\ApiController::class, 'deleteiscrizione']);

Auth::routes();

When i tried to insert data on a form it gives me this error: enter image description here

User not authenthicated even if is not true. Maybe something is wrong in the middleware configuration.

1 Answers

If you want to retrieve the logged in user detail

you can access it as below

auth()->user()->id

But that will return some id when the user is logged in already. you can use

JWT, Passport etc for API authentication.

Related