Files
services_core/app/Http/Resources/Nas/NasResource.php
T
2026-08-07 09:16:13 +07:00

55 lines
2.2 KiB
PHP

<?php
namespace App\Http\Resources\Nas;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
class NasResource extends JsonResource
{
public function toArray(Request $request): array
{
$data = $this->resource->attributesToArray();
if ($this->resource instanceof \App\Models\NasMikrotik) $data['effective_backend_mode'] = $this->resource->effectiveBackendMode();
unset($data['api_password'], $data['radius_secret'], $data['community'], $data['auth_password'], $data['privacy_password'], $data['password']);
$data['tenant'] = $this->whenLoaded('tenant', fn () => [
'id' => $this->tenant->id,
'tenant_code' => $this->tenant->tenant_code,
'tenant_name' => $this->tenant->tenant_name,
]);
$data['scripts'] = $this->whenLoaded('scripts', fn () => $this->scripts->map(fn ($policy) => [
'id' => $policy->id,
'code' => $policy->code,
'name' => $policy->name,
'service_type' => $policy->service_type,
'event' => $policy->event,
'current_version' => $policy->current_version,
'latest_version' => $policy->relationLoaded('latestVersion') && $policy->latestVersion ? [
'id' => $policy->latestVersion->id,
'version' => $policy->latestVersion->version,
] : null,
'pivot' => [
'event' => $policy->pivot->event,
'nas_script_policy_version_id' => $policy->pivot->nas_script_policy_version_id,
'enabled' => (bool) $policy->pivot->enabled,
],
]));
foreach ([
'api_password' => 'has_api_password',
'radius_secret' => 'has_radius_secret',
'community' => 'has_community',
'auth_password' => 'has_auth_password',
'privacy_password' => 'has_privacy_password',
'password' => 'has_password',
] as $column => $flag) {
if (array_key_exists($column, $this->resource->getAttributes())) {
$data[$flag] = filled($this->resource->getRawOriginal($column));
}
}
return $data;
}
}