diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index ab0ec6a7ed..8356cda81d 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -27,7 +27,6 @@ use Appwrite\Utopia\Database\Validator\CustomId; use Appwrite\Utopia\Database\Validator\Queries\Identities; use Appwrite\Utopia\Request; use Appwrite\Utopia\Response; -use MaxMind\Db\Reader; use Utopia\App; use Utopia\Audit\Audit as EventAudit; use Utopia\Config\Config; diff --git a/app/controllers/api/databases.php b/app/controllers/api/databases.php index 0114fd343c..2048271895 100644 --- a/app/controllers/api/databases.php +++ b/app/controllers/api/databases.php @@ -14,7 +14,6 @@ use Appwrite\Utopia\Database\Validator\Queries\Databases; use Appwrite\Utopia\Database\Validator\Queries\Indexes; use Appwrite\Utopia\Request; use Appwrite\Utopia\Response; -use MaxMind\Db\Reader; use Utopia\App; use Utopia\Audit\Audit; use Utopia\Config\Config; @@ -617,8 +616,8 @@ App::get('/v1/databases/:databaseId/logs') ->inject('response') ->inject('dbForProject') ->inject('locale') - ->inject('geodb') - ->action(function (string $databaseId, array $queries, Response $response, Database $dbForProject, Locale $locale, Reader $geodb) { + ->inject('geoRecord') + ->action(function (string $databaseId, array $queries, Response $response, Database $dbForProject, Locale $locale, array $geoRecord) { $database = $dbForProject->getDocument('databases', $databaseId); @@ -674,15 +673,8 @@ App::get('/v1/databases/:databaseId/logs') 'deviceModel' => $device['deviceModel'] ]); - $record = $geodb->get($log['ip']); - - if ($record) { - $output[$i]['countryCode'] = $locale->getText('countries.' . strtolower($record['country']['iso_code']), false) ? \strtolower($record['country']['iso_code']) : '--'; - $output[$i]['countryName'] = $locale->getText('countries.' . strtolower($record['country']['iso_code']), $locale->getText('locale.country.unknown')); - } else { - $output[$i]['countryCode'] = '--'; - $output[$i]['countryName'] = $locale->getText('locale.country.unknown'); - } + $output[$i]['countryCode'] = $locale->getText('countries.' . strtolower($geoRecord['countryCode']), false) ? \strtolower($geoRecord['countryCode']) : '--'; + $output[$i]['countryName'] = $locale->getText('countries.' . strtolower($geoRecord['countryCountry']), $locale->getText('locale.country.unknown')); } $response->dynamic(new Document([ @@ -967,8 +959,8 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/logs') ->inject('response') ->inject('dbForProject') ->inject('locale') - ->inject('geodb') - ->action(function (string $databaseId, string $collectionId, array $queries, Response $response, Database $dbForProject, Locale $locale, Reader $geodb) { + ->inject('geoRecord') + ->action(function (string $databaseId, string $collectionId, array $queries, Response $response, Database $dbForProject, Locale $locale, array $geoRecord) { $database = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId)); @@ -1026,15 +1018,8 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/logs') 'deviceModel' => $device['deviceModel'] ]); - $record = $geodb->get($log['ip']); - - if ($record) { - $output[$i]['countryCode'] = $locale->getText('countries.' . strtolower($record['country']['iso_code']), false) ? \strtolower($record['country']['iso_code']) : '--'; - $output[$i]['countryName'] = $locale->getText('countries.' . strtolower($record['country']['iso_code']), $locale->getText('locale.country.unknown')); - } else { - $output[$i]['countryCode'] = '--'; - $output[$i]['countryName'] = $locale->getText('locale.country.unknown'); - } + $output[$i]['countryCode'] = $locale->getText('countries.' . strtolower($geoRecord['countryCode']), false) ? \strtolower($geoRecord['countryCode']) : '--'; + $output[$i]['countryName'] = $locale->getText('countries.' . strtolower($geoRecord['countryCode']), $locale->getText('locale.country.unknown')); } $response->dynamic(new Document([ @@ -3364,8 +3349,8 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/documents/:documen ->inject('response') ->inject('dbForProject') ->inject('locale') - ->inject('geodb') - ->action(function (string $databaseId, string $collectionId, string $documentId, array $queries, Response $response, Database $dbForProject, Locale $locale, Reader $geodb) { + ->inject('geoRecord') + ->action(function (string $databaseId, string $collectionId, string $documentId, array $queries, Response $response, Database $dbForProject, Locale $locale, array $geoRecord) { $database = Authorization::skip(fn () => $dbForProject->getDocument('databases', $databaseId)); @@ -3433,15 +3418,8 @@ App::get('/v1/databases/:databaseId/collections/:collectionId/documents/:documen 'deviceModel' => $device['deviceModel'] ]); - $record = $geodb->get($log['ip']); - - if ($record) { - $output[$i]['countryCode'] = $locale->getText('countries.' . strtolower($record['country']['iso_code']), false) ? \strtolower($record['country']['iso_code']) : '--'; - $output[$i]['countryName'] = $locale->getText('countries.' . strtolower($record['country']['iso_code']), $locale->getText('locale.country.unknown')); - } else { - $output[$i]['countryCode'] = '--'; - $output[$i]['countryName'] = $locale->getText('locale.country.unknown'); - } + $output[$i]['countryCode'] = $locale->getText('countries.' . strtolower($geoRecord['countryCode']), false) ? \strtolower($geoRecord['countryCode']) : '--'; + $output[$i]['countryName'] = $locale->getText('countries.' . strtolower($geoRecord['countryCode']), $locale->getText('locale.country.unknown')); } $response->dynamic(new Document([ 'total' => $audit->countLogsByResource($resource), diff --git a/app/controllers/api/functions.php b/app/controllers/api/functions.php index 2309defe5a..b1eed84f52 100644 --- a/app/controllers/api/functions.php +++ b/app/controllers/api/functions.php @@ -22,7 +22,6 @@ use Appwrite\Utopia\Database\Validator\Queries\Functions; use Appwrite\Utopia\Response; use Appwrite\Utopia\Response\Model\Rule; use Executor\Executor; -use MaxMind\Db\Reader; use Utopia\App; use Utopia\CLI\Console; use Utopia\Config\Config; @@ -1763,8 +1762,8 @@ App::post('/v1/functions/:functionId/executions') ->inject('queueForEvents') ->inject('queueForUsage') ->inject('queueForFunctions') - ->inject('geodb') - ->action(function (string $functionId, string $body, mixed $async, string $path, string $method, mixed $headers, ?string $scheduledAt, Response $response, Request $request, Document $project, Database $dbForProject, Database $dbForConsole, Document $user, Event $queueForEvents, Usage $queueForUsage, Func $queueForFunctions, Reader $geodb) { + ->inject('geoRecord') + ->action(function (string $functionId, string $body, mixed $async, string $path, string $method, mixed $headers, ?string $scheduledAt, Response $response, Request $request, Document $project, Database $dbForProject, Database $dbForConsole, Document $user, Event $queueForEvents, Usage $queueForUsage, Func $queueForFunctions, array $geoRecord) { $async = \strval($async) === 'true' || \strval($async) === '1'; if (!$async && !is_null($scheduledAt)) { @@ -1872,22 +1871,10 @@ App::post('/v1/functions/:functionId/executions') $headers['x-appwrite-trigger'] = 'http'; $headers['x-appwrite-user-id'] = $user->getId() ?? ''; $headers['x-appwrite-user-jwt'] = $jwt ?? ''; - $headers['x-appwrite-country-code'] = ''; - $headers['x-appwrite-continent-code'] = ''; - $headers['x-appwrite-continent-eu'] = 'false'; - - $ip = $headers['x-real-ip'] ?? ''; - if (!empty($ip)) { - $record = $geodb->get($ip); - - if ($record) { - $eu = Config::getParam('locale-eu'); - - $headers['x-appwrite-country-code'] = $record['country']['iso_code'] ?? ''; - $headers['x-appwrite-continent-code'] = $record['continent']['code'] ?? ''; - $headers['x-appwrite-continent-eu'] = (\in_array($record['country']['iso_code'], $eu)) ? 'true' : 'false'; - } - } + $headers['x-appwrite-country-code'] = $geoRecord['countryCode']; + $headers['x-appwrite-continent-code'] = $geoRecord['contenentCode']; + $eu = Config::getParam('locale-eu'); + $headers['x-appwrite-continent-eu'] = (\in_array($record['countryCode'], $eu)) ? 'true' : 'false'; $headersFiltered = []; foreach ($headers as $key => $value) { diff --git a/app/controllers/api/messaging.php b/app/controllers/api/messaging.php index e4a627d027..9e52fa10b1 100644 --- a/app/controllers/api/messaging.php +++ b/app/controllers/api/messaging.php @@ -19,7 +19,6 @@ use Appwrite\Utopia\Database\Validator\Queries\Subscribers; use Appwrite\Utopia\Database\Validator\Queries\Targets; use Appwrite\Utopia\Database\Validator\Queries\Topics; use Appwrite\Utopia\Response; -use MaxMind\Db\Reader; use Utopia\App; use Utopia\Audit\Audit; use Utopia\Database\Database; @@ -916,8 +915,8 @@ App::get('/v1/messaging/providers/:providerId/logs') ->inject('response') ->inject('dbForProject') ->inject('locale') - ->inject('geodb') - ->action(function (string $providerId, array $queries, Response $response, Database $dbForProject, Locale $locale, Reader $geodb) { + ->inject('geoRecord') + ->action(function (string $providerId, array $queries, Response $response, Database $dbForProject, Locale $locale, array $geoRecord) { $provider = $dbForProject->getDocument('providers', $providerId); if ($provider->isEmpty()) { @@ -971,15 +970,8 @@ App::get('/v1/messaging/providers/:providerId/logs') 'deviceModel' => $device['deviceModel'] ]); - $record = $geodb->get($log['ip']); - - if ($record) { - $output[$i]['countryCode'] = $locale->getText('countries.' . strtolower($record['country']['iso_code']), false) ? \strtolower($record['country']['iso_code']) : '--'; - $output[$i]['countryName'] = $locale->getText('countries.' . strtolower($record['country']['iso_code']), $locale->getText('locale.country.unknown')); - } else { - $output[$i]['countryCode'] = '--'; - $output[$i]['countryName'] = $locale->getText('locale.country.unknown'); - } + $output[$i]['countryCode'] = $locale->getText('countries.' . strtolower($geoRecord['countryCode']), false) ? \strtolower($geoRecord['countryCode']) : '--'; + $output[$i]['countryName'] = $locale->getText('countries.' . strtolower($geoRecord['countryCode']), $locale->getText('locale.country.unknown')); } $response->dynamic(new Document([ @@ -2068,8 +2060,8 @@ App::get('/v1/messaging/topics/:topicId/logs') ->inject('response') ->inject('dbForProject') ->inject('locale') - ->inject('geodb') - ->action(function (string $topicId, array $queries, Response $response, Database $dbForProject, Locale $locale, Reader $geodb) { + ->inject('geoRecord') + ->action(function (string $topicId, array $queries, Response $response, Database $dbForProject, Locale $locale, array $geoRecord) { $topic = $dbForProject->getDocument('topics', $topicId); if ($topic->isEmpty()) { @@ -2124,15 +2116,8 @@ App::get('/v1/messaging/topics/:topicId/logs') 'deviceModel' => $device['deviceModel'] ]); - $record = $geodb->get($log['ip']); - - if ($record) { - $output[$i]['countryCode'] = $locale->getText('countries.' . strtolower($record['country']['iso_code']), false) ? \strtolower($record['country']['iso_code']) : '--'; - $output[$i]['countryName'] = $locale->getText('countries.' . strtolower($record['country']['iso_code']), $locale->getText('locale.country.unknown')); - } else { - $output[$i]['countryCode'] = '--'; - $output[$i]['countryName'] = $locale->getText('locale.country.unknown'); - } + $output[$i]['countryCode'] = $locale->getText('countries.' . strtolower($geoRecord['countryCode']), false) ? \strtolower($geoRecord['countryCode']) : '--'; + $output[$i]['countryName'] = $locale->getText('countries.' . strtolower($geoRecord['countryCode']), $locale->getText('locale.country.unknown')); } $response->dynamic(new Document([ @@ -2447,8 +2432,8 @@ App::get('/v1/messaging/subscribers/:subscriberId/logs') ->inject('response') ->inject('dbForProject') ->inject('locale') - ->inject('geodb') - ->action(function (string $subscriberId, array $queries, Response $response, Database $dbForProject, Locale $locale, Reader $geodb) { + ->inject('geoRecord') + ->action(function (string $subscriberId, array $queries, Response $response, Database $dbForProject, Locale $locale, array $geoRecord) { $subscriber = $dbForProject->getDocument('subscribers', $subscriberId); if ($subscriber->isEmpty()) { @@ -2503,15 +2488,8 @@ App::get('/v1/messaging/subscribers/:subscriberId/logs') 'deviceModel' => $device['deviceModel'] ]); - $record = $geodb->get($log['ip']); - - if ($record) { - $output[$i]['countryCode'] = $locale->getText('countries.' . strtolower($record['country']['iso_code']), false) ? \strtolower($record['country']['iso_code']) : '--'; - $output[$i]['countryName'] = $locale->getText('countries.' . strtolower($record['country']['iso_code']), $locale->getText('locale.country.unknown')); - } else { - $output[$i]['countryCode'] = '--'; - $output[$i]['countryName'] = $locale->getText('locale.country.unknown'); - } + $output[$i]['countryCode'] = $locale->getText('countries.' . strtolower($geoRecord['countryCode']), false) ? \strtolower($geoRecord['countryCode']) : '--'; + $output[$i]['countryName'] = $locale->getText('countries.' . strtolower($geoRecord['countryCode']), $locale->getText('locale.country.unknown')); } $response->dynamic(new Document([ @@ -3141,8 +3119,8 @@ App::get('/v1/messaging/messages/:messageId/logs') ->inject('response') ->inject('dbForProject') ->inject('locale') - ->inject('geodb') - ->action(function (string $messageId, array $queries, Response $response, Database $dbForProject, Locale $locale, Reader $geodb) { + ->inject('geoRecord') + ->action(function (string $messageId, array $queries, Response $response, Database $dbForProject, Locale $locale, array $geoRecord) { $message = $dbForProject->getDocument('messages', $messageId); if ($message->isEmpty()) { @@ -3197,15 +3175,8 @@ App::get('/v1/messaging/messages/:messageId/logs') 'deviceModel' => $device['deviceModel'] ]); - $record = $geodb->get($log['ip']); - - if ($record) { - $output[$i]['countryCode'] = $locale->getText('countries.' . strtolower($record['country']['iso_code']), false) ? \strtolower($record['country']['iso_code']) : '--'; - $output[$i]['countryName'] = $locale->getText('countries.' . strtolower($record['country']['iso_code']), $locale->getText('locale.country.unknown')); - } else { - $output[$i]['countryCode'] = '--'; - $output[$i]['countryName'] = $locale->getText('locale.country.unknown'); - } + $output[$i]['countryCode'] = $locale->getText('countries.' . strtolower($geoRecord['countryCode']), false) ? \strtolower($geoRecord['countryCode']) : '--'; + $output[$i]['countryName'] = $locale->getText('countries.' . strtolower($geoRecord['countryCode']), $locale->getText('locale.country.unknown')); } $response->dynamic(new Document([ diff --git a/app/controllers/api/teams.php b/app/controllers/api/teams.php index be055f0935..1e5169d5c7 100644 --- a/app/controllers/api/teams.php +++ b/app/controllers/api/teams.php @@ -17,7 +17,6 @@ use Appwrite\Utopia\Database\Validator\Queries\Memberships; use Appwrite\Utopia\Database\Validator\Queries\Teams; use Appwrite\Utopia\Request; use Appwrite\Utopia\Response; -use MaxMind\Db\Reader; use Utopia\App; use Utopia\Audit\Audit; use Utopia\Config\Config; @@ -1026,9 +1025,9 @@ App::patch('/v1/teams/:teamId/memberships/:membershipId/status') ->inject('user') ->inject('dbForProject') ->inject('project') - ->inject('geodb') + ->inject('geoRecord') ->inject('queueForEvents') - ->action(function (string $teamId, string $membershipId, string $userId, string $secret, Request $request, Response $response, Document $user, Database $dbForProject, Document $project, Reader $geodb, Event $queueForEvents) { + ->action(function (string $teamId, string $membershipId, string $userId, string $secret, Request $request, Response $response, Document $user, Database $dbForProject, Document $project, array $geoRecord, Event $queueForEvents) { $protocol = $request->getProtocol(); $membership = $dbForProject->getDocument('memberships', $membershipId); @@ -1079,7 +1078,6 @@ App::patch('/v1/teams/:teamId/memberships/:membershipId/status') Authorization::setRole(Role::user($user->getId())->toString()); $detector = new Detector($request->getUserAgent('UNKNOWN')); - $record = $geodb->get($request->getIP()); $authDuration = $project->getAttribute('auths', [])['duration'] ?? Auth::TOKEN_EXPIRATION_LOGIN_LONG; $expire = DateTime::addSeconds(new \DateTime(), $authDuration); $secret = Auth::tokenGenerator(); @@ -1093,7 +1091,7 @@ App::patch('/v1/teams/:teamId/memberships/:membershipId/status') 'userAgent' => $request->getUserAgent('UNKNOWN'), 'ip' => $request->getIP(), 'factors' => ['email'], - 'countryCode' => ($record) ? \strtolower($record['country']['iso_code']) : '--', + 'countryCode' => \strtolower($geoRecord['countryCode']), 'expire' => DateTime::addSeconds(new \DateTime(), $authDuration) ], $detector->getOS(), $detector->getClient(), $detector->getDevice())); @@ -1222,8 +1220,8 @@ App::get('/v1/teams/:teamId/logs') ->inject('response') ->inject('dbForProject') ->inject('locale') - ->inject('geodb') - ->action(function (string $teamId, array $queries, Response $response, Database $dbForProject, Locale $locale, Reader $geodb) { + ->inject('geoRecord') + ->action(function (string $teamId, array $queries, Response $response, Database $dbForProject, Locale $locale, array $geoRecord) { $team = $dbForProject->getDocument('teams', $teamId); @@ -1279,15 +1277,8 @@ App::get('/v1/teams/:teamId/logs') 'deviceModel' => $device['deviceModel'] ]); - $record = $geodb->get($log['ip']); - - if ($record) { - $output[$i]['countryCode'] = $locale->getText('countries.' . strtolower($record['country']['iso_code']), false) ? \strtolower($record['country']['iso_code']) : '--'; - $output[$i]['countryName'] = $locale->getText('countries.' . strtolower($record['country']['iso_code']), $locale->getText('locale.country.unknown')); - } else { - $output[$i]['countryCode'] = '--'; - $output[$i]['countryName'] = $locale->getText('locale.country.unknown'); - } + $output[$i]['countryCode'] = $locale->getText('countries.' . strtolower($geoRecord['countryCode']), false) ? \strtolower($geoRecord['countryCode']) : '--'; + $output[$i]['countryName'] = $locale->getText('countries.' . strtolower($geoRecord['countryCode']), $locale->getText('locale.country.unknown')); } $response->dynamic(new Document([ 'total' => $audit->countLogsByResource($resource), diff --git a/app/controllers/api/users.php b/app/controllers/api/users.php index 42f7a59f54..51173b256d 100644 --- a/app/controllers/api/users.php +++ b/app/controllers/api/users.php @@ -21,7 +21,6 @@ use Appwrite\Utopia\Database\Validator\Queries\Targets; use Appwrite\Utopia\Database\Validator\Queries\Users; use Appwrite\Utopia\Request; use Appwrite\Utopia\Response; -use MaxMind\Db\Reader; use Utopia\App; use Utopia\Audit\Audit; use Utopia\Config\Config; @@ -763,8 +762,8 @@ App::get('/v1/users/:userId/logs') ->inject('response') ->inject('dbForProject') ->inject('locale') - ->inject('geodb') - ->action(function (string $userId, array $queries, Response $response, Database $dbForProject, Locale $locale, Reader $geodb) { + ->inject('geoRecord') + ->action(function (string $userId, array $queries, Response $response, Database $dbForProject, Locale $locale, array $geoRecord) { $user = $dbForProject->getDocument('users', $userId); @@ -819,15 +818,8 @@ App::get('/v1/users/:userId/logs') 'deviceModel' => $device['deviceModel'] ]); - $record = $geodb->get($log['ip']); - - if ($record) { - $output[$i]['countryCode'] = $locale->getText('countries.' . strtolower($record['country']['iso_code']), false) ? \strtolower($record['country']['iso_code']) : '--'; - $output[$i]['countryName'] = $locale->getText('countries.' . strtolower($record['country']['iso_code']), $locale->getText('locale.country.unknown')); - } else { - $output[$i]['countryCode'] = '--'; - $output[$i]['countryName'] = $locale->getText('locale.country.unknown'); - } + $output[$i]['countryCode'] = $locale->getText('countries.' . strtolower($geoRecord['countryCode']), false) ? \strtolower($geoRecord['countryCode']) : '--'; + $output[$i]['countryName'] = $locale->getText('countries.' . strtolower($geoRecord['countryCode']), $locale->getText('locale.country.unknown')); } $response->dynamic(new Document([ @@ -1781,9 +1773,9 @@ App::post('/v1/users/:userId/sessions') ->inject('dbForProject') ->inject('project') ->inject('locale') - ->inject('geodb') + ->inject('geoRecord') ->inject('queueForEvents') - ->action(function (string $userId, Request $request, Response $response, Database $dbForProject, Document $project, Locale $locale, Reader $geodb, Event $queueForEvents) { + ->action(function (string $userId, Request $request, Response $response, Database $dbForProject, Document $project, Locale $locale, array $geoRecord, Event $queueForEvents) { $user = $dbForProject->getDocument('users', $userId); if ($user->isEmpty()) { throw new Exception(Exception::USER_NOT_FOUND); @@ -1791,7 +1783,6 @@ App::post('/v1/users/:userId/sessions') $secret = Auth::tokenGenerator(Auth::TOKEN_LENGTH_SESSION); $detector = new Detector($request->getUserAgent('UNKNOWN')); - $record = $geodb->get($request->getIP()); $duration = $project->getAttribute('auths', [])['duration'] ?? Auth::TOKEN_EXPIRATION_LOGIN_LONG; $expire = DateTime::formatTz(DateTime::addSeconds(new \DateTime(), $duration)); @@ -1805,7 +1796,7 @@ App::post('/v1/users/:userId/sessions') 'secret' => Auth::hash($secret), // One way hash encryption to protect DB leak 'userAgent' => $request->getUserAgent('UNKNOWN'), 'ip' => $request->getIP(), - 'countryCode' => ($record) ? \strtolower($record['country']['iso_code']) : '--', + 'countryCode' => \strtolower($geoRecord['countryCode']), 'expire' => $expire, ], $detector->getOS(), diff --git a/app/controllers/general.php b/app/controllers/general.php index 63a78f1dbc..d761766c0a 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -20,7 +20,6 @@ use Appwrite\Utopia\Response\Filters\V17 as ResponseV17; use Appwrite\Utopia\Response\Filters\V18 as ResponseV18; use Appwrite\Utopia\View; use Executor\Executor; -use MaxMind\Db\Reader; use Swoole\Http\Request as SwooleRequest; use Utopia\App; use Utopia\CLI\Console; @@ -185,7 +184,7 @@ function router(App $utopia, Database $dbForConsole, callable $getProjectDB, Swo $headers['x-appwrite-user-jwt'] = ''; $headers['x-appwrite-country-code'] = $geoRecord['countryCode']; $headers['x-appwrite-continent-code'] = $geoRecord['contenentCode']; - + $eu = Config::getParam('locale-eu'); $headers['x-appwrite-continent-eu'] = (\in_array($geoRecord['country']['iso_code'], $eu)) ? 'true' : 'false'; diff --git a/app/controllers/shared/api/auth.php b/app/controllers/shared/api/auth.php index 53aacabe21..9850cbd893 100644 --- a/app/controllers/shared/api/auth.php +++ b/app/controllers/shared/api/auth.php @@ -3,7 +3,6 @@ use Appwrite\Auth\Auth; use Appwrite\Extend\Exception; use Appwrite\Utopia\Request; -use MaxMind\Db\Reader; use Utopia\App; use Utopia\Database\DateTime; use Utopia\Database\Document; @@ -34,13 +33,12 @@ App::init() ->inject('utopia') ->inject('request') ->inject('project') - ->inject('geodb') - ->action(function (App $utopia, Request $request, Document $project, Reader $geodb) { + ->inject('geoRecord') + ->action(function (App $utopia, Request $request, Document $project, array $geoRecord) { $denylist = System::getEnv('_APP_CONSOLE_COUNTRIES_DENYLIST', ''); if (!empty($denylist && $project->getId() === 'console')) { $countries = explode(',', $denylist); - $record = $geodb->get($request->getIP()) ?? []; - $country = $record['country']['iso_code'] ?? ''; + $country = $geoRecord['countryCode']; if (in_array($country, $countries)) { throw new Exception(Exception::GENERAL_REGION_ACCESS_DENIED); }