120 lines
3.6 KiB
PHP
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'));
|
|
}
|
|
}
|