Skip to content

Commit 323c7d1

Browse files
committed
Create and fetch user
1 parent 16a6494 commit 323c7d1

File tree

4 files changed

+134
-1
lines changed

4 files changed

+134
-1
lines changed
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
<?php
2+
3+
namespace App\Http\Controllers;
4+
5+
use App\Http\Requests\CreateUserRequest;
6+
use App\Http\Resources\UserResource;
7+
use App\Models\User;
8+
use Illuminate\Http\Request;
9+
10+
/**
11+
* @group Users
12+
*/
13+
class UserController extends Controller
14+
{
15+
/**
16+
* View all users.
17+
*
18+
* This endpoint uses a custom Scribe strategy that parses a
19+
* `@usesPaginationParameters` annotation.
20+
*
21+
* @usesPaginationParameters
22+
*/
23+
public function index()
24+
{
25+
//
26+
}
27+
28+
/**
29+
* Create a user
30+
*
31+
* This endpoint's body parameters are automatically generated from a FormRequest.
32+
*/
33+
public function store(CreateUserRequest $request)
34+
{
35+
/** @var User $user */
36+
$user = User::create($request->validated());
37+
$token = $user->createToken('default');
38+
return ['user' => $user, 'token' => $token->plainTextToken];
39+
}
40+
41+
/**
42+
* Fetch a user
43+
*
44+
*/
45+
public function show($id)
46+
{
47+
return new UserResource(User::findOrFail($id));
48+
}
49+
50+
/**
51+
* Update the specified resource in storage.
52+
*
53+
* @param \Illuminate\Http\Request $request
54+
* @param int $id
55+
* @return \Illuminate\Http\Response
56+
*/
57+
public function update(Request $request, $id)
58+
{
59+
//
60+
}
61+
62+
/**
63+
* Remove the specified resource from storage.
64+
*
65+
* @param int $id
66+
* @return \Illuminate\Http\Response
67+
*/
68+
public function destroy($id)
69+
{
70+
//
71+
}
72+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?php
2+
3+
namespace App\Http\Requests;
4+
5+
use Illuminate\Foundation\Http\FormRequest;
6+
use Illuminate\Validation\Rules\Password;
7+
8+
class CreateUserRequest extends FormRequest
9+
{
10+
/**
11+
* Determine if the user is authorized to make this request.
12+
*
13+
* @return bool
14+
*/
15+
public function authorize()
16+
{
17+
return true;
18+
}
19+
20+
/**
21+
* Get the validation rules that apply to the request.
22+
*
23+
* @return array
24+
*/
25+
public function rules()
26+
{
27+
return [
28+
'name' => 'string|required|min:1|max:255',
29+
'email' => 'string|required|email',
30+
'password' => [
31+
'string',
32+
'required',
33+
Password::min(8),
34+
],
35+
];
36+
}
37+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
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
14+
*/
15+
public function toArray($request)
16+
{
17+
return [
18+
'id' => $this->id,
19+
'name' => $this->name,
20+
'email' => $this->email,
21+
];
22+
}
23+
}

app/Models/User.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,11 @@
66
use Illuminate\Database\Eloquent\Factories\HasFactory;
77
use Illuminate\Foundation\Auth\User as Authenticatable;
88
use Illuminate\Notifications\Notifiable;
9+
use Laravel\Sanctum\HasApiTokens;
910

1011
class User extends Authenticatable
1112
{
12-
use HasFactory, Notifiable;
13+
use HasFactory, Notifiable, HasApiTokens;
1314

1415
/**
1516
* The attributes that are mass assignable.

0 commit comments

Comments
 (0)