initial commit
This commit is contained in:
@@ -0,0 +1,119 @@
|
||||
<?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'));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user