FederationServer/src/FederationServer/Methods/Audit/ViewAuditEntry.php
netkas 1b7d11e009
Some checks are pending
CI / release (push) Waiting to run
CI / debug (push) Waiting to run
CI / check-phpunit (push) Waiting to run
CI / check-phpdoc (push) Waiting to run
CI / generate-phpdoc (push) Blocked by required conditions
CI / test (push) Blocked by required conditions
CI / release-documentation (push) Blocked by required conditions
CI / release-artifacts (push) Blocked by required conditions
Add getEntry method to AuditLogManager for retrieving audit log entries by UUID
2025-06-03 17:23:47 -04:00

64 lines
2.1 KiB
PHP

<?php
namespace FederationServer\Methods\Audit;
use FederationServer\Classes\Managers\AuditLogManager;
use FederationServer\Classes\Managers\EntitiesManager;
use FederationServer\Classes\Managers\OperatorManager;
use FederationServer\Classes\RequestHandler;
use FederationServer\Classes\Validate;
use FederationServer\Exceptions\DatabaseOperationException;
use FederationServer\Exceptions\RequestException;
use FederationServer\FederationServer;
use FederationServer\Objects\PublicAuditRecord;
class ViewAuditEntry extends RequestHandler
{
/**
* @inheritDoc
*/
public static function handleRequest(): void
{
if(!preg_match('#^/audit/([a-fA-F0-9\-]{36,})$#', FederationServer::getPath(), $matches))
{
throw new RequestException('Bad Request: Audit UUID is required', 400);
}
$entryUuid = $matches[1];
if(!$entryUuid || !Validate::uuid($entryUuid))
{
throw new RequestException('Bad Request: Invalid Audit UUID', 400);
}
try
{
$logRecord = AuditLogManager::getEntry($entryUuid);
if(!$logRecord)
{
throw new RequestException('Audit log not found', 404);
}
$operatorRecord = null;
$entityRecord = null;
if($logRecord->getOperator() !== null)
{
$operatorRecord = OperatorManager::getOperator($logRecord->getOperator());
}
if($logRecord->getEntity() !== null)
{
$entityRecord = EntitiesManager::getEntityByUuid($logRecord->getEntity());
}
$result = new PublicAuditRecord($logRecord, $operatorRecord, $entityRecord);
}
catch (DatabaseOperationException $e)
{
throw new RequestException('Internal Server Error: Unable to retrieve audit log', 500, $e);
}
self::successResponse($result->toArray());
}
}