From 179684e8b2b69b67bcd48c4280de6f0da84409d3 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 14 Nov 2024 04:48:46 +0000 Subject: [PATCH] improve dependency --- app/controllers/general.php | 8 ++++---- app/controllers/shared/api.php | 6 +++--- app/init.php | 9 ++++----- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/app/controllers/general.php b/app/controllers/general.php index 2079ee6555..cecbfdd7f5 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -710,8 +710,8 @@ App::error() ->inject('logger') ->inject('log') ->inject('queueForUsage') - ->inject('hasDevelopmentKey') - ->action(function (Throwable $error, App $utopia, Request $request, Response $response, Document $project, ?Logger $logger, Log $log, Usage $queueForUsage, bool $hasDevelopmentKey) { + ->inject('developmentKey') + ->action(function (Throwable $error, App $utopia, Request $request, Response $response, Document $project, ?Logger $logger, Log $log, Usage $queueForUsage, Document $developmentKey) { $version = System::getEnv('_APP_VERSION', 'UNKNOWN'); $route = $utopia->getRoute(); $class = \get_class($error); @@ -912,7 +912,7 @@ App::error() $type = $error->getType(); - $output = ((App::isDevelopment()) || $hasDevelopmentKey) ? [ + $output = ((App::isDevelopment()) || (!$developmentKey->isEmpty())) ? [ 'message' => $message, 'code' => $code, 'file' => $file, @@ -953,7 +953,7 @@ App::error() $response->dynamic( new Document($output), - $utopia->isDevelopment() || $hasDevelopmentKey ? Response::MODEL_ERROR_DEV : Response::MODEL_ERROR + $utopia->isDevelopment() || !$developmentKey->isEmpty() ? Response::MODEL_ERROR_DEV : Response::MODEL_ERROR ); }); diff --git a/app/controllers/shared/api.php b/app/controllers/shared/api.php index 42c5035318..70a97099b2 100644 --- a/app/controllers/shared/api.php +++ b/app/controllers/shared/api.php @@ -393,8 +393,8 @@ App::init() ->inject('queueForUsage') ->inject('dbForProject') ->inject('mode') - ->inject('hasDevelopmentKey') - ->action(function (App $utopia, Request $request, Response $response, Document $project, Document $user, Connection $queue, Event $queueForEvents, Messaging $queueForMessaging, Audit $queueForAudits, Delete $queueForDeletes, EventDatabase $queueForDatabase, Build $queueForBuilds, Usage $queueForUsage, Database $dbForProject, string $mode, bool $hasDevelopmentKey) use ($usageDatabaseListener, $eventDatabaseListener) { + ->inject('developmentKey') + ->action(function (App $utopia, Request $request, Response $response, Document $project, Document $user, Connection $queue, Event $queueForEvents, Messaging $queueForMessaging, Audit $queueForAudits, Delete $queueForDeletes, EventDatabase $queueForDatabase, Build $queueForBuilds, Usage $queueForUsage, Database $dbForProject, string $mode, Document $developmentKey) use ($usageDatabaseListener, $eventDatabaseListener) { $route = $utopia->getRoute(); @@ -461,7 +461,7 @@ App::init() $enabled // Abuse is enabled && !$isAppUser // User is not API key && !$isPrivilegedUser // User is not an admin - && !$hasDevelopmentKey // request doesn't not contain development key + && $developmentKey->isEmpty() // request doesn't not contain development key && $abuse->check() // Route is rate-limited ) { throw new Exception(Exception::GENERAL_RATE_LIMIT_EXCEEDED); diff --git a/app/init.php b/app/init.php index 1de0b14740..c93ffdae53 100644 --- a/app/init.php +++ b/app/init.php @@ -1814,14 +1814,14 @@ App::setResource('plan', function (array $plan = []) { return []; }); -App::setResource('hasDevelopmentKey', function ($request, $project, $dbForConsole) { +App::setResource('developmentKey', function ($request, $project, $dbForConsole) { $developmentKey = $request->getHeader('x-appwrite-development-key', ''); // Check if given key match project's development keys $key = $project->find('secret', $developmentKey, 'developmentKeys'); if ($key) { $expire = $key->getAttribute('expire'); if (!empty($expire) && $expire < DatabaseDateTime::formatTz(DatabaseDateTime::now())) { - return false; + return new Document([]); } $accessedAt = $key->getAttribute('accessedAt', ''); @@ -1830,9 +1830,9 @@ App::setResource('hasDevelopmentKey', function ($request, $project, $dbForConsol Authorization::skip(fn () => $dbForConsole->updateDocument('keys', $key->getId(), $key)); $dbForConsole->purgeCachedDocument('projects', $project->getId()); } - return true; + return $key; } - return false; + return new Document([]); }, ['request', 'project', 'dbForConsole']); App::setResource('team', function (Document $project, Database $dbForConsole, App $utopia, Request $request) { @@ -1867,4 +1867,3 @@ App::setResource( 'isResourceBlocked', fn () => fn (Document $project, string $resourceType, ?string $resourceId) => false ); -