validate([ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'password' => ['required', 'confirmed', Rules\Password::defaults()], 'user_type' => ['required', 'string'], 'created_by' => ['required', 'integer'], ]); if ($request->user_type === 'admin') { return redirect()->back()->withErrors(['user_type' => 'Invalid user type.']); } $user = User::create([ 'name' => $request->name, 'email' => $request->email, 'password' => Hash::make($request->password), 'user_type' => $request->user_type, 'created_by' => $request->created_by, ]); return redirect()->route('admin_dashboard')->with('success', 'User created successfully!'); } public function index(Request $request) { $query = User::query(); $query->where('created_by', Auth::id()); if ($request->filled('role') && $request->role !== '') { $query->where('user_type', $request->role); } if ($request->filled('email')) { $query->where('email', 'like', '%' . $request->email . '%'); } if ($request->filled('name')) { $query->where('name', 'like', '%' . $request->name . '%'); } $users = $query->orderBy('created_at', 'desc')->simplePaginate(15); return view('admin_dashboard', compact('users')); } public function editUser($id) { $user = User::findOrFail($id); $currentUserId = auth()->id(); if ($user->created_by != $currentUserId) { return redirect()->route('admin_dashboard')->with('error', 'You do not have permission to edit this user.'); } return view('edit_user_form', compact('user')); } public function updateUser(Request $request, $id) { $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|string|email|max:255|unique:users,email,' . $id, 'password' => 'sometimes|nullable|string|min:8|confirmed', 'user_type' => 'required|string', ]); $user = User::findOrFail($id); $currentUserId = auth()->id(); if ($user->created_by != $currentUserId) { return redirect()->route('admin_dashboard')->with('error', 'You do not have permission to edit this user.'); } $user->name = $request->name; $user->email = $request->email; if ($request->password) { $user->password = Hash::make($request->password); } $user->user_type = $request->user_type; $user->save(); return redirect()->route('admin_dashboard')->with('success', 'User updated successfully.'); } public function destroy($id) { $user = User::findOrFail($id); $user->delete(); return redirect()->route('admin_dashboard')->with('success', 'User deleted successfully.'); } public function request_log() { $currentUserId = Auth::id(); $users = User::where('created_by', $currentUserId)->get(); return view('request_log', compact('users')); } }