feat: implement modular contractor management and core administrative modules with feature-rich dashboard and UI components
This commit is contained in:
@@ -50,13 +50,23 @@ class ContractorController extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
private function ensureCanManageContractors(): void
|
||||
{
|
||||
$user = auth()->user();
|
||||
if ($user && $user->hasAnyRole(['Site Technical', 'Construction Supervisor', 'Site Operations', 'Site Engineer', 'Site Supervisor', 'Field Engineer', 'Safety Officer', 'Quality Inspector', 'Warehouse Staff'])) {
|
||||
abort(403, 'Unauthorized action. Site Operations roles cannot modify contractors.');
|
||||
}
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
$this->ensureCanManageContractors();
|
||||
return Inertia::render('ContractorManagement::Contractors/Create');
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$this->ensureCanManageContractors();
|
||||
$validated = $request->validate([
|
||||
'company_name' => 'required|string|max:255',
|
||||
'contact_person' => 'required|string|max:255',
|
||||
@@ -149,6 +159,7 @@ class ContractorController extends Controller
|
||||
|
||||
public function edit(Contractor $contractor)
|
||||
{
|
||||
$this->ensureCanManageContractors();
|
||||
return Inertia::render('ContractorManagement::Contractors/Edit', [
|
||||
'contractor' => $contractor,
|
||||
]);
|
||||
@@ -156,6 +167,7 @@ class ContractorController extends Controller
|
||||
|
||||
public function update(Request $request, Contractor $contractor)
|
||||
{
|
||||
$this->ensureCanManageContractors();
|
||||
$validated = $request->validate([
|
||||
'company_name' => 'required|string|max:255',
|
||||
'contact_person' => 'required|string|max:255',
|
||||
@@ -175,6 +187,7 @@ class ContractorController extends Controller
|
||||
|
||||
public function destroy(Contractor $contractor)
|
||||
{
|
||||
$this->ensureCanManageContractors();
|
||||
$contractor->delete();
|
||||
return redirect()->route('contractors.index')->with('success', 'Contractor deleted.');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user