Skip to content

Commit 14304d6

Browse files
authored
Merge pull request #373 from vidhyut-pandya/use_passport_for_api
Use passport for API
2 parents fc72d85 + 64153d4 commit 14304d6

File tree

14 files changed

+586
-476
lines changed

14 files changed

+586
-476
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,9 @@ You can now access the server at http://localhost:8000
107107
npm run development
108108
php artisan storage:link
109109
php artisan key:generate
110-
php artisan jwt:secret
111110
php artisan vendor:publish --tag=lfm_public
111+
php artisan migrate
112+
php artisan passport:install
112113

113114
## Please note
114115

app/Exceptions/Handler.php

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -90,11 +90,6 @@ public function render($request, Exception $exception)
9090
switch (get_class($exception->getPrevious())) {
9191
case \App\Exceptions\Handler::class:
9292
return $this->setStatusCode($exception->getStatusCode())->respondWithError('Token has not been provided.');
93-
case \Tymon\JWTAuth\Exceptions\TokenExpiredException::class:
94-
return $this->setStatusCode($exception->getStatusCode())->respondWithError('Token has expired.');
95-
case \Tymon\JWTAuth\Exceptions\TokenInvalidException::class:
96-
case \Tymon\JWTAuth\Exceptions\TokenBlacklistedException::class:
97-
return $this->setStatusCode($exception->getStatusCode())->respondWithError('Token is invalid.');
9893
}
9994
}
10095
}

app/Http/Controllers/Api/V1/AuthController.php

Lines changed: 23 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,8 @@
22

33
namespace App\Http\Controllers\Api\V1;
44

5-
use App\Models\Access\User\User;
65
use Illuminate\Http\Request;
76
use Illuminate\Support\Facades\Auth;
8-
use Tymon\JWTAuth\Exceptions\JWTException;
97
use Validator;
108

119
class AuthController extends APIController
@@ -31,14 +29,26 @@ public function login(Request $request)
3129
$credentials = $request->only(['email', 'password']);
3230

3331
try {
34-
if (!$token = auth('api')->attempt($credentials)) {
32+
if (!Auth::attempt($credentials)) {
3533
return $this->throwValidation(trans('api.messages.login.failed'));
3634
}
37-
} catch (JWTException $e) {
35+
36+
$user = $request->user();
37+
38+
$passportToken = $user->createToken('API Access Token');
39+
40+
// Save generated token
41+
$passportToken->token->save();
42+
43+
$token = $passportToken->accessToken;
44+
} catch (\Exception $e) {
3845
return $this->respondInternalError($e->getMessage());
3946
}
4047

41-
return $token;
48+
return $this->respond([
49+
'message' => trans('api.messages.login.success'),
50+
'token' => $token,
51+
]);
4252
}
4353

4454
/**
@@ -56,95 +66,16 @@ public function me()
5666
*
5767
* @return \Illuminate\Http\JsonResponse
5868
*/
59-
public function logout()
60-
{
61-
$this->guard()->logout();
62-
63-
return response()->json(['message' => 'Successfully logged out']);
64-
}
65-
66-
/**
67-
* Refresh a token.
68-
*
69-
* @return \Illuminate\Http\JsonResponse
70-
*/
71-
public function refresh()
69+
public function logout(Request $request)
7270
{
73-
return $this->respondWithToken($this->guard()->refresh());
74-
}
75-
76-
/**
77-
* Get the token array structure.
78-
*
79-
* @param string $token
80-
*
81-
* @return \Illuminate\Http\JsonResponse
82-
*/
83-
protected function respondWithToken($token)
84-
{
85-
return $token;
71+
try {
72+
$request->user()->token()->revoke();
73+
} catch (\Exception $e) {
74+
return $this->respondInternalError($e->getMessage());
75+
}
8676

87-
return response()->json([
88-
'access_token' => $token,
89-
// 'token_type' => 'bearer',
90-
// 'expires_in' => $this->guard()->factory()->getTTL() * 60
77+
return $this->respond([
78+
'message' => trans('api.messages.logout.success'),
9179
]);
9280
}
93-
94-
/**
95-
* Get the guard to be used during authentication.
96-
*
97-
* @return \Illuminate\Contracts\Auth\Guard
98-
*/
99-
public function guard()
100-
{
101-
return Auth::guard('api');
102-
}
103-
104-
/*
105-
* Log the user out (Invalidate the token).
106-
*
107-
* @return \Illuminate\Http\JsonResponse
108-
*/
109-
// public function logout()
110-
// {
111-
// try {
112-
// $token = JWTAuth::getToken();
113-
114-
// if ($token) {
115-
// JWTAuth::invalidate($token);
116-
// }
117-
// } catch (JWTException $e) {
118-
// return $this->respondInternalError($e->getMessage());
119-
// }
120-
121-
// return $this->respond([
122-
// 'message' => trans('api.messages.logout.success'),
123-
// ]);
124-
// }
125-
126-
/*
127-
* Refresh a token.
128-
*
129-
* @return \Illuminate\Http\JsonResponse
130-
*/
131-
// public function refresh()
132-
// {
133-
// $token = JWTAuth::getToken();
134-
135-
// if (!$token) {
136-
// $this->respondUnauthorized(trans('api.messages.refresh.token.not_provided'));
137-
// }
138-
139-
// try {
140-
// $refreshedToken = JWTAuth::refresh($token);
141-
// } catch (JWTException $e) {
142-
// return $this->respondInternalError($e->getMessage());
143-
// }
144-
145-
// return $this->respond([
146-
// 'status' => trans('api.messages.refresh.status'),
147-
// 'token' => $refreshedToken,
148-
// ]);
149-
// }
15081
}

app/Http/Controllers/Api/V1/RegisterController.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@
22

33
namespace App\Http\Controllers\Api\V1;
44

5-
use App\Models\User\User;
65
use App\Repositories\Frontend\Access\User\UserRepository;
76
use Config;
87
use Illuminate\Http\Request;
9-
use JWTAuth;
108
use Validator;
119

1210
class RegisterController extends APIController
@@ -53,7 +51,12 @@ public function register(Request $request)
5351
]);
5452
}
5553

