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 3277268

Browse files
committed
resource
1 parent 28f1932 commit 3277268

File tree

4 files changed

+173
-20
lines changed

4 files changed

+173
-20
lines changed

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

Lines changed: 122 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,126 @@
55
use App\Http\Controllers\Controller;
66
use Illuminate\Http\Request;
77
use App\Models\User;
8+
use Illuminate\Support\Facades\Validator;
9+
use App\Http\Resources\User as UserResource;
810

911
class UserController extends Controller
1012
{
1113
/**
12-
* Get authenticated user.
14+
* Authenticated user.
1315
*
1416
* @param \Illuminate\Http\Request $request
1517
* @return \Illuminate\Http\JsonResponse
1618
*/
1719
public function current(Request $request)
1820
{
19-
return response()->json($request->user());
21+
return newUserResource($request->user());
2022
}
2123

2224
/**
23-
* Get countries.
25+
* List of users.
26+
*
27+
* @return \Illuminate\Http\JsonResponse
28+
*/
29+
public function index()
30+
{
31+
return UserResource::collection(User::all());
32+
}
33+
34+
/**
35+
* Store a newly created user in storage.
36+
*
37+
* @param \Illuminate\Http\Request $request
38+
* @return \Illuminate\Http\JsonResponse
39+
*/
40+
public function store(Request $request)
41+
{
42+
$rules = [
43+
'name' => 'required|max:255',
44+
'email' => 'required|email:filter|max:255|unique:users',
45+
'hobbies' => 'required',
46+
'phone' => 'required|digits:10',
47+
'password' => 'required|min:6',
48+
'country_id' => 'required'
49+
];
50+
$validator = Validator::make($request->all(), $rules);
51+
if ($validator->fails()) {
52+
return response()->json([
53+
"message"=> "The given data was invalid.",
54+
"errors" => $validator->getMessageBag()->getMessages()
55+
], 422);
56+
}
57+
$splitName = explode('', $request->name, 2);
58+
$user = User::create([
59+
'name' => $request->name,
60+
'email' => $request->email,
61+
'firstname' => $splitName[0],
62+
'lastname' => $splitName[1] ?? '',
63+
'hobbies' => $request->hobbies,
64+
'phone' => $request->phone,
65+
'country_id' => $request->country_id,
66+
'password' => bcrypt($request->password),
67+
]);
68+
69+
return new UserResource($user);
70+
}
71+
72+
/**
73+
* Update the specified user in storage
74+
*
75+
* @param \Illuminate\Http\Request $request
76+
* @param \App\Models\User $user
77+
* @return \Illuminate\Http\JsonResponse
78+
*/
79+
public function update(Request $request, User $user)
80+
{
81+
$rules = [
82+
'name' => 'required|max:255',
83+
'email' => 'required|email:filter|max:255|unique:users',
84+
'hobbies' => 'required',
85+
'phone' => 'required|digits:10',
86+
'password' => 'required|min:6',
87+
'country_id' => 'required'
88+
];
89+
$validator = Validator::make($request->all(), $rules);
90+
if ($validator->fails()) {
91+
return response()->json([
92+
"message"=> "The given data was invalid.",
93+
"errors" => $validator->getMessageBag()->getMessages()
94+
], 422);
95+
}
96+
$splitName = explode('', $request->name, 2);
97+
$user->update([
98+
'name' => $request->name,
99+
'email' => $request->email,
100+
'firstname' => $splitName[0],
101+
'lastname' => $splitName[1] ?? '',
102+
'hobbies' => $request->hobbies,
103+
'phone' => $request->phone,
104+
'country_id' => $request->country_id,
105+
'password' => bcrypt($request->password),
106+
]);
107+
108+
return new UserResource($user);
109+
}
110+
111+
/**
112+
* Remove the specified user from storage.
113+
*
114+
* @param \App\Models\User $user
115+
* @return \Illuminate\Http\JsonResponse
116+
*/
117+
public function destory(User $user)
118+
{
119+
$user->delete();
120+
121+
return response()->json([
122+
'status' => 'success'
123+
]);
124+
}
125+
126+
/**
127+
* List of countries
24128
*
25129
* @return \Illuminate\Http\JsonResponse
26130
*/
@@ -44,18 +148,21 @@ public function getCountries()
44148
return response()->json($countryArray);
45149
}
46150

47-
public function getUsers()
48-
{
49-
$users = User::all();
50-
$result = [];
51-
foreach ($users as $user) {
52-
array_push($result, [
53-
'id' => $user->id,
54-
'name' => $user->name
55-
]);
56-
}
151+
/**
152+
*
153+
*/
154+
// public function getUsers()
155+
// {
156+
// $users = User::all();
157+
// $result = [];
158+
// foreach ($users as $user) {
159+
// array_push($result, [
160+
// 'id' => $user->id,
161+
// 'name' => $user->name
162+
// ]);
163+
// }
57164

58-
return response()->json($result);
165+
// return response()->json($result);
59166

60-
}
167+
// }
61168
}

‎app/Http/Resources/Post.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 Post 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 parent::toArray($request);
18+
}
19+
}

‎app/Http/Resources/User.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 User 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 parent::toArray($request);
18+
}
19+
}

‎routes/api.php

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
use App\Http\Controllers\Auth\UserController;
88
use App\Http\Controllers\PostController;
99

10+
use App\Http\Resources\User as UserResource;
11+
use App\Models\User;
1012
/*
1113
|--------------------------------------------------------------------------
1214
| API Routes
@@ -21,21 +23,27 @@
2123
// Route::middleware('auth:api')->get('/user', function (Request $request) {
2224
// return $request->user();
2325
// });
26+
Route::get('/tests', function () {
27+
return new UserResource(User::find(1));
28+
});
2429

2530
Route::group(['middleware' => 'auth:api'], function () {
2631
Route::post('logout', [LoginController::class, 'logout']);
2732

28-
Route::get('user', [UserController::class, 'current']);
29-
Route::get('users', [UserController::class, 'getUsers']);
30-
3133
Route::get('posts', [PostController::class, 'index']);
3234
Route::post('posts', [PostController::class, 'store']);
3335
Route::post('posts/{post}', [PostController::class, 'update']);
3436
Route::delete('posts/{post}', [PostController::class, 'destroy']);
37+
38+
// User module
39+
Route::get('user', 'Auth\UserController@current');
40+
Route::get('users', 'Auth\UserController@index');
41+
Route::post('users', 'Auth\UserController@store');
42+
Route::post('users/{user}', 'Auth\UserController@update');
43+
Route::delete('users/{user}', 'Auth\UserController@destory');
44+
Route::get('users/countries', 'Auth\UserController@getCountries');
3545
});
3646

3747
Route::group(['middleware' => 'guest:api'], function () {
3848
Route::post('login', [LoginController::class, 'login']);
39-
Route::post('register', [RegisterController::class, 'register']);
40-
Route::get('countries', [UserController::class, 'getCountries']);
4149
});

0 commit comments

Comments
(0)

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