Files
cleftlipdata/app/Http/Controllers/AdminController.php
T
2026-06-06 10:05:39 +07:00

120 lines
3.6 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
use Illuminate\Validation\Rules;
use Illuminate\Support\Facades\Auth;
class AdminController extends Controller
{
public function new_user(Request $request)
{
$request->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'));
}
}