Добавлена политика на работу с агентствами
This commit is contained in:
parent
b5b50159a7
commit
14675465c4
@ -16,21 +16,11 @@ class CreateAgentController extends Controller
|
||||
{
|
||||
public function __invoke(Request $request, Company $company)
|
||||
{
|
||||
if (!$company)
|
||||
if ($request->user()->cannot('update', $company))
|
||||
{
|
||||
$admin = CompanyAdmin::where('user_id', auth()->id());
|
||||
if (!$admin->count())
|
||||
{
|
||||
abort(404);
|
||||
return;
|
||||
}
|
||||
$admin = $admin->first();
|
||||
$company = Company::find($admin->company_id);
|
||||
}
|
||||
if (!$company)
|
||||
{
|
||||
return back()->with('error', 'Не удалось установить принадлежность создаваемого агента');
|
||||
abort(403, 'Unauthorized action');
|
||||
}
|
||||
|
||||
$user = User::where('email', $request->email)->orWhere('phone', $request->phone)->first();
|
||||
if ($user)
|
||||
{
|
||||
|
||||
@ -16,6 +16,11 @@ class CreateCompanyController extends Controller
|
||||
*/
|
||||
public function __invoke(Request $request)
|
||||
{
|
||||
if ($request->user()->cannot('create', Company::class))
|
||||
{
|
||||
abort(403, 'Unauthorized action');
|
||||
}
|
||||
|
||||
$company = false;
|
||||
$request->enum('type', CompanyType::class);
|
||||
$validated = $request->validate([
|
||||
|
||||
@ -15,6 +15,10 @@ class CreateCompanyFormController extends Controller
|
||||
*/
|
||||
public function __invoke(Request $request)
|
||||
{
|
||||
if ($request->user()->cannot('create', Company::class))
|
||||
{
|
||||
abort(403, 'Unauthorized action');
|
||||
}
|
||||
$type = false;
|
||||
$city_id = false;
|
||||
if ($request->has('type'))
|
||||
|
||||
@ -10,8 +10,13 @@
|
||||
|
||||
class DeleteAgentController extends Controller
|
||||
{
|
||||
public function __invoke(Agent $agent)
|
||||
public function __invoke(Request $request, Agent $agent)
|
||||
{
|
||||
if ($request->user()->cannot('update', $agent->company))
|
||||
{
|
||||
abort(403, 'Unauthorized action');
|
||||
}
|
||||
|
||||
$admin = CompanyAdmin::where('user_id', auth()->id())
|
||||
->where(
|
||||
'company_id',
|
||||
|
||||
@ -54,6 +54,11 @@ public function index($companyId = null)
|
||||
}
|
||||
public function store(Request $request, Company $company)
|
||||
{
|
||||
if ($request->user()->cannot('update', $company))
|
||||
{
|
||||
abort(403, 'Unauthorized action');
|
||||
}
|
||||
|
||||
$userId = auth()->user()->id;
|
||||
$admin = CompanyAdmin::where('user_id', $userId)->get();
|
||||
if ($admin->count() == 1)
|
||||
|
||||
36
app/Modules/Main/Http/Policies/CompanyPolicy.php
Normal file
36
app/Modules/Main/Http/Policies/CompanyPolicy.php
Normal file
@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Main\Http\Policies;
|
||||
|
||||
use Modules\User\Models\User;
|
||||
use Modules\User\Models\UserRole;
|
||||
use Modules\User\Models\Role;
|
||||
use Modules\Main\Models\Company\Company;
|
||||
use Modules\Main\Models\Company\CompanyAdmin;
|
||||
|
||||
class CompanyPolicy
|
||||
{
|
||||
public function create(User $user): bool
|
||||
{
|
||||
if (UserRole::where('user_id', $user->id)->where('role_id', Role::SUPER_ADMIN)->count() == 1)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public function update(User $user, Company $company): bool
|
||||
{
|
||||
if (UserRole::where('user_id', $user->id)->where('role_id', Role::SUPER_ADMIN)->count() == 1)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if (
|
||||
CompanyAdmin::where('user_id', $user->id)->where('company_id', $company->id)->count() == 1
|
||||
&& UserRole::where('user_id', $user->id)->where('role_id', Role::COMPANY_ADMIN)->count() == 1
|
||||
)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -7,6 +7,7 @@
|
||||
use Modules\Payment\Traits\Paymentable;
|
||||
use Modules\Main\Models\City;
|
||||
use Modules\Bitrix\Traits\Bitrixable;
|
||||
|
||||
class Company extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
@ -5,6 +5,8 @@
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Illuminate\Support\Facades\Blade;
|
||||
use Livewire\Livewire;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
|
||||
|
||||
class ModuleServiceProvider extends ServiceProvider
|
||||
{
|
||||
@ -23,6 +25,7 @@ public function boot()
|
||||
$this->registerConfig();
|
||||
$this->registerComponent();
|
||||
$this->registerLivewire();
|
||||
$this->registerPolicies();
|
||||
}
|
||||
|
||||
protected function registerViews()
|
||||
@ -69,4 +72,9 @@ protected function registerComponent()
|
||||
{
|
||||
//Blade::component('<name>', \Modules\<NAME>\Http\Components\<NAME>::class);
|
||||
}
|
||||
|
||||
protected function registerPolicies()
|
||||
{
|
||||
Gate::policy(\Modules\Main\Models\Company\Company::class, \Modules\Main\Http\Policies\CompanyPolicy::class);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user