Skip to content

Commit 4a9021d

Browse files
committed
Add creating user token
1 parent ec66314 commit 4a9021d

File tree

5 files changed

+40
-28
lines changed

5 files changed

+40
-28
lines changed
+22-16
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,39 @@
11
<?php
22

3+
declare(strict_types=1);
4+
35
namespace CommunityWithLegends\Http\Controllers;
46

57
use CommunityWithLegends\Http\Requests\LoginRequest;
68
use CommunityWithLegends\Http\Requests\RegisterRequest;
79
use CommunityWithLegends\Models\User;
8-
use Illuminate\Http\RedirectResponse;
10+
use Illuminate\Http\JsonResponse;
911
use Illuminate\Http\Request;
1012
use Illuminate\Support\Facades\Auth;
1113
use Illuminate\Support\Facades\Hash;
1214
use Symfony\Component\HttpFoundation\Response as Status;
1315

1416
class AuthController extends Controller
1517
{
16-
public function login(LoginRequest $loginRequest): \Illuminate\Http\JsonResponse
18+
public function login(LoginRequest $loginRequest): JsonResponse
1719
{
18-
if (Auth::attempt($loginRequest->validated())) {
19-
$loginRequest->session()->regenerate();
20-
21-
return response()->json([
22-
"message" => "success",
23-
])->setStatusCode(Status::HTTP_OK);
20+
if (!Auth::attempt($loginRequest->validated())) {
21+
return response()->json([
22+
"message" => "The provided credentials do not match our records.",
23+
], Status::HTTP_FORBIDDEN);
2424
}
2525

26+
$user = Auth::user();
27+
$user->tokens()->delete();
28+
$token = $user->createToken('api-token')->plainTextToken;
29+
2630
return response()->json([
27-
"message" => "The provided credentials do not match our records.",
28-
])->setStatusCode(Status::HTTP_FORBIDDEN);
31+
"message" => "success",
32+
"token" => $token
33+
], Status::HTTP_OK);
2934
}
30-
public function logout(Request $request): \Illuminate\Http\JsonResponse
35+
36+
public function logout(Request $request): JsonResponse
3137
{
3238
if (Auth::user()) {
3339
Auth::logout();
@@ -36,7 +42,7 @@ public function logout(Request $request): \Illuminate\Http\JsonResponse
3642

3743
$request->session()->regenerateToken();
3844

39-
return response()->json([
45+
return response()->json([
4046
"message" => "success",
4147
])->setStatusCode(Status::HTTP_OK);
4248
}
@@ -45,14 +51,15 @@ public function logout(Request $request): \Illuminate\Http\JsonResponse
4551
"message" => "You are not logged in.",
4652
])->setStatusCode(Status::HTTP_UNAUTHORIZED);
4753
}
54+
4855
public function register(RegisterRequest $registerRequest)
4956
{
5057
$validated = $registerRequest->validated();
51-
$userExist = User::query()->where('email', $validated['email'])->exists();
58+
$userExist = User::query()->where("email", $validated["email"])->exists();
5259

53-
if(!$userExist){
60+
if (!$userExist) {
5461
$user = new User($validated);
55-
$user->password = Hash::make($validated['password']);
62+
$user->password = Hash::make($validated["password"]);
5663
$user->save();
5764

5865
Auth::login($user);
@@ -62,5 +69,4 @@ public function register(RegisterRequest $registerRequest)
6269
"message" => "success",
6370
])->setStatusCode(Status::HTTP_OK);
6471
}
65-
6672
}

app/Http/Requests/LoginRequest.php

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
<?php
22

3+
declare(strict_types=1);
4+
35
namespace CommunityWithLegends\Http\Requests;
46

7+
use Illuminate\Contracts\Validation\ValidationRule;
58
use Illuminate\Foundation\Http\FormRequest;
69

710
class LoginRequest extends FormRequest
@@ -17,13 +20,13 @@ public function authorize(): bool
1720
/**
1821
* Get the validation rules that apply to the request.
1922
*
20-
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
23+
* @return array<string, ValidationRule|array<mixed>|string>
2124
*/
2225
public function rules(): array
2326
{
2427
return [
25-
'email' => ['required', 'email', 'max:225'],
26-
'password' => ['required', 'min:8', 'max:225', 'string'],
28+
"email" => ["required", "email", "max:225"],
29+
"password" => ["required", "min:8", "max:225", "string"],
2730
];
2831
}
2932
}

app/Http/Requests/RegisterRequest.php

+7-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
<?php
22

3+
declare(strict_types=1);
4+
35
namespace CommunityWithLegends\Http\Requests;
46

7+
use Illuminate\Contracts\Validation\ValidationRule;
58
use Illuminate\Foundation\Http\FormRequest;
69

710
class RegisterRequest extends FormRequest
@@ -17,14 +20,14 @@ public function authorize(): bool
1720
/**
1821
* Get the validation rules that apply to the request.
1922
*
20-
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
23+
* @return array<string, ValidationRule|array<mixed>|string>
2124
*/
2225
public function rules(): array
2326
{
2427
return [
25-
"name" => ['required', 'max:225'],
26-
"email" => ['required', 'email:rfc,dns', 'max:225', 'string'],
27-
"password" => ['required', 'min:8', 'max:225', 'string'],
28+
"name" => ["required", "max:225"],
29+
"email" => ["required", "email:rfc,dns", "max:225", "string"],
30+
"password" => ["required", "min:8", "max:225", "string"],
2831
];
2932
}
3033
}

routes/api.php

+4-4
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,11 @@
2727
return $user->createToken($request->device_name)->plainTextToken;
2828
});
2929

30-
Route::middleware('auth:sanctum')->group(function () {
30+
Route::middleware("auth:sanctum")->group(function (): void {
3131
Route::get("/user", fn(Request $request) => $request->user());
3232

33-
Route::post("/auth/logout", [AuthController::class, 'logout']);
33+
Route::post("/auth/logout", [AuthController::class, "logout"]);
3434
});
3535

36-
Route::post("/auth/login", [AuthController::class, 'login'])->name('login');
37-
Route::post("/auth/register", [AuthController::class, 'register']);
36+
Route::post("/auth/login", [AuthController::class, "login"])->name("login");
37+
Route::post("/auth/register", [AuthController::class, "register"]);

routes/web.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@
77

88
Route::get("/", fn(): JsonResponse => response()->json([
99
"message" => "Welcome",
10-
]))->name('dashboard');
10+
]))->name("dashboard");

0 commit comments

Comments
 (0)