Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit dc54bee

Browse files
committed
auth controllers
1 parent 82b6fc5 commit dc54bee

File tree

3 files changed

+75
-44
lines changed

3 files changed

+75
-44
lines changed

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

Lines changed: 48 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,17 @@
22

33
namespace App\Http\Controllers\Auth;
44

5+
use App\Exceptions\VerifyEmailException;
56
use App\Http\Controllers\Controller;
6-
use App\Providers\RouteServiceProvider;
7+
use Illuminate\Contracts\Auth\MustVerifyEmail;
78
use Illuminate\Foundation\Auth\AuthenticatesUsers;
9+
use Illuminate\Http\Request;
10+
use Illuminate\Validation\ValidationException;
811

912
class LoginController extends Controller
1013
{
11-
/*
12-
|--------------------------------------------------------------------------
13-
| Login Controller
14-
|--------------------------------------------------------------------------
15-
|
16-
| This controller handles authenticating users for the application and
17-
| redirecting them to your home screen. The controller uses a trait
18-
| to conveniently provide its functionality to your applications.
19-
|
20-
*/
21-
2214
use AuthenticatesUsers;
2315

24-
/**
25-
* Where to redirect users after login.
26-
*
27-
* @var string
28-
*/
29-
protected $redirectTo = RouteServiceProvider::HOME;
30-
3116
/**
3217
* Create a new controller instance.
3318
*
@@ -39,56 +24,76 @@ public function __construct()
3924
}
4025

4126
/**
42-
* Get a JWT via given credentials.
27+
* Attempt to log the user into the application.
4328
*
44-
* @return \Illuminate\Http\JsonResponse
29+
* @param \Illuminate\Http\Request $request
30+
* @return bool
4531
*/
46-
public function login()
32+
protected function attemptLogin(Request$request)
4733
{
48-
$credentials = request(['email', 'password']);
34+
$token = auth('api')->attempt($this->credentials($request));
4935

50-
if (! $token = auth()->attempt($credentials)) {
51-
return response()->json(['error' => 'Unauthorized'], 401);
36+
if (! $token) {
37+
return false;
5238
}
5339

54-
return $this->respondWithToken($token);
40+
$user = auth('api')->user();
41+
if ($user instanceof MustVerifyEmail && ! $user->hasVerifiedEmail()) {
42+
return false;
43+
}
44+
auth('api')->setToken($token);
45+
46+
return true;
5547
}
5648

5749
/**
58-
* Refresh a token.
50+
* Send the response after the user was authenticated.
5951
*
52+
* @param \Illuminate\Http\Request $request
6053
* @return \Illuminate\Http\JsonResponse
6154
*/
62-
public function refresh()
55+
protected function sendLoginResponse(Request$request)
6356
{
64-
return $this->respondWithToken(auth()->refresh());
57+
$this->clearLoginAttempts($request);
58+
59+
$token = (string) auth('api')->getToken();
60+
$expiration = auth('api')->getPayload()->get('exp');
61+
62+
return response()->json([
63+
'token' => $token,
64+
'token_type' => 'bearer',
65+
'expires_in' => $expiration - time(),
66+
]);
6567
}
6668

6769
/**
68-
* Get the token array structure.
69-
*
70-
* @param string $token
70+
* Get the failed login response instance.
7171
*
72+
* @param \Illuminate\Http\Request $request
7273
* @return \Illuminate\Http\JsonResponse
74+
*
75+
* @throws \Illuminate\Validation\ValidationException
7376
*/
74-
protected function respondWithToken($token)
77+
protected function sendFailedLoginResponse(Request$request)
7578
{
76-
return response()->json([
77-
'access_token' => $token,
78-
'token_type' => 'bearer',
79-
'expires_in' => auth('api')->factory()->getTTL() * 60
79+
$user = auth('api')->user();
80+
if ($user instanceof MustVerifyEmail && ! $user->hasVerifiedEmail()) {
81+
throw VerifyEmailException::forUser($user);
82+
}
83+
84+
throw ValidationException::withMessages([
85+
$this->username() => [trans('auth.failed')],
8086
]);
8187
}
8288

8389
/**
84-
* Log the user out (Invalidate the token).
90+
* Log the user out of the application.
8591
*
86-
* @return \Illuminate\Http\JsonResponse
92+
* @param \Illuminate\Http\Request $request
93+
* @return \Illuminate\Http\Response
8794
*/
88-
public function logout()
95+
public function logout(Request$request)
8996
{
90-
auth()->logout();
91-
92-
return response()->json(['message' => 'Successfully logged out']);
97+
auth('api')->logout();
9398
}
9499
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\Auth;
4+
5+
use App\Http\Controllers\Controller;
6+
use Illuminate\Http\Request;
7+
8+
class UserController extends Controller
9+
{
10+
/**
11+
* Get authenticated user.
12+
*
13+
* @param \Illuminate\Http\Request $request
14+
* @return \Illuminate\Http\JsonResponse
15+
*/
16+
public function current(Request $request)
17+
{
18+
return response()->json($request->user());
19+
}
20+
}

‎routes/api.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
use Illuminate\Support\Facades\Route;
55
use App\Http\Controllers\Auth\LoginController;
66
use App\Http\Controllers\Auth\RegisterController;
7+
use App\Http\Controllers\Auth\UserController;
78

89
/*
910
|--------------------------------------------------------------------------
@@ -20,8 +21,13 @@
2021
// return $request->user();
2122
// });
2223

24+
Route::group(['middleware' => 'auth:api'], function () {
25+
Route::post('logout', [LoginController::class, 'logout']);
26+
27+
Route::get('user', [UserController::class, 'current']);
28+
});
29+
2330
Route::group(['middleware' => 'guest:api'], function () {
2431
Route::post('login', [LoginController::class, 'login']);
25-
Route::post('logout', [LoginController::class, 'logout']);
2632
Route::post('register', [RegisterController::class, 'register']);
2733
});

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /