Skip to content

Commit 30c98fd

Browse files
committed
Change JWT configuration (WIP)
1 parent b788def commit 30c98fd

File tree

7 files changed

+174
-258
lines changed

7 files changed

+174
-258
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ Thumbs.db
1616
_ide_helper.php
1717
composer.phar
1818
error.log
19+
access.log
1920
Todo.rtf
2021
.vagrant
2122
/.vagrant

access.log

Lines changed: 0 additions & 151 deletions
This file was deleted.

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

Lines changed: 89 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
use App\Models\Access\User\User;
66
use Illuminate\Http\Request;
7-
use JWTAuth;
7+
use Illuminate\Support\Facades\Auth;
88
use Tymon\JWTAuth\Exceptions\JWTException;
99
use Validator;
1010

@@ -20,8 +20,8 @@ class AuthController extends APIController
2020
public function login(Request $request)
2121
{
2222
$validation = Validator::make($request->all(), [
23-
'email' => 'required|email',
24-
'password' => 'required|min:4',
23+
'email' => 'required|email',
24+
'password' => 'required|min:4',
2525
]);
2626

2727
if ($validation->fails()) {
@@ -31,17 +31,24 @@ public function login(Request $request)
3131
$credentials = $request->only(['email', 'password']);
3232

3333
try {
34-
if (!$token = JWTAuth::attempt($credentials)) {
34+
if (!$token = auth('api')->attempt($credentials)) {
3535
return $this->throwValidation(trans('api.messages.login.failed'));
3636
}
3737
} catch (JWTException $e) {
3838
return $this->respondInternalError($e->getMessage());
3939
}
4040

41-
return $this->respond([
42-
'message' => trans('api.messages.login.success'),
43-
'token' => $token,
44-
]);
41+
return $this->respondWithToken($token);
42+
}
43+
44+
/**
45+
* Get the authenticated User.
46+
*
47+
* @return \Illuminate\Http\JsonResponse
48+
*/
49+
public function me()
50+
{
51+
return response()->json($this->guard()->user());
4552
}
4653

4754
/**
@@ -51,19 +58,9 @@ public function login(Request $request)
5158
*/
5259
public function logout()
5360
{
54-
try {
55-
$token = JWTAuth::getToken();
61+
$this->guard()->logout();
5662

57-
if ($token) {
58-
JWTAuth::invalidate($token);
59-
}
60-
} catch (JWTException $e) {
61-
return $this->respondInternalError($e->getMessage());
62-
}
63-
64-
return $this->respond([
65-
'message' => trans('api.messages.logout.success'),
66-
]);
63+
return response()->json(['message' => 'Successfully logged out']);
6764
}
6865

6966
/**
@@ -73,21 +70,79 @@ public function logout()
7370
*/
7471
public function refresh()
7572
{
76-
$token = JWTAuth::getToken();
77-
78-
if (!$token) {
79-
$this->respondUnauthorized(trans('api.messages.refresh.token.not_provided'));
80-
}
81-
82-
try {
83-
$refreshedToken = JWTAuth::refresh($token);
84-
} catch (JWTException $e) {
85-
return $this->respondInternalError($e->getMessage());
86-
}
73+
return $this->respondWithToken($this->guard()->refresh());
74+
}
8775

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

app/Http/Kernel.php

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -63,20 +63,20 @@ class Kernel extends HttpKernel
6363
* @var array
6464
*/
6565
protected $routeMiddleware = [
66-
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
66+
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
6767
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
68-
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
69-
'can' => \Illuminate\Auth\Middleware\Authorize::class,
70-
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
71-
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
72-
'timeout' => \App\Http\Middleware\SessionTimeout::class,
68+
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
69+
'can' => \Illuminate\Auth\Middleware\Authorize::class,
70+
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
71+
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
72+
'timeout' => \App\Http\Middleware\SessionTimeout::class,
7373

7474
/*
7575
* Access Middleware
7676
*/
77-
'access.routeNeedsRole' => \App\Http\Middleware\RouteNeedsRole::class,
77+
'access.routeNeedsRole' => \App\Http\Middleware\RouteNeedsRole::class,
7878
'access.routeNeedsPermission' => \App\Http\Middleware\RouteNeedsPermission::class,
79-
'jwt.auth' => GetUserFromToken::class,
80-
'jwt.refresh' => RefreshToken::class,
79+
// 'jwt.auth' => GetUserFromToken::class,
80+
// 'jwt.refresh' => RefreshToken::class,
8181
];
8282
}

app/Models/Access/User/User.php

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,18 @@ public function getJWTIdentifier()
7878
return $this->getKey();
7979
}
8080

81+
/**
82+
* Set password attribute.
83+
*
84+
* @param [string] $password
85+
*/
86+
public function setPasswordAttribute($password)
87+
{
88+
if (!empty($password)) {
89+
$this->attributes['password'] = bcrypt($password);
90+
}
91+
}
92+
8193
/**
8294
* Return a key value array, containing any custom claims to be added to the JWT.
8395
*
@@ -86,17 +98,17 @@ public function getJWTIdentifier()
8698
public function getJWTCustomClaims()
8799
{
88100
return [
89-
'id' => $this->id,
90-
'first_name' => $this->first_name,
91-
'last_name' => $this->last_name,
92-
'email' => $this->email,
93-
'picture' => $this->getPicture(),
94-
'confirmed' => $this->confirmed,
95-
'role' => optional($this->roles()->first())->name,
96-
'permissions' => $this->permissions()->get(),
97-
'status' => $this->status,
98-
'created_at' => $this->created_at->toIso8601String(),
99-
'updated_at' => $this->updated_at->toIso8601String(),
101+
'id' => $this->id,
102+
'first_name' => $this->first_name,
103+
'last_name' => $this->last_name,
104+
'email' => $this->email,
105+
'picture' => $this->getPicture(),
106+
'confirmed' => $this->confirmed,
107+
'role' => optional($this->roles()->first())->name,
108+
'permissions' => $this->permissions()->get(),
109+
'status' => $this->status,
110+
'created_at' => $this->created_at->toIso8601String(),
111+
'updated_at' => $this->updated_at->toIso8601String(),
100112
];
101113
}
102114
}

0 commit comments

Comments
 (0)