Skip to content

Commit 06f280d

Browse files
committed
Middleware for Api Authenticate
1 parent 1ec5c5a commit 06f280d

File tree

5 files changed

+39
-27
lines changed

5 files changed

+39
-27
lines changed

app/Http/Controllers/API/Auth/LoginController.php

+8-13
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ public function login(AuthRequest $request): JsonResponse
1818
{
1919
if (Auth::attempt($request->all())) {
2020
$user = Auth::user();
21+
22+
$user->tokens()->delete();
23+
2124
$success = $user->createToken('MyApp')->plainTextToken;
2225

2326
return $this->sendResponse(['token' => $success], AuthConstants::LOGIN);
@@ -31,28 +34,20 @@ public function login(AuthRequest $request): JsonResponse
3134
*/
3235
public function logout(): JsonResponse
3336
{
34-
if (Auth::check()) {
35-
$user = Auth::user();
36-
37-
$user->tokens()->delete();
37+
$user = Auth::user();
3838

39-
return $this->sendResponse([], AuthConstants::LOGOUT);
40-
}
39+
$user->tokens()->delete();
4140

42-
return $this->sendError(AuthConstants::UNAUTHORIZED);
41+
return $this->sendResponse([], AuthConstants::LOGOUT);
4342
}
4443

4544
/**
4645
* @return JsonResponse
4746
*/
4847
public function details(): JsonResponse
4948
{
50-
if (Auth::check()) {
51-
$user = Auth::user();
52-
53-
return $this->sendResponse($user->toArray(), '');
54-
}
49+
$user = Auth::user();
5550

56-
return $this->sendError(AuthConstants::UNAUTHORIZED);
51+
return $this->sendResponse($user->toArray(), '');
5752
}
5853
}

app/Http/Kernel.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ class Kernel extends HttpKernel
4040

4141
'api' => [
4242
\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
43-
\Illuminate\Routing\Middleware\ThrottleRequests::class.':api',
43+
\Illuminate\Routing\Middleware\ThrottleRequests::class . ':api',
4444
\Illuminate\Routing\Middleware\SubstituteBindings::class,
4545
],
4646
];
@@ -63,5 +63,6 @@ class Kernel extends HttpKernel
6363
'signed' => \App\Http\Middleware\ValidateSignature::class,
6464
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
6565
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
66+
'api.auth' => \App\Http\Middleware\ApiAuthenticate::class,
6667
];
6768
}
+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php
2+
3+
namespace App\Http\Middleware;
4+
5+
use App\Http\Controllers\API\BaseController;
6+
use Closure;
7+
use Illuminate\Http\Request;
8+
use Symfony\Component\HttpFoundation\Response;
9+
use App\Constants\AuthConstants;
10+
use Illuminate\Support\Facades\Auth;
11+
12+
class ApiAuthenticate extends BaseController
13+
{
14+
/**
15+
* @param Request $request
16+
* @param Closure $next
17+
* @return Response
18+
*/
19+
public function handle(Request $request, Closure $next): Response
20+
{
21+
if ($user = auth('sanctum')->user()) {
22+
Auth::login($user);
23+
return $next($request);
24+
}
25+
26+
return $this->sendError(AuthConstants::UNAUTHORIZED);
27+
}
28+
}

app/Http/Middleware/Authenticate.php

-9
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,6 @@
77

88
class Authenticate extends Middleware
99
{
10-
/**
11-
* @param [type] $request
12-
* @param array $guards
13-
* @return void
14-
*/
15-
protected function unauthenticated($request, array $guards)
16-
{
17-
}
18-
1910
/**
2011
* Get the path the user should be redirected to when they are not authenticated.
2112
*/

routes/api.php

+1-4
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,11 @@
1818
|
1919
*/
2020

21-
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
22-
return $request->user();
23-
});
2421

2522
Route::post('login', [LoginController::class, 'login']);
2623
Route::post('register', [RegisterController::class, 'index']);
2724

28-
Route::group(['middleware' => 'auth:sanctum'], function () {
25+
Route::group(['middleware' => 'api.auth'], function () {
2926
Route::get('user', [LoginController::class, 'details']);
3027
Route::get('logout', [LoginController::class, 'logout']);
3128

0 commit comments

Comments
 (0)