CRM/backend/app/Providers/AppServiceProvider.php

87 خطوط
3.1 KiB
PHP

<?php
namespace App\Providers;
use App\Models\Attachment;
use App\Models\Call;
use App\Models\Campaign;
use App\Models\Company;
use App\Models\Contact;
use App\Models\Deal;
use App\Models\FollowUp;
use App\Models\ImportBatch;
use App\Models\Invoice;
use App\Models\Lead;
use App\Models\Note;
use App\Models\Notification;
use App\Models\Product;
use App\Models\QualityReview;
use App\Models\SalesScript;
use App\Models\Setting;
use App\Models\Task;
use App\Models\User;
use App\Policies\AttachmentPolicy;
use App\Policies\CallPolicy;
use App\Policies\CampaignPolicy;
use App\Policies\CompanyPolicy;
use App\Policies\ContactPolicy;
use App\Policies\DashboardPolicy;
use App\Policies\DealPolicy;
use App\Policies\FollowUpPolicy;
use App\Policies\ImportBatchPolicy;
use App\Policies\InvoicePolicy;
use App\Policies\LeadPolicy;
use App\Policies\NotePolicy;
use App\Policies\NotificationPolicy;
use App\Policies\ProductPolicy;
use App\Policies\QualityReviewPolicy;
use App\Policies\SalesScriptPolicy;
use App\Policies\SettingPolicy;
use App\Policies\TaskPolicy;
use App\Policies\UserPolicy;
use Illuminate\Support\Facades\Gate;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*/
public function register(): void
{
//
}
/**
* Bootstrap any application services.
*/
public function boot(): void
{
Gate::policy(Lead::class, LeadPolicy::class);
Gate::policy(Call::class, CallPolicy::class);
Gate::policy(FollowUp::class, FollowUpPolicy::class);
Gate::policy(Campaign::class, CampaignPolicy::class);
Gate::policy(Company::class, CompanyPolicy::class);
Gate::policy(Contact::class, ContactPolicy::class);
Gate::policy(Deal::class, DealPolicy::class);
Gate::policy(Product::class, ProductPolicy::class);
Gate::policy(Note::class, NotePolicy::class);
Gate::policy(Notification::class, NotificationPolicy::class);
Gate::policy(Attachment::class, AttachmentPolicy::class);
Gate::policy(QualityReview::class, QualityReviewPolicy::class);
Gate::policy(SalesScript::class, SalesScriptPolicy::class);
Gate::policy(User::class, UserPolicy::class);
Gate::policy(Setting::class, SettingPolicy::class);
Gate::policy(ImportBatch::class, ImportBatchPolicy::class);
Gate::policy(Task::class, TaskPolicy::class);
Gate::policy(Invoice::class, InvoicePolicy::class);
Gate::define('view-report-data', fn (User $user) => $user->hasRole('admin') || $user->can('view_reports'));
Gate::define('export-report-data', fn (User $user) => $user->hasRole('admin') || $user->can('export_reports'));
Gate::define('export-sensitive-data', fn (User $user) => $user->hasRole('admin') || $user->can('export_leads') || $user->can('export_reports'));
Gate::define('view-admin-dashboard', [DashboardPolicy::class, 'viewAdmin']);
Gate::define('view-supervisor-dashboard', [DashboardPolicy::class, 'viewSupervisor']);
Gate::define('view-agent-dashboard', [DashboardPolicy::class, 'viewAgent']);
}
}