'Requests check if user is authenticated or not
I was asked to check if the user is logged in or not I have been given a sample code
public function getAllNfts(GetAllNfts $request): JsonResponse
{
$data = $request->getData();
$data['uuid'] = ($request->hasHeader('Authorization') && $request->header('Authorization')) ? $this->token_service->getUserUUIDFromToken($request) : null;
$requested_uuid = $request->getRequestedUUID();
return $this->nft_service->getAllNfts(uuid: $requested_uuid, data: $data);
}
But I do not have uuid for my code when I work on the admin and json is not used because it is in the admin panel This is my code
public function updateCollection(EditCollection $request):RedirectResponse
{
$request->validated();
$data = $request->all();
$this->collection_repository->updateCollection($data);
return redirect('collections');
}
THis is FOrm Request Validate EditCollection.php
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class EditCollection extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'title' => ['required', 'string','max:255', 'min:10', 'between:10,255'],
'status' => ['required','Boolean','size:1'],
];
}
}
How to check all requests to see if the user is authenticated And not contrary to the sample code
Solution 1:[1]
I think you don't need to check for each request as long as you're using Laravel's Middleware. Take a look at this doc.
Solution 2:[2]
You can try something like this $data->user_id = Auth::id();
and then import this statement, use Illuminate\Support\Facades\Auth;
Solution 3:[3]
I think for your case you can use form request class to check before process that request
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class EditCollection extends FormRequest
{
public function authorize()
{
return auth()->check();
}
public function rules()
{
return [
'title' => ['required', 'string','max:255', 'min:10', 'between:10,255'],
'status' => ['required','Boolean','size:1'],
];
}
}
Add this lines to the all request that you need to validate if the user is logged
public function authorize()
{
return auth()->check();
}
I hope its helps you
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Jed |
Solution 2 | Brian Mweu |
Solution 3 | Saravana Sai |