47 lines
1.1 KiB
PHP
47 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace App\Policies;
|
|
|
|
use App\Models\DataCentre;
|
|
use App\Models\User;
|
|
|
|
class DataCentrePolicy
|
|
{
|
|
public function viewAny(User $user): bool
|
|
{
|
|
return $user->can('pusat_data.urus') || $user->can('serahan.urus_sendiri');
|
|
}
|
|
|
|
/** Perunding hanya boleh lihat pusat data yang sedang ditugaskan kepadanya. */
|
|
public function view(User $user, DataCentre $dataCentre): bool
|
|
{
|
|
if ($user->can('pusat_data.urus')) {
|
|
return true;
|
|
}
|
|
|
|
$consultantId = $user->consultant?->id;
|
|
|
|
return $consultantId !== null && (int) $dataCentre->current_consultant_id === (int) $consultantId;
|
|
}
|
|
|
|
public function create(User $user): bool
|
|
{
|
|
return $user->can('pusat_data.urus');
|
|
}
|
|
|
|
public function update(User $user, DataCentre $dataCentre): bool
|
|
{
|
|
return $user->can('pusat_data.urus');
|
|
}
|
|
|
|
public function delete(User $user, DataCentre $dataCentre): bool
|
|
{
|
|
return $user->can('pusat_data.urus');
|
|
}
|
|
|
|
public function assignConsultant(User $user, DataCentre $dataCentre): bool
|
|
{
|
|
return $user->can('tugasan.urus');
|
|
}
|
|
}
|