Attempt to generalize companyable in company scope

Signed-off-by: snipe <snipe@snipe.net>
This commit is contained in:
snipe
2025-07-02 17:12:55 +01:00
parent 699e9f75c9
commit e5e586dc43
6 changed files with 42 additions and 5 deletions
@@ -45,6 +45,8 @@ class CompaniesController extends Controller
$query->AssetsForShow();
}])->withCount('licenses as licenses_count', 'accessories as accessories_count', 'consumables as consumables_count', 'components as components_count', 'users as users_count');
$companies = Company::scopeCompanyables($companies, 'id', 'companies');
if ($request->filled('search')) {
$companies->TextSearch($request->input('search'));
}
@@ -119,6 +121,8 @@ class CompaniesController extends Controller
{
$this->authorize('view', Company::class);
$company = Company::findOrFail($id);
$this->authorize('view', $company);
$company = Company::scopeCompanyables($company, 'id', 'companies');
return (new CompaniesTransformer)->transformCompany($company);
}
@@ -136,6 +140,8 @@ class CompaniesController extends Controller
{
$this->authorize('update', Company::class);
$company = Company::findOrFail($id);
$this->authorize('update', $company);
$company = Company::scopeCompanyables($company, 'id', 'companies');
$company->fill($request->all());
$company = $request->handleImages($company);
@@ -159,6 +165,7 @@ class CompaniesController extends Controller
{
$this->authorize('delete', Company::class);
$company = Company::findOrFail($id);
$company = Company::scopeCompanyables($company, 'id', 'companies');
$this->authorize('delete', $company);
if (! $company->isDeletable()) {
@@ -188,6 +195,8 @@ class CompaniesController extends Controller
'companies.image',
]);
$companies = Company::scopeCompanyables($companies, 'id', 'companies');
if ($request->filled('search')) {
$companies = $companies->where('companies.name', 'LIKE', '%'.$request->get('search').'%');
}
@@ -83,6 +83,8 @@ final class CompaniesController extends Controller
public function edit(Company $company) : View | RedirectResponse
{
$this->authorize('update', $company);
Company::isCurrentUserHasAccess($company);
// $company = Company::scopeCompanyables($company, 'id', 'companies');
return view('companies/edit')->with('item', $company);
}
@@ -98,6 +100,7 @@ final class CompaniesController extends Controller
{
$this->authorize('update', $company);
$company = Company::scopeCompanyables($company, 'id', 'companies');
$company->name = $request->input('name');
$company->phone = $request->input('phone');
$company->fax = $request->input('fax');
@@ -123,11 +126,14 @@ final class CompaniesController extends Controller
*/
public function destroy($companyId) : RedirectResponse
{
if (is_null($company = Company::find($companyId))) {
return redirect()->route('companies.index')
->with('error', trans('admin/companies/message.not_found'));
}
$company = Company::scopeCompanyables($company, 'id', 'companies');
$this->authorize('delete', $company);
if (! $company->isDeletable()) {
return redirect()->route('companies.index')