Skip to content

Commit a70b722

Browse files
authored
Merge pull request #22 from ubpon/main
Added FormRequest and Resource
2 parents 3accc28 + a30a9aa commit a70b722

File tree

4 files changed

+100
-32
lines changed

4 files changed

+100
-32
lines changed

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

Lines changed: 18 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3,53 +3,39 @@
33
namespace App\Http\Controllers\Api\Auth;
44

55
use App\Http\Controllers\Controller;
6+
use App\Http\Requests\AuthenticateRequest;
7+
use App\Http\Requests\RegisterRequest;
8+
use App\Http\Resources\UserResource;
69
use App\Models\User;
710
use Illuminate\Http\JsonResponse;
811
use Illuminate\Http\Request;
912
use Illuminate\Support\Facades\Auth;
10-
use Illuminate\Support\Facades\Hash;
11-
1213

1314
class AuthController extends Controller
1415
{
15-
/**
16-
* Handle an authentication attempt.
17-
*
18-
* @param Request $request
19-
* @return JsonResponse
20-
*/
21-
public function authenticate(Request $request): JsonResponse
16+
public function authenticate(AuthenticateRequest $request): UserResource|JsonResponse
2217
{
23-
$request->validate([
24-
'email' => 'required|email|exists:users,email',
25-
'password' => 'required|min:6',
26-
]);
27-
28-
if (Auth::attempt(['email' => $request['email'], 'password' => $request['password']], $request['remember'])) {
29-
$request->session()->regenerate();
30-
$user = Auth::user();
31-
return response()->json(['data' => $user]);
32-
} else {
18+
$data = [
19+
'email' => $request['email'],
20+
'password' => $request['password']
21+
];
22+
23+
if (!Auth::attempt($data, $request['remember'])) {
3324
return response()->json(['message' => 'Invalid credentials'], 401);
3425
}
26+
27+
$request->session()->regenerate();
28+
29+
return new UserResource(Auth::user());
3530
}
3631

37-
public function register(Request $request): JsonResponse
32+
public function register(RegisterRequest $request): UserResource
3833
{
39-
$request->validate([
40-
'name' => ['required', 'string', 'max:255'],
41-
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
42-
'password' => ['required', 'string', 'min:8', 'confirmed'],
43-
]);
44-
45-
$user = User::create([
46-
'name' => $request['name'],
47-
'email' => $request['email'],
48-
'password' => Hash::make($request['password']),
49-
]);
34+
$user = User::create($request->validated());
5035

5136
$request->session()->regenerate();
52-
return response()->json(['data' => $user], 201);
37+
38+
return new UserResource($user);
5339
}
5440

5541
public function logout(Request $request): JsonResponse
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?php
2+
3+
namespace App\Http\Requests;
4+
5+
use Illuminate\Foundation\Http\FormRequest;
6+
7+
class AuthenticateRequest extends FormRequest
8+
{
9+
/**
10+
* Determine if the user is authorized to make this request.
11+
*
12+
* @return bool
13+
*/
14+
public function authorize()
15+
{
16+
return true;
17+
}
18+
19+
/**
20+
* Get the validation rules that apply to the request.
21+
*
22+
* @return array<string, mixed>
23+
*/
24+
public function rules()
25+
{
26+
return [
27+
'email' => ['required', 'email', 'exists:users,email'],
28+
'password' => ['required', 'min:6'],
29+
];
30+
}
31+
}

app/Http/Requests/RegisterRequest.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php
2+
3+
namespace App\Http\Requests;
4+
5+
use Illuminate\Foundation\Http\FormRequest;
6+
7+
class RegisterRequest extends FormRequest
8+
{
9+
/**
10+
* Determine if the user is authorized to make this request.
11+
*
12+
* @return bool
13+
*/
14+
public function authorize()
15+
{
16+
return true;
17+
}
18+
19+
/**
20+
* Get the validation rules that apply to the request.
21+
*
22+
* @return array<string, mixed>
23+
*/
24+
public function rules()
25+
{
26+
return [
27+
'name' => ['required', 'string', 'max:255'],
28+
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
29+
'password' => ['required', 'string', 'min:8', 'confirmed'],
30+
];
31+
}
32+
}

app/Http/Resources/UserResource.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
namespace App\Http\Resources;
4+
5+
use Illuminate\Http\Resources\Json\JsonResource;
6+
7+
class UserResource extends JsonResource
8+
{
9+
/**
10+
* Transform the resource into an array.
11+
*
12+
* @param \Illuminate\Http\Request $request
13+
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
14+
*/
15+
public function toArray($request)
16+
{
17+
return parent::toArray($request);
18+
}
19+
}

0 commit comments

Comments
 (0)