Skip to content

Commit ccdc79f

Browse files
committed
Upload files
1 parent a154fd7 commit ccdc79f

31 files changed

+574
-234
lines changed

app/Http/Controllers/API/Admin/ManageProductAPIController.php

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class ManageProductAPIController extends Controller
1717
*/
1818
public function index(): JsonResponse
1919
{
20-
$products = Product::latest();
20+
$products = Product::orderBy('id', 'DESC')->get();
2121
return response()->json([
2222
'success' => true,
2323
'data' => $products
@@ -42,6 +42,7 @@ public function store(Request $request): JsonResponse
4242
}
4343

4444
$product = Product::create($request->all());
45+
// dd($product);
4546

4647
return response()->json([
4748
'success' => true,
@@ -57,8 +58,10 @@ public function store(Request $request): JsonResponse
5758
* @param Product $product
5859
* @return JsonResponse
5960
*/
60-
public function update(Request $request, Product $product): JsonResponse
61+
public function update(Request $request, $id): JsonResponse
6162
{
63+
$product = Product::find($id);
64+
6265
$validator = Validator::make($request->all(), [
6366
'title' => 'required',
6467
'description' => 'required'
@@ -68,12 +71,14 @@ public function update(Request $request, Product $product): JsonResponse
6871
return response()->json(['error' => $validator->errors()], 422);
6972
}
7073

74+
// dd($product);
75+
7176
Product::where('id', $product->id)->update([
7277
'title' => $request->title,
7378
'description' => $request->description,
7479
]);
7580

76-
dd($product->update());
81+
// dd($product->update());
7782

7883
return response()->json([
7984
'success' => true,
@@ -87,8 +92,10 @@ public function update(Request $request, Product $product): JsonResponse
8792
* @param Product $product
8893
* @return JsonResponse
8994
*/
90-
public function destroy(Product $product): JsonResponse
95+
public function destroy($id): JsonResponse
9196
{
97+
$product = Product::find($id);
98+
9299
$product->delete();
93100

94101
return response()->json([
Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\API\Admin;
4+
5+
use Illuminate\Http\Request;
6+
use App\Http\Controllers\Controller;
7+
use Spatie\Permission\Models\Role;
8+
use Spatie\Permission\Models\Permission;
9+
use Illuminate\Support\Facades\DB;
10+
use Illuminate\Http\JsonResponse;
11+
use Illuminate\Support\Facades\Validator;
12+
13+
class ManageRolesController extends Controller
14+
{
15+
/**
16+
* Display a listing of the resource.
17+
*
18+
* @return JsonResponse
19+
*/
20+
public function index(Request $request): JsonResponse
21+
{
22+
$roles = Role::orderBy('id', 'ASC')->paginate(5);
23+
return response()->json([
24+
'success' => true,
25+
'data' => $roles,
26+
'message' => 'Roles retrieved successfully.'
27+
]);
28+
}
29+
30+
/**
31+
* Store a newly created resource in storage.
32+
*
33+
* @param Request $request
34+
* @return JsonResponse
35+
*/
36+
37+
public function store(Request $request): JsonResponse
38+
{
39+
$validator = Validator::make($request->all(), [
40+
'name' => 'required|unique:roles,name',
41+
'guard_name' => 'required',
42+
'permission' => 'required|array',
43+
'permission.*' => 'exists:permissions,id',
44+
]);
45+
46+
if ($validator->fails()) {
47+
return response()->json([
48+
'success' => false,
49+
'errors' => $validator->errors(),
50+
], 422);
51+
}
52+
53+
$role = Role::create(['name' => $request->input('name'), 'guard_name' => $request->input('guard_name')]);
54+
$role->syncPermissions($request->input('permission'));
55+
56+
return response()->json([
57+
'success' => true,
58+
'data' => $role,
59+
'message' => 'Role created successfully.'
60+
], 201);
61+
}
62+
63+
64+
/**
65+
* Display the specified resource.
66+
*
67+
* @param int $id
68+
* @return JsonResponse
69+
*/
70+
public function show($id): JsonResponse
71+
{
72+
$role = Role::find($id);
73+
if (!$role) {
74+
return response()->json(['success' => false, 'message' => 'Role not found.'], 404);
75+
}
76+
77+
$rolePermissions = Permission::join("role_has_permissions", "role_has_permissions.permission_id", "=", "permissions.id")
78+
->where("role_has_permissions.role_id", $id)->get();
79+
80+
return response()->json([
81+
'success' => true,
82+
'data' => [
83+
'role' => $role,
84+
'permissions' => $rolePermissions,
85+
],
86+
'message' => 'Role retrieved successfully.'
87+
]);
88+
}
89+
90+
/**
91+
* Update the specified resource in storage.
92+
*
93+
* @param Request $request
94+
* @param int $id
95+
* @return JsonResponse
96+
*/
97+
public function update(Request $request, $id): JsonResponse
98+
{
99+
$validator = Validator::make($request->all(), [
100+
'name' => 'required',
101+
'guard_name' => 'required',
102+
'permission' => 'required|array',
103+
'permission.*' => 'exists:permissions,id',
104+
]);
105+
106+
if ($validator->fails()) {
107+
return response()->json([
108+
'success' => false,
109+
'errors' => $validator->errors(),
110+
], 422);
111+
}
112+
113+
$role = Role::find($id);
114+
if (!$role) {
115+
return response()->json(['success' => false, 'message' => 'Role not found.'], 404);
116+
}
117+
118+
$role->name = $request->input('name');
119+
$role->guard_name = $request->input('guard_name');
120+
$role->save();
121+
122+
$role->syncPermissions($request->input('permission'));
123+
124+
return response()->json([
125+
'success' => true,
126+
'data' => $role,
127+
'message' => 'Role updated successfully.'
128+
]);
129+
}
130+
131+
/**
132+
* Remove the specified resource from storage.
133+
*
134+
* @param int $id
135+
* @return JsonResponse
136+
*/
137+
public function destroy($id): JsonResponse
138+
{
139+
if (!Role::find($id)) {
140+
return response()->json(['success' => false, 'message' => 'Role not found.'], 404);
141+
}
142+
143+
DB::table("roles")->where('id', $id)->delete();
144+
145+
return response()->json([
146+
'success' => true,
147+
'message' => 'Role deleted successfully.'
148+
]);
149+
}
150+
}
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\API\Admin;
4+
5+
use App\Http\Controllers\Controller;
6+
use App\Models\User;
7+
use Illuminate\Http\Request;
8+
use Illuminate\Support\Arr;
9+
use Illuminate\Support\Facades\DB;
10+
use Illuminate\Support\Facades\Hash;
11+
use Illuminate\Support\Facades\Validator;
12+
use Spatie\Permission\Models\Role;
13+
14+
class ManageUserController extends Controller
15+
{
16+
/**
17+
* Display a listing of the resource.
18+
*/
19+
public function index(Request $request)
20+
{
21+
$users = User::latest()->paginate(5);
22+
return response()->json([
23+
'success' => true,
24+
'data' => $users
25+
]);
26+
}
27+
28+
/**
29+
* Store a newly created resource in storage.
30+
*/
31+
public function store(Request $request)
32+
{
33+
// Using Validator facade to validate the request
34+
$validator = Validator::make($request->all(), [
35+
'name' => 'required',
36+
'email' => 'required|email|unique:users,email',
37+
'password' => 'required|same:confirm-password',
38+
'role' => 'required'
39+
]);
40+
41+
if ($validator->fails()) {
42+
return response()->json([
43+
'success' => false,
44+
'errors' => $validator->errors()
45+
], 400);
46+
}
47+
48+
$data = $request->all();
49+
$data['password'] = Hash::make($request->password);
50+
51+
$user = User::create($data);
52+
$user->assignRole($request->input('role'));
53+
54+
return response()->json([
55+
'success' => true,
56+
'message' => 'User created successfully!',
57+
'data' => $user
58+
]);
59+
}
60+
61+
/**
62+
* Show the form for editing the specified resource.
63+
*/
64+
public function edit(string $id)
65+
{
66+
$user = User::find($id);
67+
if (!$user) {
68+
return response()->json([
69+
'success' => false,
70+
'message' => 'User not found'
71+
], 404);
72+
}
73+
74+
$roles = Role::pluck('name', 'name')->all();
75+
$userRole = $user->roles->pluck('name', 'name')->all();
76+
77+
return response()->json([
78+
'success' => true,
79+
'user' => $user,
80+
'roles' => $roles,
81+
'userRole' => $userRole
82+
]);
83+
}
84+
85+
/**
86+
* Update the specified resource in storage.
87+
*/
88+
public function update(Request $request, string $id)
89+
{
90+
$validator = Validator::make($request->all(), [
91+
'name' => 'required',
92+
'email' => 'required|email|unique:users,email,' . $id,
93+
'password' => 'same:confirm-password',
94+
'role' => 'required'
95+
]);
96+
97+
if ($validator->fails()) {
98+
return response()->json([
99+
'success' => false,
100+
'errors' => $validator->errors()
101+
], 400);
102+
}
103+
104+
$input = $request->all();
105+
106+
if (!empty($input['password'])) {
107+
$input['password'] = Hash::make($input['password']);
108+
} else {
109+
$input = Arr::except($input, ['password']);
110+
}
111+
112+
$user = User::find($id);
113+
if (!$user) {
114+
return response()->json([
115+
'success' => false,
116+
'message' => 'User not found'
117+
], 404);
118+
}
119+
120+
$user->update($input);
121+
122+
DB::table('model_has_roles')->where('model_id', $id)->delete();
123+
$user->assignRole($request->input('roles'));
124+
125+
return response()->json([
126+
'success' => true,
127+
'message' => 'User details updated successfully',
128+
'data' => $user
129+
]);
130+
}
131+
132+
/**
133+
* Remove the specified resource from storage.
134+
*/
135+
public function destroy(string $id)
136+
{
137+
$user = User::find($id);
138+
139+
if (!$user) {
140+
return response()->json([
141+
'success' => false,
142+
'message' => 'User not found'
143+
], 404);
144+
}
145+
146+
$user->delete();
147+
148+
return response()->json([
149+
'success' => true,
150+
'message' => 'User deleted successfully'
151+
]);
152+
}
153+
}

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use Illuminate\Support\Facades\Hash;
99
use App\Models\User;
1010
use Illuminate\Http\Response;
11+
use Illuminate\Support\Facades\Auth;
1112
use Spatie\Permission\Models\Role;
1213

1314
class AuthController extends Controller
@@ -80,4 +81,15 @@ public function login(Request $request)
8081
'message' => 'Login successful!'
8182
]);
8283
}
84+
85+
public function logout(Request $request)
86+
{
87+
$user = $request->user();
88+
89+
if ($user) {
90+
$user->tokens()->delete();
91+
}
92+
93+
return response()->json(['message' => 'Logged out successfully'], 200);
94+
}
8395
}

0 commit comments

Comments
 (0)