56-
$token = JWTAuth::fromUser($user);
54+
$passportToken = $user->createToken('API Access Token');
55+
56+
// Save generated token
57+
$passportToken->token->save();
58+
59+
$token = $passportToken->accessToken;
5760

5861
return $this->respondCreated([
5962
'message' => trans('api.messages.registeration.success'),

app/Http/Kernel.php

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
namespace App\Http;
44

55
use Illuminate\Foundation\Http\Kernel as HttpKernel;
6-
use Tymon\JWTAuth\Middleware\GetUserFromToken;
7-
use Tymon\JWTAuth\Middleware\RefreshToken;
86

97
/**
108
* Class Kernel.
@@ -76,7 +74,5 @@ class Kernel extends HttpKernel
7674
*/
7775
'access.routeNeedsRole' => \App\Http\Middleware\RouteNeedsRole::class,
7876
'access.routeNeedsPermission' => \App\Http\Middleware\RouteNeedsPermission::class,
79-
'jwt.auth' => GetUserFromToken::class,
80-
'jwt.refresh' => RefreshToken::class,
8177
];
8278
}

app/Models/Access/User/User.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,21 @@
1010
use Illuminate\Database\Eloquent\SoftDeletes;
1111
use Illuminate\Foundation\Auth\User as Authenticatable;
1212
use Illuminate\Notifications\Notifiable;
13-
use Tymon\JWTAuth\Contracts\JWTSubject;
13+
use Laravel\Passport\HasApiTokens;
1414

1515
/**
1616
* Class User.
1717
*/
18-
class User extends Authenticatable implements JWTSubject
18+
class User extends Authenticatable
1919
{
2020
use UserScope,
2121
UserAccess,
2222
Notifiable,
2323
SoftDeletes,
2424
UserAttribute,
2525
UserRelationship,
26-
UserSendPasswordReset;
26+
UserSendPasswordReset,
27+
HasApiTokens;
2728
/**
2829
* The database table used by the model.
2930
*

app/Providers/AuthServiceProvider.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace App\Providers;
44

55
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
6+
use Laravel\Passport\Passport;
67

78
/**
89
* Class AuthServiceProvider.
@@ -27,6 +28,6 @@ public function boot()
2728
{
2829
$this->registerPolicies();
2930

30-
//
31+
Passport::routes();
3132
}
3233
}

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@
2020
"fideloper/proxy": "^4.0",
2121
"hieu-le/active": "^3.5",
2222
"laravel/framework": "5.8.*",
23+
"laravel/passport": "^7.2",
2324
"laravel/socialite": "^3.0",
2425
"laravel/tinker": "~1.0",
2526
"laravelcollective/html": "^5.4.0",
2627
"spatie/laravel-cors": "^1.2",
27-
"tymon/jwt-auth": "2.0.x-dev",
2828
"unisharp/laravel-filemanager": "~1.8",
2929
"yajra/laravel-datatables-oracle": "~9.0"
3030
},

0 commit comments

Comments
 (0)