ldc-crm/app/Policies/CustomerPolicy.php
2025-08-04 16:03:38 +02:00

91 lines
1.9 KiB
PHP

<?php
namespace App\Policies;
use App\Enums\Users\RoleEnum;
use App\Models\Customer;
use App\Models\Service;
use App\Models\User;
use Illuminate\Auth\Access\HandlesAuthorization;
use App\Policies\Rules\UserStaticRules;
class CustomerPolicy
{
use HandlesAuthorization;
/**
* View a Customer.
*
* @param \App\Models\User $authUser
* @return boolean
*/
public function view(User $authUser): bool
{
return UserStaticRules::atLeastRole($authUser, RoleEnum::admin);
}
/**
* View any a Customer.
*
* @param \App\Models\User $authUser
* @return boolean
*/
public function viewAny(User $authUser): bool
{
return UserStaticRules::atLeastRole($authUser, RoleEnum::admin);
}
/**
* Create a Customer.
*
* @return boolean
*/
public function create(): bool
{
return UserStaticRules::noOne();
}
/**
* Update a Customer.
*
* @return boolean
*/
public function update(): bool
{
return UserStaticRules::noOne();
}
/**
* Delete a Customer.
*
* @param \App\Models\User $authUser
* @return boolean
*/
public function delete(User $authUser): bool
{
return UserStaticRules::atLeastRole($authUser, RoleEnum::admin);
}
/**
* Check if the customer belongs to the service.
*
* @param \App\Models\Service $service
* @param \App\Models\Customer $customer
* @return boolean
*/
public function customerBelongsToService(Service $service, Customer $customer)
{
return !\is_null($customer->login($service->brand));
}
/**
* Export Customers.
*
* @param \App\Models\User $authUser
* @return boolean
*/
public function export(User $authUser): bool
{
return UserStaticRules::atLeastRole($authUser, RoleEnum::admin);
}
}