Skip to content

Commit f01ac27

Browse files
Initial commit
1 parent c0b59b4 commit f01ac27

File tree

91 files changed

+110956
-25489
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

91 files changed

+110956
-25489
lines changed

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
/node_modules
22
/public/hot
3+
/public/css
4+
/public/images
5+
/public/js
36
/public/storage
47
/storage/*.key
58
/vendor

app/Http/Controllers/Auth/LoginController.php

+33-17
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@
33
namespace App\Http\Controllers\Auth;
44

55
use App\Http\Controllers\Controller;
6-
use Illuminate\Foundation\Auth\AuthenticatesUsers;
6+
use Illuminate\Http\Request;
7+
use JWTAuth;
8+
use Tymon\JWTAuth\Exceptions\JWTException;
9+
use App\User;
710

811
class LoginController extends Controller
912
{
@@ -18,22 +21,35 @@ class LoginController extends Controller
1821
|
1922
*/
2023

21-
use AuthenticatesUsers;
22-
23-
/**
24-
* Where to redirect users after login.
25-
*
26-
* @var string
27-
*/
28-
protected $redirectTo = '/home';
29-
30-
/**
31-
* Create a new controller instance.
32-
*
33-
* @return void
34-
*/
35-
public function __construct()
24+
public function login(Request $request)
3625
{
37-
$this->middleware('guest')->except('logout');
26+
// grab credentials from the request
27+
$credentials = $request->only('email', 'password');
28+
29+
try {
30+
// attempt to verify the credentials and create a token for the user
31+
if (! $token = JWTAuth::attempt($credentials)) {
32+
return response()->json([
33+
"error" => "invalid_credentials",
34+
"message" => "The user credentials were incorrect."
35+
], 401);
36+
}
37+
} catch (JWTException $e) {
38+
// something went wrong whilst attempting to encode the token
39+
return response()->json([
40+
"error" => "could_not_create_token",
41+
"message" => "Enable to process request."
42+
], 422);
43+
}
44+
45+
// all good so return the token
46+
$user = User::where('email', $request->get('email'))->get();
47+
return response()->json([
48+
'user' => $user,
49+
'token' => $token,
50+
],200);
51+
3852
}
53+
54+
3955
}

app/Http/Controllers/Auth/RegisterController.php

+28-42
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,11 @@
44

55
use App\User;
66
use App\Http\Controllers\Controller;
7-
use Illuminate\Support\Facades\Validator;
8-
use Illuminate\Foundation\Auth\RegistersUsers;
7+
use Illuminate\Http\Request;
8+
use Illuminate\Support\Facades\Hash;
9+
use Mockery\Exception;
10+
use Validator;
11+
912

1013
class RegisterController extends Controller
1114
{
@@ -20,52 +23,35 @@ class RegisterController extends Controller
2023
|
2124
*/
2225

23-
use RegistersUsers;
24-
25-
/**
26-
* Where to redirect users after registration.
27-
*
28-
* @var string
29-
*/
30-
protected $redirectTo = '/home';
31-
32-
/**
33-
* Create a new controller instance.
34-
*
35-
* @return void
36-
*/
37-
public function __construct()
38-
{
39-
$this->middleware('guest');
40-
}
4126

42-
/**
43-
* Get a validator for an incoming registration request.
44-
*
45-
* @param array $data
46-
* @return \Illuminate\Contracts\Validation\Validator
47-
*/
48-
protected function validator(array $data)
27+
public function register(Request $request)
4928
{
50-
return Validator::make($data, [
29+
$validator = Validator::make($request->all(),[
5130
'name' => 'required|string|max:255',
5231
'email' => 'required|string|email|max:255|unique:users',
5332
'password' => 'required|string|min:6|confirmed',
5433
]);
55-
}
5634

57-
/**
58-
* Create a new user instance after a valid registration.
59-
*
60-
* @param array $data
61-
* @return \App\User
62-
*/
63-
protected function create(array $data)
64-
{
65-
return User::create([
66-
'name' => $data['name'],
67-
'email' => $data['email'],
68-
'password' => bcrypt($data['password']),
69-
]);
35+
if($validator->fails()){
36+
return response()->json([
37+
"error" => 'validation_error',
38+
"message" => $validator->errors(),
39+
], 422);
40+
}
41+
42+
$request->merge(['password' => Hash::make($request->password)]);
43+
try{
44+
User::create($request->all());
45+
return response()->json(['status','registered successfully'],200);
46+
}
47+
catch(Exception $e){
48+
return response()->json([
49+
"error" => "could_not_register",
50+
"message" => "Unable to register user"
51+
], 400);
52+
}
53+
7054
}
55+
56+
7157
}

app/Http/Kernel.php

+1-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ class Kernel extends HttpKernel
1919
\App\Http\Middleware\TrimStrings::class,
2020
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
2121
\App\Http\Middleware\TrustProxies::class,
22-
2322
];
2423

2524
/**
@@ -58,6 +57,6 @@ class Kernel extends HttpKernel
5857
'can' => \Illuminate\Auth\Middleware\Authorize::class,
5958
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
6059
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
61-
'jwt.auth' => \App\Http\Middleware\VerifyJWTToken::class,
60+
'jwt_auth' => \App\Http\Middleware\VerifyJwtToken::class
6261
];
6362
}

app/Http/Middleware/VerifyJWTToken.php

+24-14
Original file line numberDiff line numberDiff line change
@@ -4,32 +4,42 @@
44

55
use Closure;
66
use JWTAuth;
7+
use Tymon\JWTAuth\Exceptions\TokenExpiredException;
78
use Tymon\JWTAuth\Exceptions\JWTException;
8-
use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException;
99

10-
11-
class VerifyJWTToken
10+
class VerifyJwtToken
1211
{
1312
/**
1413
* Handle an incoming request.
1514
*
16-
* @param \Illuminate\Http\Request $request
17-
* @param \Closure $next
15+
* @param \Illuminate\Http\Request $request
16+
* @param \Closure $next
1817
* @return mixed
1918
*/
2019
public function handle($request, Closure $next)
2120
{
22-
try{
23-
$user = JWTAuth::toUser($request->input('token'));
24-
}catch (JWTException $e) {
25-
if($e instanceof \Tymon\JWTAuth\Exceptions\TokenExpiredException) {
26-
return response()->json(['token_expired'], $e->getStatusCode());
27-
}else if ($e instanceof \Tymon\JWTAuth\Exceptions\TokenInvalidException) {
28-
return response()->json(['token_invalid'], $e->getStatusCode());
29-
}else{
30-
return response()->json(['error'=>'Token is required']);
21+
try {
22+
23+
if (!$user = JWTAuth::parseToken()->authenticate()) {
24+
return response()->json(['user_not_found'], 404);
3125
}
26+
27+
} catch (JWTException $e) {
28+
return response()->json(['error' => 'invalid token'], $e->getStatusCode());
29+
} catch (TokenExpiredException $e) {
30+
31+
return response()->json(['token_expired'], $e->getStatusCode());
32+
33+
} catch (TokenInvalidException $e) {
34+
35+
return response()->json(['token_invalid'], $e->getStatusCode());
36+
37+
} catch (JWTException $e) {
38+
39+
return response()->json(['token_absent'], $e->getStatusCode());
40+
3241
}
42+
3343
return $next($request);
3444
}
3545
}

0 commit comments

Comments
 (0)