1
0
Fork 0
mirror of synced 2024-05-17 11:12:41 +12:00

Merge pull request #8013 from appwrite/chore-sync-main-into-1.5.x

Chore sync main into 1.5.x
This commit is contained in:
Steven Nguyen 2024-04-24 13:19:14 -07:00 committed by GitHub
commit f5d466822e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
158 changed files with 720 additions and 567 deletions

View file

@ -104,12 +104,29 @@ docker run -it --rm `
开始使用 Appwrite 只需要在控制台创建一个新项目,选择开发平台,然后抓取我们的开发套件。您可以从以下的教程中找到你喜欢的平台开始使用 Appwrite。
* [开始使用 Web](https://appwrite.io/docs/getting-started-for-web)
* [开始使用 Flutter](https://appwrite.io/docs/getting-started-for-flutter)
* [开始使用 Apple](https://appwrite.io/docs/getting-started-for-apple)
* [开始使用 Android](https://appwrite.io/docs/getting-started-for-android)
* [开始使用 Server](https://appwrite.io/docs/getting-started-for-server)
* [开始使用 CLI](https://appwrite.io/docs/command-line)
| 类别 | 技术 |
|---------------------|------|
| **Web 应用** | [Web 快速开始](/docs/quick-starts/web) |
| | [Next.js 快速开始](/docs/quick-starts/nextjs) |
| | [React 快速开始](/docs/quick-starts/react) |
| | [Vue.js 快速开始](/docs/quick-starts/vue) |
| | [Nuxt 快速开始](/docs/quick-starts/nuxt) |
| | [SvelteKit 快速开始](/docs/quick-starts/sveltekit) |
| | [Refine 快速开始](/docs/quick-starts/refine) |
| | [Angular 快速开始](/docs/quick-starts/angular) |
| **苹果于安卓应用** | [React Native 快速开始](/docs/quick-starts/react-native) |
| | [Flutter 快速开始](/docs/quick-starts/flutter) |
| | [Apple 快速开始](/docs/quick-starts/apple) |
| | [Android 快速开始](/docs/quick-starts/android) |
| **服务器** | [Node.js 快速开始](/docs/quick-starts/node) |
| | [Python 快速开始](/docs/quick-starts/python) |
| | [.NET 快速开始](/docs/quick-starts/dotnet) |
| | [Dart 快速开始](/docs/quick-starts/dart) |
| | [Ruby 快速开始](/docs/quick-starts/ruby) |
| | [Deno 快速开始](/docs/quick-starts/deno) |
| | [PHP 快速开始](/docs/quick-starts/php) |
| | [Kotlin 快速开始](/docs/quick-starts/kotlin) |
| | [Swift 快速开始](/docs/quick-starts/swift) |
### 软件服务
@ -119,6 +136,7 @@ docker run -it --rm `
* [**数据库**](https://appwrite.io/docs/references/cloud/client-web/databases) - 管理数据库文档和文档集。用检索界面来对文档和文档集进行读取,创建,更新,和删除。
* [**贮存**](https://appwrite.io/docs/references/cloud/client-web/storage) - 管理文件的阅读、创建、删除和预览。设置文件的预览来满足程序的个性化需求。所有文件都由 ClamAV 扫描并安全存储和加密。
* [**云函数**](https://appwrite.io/docs/server/functions) - 在安全隔离的环境中运行自定义代码。这些代码可以被事件CRON或者手动操作触发。
* [**消息传递**](https://appwrite.io/docs/references/cloud/client-web/messaging) - 使用 Appwrite 消息传递功能通过推送通知、电子邮件和短信与用户进行通信。
* [**语言适配**](https://appwrite.io/docs/references/cloud/client-web/locale) - 根据用户所在的的国家和地区做出合适的语言适配。
* [**头像**](https://appwrite.io/docs/references/cloud/client-web/avatars) -管理用户头像、国家旗帜、浏览器图标、信用卡符号,和生成二维码。
如需完整的 API 界面文档,请访问 [https://appwrite.io/docs](https://appwrite.io/docs)。如需更多教程、新闻和公告,请订阅我们的 [博客](https://medium.com/appwrite-io) 和 加入我们的[Discord 社区](https://discord.gg/GSeTUeA)。
@ -130,18 +148,19 @@ docker run -it --rm `
#### 客户端
* ✅   [Web](https://github.com/appwrite/sdk-for-web) (由 Appwrite 团队维护)
* ✅   [Flutter](https://github.com/appwrite/sdk-for-flutter) (由 Appwrite 团队维护)
* ✅   [Apple](https://github.com/appwrite/sdk-for-apple) - **公测** (由 Appwrite 团队维护)
* ✅   [Apple](https://github.com/appwrite/sdk-for-apple) (由 Appwrite 团队维护)
* ✅   [Android](https://github.com/appwrite/sdk-for-android) (由 Appwrite 团队维护)
* ✅   [React Native](https://github.com/appwrite/sdk-for-react-native) - **公测** (由 Appwrite 团队维护)
#### 服务器
* ✅   [NodeJS](https://github.com/appwrite/sdk-for-node) (由 Appwrite 团队维护)
* ✅   [PHP](https://github.com/appwrite/sdk-for-php) (由 Appwrite 团队维护)
* ✅   [Dart](https://github.com/appwrite/sdk-for-dart) - (由 Appwrite 团队维护)
* ✅   [Deno](https://github.com/appwrite/sdk-for-deno) - **公测** (由 Appwrite 团队维护)
* ✅   [Dart](https://github.com/appwrite/sdk-for-dart) (由 Appwrite 团队维护)
* ✅   [Deno](https://github.com/appwrite/sdk-for-deno) (由 Appwrite 团队维护)
* ✅   [Ruby](https://github.com/appwrite/sdk-for-ruby) (由 Appwrite 团队维护)
* ✅   [Python](https://github.com/appwrite/sdk-for-python) (由 Appwrite 团队维护)
* ✅   [Kotlin](https://github.com/appwrite/sdk-for-kotlin) - **公测** (由 Appwrite 团队维护)
* ✅   [Apple](https://github.com/appwrite/sdk-for-apple) - **公测** (由 Appwrite 团队维护)
* ✅   [Kotlin](https://github.com/appwrite/sdk-for-kotlin) (由 Appwrite 团队维护)
* ✅   [Swift](https://github.com/appwrite/sdk-for-swift) (由 Appwrite 团队维护)
* ✅   [.NET](https://github.com/appwrite/sdk-for-dotnet) - **公测** (由 Appwrite 团队维护)
#### 开发者社区

View file

@ -17,7 +17,7 @@
[![Hacktoberfest](https://img.shields.io/static/v1?label=hacktoberfest&message=ready&color=191120&style=flat-square)](https://hacktoberfest.appwrite.io)
[![Discord](https://img.shields.io/discord/564160730845151244?label=discord&style=flat-square)](https://appwrite.io/discord?r=Github)
[![Build Status](https://img.shields.io/github/actions/workflow/status/appwrite/appwrite/tests.yml?branch=master&label=tests&style=flat-square)](https://github.com/appwrite/appwrite/actions)
[![Twitter Account](https://img.shields.io/twitter/follow/appwrite?color=00acee&label=twitter&style=flat-square)](https://twitter.com/appwrite)
[![X Account](https://img.shields.io/twitter/follow/appwrite?color=00acee&label=twitter&style=flat-square)](https://twitter.com/appwrite)
<!-- [![Docker Pulls](https://img.shields.io/docker/pulls/appwrite/appwrite?color=f02e65&style=flat-square)](https://hub.docker.com/r/appwrite/appwrite) -->
<!-- [![Translate](https://img.shields.io/badge/translate-f02e65?style=flat-square)](docs/tutorials/add-translations.md) -->
@ -142,21 +142,39 @@ Choose from one of the providers below:
Getting started with Appwrite is as easy as creating a new project, choosing your platform, and integrating its SDK into your code. You can easily get started with your platform of choice by reading one of our Getting Started tutorials.
- [Getting Started for Web](https://appwrite.io/docs/getting-started-for-web)
- [Getting Started for Flutter](https://appwrite.io/docs/getting-started-for-flutter)
- [Getting Started for Apple](https://appwrite.io/docs/getting-started-for-apple)
- [Getting Started for Android](https://appwrite.io/docs/getting-started-for-android)
- [Getting Started for Server](https://appwrite.io/docs/getting-started-for-server)
- [Getting Started for CLI](https://appwrite.io/docs/command-line)
| Platform | Technology |
|--------------------|------------|
| **Web app** | [Quick start for Web](/docs/quick-starts/web) |
| | [Quick start for Next.js](/docs/quick-starts/nextjs) |
| | [Quick start for React](/docs/quick-starts/react) |
| | [Quick start for Vue.js](/docs/quick-starts/vue) |
| | [Quick start for Nuxt](/docs/quick-starts/nuxt) |
| | [Quick start for SvelteKit](/docs/quick-starts/sveltekit) |
| | [Quick start for Refine](/docs/quick-starts/refine) |
| | [Quick start for Angular](/docs/quick-starts/angular) |
| **Mobile and Native** | [Quick start for React Native](/docs/quick-starts/react-native) |
| | [Quick start for Flutter](/docs/quick-starts/flutter) |
| | [Quick start for Apple](/docs/quick-starts/apple) |
| | [Quick start for Android](/docs/quick-starts/android) |
| **Server** | [Quick start for Node.js](/docs/quick-starts/node) |
| | [Quick start for Python](/docs/quick-starts/python) |
| | [Quick start for .NET](/docs/quick-starts/dotnet) |
| | [Quick start for Dart](/docs/quick-starts/dart) |
| | [Quick start for Ruby](/docs/quick-starts/ruby) |
| | [Quick start for Deno](/docs/quick-starts/deno) |
| | [Quick start for PHP](/docs/quick-starts/php) |
| | [Quick start for Kotlin](/docs/quick-starts/kotlin) |
| | [Quick start for Swift](/docs/quick-starts/swift) |
### Services
### Products
- [**Account**](https://appwrite.io/docs/references/cloud/client-web/account) - Manage current user authentication and account. Track and manage the user sessions, devices, sign-in methods, and security logs.
- [**Users**](https://appwrite.io/docs/server/users) - Manage and list all project users when building backend integrations with Server SDKs.
- [**Teams**](https://appwrite.io/docs/references/cloud/client-web/teams) - Manage and group users in teams. Manage memberships, invites, and user roles within a team.
- [**Databases**](https://appwrite.io/docs/references/cloud/client-web/databases) - Manage databases, collections, and documents. Read, create, update, and delete documents and filter lists of document collections using advanced filters.
- [**Storage**](https://appwrite.io/docs/references/cloud/client-web/storage) - Manage storage files. Read, create, delete, and preview files. Manipulate the preview of your files to perfectly fit your app. All files are scanned by ClamAV and stored in a secure and encrypted way.
- [**Functions**](https://appwrite.io/docs/server/functions) - Customize your Appwrite server by executing your custom code in a secure, isolated environment. You can trigger your code on any Appwrite system event either manually or using a CRON schedule.
- [**Functions**](https://appwrite.io/docs/references/cloud/server-nodejs/functions) - Customize your Appwrite project by executing your custom code in a secure, isolated environment. You can trigger your code on any Appwrite system event either manually or using a CRON schedule.
- [**Messaging**](https://appwrite.io/docs/references/cloud/client-web/messaging) - Communicate with your users through push notifications, emails, and SMS text messages using Appwrite Messaging.
- [**Realtime**](https://appwrite.io/docs/realtime) - Listen to real-time events for any of your Appwrite services including users, storage, functions, databases, and more.
- [**Locale**](https://appwrite.io/docs/references/cloud/client-web/locale) - Track your user's location and manage your app locale-based data.
- [**Avatars**](https://appwrite.io/docs/references/cloud/client-web/avatars) - Manage your users' avatars, countries' flags, browser icons, and credit card symbols. Generate QR codes from links or plaintext strings.
@ -171,20 +189,21 @@ Below is a list of currently supported platforms and languages. If you would lik
- ✅ &nbsp; [Web](https://github.com/appwrite/sdk-for-web) (Maintained by the Appwrite Team)
- ✅ &nbsp; [Flutter](https://github.com/appwrite/sdk-for-flutter) (Maintained by the Appwrite Team)
- ✅ &nbsp; [Apple](https://github.com/appwrite/sdk-for-apple) - **Beta** (Maintained by the Appwrite Team)
- ✅ &nbsp; [Apple](https://github.com/appwrite/sdk-for-apple) (Maintained by the Appwrite Team)
- ✅ &nbsp; [Android](https://github.com/appwrite/sdk-for-android) (Maintained by the Appwrite Team)
- ✅ &nbsp; [React Native](https://github.com/appwrite/sdk-for-react-native) - **Beta** (Maintained by the Appwrite Team)
#### Server
- ✅ &nbsp; [NodeJS](https://github.com/appwrite/sdk-for-node) (Maintained by the Appwrite Team)
- ✅ &nbsp; [PHP](https://github.com/appwrite/sdk-for-php) (Maintained by the Appwrite Team)
- ✅ &nbsp; [Dart](https://github.com/appwrite/sdk-for-dart) - (Maintained by the Appwrite Team)
- ✅ &nbsp; [Deno](https://github.com/appwrite/sdk-for-deno) - **Beta** (Maintained by the Appwrite Team)
- ✅ &nbsp; [Dart](https://github.com/appwrite/sdk-for-dart) (Maintained by the Appwrite Team)
- ✅ &nbsp; [Deno](https://github.com/appwrite/sdk-for-deno) (Maintained by the Appwrite Team)
- ✅ &nbsp; [Ruby](https://github.com/appwrite/sdk-for-ruby) (Maintained by the Appwrite Team)
- ✅ &nbsp; [Python](https://github.com/appwrite/sdk-for-python) (Maintained by the Appwrite Team)
- ✅ &nbsp; [Kotlin](https://github.com/appwrite/sdk-for-kotlin) - **Beta** (Maintained by the Appwrite Team)
- ✅ &nbsp; [Apple](https://github.com/appwrite/sdk-for-apple) - **Beta** (Maintained by the Appwrite Team)
- ✅ &nbsp; [.NET](https://github.com/appwrite/sdk-for-dotnet) - **Experimental** (Maintained by the Appwrite Team)
- ✅ &nbsp; [Kotlin](https://github.com/appwrite/sdk-for-kotlin) (Maintained by the Appwrite Team)
- ✅ &nbsp; [Swift](https://github.com/appwrite/sdk-for-swift) (Maintained by the Appwrite Team)
- ✅ &nbsp; [.NET](https://github.com/appwrite/sdk-for-dotnet) - **Beta** (Maintained by the Appwrite Team)
#### Community
@ -213,7 +232,7 @@ For security issues, kindly email us at [security@appwrite.io](mailto:security@a
## Follow Us
Join our growing community around the world! Check out our official [Blog](https://medium.com/appwrite-io). Follow us on [Twitter](https://twitter.com/appwrite), [Facebook Page](https://www.facebook.com/appwrite.io), [Facebook Group](https://www.facebook.com/groups/appwrite.developers/), [Dev Community](https://dev.to/appwrite) or join our live [Discord server](https://discord.gg/GSeTUeA) for more help, ideas, and discussions.
Join our growing community around the world! Check out our official [Blog](https://appwrite.io/blog). Follow us on [X](https://twitter.com/appwrite), [LinkedIn](https://www.linkedin.com/company/appwrite/), [Dev Community](https://dev.to/appwrite) or join our live [Discord server](https://appwrite.io/discord) for more help, ideas, and discussions.
## License

View file

@ -8,7 +8,6 @@ use Appwrite\Event\Delete;
use Appwrite\Event\Func;
use Appwrite\Event\Hamster;
use Appwrite\Platform\Appwrite;
use Utopia\App;
use Utopia\Cache\Adapter\Sharding;
use Utopia\Cache\Cache;
use Utopia\CLI\CLI;
@ -22,6 +21,7 @@ use Utopia\Platform\Service;
use Utopia\Pools\Group;
use Utopia\Queue\Connection;
use Utopia\Registry\Registry;
use Utopia\System\System;
Authorization::disable();
@ -145,7 +145,7 @@ CLI::setResource('logError', function (Registry $register) {
$logger = $register->get('logger');
if ($logger) {
$version = App::getEnv('_APP_VERSION', 'UNKNOWN');
$version = System::getEnv('_APP_VERSION', 'UNKNOWN');
$log = new Log();
$log->setNamespace($namespace);
@ -164,7 +164,7 @@ CLI::setResource('logError', function (Registry $register) {
$log->setAction($action);
$isProduction = App::getEnv('_APP_ENV', 'development') === 'production';
$isProduction = System::getEnv('_APP_ENV', 'development') === 'production';
$log->setEnvironment($isProduction ? Log::ENVIRONMENT_PRODUCTION : Log::ENVIRONMENT_STAGING);
$responseCode = $logger->addLog($log);

View file

@ -142,6 +142,7 @@ return [
'pw' => ['name' => 'Palau', 'path' => __DIR__ . '/flags/pw.png'],
'pg' => ['name' => 'Papua New Guinea', 'path' => __DIR__ . '/flags/pg.png'],
'pl' => ['name' => 'Poland', 'path' => __DIR__ . '/flags/pl.png'],
'pf' => ['name' => 'French Polynesia', 'path' => __DIR__ . '/flags/pf.png'],
'kp' => ['name' => 'North Korea', 'path' => __DIR__ . '/flags/kp.png'],
'pt' => ['name' => 'Portugal', 'path' => __DIR__ . '/flags/pt.png'],
'py' => ['name' => 'Paraguay', 'path' => __DIR__ . '/flags/py.png'],

View file

@ -136,6 +136,11 @@ return [
'description' => 'The current project has exceeded the maximum number of users. Please check your user limit in the Appwrite console.',
'code' => 501,
],
Exception::USER_CONSOLE_COUNT_EXCEEDED => [
'name' => Exception::USER_CONSOLE_COUNT_EXCEEDED,
'description' => 'Sign up to the console is restricted. You can contact an administrator to update console sign up restrictions by setting _APP_CONSOLE_WHITELIST_ROOT to "disabled".',
'code' => 501,
],
Exception::USER_JWT_INVALID => [
'name' => Exception::USER_JWT_INVALID,
'description' => 'The JWT token is invalid. Please check the value of the X-Appwrite-JWT header to ensure the correct token is being used.',

View file

@ -73,6 +73,7 @@ return [
'GD',
'GT',
'GY',
'HK',
'HN',
'HR',
'HT',
@ -180,6 +181,7 @@ return [
'TR',
'TV',
'TZ',
'TW',
'UG',
'UA',
'UY',

View file

@ -179,6 +179,7 @@ return [
'TN' => '216',
'TR' => '90',
'TV' => '688',
'TW' => '886',
'TZ' => '255',
'UG' => '256',
'UA' => '380',

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Baie dankie",
"emails.verification.signature": "Die {{project}} span",
"emails.magicSession.subject": "Teken aan",
"emails.magicSession.hello": "Goeie dag,",
"emails.magicSession.hello": "Goeie dag",
"emails.magicSession.body": "Volg hierdie skakel om in te teken.",
"emails.magicSession.footer": "Ignoreer gerus hierdie boodskap as u nie die versoek gestuur het om met die' adres in te teken nie.",
"emails.magicSession.thanks": "Baie dankie",
@ -206,6 +206,7 @@
"countries.tn": "Tunisië",
"countries.tr": "Turkye",
"countries.tv": "Tuvalu",
"countries.tw": "Taiwan",
"countries.tz": "Tanzanië",
"countries.ug": "Uganda",
"countries.ua": "Oekraïne",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "شكرا",
"emails.verification.signature": "فريق {{project}}",
"emails.magicSession.subject": "تسجيل الدخول",
"emails.magicSession.hello": "أهلا،",
"emails.magicSession.hello": "أهلا",
"emails.magicSession.body": "اتبع هذا الرابط لتسجيل الدخول",
"emails.magicSession.footer": "لو لم تطلب تسجيل الدخول بهذا البريد الاكتروني ، يمكنك تجاهل هذه الرسالة",
"emails.magicSession.thanks": "شكرا",
@ -206,6 +206,7 @@
"countries.tn": "تونس",
"countries.tr": "تركيا",
"countries.tv": "توفالو",
"countries.tw": "تايوان",
"countries.tz": "تنزانيا",
"countries.ug": "أوغندا",
"countries.ua": "أوكرانيا",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "ধন্যবাদ",
"emails.verification.signature": "{{project}} দল",
"emails.magicSession.subject": "লগইন",
"emails.magicSession.hello": "নমস্কাৰ,",
"emails.magicSession.hello": "নমস্কাৰ",
"emails.magicSession.body": "লগইন কৰিবলৈ এই লিংকটো অনুসৰণ কৰক।",
"emails.magicSession.footer": "যদি আপুনি এই ইমেইল ব্যৱহাৰ কৰি লগইন কৰিবলৈ কোৱা নাছিল, আপুনি এই বাৰ্তাটো উপেক্ষা কৰিব পাৰে।",
"emails.magicSession.thanks": "ধন্যবাদ",
@ -206,6 +206,7 @@
"countries.tn": "টিউনিচিয়া",
"countries.tr": "তুৰ্কী",
"countries.tv": "টুভালু",
"countries.tw": "তাইওয়ান",
"countries.tz": "তাঞ্জানিয়া",
"countries.ug": "উগাণ্ডা",
"countries.ua": "ইউক্ৰেইন",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Təşəkkürlər",
"emails.verification.signature": "{{project}} komandası",
"emails.magicSession.subject": "Daxil Olmaq",
"emails.magicSession.hello": "Salam,",
"emails.magicSession.hello": "Salam",
"emails.magicSession.body": "Daxil olmaq üçün bu linki izləyin.",
"emails.magicSession.footer": "Bu e-poçtdan istifadə edərək giriş istəməmisinizsə, bu mesajı görməməzlikdən gələ bilərsiniz.",
"emails.magicSession.thanks": "Təşəkkürlər",
@ -206,6 +206,7 @@
"countries.tn": "Tunis",
"countries.tr": "Türkiyə",
"countries.tv": "Tuvalu",
"countries.tw": "Tayvan",
"countries.tz": "Tanzaniya",
"countries.ug": "Uqanda",
"countries.ua": "Ukrayna",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Дзякуем",
"emails.verification.signature": "каманда {{project}}",
"emails.magicSession.subject": "Лагін",
"emails.magicSession.hello": "Прывітанне,",
"emails.magicSession.hello": "Прывітанне",
"emails.magicSession.body": "Перайдзіце па спасылцы, каб увайсці.",
"emails.magicSession.footer": "Калі вы не прасілі ўвайсці, выкарыстоўваючы гэты адрас электроннай пошты, праігнаруйце гэтае паведамленне.",
"emails.magicSession.thanks": "Дзякуем",
@ -206,6 +206,7 @@
"countries.tn": "Туніс",
"countries.tr": "Турцыя",
"countries.tv": "Тувалу",
"countries.tw": "Тайвань",
"countries.tz": "Танзанія",
"countries.ug": "Уганда",
"countries.ua": "Украіна",

View file

@ -206,6 +206,7 @@
"countries.tn": "Тунис",
"countries.tr": "Турция",
"countries.tv": "Тувалу",
"countries.tw": "Тайван",
"countries.tz": "Танзания",
"countries.ug": "Уганда",
"countries.ua": "Украйна",

View file

@ -206,6 +206,7 @@
"countries.tn": "ट्यूनीशिया",
"countries.tr": "तुर्की",
"countries.tv": "तुवालू",
"countries.tw": "ताइवान",
"countries.tz": "तंजानिया",
"countries.ug": "युगांडा",
"countries.ua": "यूक्रेन",

View file

@ -206,6 +206,7 @@
"countries.tn": "তিউনিসিয়া",
"countries.tr": "তুরস্ক",
"countries.tv": "টুভালু",
"countries.tw": "তাইওয়ান",
"countries.tz": "তানজানিয়া",
"countries.ug": "উগান্ডা",
"countries.ua": "ইউক্রেন",

View file

@ -206,6 +206,7 @@
"countries.tn": "Tunis",
"countries.tr": "Turska",
"countries.tv": "Tuvalu",
"countries.tw": "Tajvan",
"countries.tz": "Tanzania",
"countries.ug": "Uganda",
"countries.ua": "Ukrajina",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Gràcies",
"emails.verification.signature": "Equip {{project}}",
"emails.magicSession.subject": "Entrar",
"emails.magicSession.hello": "Hola,",
"emails.magicSession.hello": "Hola",
"emails.magicSession.body": "Accedeix a aquest enllaç per a entrar.",
"emails.magicSession.footer": "Si no has sol·licitat entrar amb aquesta adreça electrònica, pots ignorar aquest missatge.",
"emails.magicSession.thanks": "Gràcies",
@ -206,6 +206,7 @@
"countries.tn": "Tunísia",
"countries.tr": "Turquia",
"countries.tv": "Tuvalu",
"countries.tw": "Taiwan",
"countries.tz": "Tanzània",
"countries.ug": "Uganda",
"countries.ua": "Ucraïna",

View file

@ -206,6 +206,7 @@
"countries.tn": "Tunisko",
"countries.tr": "Turecko",
"countries.tv": "Tuvalu",
"countries.tw": "Tchaj-wan",
"countries.tz": "Tanzanie",
"countries.ug": "Uganda",
"countries.ua": "Ukraine",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Tak",
"emails.verification.signature": "{{project}} team",
"emails.magicSession.subject": "Login",
"emails.magicSession.hello": "Hej,",
"emails.magicSession.hello": "Hej",
"emails.magicSession.body": "Følg dette link for at logge ind.",
"emails.magicSession.footer": "Hvis du ikke har bedt om at logge ind med denne email, ignorer venligst denne besked.",
"emails.magicSession.thanks": "Tak",
@ -206,6 +206,7 @@
"countries.tn": "Tunisien",
"countries.tr": "Tyrkiet",
"countries.tv": "Tuvalu",
"countries.tw": "Taiwan",
"countries.tz": "Tanzania",
"countries.ug": "Uganda",
"countries.ua": "Ukraine",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Danke",
"emails.verification.signature": "{{project}}-Team",
"emails.magicSession.subject": "Login",
"emails.magicSession.hello": "Hey,",
"emails.magicSession.hello": "Hey",
"emails.magicSession.body": "Folge diesem Link, um dich einzuloggen.",
"emails.magicSession.footer": "Solltest du keinen Login für diese E-Mail-Adresse angefordert haben, kannst du diese Nachricht ignorieren.",
"emails.magicSession.thanks": "Danke",
@ -206,6 +206,7 @@
"countries.tn": "Tunesien",
"countries.tr": "Türkei",
"countries.tv": "Tuvalu",
"countries.tw": "Taiwan",
"countries.tz": "Tansania",
"countries.ug": "Uganda",
"countries.ua": "Ukraine",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Ευχαριστούμε",
"emails.verification.signature": "Η ομάδα του {{project}}",
"emails.magicSession.subject": "Είσοδος",
"emails.magicSession.hello": "Γεια σου,",
"emails.magicSession.hello": "Γεια σου",
"emails.magicSession.body": "Ακολουθήστε αυτό το link για να συνδεθείτε",
"emails.magicSession.footer": "Εάν δεν ζητήσατε να συνδεθείτε χρησιμοποιώντας αυτό το email, μπορείτε να αγνοήσετε αυτό το μήνυμα.",
"emails.magicSession.thanks": "Ευχαριστούμε",
@ -206,6 +206,7 @@
"countries.tn": "Τυνησία",
"countries.tr": "Τουρκία",
"countries.tv": "Τουβαλού",
"countries.tw": "Ταϊβάν",
"countries.tz": "Τανζανία",
"countries.ug": "Ουγκάντα",
"countries.ua": "Ουκρανία",

View file

@ -223,6 +223,7 @@
"countries.tn": "Tunisia",
"countries.tr": "Turkey",
"countries.tv": "Tuvalu",
"countries.tw": "Taiwan",
"countries.tz": "Tanzania",
"countries.ug": "Uganda",
"countries.ua": "Ukraine",

View file

@ -9,7 +9,7 @@
"emails.verification.thanks": "Dankegon.",
"emails.verification.signature": "Teamo {{project}}",
"emails.magicSession.subject": "Login",
"emails.magicSession.hello": "Saluton,",
"emails.magicSession.hello": "Saluton",
"emails.magicSession.body": "Alklaku ĉi tiun ligon por eniri.",
"emails.magicSession.footer": "Se vi ne petis ĉi tiun konfirmon de ĉi tiu retpoŝto, vi povas ignori ĉi tiun mesaĝon.",
"emails.magicSession.thanks": "Dankegon",
@ -205,6 +205,7 @@
"countries.tn": "Tunisia",
"countries.tr": "Turkey",
"countries.tv": "Tuvalu",
"countries.tw": "Tajvano",
"countries.tz": "Tanzania",
"countries.ug": "Uganda",
"countries.ua": "Ukraine",

View file

@ -206,6 +206,7 @@
"countries.tn": "Túnez",
"countries.tr": "Turquía",
"countries.tv": "Tuvalu",
"countries.tw": "Taiwán",
"countries.tz": "Tanzania",
"countries.ug": "Uganda",
"countries.ua": "Ucrania",

View file

@ -206,6 +206,7 @@
"countries.tn": "تونس",
"countries.tr": "ترکیه",
"countries.tv": "تووالو",
"countries.tw": "تایوان",
"countries.tz": "تانزانیا",
"countries.ug": "اوگاندا",
"countries.ua": "اوکراین",

View file

@ -206,6 +206,7 @@
"countries.tn": "Tunisia",
"countries.tr": "Turkki",
"countries.tv": "Tuvalu",
"countries.tw": "Taiwan",
"countries.tz": "Tansania",
"countries.ug": "Uganda",
"countries.ua": "Ukraina",

View file

@ -206,6 +206,7 @@
"countries.tn": "Tunesia",
"countries.tr": "Turkaland",
"countries.tv": "Tuvalu",
"countries.tw": "Taivan",
"countries.tz": "Tansania",
"countries.ug": "Uganda",
"countries.ua": "Ukraina",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Merci",
"emails.verification.signature": "Équipe {{project}}",
"emails.magicSession.subject": "Connexion",
"emails.magicSession.hello": "Bonjour,",
"emails.magicSession.hello": "Bonjour",
"emails.magicSession.body": "Suivez ce lien pour vous connecter.",
"emails.magicSession.footer": "Si vous n'avez pas demandé à vous connecter en utilisant cet e-mail, vous pouvez ignorer ce message.",
"emails.magicSession.thanks": "Merci",
@ -206,6 +206,7 @@
"countries.tn": "Tunisie",
"countries.tr": "Turquie",
"countries.tv": "Tuvalu",
"countries.tw": "Taïwan",
"countries.tz": "Tanzanie",
"countries.ug": "Uganda",
"countries.ua": "Ukraine",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Go raibh maith agat",
"emails.verification.signature": "{{project}} foireann",
"emails.magicSession.subject": "Logáil isteach",
"emails.magicSession.hello": "Haigh,",
"emails.magicSession.hello": "Haigh",
"emails.magicSession.body": "Lean an nasc seo chun logáil isteach.",
"emails.magicSession.footer": "Mura ndearna tú iarratas logáil isteach leis an ríomhphost seo, déan neamhaird den teachtaireacht seo.",
"emails.magicSession.thanks": "Go raibh maith agat",
@ -206,6 +206,7 @@
"countries.tn": "An Túinéis",
"countries.tr": "An Tuirc",
"countries.tv": "Túvalú",
"countries.tw": "An Téaváin",
"countries.tz": "An Tansáin",
"countries.ug": "Uganda",
"countries.ua": "An Úcráin",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "આભાર",
"emails.verification.signature": "{{project}} ટીમ",
"emails.magicSession.subject": "પ્રવેશ કરો",
"emails.magicSession.hello": "નમસ્કાર,",
"emails.magicSession.hello": "નમસ્કાર",
"emails.magicSession.body": "પ્રવેશ કરવા માટે આ લિંકને અનુસરો.",
"emails.magicSession.footer": "જો તમે આ ઇમેઇલનો ઉપયોગ કરીને પ્રવેશ કરવાનું ન કહ્યું હોય, તો તમે આ સંદેશને અવગણી શકો છો.",
"emails.magicSession.thanks": "આભાર",
@ -206,6 +206,7 @@
"countries.tn": "ટ્યુનિશિયા",
"countries.tr": "તુર્કી",
"countries.tv": "તુવાલુ",
"countries.tw": "તાઇવાન",
"countries.tz": "તાંઝાનિયા",
"countries.ug": "યુગાન્ડા",
"countries.ua": "યુક્રેન",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "תודה",
"emails.verification.signature": "צוות {{project}}",
"emails.magicSession.subject": "כניסה למערכת",
"emails.magicSession.hello": "שלום,",
"emails.magicSession.hello": "שלום",
"emails.magicSession.body": "לחץ על קישור זה כדי להיכנס.",
"emails.magicSession.footer": "אם לא ביקשת להיכנס באמצעות דוא\"ל זה, תוכל להתעלם מהודעה זו.",
"emails.magicSession.thanks": "תודה",
@ -206,6 +206,7 @@
"countries.tn": "תוניסיה",
"countries.tr": "טורקיה",
"countries.tv": "טובאלו",
"countries.tw": "טייוואן",
"countries.tz": "טנזניה",
"countries.ug": "אוגנדה",
"countries.ua": "אוקראינה",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "धन्यवाद",
"emails.verification.signature": "{{project}} टीम",
"emails.magicSession.subject": "लॉग इन",
"emails.magicSession.hello": "नमस्ते,",
"emails.magicSession.hello": "नमस्ते",
"emails.magicSession.body": "इस लिंक के माध्यम से लॉग-इन करें।",
"emails.magicSession.footer": "यदि आप इस ईमेल द्वारा लॉगिन नहीं करना चाहते हैं, तो आप इस संदेश को नज़रअंदाज़ कर सकते हैं।",
"emails.magicSession.thanks": "धन्यवाद",
@ -206,6 +206,7 @@
"countries.tn": "ट्यूनीशिया",
"countries.tr": "तुर्की",
"countries.tv": "तुवालू",
"countries.tw": "ताइवान",
"countries.tz": "तंजानिया",
"countries.ug": "युगांडा",
"countries.ua": "यूक्रेन",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Hvala",
"emails.verification.signature": "{{project}} tim",
"emails.magicSession.subject": "Prijavite se",
"emails.magicSession.hello": "Pozdrav,",
"emails.magicSession.hello": "Pozdrav",
"emails.magicSession.body": "Slijedite ovu poveznicu za prijavu.",
"emails.magicSession.footer": "Ako niste zatražili prijavu putem ove e-pošte, možete zanemariti ovu poruku.",
"emails.magicSession.thanks": "Hvala",
@ -206,6 +206,7 @@
"countries.tn": "Tunis",
"countries.tr": "Turska",
"countries.tv": "Tuvalu",
"countries.tw": "Tajvan",
"countries.tz": "Tanzanija",
"countries.ug": "Uganda",
"countries.ua": "Ukrajina",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Köszönettel",
"emails.verification.signature": "a {{project}} csapat",
"emails.magicSession.subject": "Bejelentkezés",
"emails.magicSession.hello": "Szia,",
"emails.magicSession.hello": "Szia",
"emails.magicSession.body": "Kattints a linkre a bejelentkezéshez.",
"emails.magicSession.footer": "Ha nem te szerettél volna bejelentkezni ezzel az email címmel, akkor nyugodtan hagyd figyelmen kívül ezt az üzenetet.",
"emails.magicSession.thanks": "Köszönettel",
@ -206,6 +206,7 @@
"countries.tn": "Tunézia",
"countries.tr": "Törökország",
"countries.tv": "Tuvalu",
"countries.tw": "Tajvan",
"countries.tz": "Tanzánia",
"countries.ug": "Uganda",
"countries.ua": "Ukrajna",

View file

@ -206,6 +206,7 @@
"countries.tn": "Թունիս",
"countries.tr": "Թուրքիա",
"countries.tv": "Տուվալու",
"countries.tw": "Թայվան",
"countries.tz": "Տանզանիա",
"countries.ug": "Ուգանդա",
"countries.ua": "Ուկրաինա",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Terima kasih",
"emails.verification.signature": "Tim {{project}}",
"emails.magicSession.subject": "Masuk",
"emails.magicSession.hello": "Hai,",
"emails.magicSession.hello": "Hai",
"emails.magicSession.body": "Ikuti tautan ini untuk masuk.",
"emails.magicSession.footer": "Jika Anda tidak meminta untuk masuk menggunakan email ini, Anda dapat mengabaikan pesan ini.",
"emails.magicSession.thanks": "Terima kasih",
@ -206,6 +206,7 @@
"countries.tn": "Tunisia",
"countries.tr": "Turki",
"countries.tv": "Tuvalu",
"countries.tw": "Taiwan",
"countries.tz": "Tanzania",
"countries.ug": "Uganda",
"countries.ua": "Ukraina",

View file

@ -206,6 +206,7 @@
"countries.tn": "Túnis",
"countries.tr": "Tyrkland",
"countries.tv": "Túvalú",
"countries.tw": "Taívan",
"countries.tz": "Tansanía",
"countries.ug": "Úganda",
"countries.ua": "Úkraína",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Grazie",
"emails.verification.signature": "Il team {{project}}",
"emails.magicSession.subject": "Login",
"emails.magicSession.hello": "Ciao,",
"emails.magicSession.hello": "Ciao",
"emails.magicSession.body": "Clicca questo link per accedere.",
"emails.magicSession.footer": "Se non hai richiesto di effettuare laccesso, puoi ignorare questo messaggio.",
"emails.magicSession.thanks": "Grazie",
@ -206,6 +206,7 @@
"countries.tn": "Tunisia",
"countries.tr": "Turchia",
"countries.tv": "Tuvalu",
"countries.tw": "Taiwan",
"countries.tz": "Tanzania",
"countries.ug": "Uganda",
"countries.ua": "Ucraina",

View file

@ -206,6 +206,7 @@
"countries.tn": "チュニジア",
"countries.tr": "トルコ",
"countries.tv": "ツバル",
"countries.tw": "台湾",
"countries.tz": "タンザニア",
"countries.ug": "ウガンダ",
"countries.ua": "ウクライナ",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Matur nuwun",
"emails.verification.signature": "Tim {{project}}",
"emails.magicSession.subject": "Masuk",
"emails.magicSession.hello": "Hai,",
"emails.magicSession.hello": "Hai",
"emails.magicSession.body": "Klik link iki kanggo masuk.",
"emails.magicSession.footer": "Yen sampeyan ora njaluk masuk nggunakake alamat email iki, sampeyan iso nglirwakake pesen iki.",
"emails.magicSession.thanks": "Matur nuwun",
@ -206,6 +206,7 @@
"countries.tn": "Tunisia",
"countries.tr": "Turki",
"countries.tv": "Tuvalu",
"countries.tw": "Taiwan",
"countries.tz": "Tanzania",
"countries.ug": "Uganda",
"countries.ua": "Ukraina",

View file

@ -206,6 +206,7 @@
"countries.tn": "ទុយនីស៊ី",
"countries.tr": "តួកគី",
"countries.tv": "តូវលូ",
"countries.tw": "តៃវ៉ាន់",
"countries.tz": "តង់ហ្សានី",
"countries.ug": "អ៊ូហ្គង់ដា",
"countries.ua": "អ៊ុយក្រែន",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "ಧನ್ಯವಾದಗಳು",
"emails.verification.signature": "{{project}} ತಂಡ",
"emails.magicSession.subject": "ಲಾಗಿನ್",
"emails.magicSession.hello": "ನಮಸ್ಕಾರ,",
"emails.magicSession.hello": "ನಮಸ್ಕಾರ",
"emails.magicSession.body": "ಲಾಗಿನ್ ಮಾಡಲಿಕ್ಕೆ ಈ ಲಿಂಕನ್ನು ಅನುಸರಿಸಿ",
"emails.magicSession.footer": "ನೀವು ಈ ಇಮೇಲನಿಂದ ಲಾಗಿನ್ ಮಾಡಲು ಕೇಳದಿದ್ದರೆ, ಈ ಸಂದೇಶವನ್ನು ನಿರ್ಲಕ್ಷಿಸಿ",
"emails.magicSession.thanks": "ಧನ್ಯವಾದಗಳು",
@ -206,6 +206,7 @@
"countries.tn": "ಟುನೀಶಿಯಾ",
"countries.tr": "ಟರ್ಕಿ",
"countries.tv": "ತುವಾಲು",
"countries.tw": "ತೈವಾನ್",
"countries.tz": "ಟಾಂಜಾನಿಯಾ",
"countries.ug": "ಉಗಾಂಡಾ",
"countries.ua": "ಉಕ್ರೇನ್",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "감사합니다",
"emails.verification.signature": "{{project}} 팀",
"emails.magicSession.subject": "로그인",
"emails.magicSession.hello": "안녕하세요,",
"emails.magicSession.hello": "안녕하세요",
"emails.magicSession.body": "로그인 하시려면 링크를 클릭하여주세요.",
"emails.magicSession.footer": "이 이메일 계정으로 로그인 신청을 하지 않으셨다면 이 메세지를 무시하여주세요.",
"emails.magicSession.thanks": "감사합니다",
@ -206,6 +206,7 @@
"countries.tn": "튀니지",
"countries.tr": "터키",
"countries.tv": "투발루",
"countries.tw": "대만",
"countries.tz": "탄자니아",
"countries.ug": "우간다",
"countries.ua": "우크라이나",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Gratias",
"emails.verification.signature": "{{project}} Team",
"emails.magicSession.subject": "Log in",
"emails.magicSession.hello": "Salve ibi,",
"emails.magicSession.hello": "Salve ibi",
"emails.magicSession.body": "Hanc nexum cum login",
"emails.magicSession.footer": "Si verificationem huius inscriptionis non postulasti, nuntium hunc ignorare potes.",
"emails.magicSession.thanks": "Gratias",
@ -206,6 +206,7 @@
"countries.tn": "Tunisia",
"countries.tr": "Turkey",
"countries.tv": "Tuvalu",
"countries.tw": "Formosa",
"countries.tz": "Tanzania",
"countries.ug": "Uganda",
"countries.ua": "Ukraine",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Merci",
"emails.verification.signature": "{{project}} équipe",
"emails.magicSession.subject": "Login",
"emails.magicSession.hello": "Hey,",
"emails.magicSession.hello": "Hey",
"emails.magicSession.body": "Follegt dëse Link fir umellen.",
"emails.magicSession.footer": "Wann Dir net gefrot hutt Iech mat dëser E -Mail anzemelden, kënnt Dir dëse Message ignoréieren.",
"emails.magicSession.thanks": "Merci",
@ -206,6 +206,7 @@
"countries.tn": "Tunesien",
"countries.tr": "Tierkei",
"countries.tv": "Tuvalu",
"countries.tw": "Taiwan",
"countries.tz": "Tansania",
"countries.ug": "Ugana",
"countries.ua": "Ukraine",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Ačiū",
"emails.verification.signature": "{{project}} komanda",
"emails.magicSession.subject": "Prisijungti",
"emails.magicSession.hello": "Labas,",
"emails.magicSession.hello": "Labas",
"emails.magicSession.body": "Spauskite šią nuorodą, kad prisijungtumėte.",
"emails.magicSession.footer": "Jei neprašėte prisijungti naudojantis šiuo el. paštu, galite ignoruoti šį pranešimą.",
"emails.magicSession.thanks": "Ačiū",
@ -206,6 +206,7 @@
"countries.tn": "Tunisas",
"countries.tr": "Turkija",
"countries.tv": "Tuvalu",
"countries.tw": "Taivanas",
"countries.tz": "Tanzanija",
"countries.ug": "Uganda",
"countries.ua": "Ukraina",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Paldies",
"emails.verification.signature": "{{project}} komanda",
"emails.magicSession.subject": "Ieiet",
"emails.magicSession.hello": "Sveicināti,",
"emails.magicSession.hello": "Sveicināti",
"emails.magicSession.body": "Sekojiet saitei, lai ieietu.",
"emails.magicSession.footer": "Ja Jūs nepieprasījāt ieiet ar šo e-pasta adresi, lūdzu, ignorējiet šo ziņu.",
"emails.magicSession.thanks": "Paldies",
@ -206,6 +206,7 @@
"countries.tn": "Tunisija",
"countries.tr": "Turcija",
"countries.tv": "Tuvalu",
"countries.tw": "Taivāna",
"countries.tz": "Tanzānija",
"countries.ug": "Uganda",
"countries.ua": "Ukraina",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "നന്ദി",
"emails.verification.signature": "{{project}} ടീം",
"emails.magicSession.subject": "ലോഗിൻ",
"emails.magicSession.hello": "നമസ്കാരം,",
"emails.magicSession.hello": "നമസ്കാരം",
"emails.magicSession.body": "ലോഗിൻ ചെയ്യുന്നതിനായി ഈ ലിങ്ക് പിന്തുടരുക.",
"emails.magicSession.footer": "ഈ ഇമെയിൽ ഉപയോഗിച്ച് ലോഗിൻ ചെയ്യാൻ നിങ്ങൾ ആവശ്യപ്പെട്ടില്ലെങ്കിൽ, ഈ സന്ദേശം അവഗണിക്കാവുന്നതാണ്.",
"emails.magicSession.thanks": "നന്ദി",
@ -206,6 +206,7 @@
"countries.tn": "ടുണീഷ്യ",
"countries.tr": "തുർക്കി",
"countries.tv": "തുവാളു",
"countries.tw": "തായ്വാൻ",
"countries.tz": "ടാൻസാനിയ",
"countries.ug": "ഉഗാണ്ട",
"countries.ua": "ഉക്രൈൻ",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "धन्यवाद",
"emails.verification.signature": "{{project}} संघ",
"emails.magicSession.subject": "लॉगिन करा",
"emails.magicSession.hello": "नमस्कार ,",
"emails.magicSession.hello": "नमस्कार ",
"emails.magicSession.body": "लॉगिन करण्यासाठी या लिंकचे अनुसरण करा.",
"emails.magicSession.footer": "आपण या ईमेलचा वापर करून लॉगिन करण्यास सांगितले नसल्यास, आपण या संदेशाकडे दुर्लक्ष करू शकता.",
"emails.magicSession.thanks": "धन्यवाद",
@ -206,6 +206,7 @@
"countries.tn": "ट्यूनीशिया",
"countries.tr": "तुर्की",
"countries.tv": "तुवालु",
"countries.tw": "तैवान",
"countries.tz": "तंजानिया",
"countries.ug": "युगांडा",
"countries.ua": "यूक्रेन",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Terima kasih",
"emails.verification.signature": "{{project}} team",
"emails.magicSession.subject": "Log masuk",
"emails.magicSession.hello": "Hey,",
"emails.magicSession.hello": "Hey",
"emails.magicSession.body": "Tekan pautan ini untuk log masuk.",
"emails.magicSession.footer": "Sekiranya anda tidak membuat permintaan untuk log masuk menggunakan email ini, sila abaikan mesej ini.",
"emails.magicSession.thanks": "Terima kasih",
@ -206,6 +206,7 @@
"countries.tn": "Tunisia",
"countries.tr": "Turkey",
"countries.tv": "Tuvalu",
"countries.tw": "Taiwan",
"countries.tz": "Tanzania",
"countries.ug": "Uganda",
"countries.ua": "Ukraine",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Takk",
"emails.verification.signature": "{{project}} team",
"emails.magicSession.subject": "Pålogging",
"emails.magicSession.hello": "Hei,",
"emails.magicSession.hello": "Hei",
"emails.magicSession.body": "Følg denne lenken for å logge på.",
"emails.magicSession.footer": "Dersom du ikke ba om å logge på med denne e-postadressen, kan du se bort fra denne meldingen.",
"emails.magicSession.thanks": "Takk",
@ -206,6 +206,7 @@
"countries.tn": "Tunisia",
"countries.tr": "Tyrkia",
"countries.tv": "Tuvalu",
"countries.tw": "Taiwan",
"countries.tz": "Tanzania",
"countries.ug": "Uganda",
"countries.ua": "Ukraina",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "धन्यवाद",
"emails.verification.signature": "{{project}} समूह",
"emails.magicSession.subject": "लगइन",
"emails.magicSession.hello": "नमस्ते,",
"emails.magicSession.hello": "नमस्ते",
"emails.magicSession.body": "लगइन गर्नको लागी यो लिंकमा जानुहोस।",
"emails.magicSession.footer": "यदि तपाइँले यो इमेल प्रयोग गरेर लगइन गर्न सोध्नु भएको छैन भने तपाइँले यो सन्देश लाई बेवास्ता गर्न सक्नुहुन्छ।",
"emails.magicSession.thanks": "धन्यवाद",
@ -206,6 +206,7 @@
"countries.tn": "ट्युनिसिया",
"countries.tr": "टर्की",
"countries.tv": "टुभालु",
"countries.tw": "ताइवान",
"countries.tz": "तान्जानिया",
"countries.ug": "युगान्डा",
"countries.ua": "युक्रेन",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Bedankt",
"emails.verification.signature": "{{project}} team",
"emails.magicSession.subject": "Login",
"emails.magicSession.hello": "Hoi,",
"emails.magicSession.hello": "Hoi",
"emails.magicSession.body": "Volg deze link om in te loggen",
"emails.magicSession.footer": "Als u geen aanvraag heeft gemaakt om met deze mail in te loggen, kan u deze mail negeren",
"emails.magicSession.thanks": "Bedankt",
@ -206,6 +206,7 @@
"countries.tn": "Tunesië",
"countries.tr": "Turkijë",
"countries.tv": "Tuvalu",
"countries.tw": "Taiwan",
"countries.tz": "Tanzania",
"countries.ug": "Oeganda",
"countries.ua": "Oekraïne",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Takk",
"emails.verification.signature": "{{project}} team",
"emails.magicSession.subject": "Pålogging",
"emails.magicSession.hello": "Hei,",
"emails.magicSession.hello": "Hei",
"emails.magicSession.body": "Følg denne lenkja for å logge på.",
"emails.magicSession.footer": "Om du ikkje ba om å logge på med denne e-postadressa, kan du ignorera denne meldinga.",
"emails.magicSession.thanks": "Takk",
@ -206,6 +206,7 @@
"countries.tn": "Tunisia",
"countries.tr": "Tyrkia",
"countries.tv": "Tuvalu",
"countries.tw": "Taiwan",
"countries.tz": "Tanzania",
"countries.ug": "Uganda",
"countries.ua": "Ukraina",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "ଧନ୍ୟବାଦ",
"emails.verification.signature": "{{project}} ଦଳ",
"emails.magicSession.subject": "ଲଗଇନ୍ କରନ୍ତୁ",
"emails.magicSession.hello": "ନମସ୍କାର,",
"emails.magicSession.hello": "ନମସ୍କାର",
"emails.magicSession.body": "ଲଗଇନ୍ କରିବାକୁ ଏହି ଲିଙ୍କ୍ ଅନୁସରଣ କରନ୍ତୁ |",
"emails.magicSession.footer": "ଯଦି ଆପଣ ଏହି ଇମେଲ୍ ବ୍ୟବହାର କରି ଲଗଇନ୍ କରିବାକୁ କହି ନାହାଁନ୍ତି, ତେବେ ଆପଣ ଏହି ସନ୍ଦେଶକୁ ଉପେକ୍ଷା କରିପାରିବେ |",
"emails.magicSession.thanks": "ଧନ୍ୟବାଦ",
@ -206,6 +206,7 @@
"countries.tn": "ଟ୍ୟୁନିସିଆ",
"countries.tr": "ତୁର୍କୀ",
"countries.tv": "ତୁଭାଲୁ",
"countries.tw": "ତାଇୱାନ",
"countries.tz": "ତାଞ୍ଜାନିଆ",
"countries.ug": "ଉଗାଣ୍ଡା",
"countries.ua": "ୟୁକ୍ରେନ",

View file

@ -206,6 +206,7 @@
"countries.tn": "ਯੂਨਿਸੀਆ",
"countries.tr": "ਟਰਕੀ",
"countries.tv": "ਤੁਵਾਲੁ",
"countries.tw": "ਤਾਈਵਾਨ",
"countries.tz": "ਤਨਜ਼ਾਨੀਆ",
"countries.ug": "ਯੂਗਾਂਡਾ",
"countries.ua": "ਯੂਕ੍ਰੇਨ",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Dziękujemy",
"emails.verification.signature": "Zespół {{project}}",
"emails.magicSession.subject": "Logowanie",
"emails.magicSession.hello": "Cześć,",
"emails.magicSession.hello": "Cześć",
"emails.magicSession.body": "Kliknij w ten link, aby zalogować się.",
"emails.magicSession.footer": "Jeśli to nie Ty prosiłeś o logowanie przy użyciu tego adresu e-mail, zignoruj tę wiadomość.",
"emails.magicSession.thanks": "Dziękujemy",
@ -206,6 +206,7 @@
"countries.tn": "Tunezja",
"countries.tr": "Turcja",
"countries.tv": "Tuvalu",
"countries.tw": "Tajwan",
"countries.tz": "Tanzania",
"countries.ug": "Uganda",
"countries.ua": "Ukraina",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Muito obrigado",
"emails.verification.signature": "Time {{project}}",
"emails.magicSession.subject": "Login",
"emails.magicSession.hello": "Olá,",
"emails.magicSession.hello": "Olá",
"emails.magicSession.body": "Clique neste link para entrar.",
"emails.magicSession.footer": "Se você não solicitou conectar-se com este e-mail, ignore essa mensagem.",
"emails.magicSession.thanks": "Muito obrigado",
@ -206,6 +206,7 @@
"countries.tn": "Tunísia",
"countries.tr": "Turquia",
"countries.tv": "Tuvalu",
"countries.tw": "Taiwan",
"countries.tz": "Tanzânia",
"countries.ug": "Uganda",
"countries.ua": "Ucrânia",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Obrigado",
"emails.verification.signature": "Equipa {{project}}",
"emails.magicSession.subject": "Login",
"emails.magicSession.hello": "Olá ,",
"emails.magicSession.hello": "Olá ",
"emails.magicSession.body": "Siga esta ligação para iniciar sessão.",
"emails.magicSession.footer": "Se não pediu para entrar usando este e-mail, pode ignorar esta mensagem.",
"emails.magicSession.thanks": "Obrigado",
@ -206,6 +206,7 @@
"countries.tn": "Tunísia",
"countries.tr": "Turquia",
"countries.tv": "Tuvalu",
"countries.tw": "Taiwan",
"countries.tz": "Tanzânia",
"countries.ug": "Uganda",
"countries.ua": "Ucrânia",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Mulțumim",
"emails.verification.signature": "Echipa {{project}}",
"emails.magicSession.subject": "Login",
"emails.magicSession.hello": "Bună ziua,",
"emails.magicSession.hello": "Bună ziua",
"emails.magicSession.body": "Urmează acest link pentru logare.",
"emails.magicSession.footer": "Dacă nu ai incercat să te loghezi folosing această adresa de email, poți ignora acest mesaj.",
"emails.magicSession.thanks": "Mulțumim",
@ -206,6 +206,7 @@
"countries.tn": "Tunisia",
"countries.tr": "Turcia",
"countries.tv": "Tuvalu",
"countries.tw": "Taiwan",
"countries.tz": "Tanzania",
"countries.ug": "Uganda",
"countries.ua": "Ucraina",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Спасибо",
"emails.verification.signature": "команда {{project}}",
"emails.magicSession.subject": "Логин",
"emails.magicSession.hello": "Здравствуйте,",
"emails.magicSession.hello": "Здравствуйте",
"emails.magicSession.body": "Перейдите по ссылке, чтобы войти.",
"emails.magicSession.footer": "Если вы не просили войти, используя этот адрес электронной почты, проигнорируйте это сообщение.",
"emails.magicSession.thanks": "Спасибо",
@ -206,6 +206,7 @@
"countries.tn": "Тунис",
"countries.tr": "Турция",
"countries.tv": "Тувалу",
"countries.tw": "Тайвань",
"countries.tz": "Танзания",
"countries.ug": "Уганда",
"countries.ua": "Украина",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "धन्यवादः",
"emails.verification.signature": "{{project}} गणः",
"emails.magicSession.subject": "संप्रवेशः",
"emails.magicSession.hello": "अयि,",
"emails.magicSession.hello": "अयि",
"emails.magicSession.body": "संप्रवेशार्थमिदं संयोगसूत्रमनुसरतु।",
"emails.magicSession.footer": "अनेन ई-पत्रण यदि संप्रवेशो नेष्यते तर्हि वात्र्तामिमामुपेक्षताम्‌।",
"emails.magicSession.thanks": "धन्यवादः",
@ -206,6 +206,7 @@
"countries.tn": "ट्यूनीशिया",
"countries.tr": "तुर्की",
"countries.tv": "तुवालु",
"countries.tw": "तैवान",
"countries.tz": "तंजानिया",
"countries.ug": "युगांडा",
"countries.ua": "यूक्रेन",

View file

@ -206,6 +206,7 @@
"countries.tn": "تيونيسيا",
"countries.tr": "ترڪي",
"countries.tv": "توالو",
"countries.tw": "تائيوان",
"countries.tz": "تنزانيه",
"countries.ug": "يوگنڊا",
"countries.ua": "يوڪرائين",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "ස්තුතියි",
"emails.verification.signature": "{{project}} කණ්ඩායම",
"emails.magicSession.subject": "ප්‍රවේශ වන්න",
"emails.magicSession.hello": "හේයි,",
"emails.magicSession.hello": "හේයි",
"emails.magicSession.body": "ප්‍රවේශ වීමට මෙම සම්බන්ධකය අනුගමනය කරන්න.",
"emails.magicSession.footer": "මෙම විද්‍යුත් තැපෑල භාවිතයෙන් ප්‍රවේශ වීමට ඔබ ඉල්ලුවේ නැත්නම්, ඔබට මෙම පණිවිඩය නොසලකා හැරිය හැක.",
"emails.magicSession.thanks": "ස්තුතියි",
@ -206,6 +206,7 @@
"countries.tn": "ටියුනීසියාව",
"countries.tr": "තුර්කිය",
"countries.tv": "ටුවාලු",
"countries.tw": "තායිවානය",
"countries.tz": "ටැන්සානියාව",
"countries.ug": "උගන්ඩාව",
"countries.ua": "යුක්රේනය",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Ďakujeme.",
"emails.verification.signature": "{{project}} tím",
"emails.magicSession.subject": "Prihlásenie",
"emails.magicSession.hello": "Ahoj,",
"emails.magicSession.hello": "Ahoj",
"emails.magicSession.body": "Použi tento link pre prihlásenie.",
"emails.magicSession.footer": "Ak si nepožiadal o prihlásenie cez email, túto správu môžeš ignorovať.",
"emails.magicSession.thanks": "Ďakujeme",
@ -206,6 +206,7 @@
"countries.tn": "Tunisko",
"countries.tr": "Turecko",
"countries.tv": "Tuvalu",
"countries.tw": "Taiwan",
"countries.tz": "Tanzánia",
"countries.ug": "Uganda",
"countries.ua": "Ukrajna",

View file

@ -206,6 +206,7 @@
"countries.tn": "Tunizija",
"countries.tr": "Turčija",
"countries.tv": "Tuvalu",
"countries.tw": "Tajvan",
"countries.tz": "Tanzanija",
"countries.ug": "Uganda",
"countries.ua": "Ukrajina",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Ndatenda",
"emails.verification.signature": "Chikwata che{{project}}",
"emails.magicSession.subject": "Pinda",
"emails.magicSession.hello": "Hesi,",
"emails.magicSession.hello": "Hesi",
"emails.magicSession.body": "Baya chinongedzo ichi kuti upinde muakaundi yako.",
"emails.magicSession.footer": "Kana usina kukumbira kupinda muakaundi yako uchishandisa email iyi, unogona kufuratira meseji iyi.",
"emails.magicSession.thanks": "Ndatenda",
@ -206,6 +206,7 @@
"countries.tn": "Tunisia",
"countries.tr": "Turkey",
"countries.tv": "Tuvalu",
"countries.tw": "Taiwan",
"countries.tz": "Tanzania",
"countries.ug": "Uganda",
"countries.ua": "Ukraine",

View file

@ -206,6 +206,7 @@
"countries.tn": "Tunizia",
"countries.tr": "Turqia",
"countries.tv": "Tuvalu",
"countries.tw": "Tajvan",
"countries.tz": "Tanzania",
"countries.ug": "Uganda",
"countries.ua": "Ukraina",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Tack",
"emails.verification.signature": "{{project}} teamet",
"emails.magicSession.subject": "Logga in",
"emails.magicSession.hello": "Hej,",
"emails.magicSession.hello": "Hej",
"emails.magicSession.body": "Klicka på denna länk för att logga in.",
"emails.magicSession.footer": "Om du inte bad om att logga in med denna e-postadress kan du ignorera detta mail.",
"emails.magicSession.thanks": "Tack",
@ -206,6 +206,7 @@
"countries.tn": "Tunisien",
"countries.tr": "Turkiet",
"countries.tv": "Tuvalu",
"countries.tw": "Taiwan",
"countries.tz": "Tanzania",
"countries.ug": "Uganda",
"countries.ua": "Ukraina",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "நன்றி",
"emails.verification.signature": "{{project}} குழு ",
"emails.magicSession.subject": "உள்நுழைய",
"emails.magicSession.hello": "ஏய்,",
"emails.magicSession.hello": "ஏய்",
"emails.magicSession.body": "இந்த இணைப்பைப் பின்தொடரவும் உள்நுழைய",
"emails.magicSession.footer": "இந்த மின்னஞ்சலைப் பயன்படுத்தி உள்நுழையுமாறு உங்களிடம் கேட்கப்படாவிட்டால், இந்தச் செய்தியைப் புறக்கணிக்கலாம்.",
"emails.magicSession.thanks": "நன்றி",
@ -206,6 +206,7 @@
"countries.tn": "துனீசியா",
"countries.tr": "துருக்கி",
"countries.tv": "துவாலு",
"countries.tw": "தைவான்",
"countries.tz": "தான்ஸானியா",
"countries.ug": "உகாண்டா",
"countries.ua": "உக்ரைன்",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "ధన్యవాదాలు",
"emails.verification.signature": "{{project}} జట్",
"emails.magicSession.subject": "లాగిన్",
"emails.magicSession.hello": "నమస్కారము,",
"emails.magicSession.hello": "నమస్కారము",
"emails.magicSession.body": "లాగిన్ చేయడానికి ఈ లింక్ ని అనుసరించండి",
"emails.magicSession.footer": "మీరు ఈ ఇమెయిల్ ని ఉపయోగించి లాగిన్ చేయమని అడగకపోతే, మీరు ఈ సందేశాన్ని విస్మరించవచ్చు",
"emails.magicSession.thanks": "ధన్యవాదాలు",
@ -206,6 +206,7 @@
"countries.tn": "ట్యునీషియా",
"countries.tr": "టర్కీ",
"countries.tv": "తువాలు",
"countries.tw": "తైవాన్",
"countries.tz": "టాంజానియా",
"countries.ug": "ఉగాండా",
"countries.ua": "ఉక్రెయిన్",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "ขอบคุณ",
"emails.verification.signature": "ทีม {{project}}",
"emails.magicSession.subject": "เข้าสู่ระบบ",
"emails.magicSession.hello": "เรียนผู้ใช้งาน,",
"emails.magicSession.hello": "เรียนผู้ใช้งาน",
"emails.magicSession.body": "กดเข้าไปที่ลิงก์นี้เพื่อเข้าสู่ระบบ",
"emails.magicSession.footer": "หากท่านไม่ได้ต้องการที่จะเข้าสู่ระบบด้วยอีเมลนี้ ท่านสามารถเพิกเฉยข้อความนี้ได้",
"emails.magicSession.thanks": "ขอบคุณ",
@ -206,6 +206,7 @@
"countries.tn": "ตูนิเซีย",
"countries.tr": "ตุรกี",
"countries.tv": "ตูวาลู",
"countries.tw": "ไต้หวัน",
"countries.tz": "แทนซาเนีย",
"countries.ug": "ยูกันดา",
"countries.ua": "ยูเครน",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Salamat",
"emails.verification.signature": "Pangkat ng {{project}}",
"emails.magicSession.subject": "Mag log in",
"emails.magicSession.hello": "Kamusta, ",
"emails.magicSession.hello": "Kamusta ",
"emails.magicSession.body": "Sundin ang link na ito upang mag-login.",
"emails.magicSession.footer": "Kung hindi mo hiningi na mag-login gamit ang email na ito, maaari mong balewalain ang mensahe na ito.",
"emails.magicSession.thanks": "Salamat",
@ -206,6 +206,7 @@
"countries.tn": "Tunisya",
"countries.tr": "Turkey",
"countries.tv": "Tuvalu",
"countries.tw": "Taiwan",
"countries.tz": "Tanzania",
"countries.ug": "Uganda",
"countries.ua": "Ukranya",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Teşekkürler",
"emails.verification.signature": "{{project}} takımı",
"emails.magicSession.subject": "Giriş",
"emails.magicSession.hello": "Merhaba,",
"emails.magicSession.hello": "Merhaba",
"emails.magicSession.body": "Giriş yapmak için tıklayın.",
"emails.magicSession.footer": "Eğer bu eposta adresini kullanarak giriş yapmak istemediyseniz devam etmeyin.",
"emails.magicSession.thanks": "Teşekkürler",
@ -206,6 +206,7 @@
"countries.tn": "Tunus",
"countries.tr": "Türkiye",
"countries.tv": "Tuvalu",
"countries.tw": "Tayvan",
"countries.tz": "Tanzanya",
"countries.ug": "Uganda",
"countries.ua": "Ukrayna",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Дякуємо",
"emails.verification.signature": "команда {{project}}",
"emails.magicSession.subject": "Логін",
"emails.magicSession.hello": "Вітаємо,",
"emails.magicSession.hello": "Вітаємо",
"emails.magicSession.body": "Перейдіть за цим посиланням, щоб увійти.",
"emails.magicSession.footer": "Якщо ви не просили увійти за допомогою цієї електронної пошти, ви можете ігнорувати це повідомлення.",
"emails.magicSession.thanks": "Дякуємо",
@ -206,6 +206,7 @@
"countries.tn": "Туніс",
"countries.tr": "Туреччина",
"countries.tv": "Тувалу",
"countries.tw": "Тайвань",
"countries.tz": "Танзанія",
"countries.ug": "Уганда",
"countries.ua": "Україна",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "شکریہ",
"emails.verification.signature": "ٹیم۔ {{project}}",
"emails.magicSession.subject": "اگ ان کریں",
"emails.magicSession.hello": "خوش آمدید,",
"emails.magicSession.hello": "خوش آمدید",
"emails.magicSession.body": "لاگ ان کرنے کے لیے اس لنک پر عمل کریں۔",
"emails.magicSession.footer": "اگر آپ نے اس ای میل کا استعمال کرتے ہوئے لاگ ان کرنے کے لیے نہیں کہا تو آپ اس پیغام کو نظر انداز کر سکتے ہیں۔",
"emails.magicSession.thanks": "شکریہ",
@ -206,6 +206,7 @@
"countries.tn": "تیونس",
"countries.tr": "ترکی",
"countries.tv": "ٹوالو",
"countries.tw": "تائیوان",
"countries.tz": "تنزانیہ",
"countries.ug": "یوگنڈا",
"countries.ua": "یوکرائن",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "Cảm ơn",
"emails.verification.signature": "Nhóm {{project}}",
"emails.magicSession.subject": "Đăng nhập",
"emails.magicSession.hello": "Chào,",
"emails.magicSession.hello": "Chào",
"emails.magicSession.body": "Nhấn vào đường dẫn sau để đăng nhập.",
"emails.magicSession.footer": "Nếu bạn không yêu cầu đăng nhập bằng email, bạn có thể bỏ qua email này.",
"emails.magicSession.thanks": "Cảm ơn",
@ -206,6 +206,7 @@
"countries.tn": "Tunisia",
"countries.tr": "Thổ Nhĩ Kỳ",
"countries.tv": "Tuvalu",
"countries.tw": "Đài Loan",
"countries.tz": "Tanzania",
"countries.ug": "Uganda",
"countries.ua": "Ukraine",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "谢谢",
"emails.verification.signature": "{{project}} 团队",
"emails.magicSession.subject": "登录",
"emails.magicSession.hello": "你好,",
"emails.magicSession.hello": "你好",
"emails.magicSession.body": "点此链接登录。",
"emails.magicSession.footer": "如果您没有要求使用此电子邮件登录,则可忽略此消息。",
"emails.magicSession.thanks": "谢谢",
@ -206,6 +206,7 @@
"countries.tn": "突尼斯",
"countries.tr": "土耳其",
"countries.tv": "图瓦卢",
"countries.tw": "台湾",
"countries.tz": "坦桑尼亚",
"countries.ug": "乌干达",
"countries.ua": "乌克兰",

View file

@ -10,7 +10,7 @@
"emails.verification.thanks": "謝謝",
"emails.verification.signature": "{{project}} 團隊",
"emails.magicSession.subject": "登入",
"emails.magicSession.hello": "嗨",
"emails.magicSession.hello": "嗨",
"emails.magicSession.body": "點此連結登入。",
"emails.magicSession.footer": "如果您沒有要求使用此電子郵件登入,則可以忽略此消息。",
"emails.magicSession.thanks": "謝謝",
@ -206,6 +206,7 @@
"countries.tn": "突尼西亞",
"countries.tr": "土耳其",
"countries.tv": "吐瓦魯",
"countries.tw": "台灣",
"countries.tz": "坦尚尼亞",
"countries.ug": "烏干達",
"countries.ua": "烏克蘭",

View file

@ -5,11 +5,11 @@
*/
use Appwrite\Runtimes\Runtimes;
use Utopia\App;
use Utopia\System\System;
$runtimes = new Runtimes('v2');
$allowList = empty(App::getEnv('_APP_FUNCTIONS_RUNTIMES')) ? [] : \explode(',', App::getEnv('_APP_FUNCTIONS_RUNTIMES'));
$allowList = empty(System::getEnv('_APP_FUNCTIONS_RUNTIMES')) ? [] : \explode(',', System::getEnv('_APP_FUNCTIONS_RUNTIMES'));
$runtimes = $runtimes->getAll(true, $allowList);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -46,6 +46,7 @@ use Utopia\Database\Validator\Query\Limit;
use Utopia\Database\Validator\Query\Offset;
use Utopia\Database\Validator\UID;
use Utopia\Locale\Locale;
use Utopia\System\System;
use Utopia\Validator\ArrayList;
use Utopia\Validator\Assoc;
use Utopia\Validator\Boolean;
@ -214,6 +215,9 @@ App::post('/v1/account')
$total = $dbForProject->count('users', max: APP_LIMIT_USERS);
if ($total >= $limit) {
if ('console' === $project->getId()) {
throw new Exception(Exception::USER_CONSOLE_COUNT_EXCEEDED);
}
throw new Exception(Exception::USER_COUNT_EXCEEDED);
}
}
@ -1012,7 +1016,7 @@ App::get('/v1/account/sessions/oauth2/:provider')
$appSecret = $project->getAttribute('oAuthProviders', [])[$provider . 'Secret'] ?? '{}';
if (!empty($appSecret) && isset($appSecret['version'])) {
$key = App::getEnv('_APP_OPENSSL_KEY_V' . $appSecret['version']);
$key = System::getEnv('_APP_OPENSSL_KEY_V' . $appSecret['version']);
$appSecret = OpenSSL::decrypt($appSecret['data'], $appSecret['method'], $key, 0, \hex2bin($appSecret['iv']), \hex2bin($appSecret['tag']));
}
@ -1210,7 +1214,7 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect')
}
if (!empty($appSecret) && isset($appSecret['version'])) {
$key = App::getEnv('_APP_OPENSSL_KEY_V' . $appSecret['version']);
$key = System::getEnv('_APP_OPENSSL_KEY_V' . $appSecret['version']);
$appSecret = OpenSSL::decrypt($appSecret['data'], $appSecret['method'], $key, 0, \hex2bin($appSecret['iv']), \hex2bin($appSecret['tag']));
}
@ -1244,7 +1248,7 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect')
$identityWithMatchingEmail = $dbForProject->findOne('identities', [
Query::equal('providerEmail', [$email]),
Query::notEqual('userId', $userId),
Query::notEqual('userInternalId', $user->getInternalId()),
]);
if (!empty($identityWithMatchingEmail)) {
throw new Exception(Exception::USER_ALREADY_EXISTS);
@ -1395,7 +1399,7 @@ App::get('/v1/account/sessions/oauth2/:provider/redirect')
$identitiesWithMatchingEmail = $dbForProject->find('identities', [
Query::equal('providerEmail', [$email]),
Query::notEqual('userId', $user->getId()),
Query::notEqual('userInternalId', $user->getInternalId()),
]);
if (!empty($identitiesWithMatchingEmail)) {
throw new Exception(Exception::GENERAL_BAD_REQUEST); /** Return a generic bad request to prevent exposing existing accounts */
@ -1594,7 +1598,7 @@ App::get('/v1/account/tokens/oauth2/:provider')
$appSecret = $project->getAttribute('oAuthProviders', [])[$provider . 'Secret'] ?? '{}';
if (!empty($appSecret) && isset($appSecret['version'])) {
$key = App::getEnv('_APP_OPENSSL_KEY_V' . $appSecret['version']);
$key = System::getEnv('_APP_OPENSSL_KEY_V' . $appSecret['version']);
$appSecret = OpenSSL::decrypt($appSecret['data'], $appSecret['method'], $key, 0, \hex2bin($appSecret['iv']), \hex2bin($appSecret['tag']));
}
@ -1660,7 +1664,7 @@ App::post('/v1/account/tokens/magic-url')
->inject('queueForMails')
->action(function (string $userId, string $email, string $url, bool $phrase, Request $request, Response $response, Document $user, Document $project, Database $dbForProject, Locale $locale, Event $queueForEvents, Mail $queueForMails) {
if (empty(App::getEnv('_APP_SMTP_HOST'))) {
if (empty(System::getEnv('_APP_SMTP_HOST'))) {
throw new Exception(Exception::GENERAL_SMTP_DISABLED, 'SMTP disabled');
}
@ -1788,8 +1792,8 @@ App::post('/v1/account/tokens/magic-url')
$smtp = $project->getAttribute('smtp', []);
$smtpEnabled = $smtp['enabled'] ?? false;
$senderEmail = App::getEnv('_APP_SYSTEM_EMAIL_ADDRESS', APP_EMAIL_TEAM);
$senderName = App::getEnv('_APP_SYSTEM_EMAIL_NAME', APP_NAME . ' Server');
$senderEmail = System::getEnv('_APP_SYSTEM_EMAIL_ADDRESS', APP_EMAIL_TEAM);
$senderName = System::getEnv('_APP_SYSTEM_EMAIL_NAME', APP_NAME . ' Server');
$replyTo = "";
if ($smtpEnabled) {
@ -1901,7 +1905,7 @@ App::post('/v1/account/tokens/email')
->inject('queueForEvents')
->inject('queueForMails')
->action(function (string $userId, string $email, bool $phrase, Request $request, Response $response, Document $user, Document $project, Database $dbForProject, Locale $locale, Event $queueForEvents, Mail $queueForMails) {
if (empty(App::getEnv('_APP_SMTP_HOST'))) {
if (empty(System::getEnv('_APP_SMTP_HOST'))) {
throw new Exception(Exception::GENERAL_SMTP_DISABLED, 'SMTP disabled');
}
@ -2017,8 +2021,8 @@ App::post('/v1/account/tokens/email')
$smtp = $project->getAttribute('smtp', []);
$smtpEnabled = $smtp['enabled'] ?? false;
$senderEmail = App::getEnv('_APP_SYSTEM_EMAIL_ADDRESS', APP_EMAIL_TEAM);
$senderName = App::getEnv('_APP_SYSTEM_EMAIL_NAME', APP_NAME . ' Server');
$senderEmail = System::getEnv('_APP_SYSTEM_EMAIL_ADDRESS', APP_EMAIL_TEAM);
$senderName = System::getEnv('_APP_SYSTEM_EMAIL_NAME', APP_NAME . ' Server');
$replyTo = "";
if ($smtpEnabled) {
@ -2190,7 +2194,7 @@ App::post('/v1/account/tokens/phone')
->inject('queueForMessaging')
->inject('locale')
->action(function (string $userId, string $phone, Request $request, Response $response, Document $user, Document $project, Database $dbForProject, Event $queueForEvents, Messaging $queueForMessaging, Locale $locale) {
if (empty(App::getEnv('_APP_SMS_PROVIDER'))) {
if (empty(System::getEnv('_APP_SMS_PROVIDER'))) {
throw new Exception(Exception::GENERAL_PHONE_DISABLED, 'Phone provider not configured');
}
@ -2364,7 +2368,7 @@ App::post('/v1/account/jwt')
throw new Exception(Exception::USER_SESSION_NOT_FOUND);
}
$jwt = new JWT(App::getEnv('_APP_OPENSSL_KEY_V1'), 'HS256', 900, 10); // Instantiate with key, algo, maxAge and leeway.
$jwt = new JWT(System::getEnv('_APP_OPENSSL_KEY_V1'), 'HS256', 900, 10); // Instantiate with key, algo, maxAge and leeway.
$response
->setStatusCode(Response::STATUS_CODE_CREATED)
@ -2845,7 +2849,7 @@ App::post('/v1/account/recovery')
->inject('queueForEvents')
->action(function (string $email, string $url, Request $request, Response $response, Document $user, Database $dbForProject, Document $project, Locale $locale, Mail $queueForMails, Event $queueForEvents) {
if (empty(App::getEnv('_APP_SMTP_HOST'))) {
if (empty(System::getEnv('_APP_SMTP_HOST'))) {
throw new Exception(Exception::GENERAL_SMTP_DISABLED, 'SMTP Disabled');
}
@ -2915,8 +2919,8 @@ App::post('/v1/account/recovery')
$smtp = $project->getAttribute('smtp', []);
$smtpEnabled = $smtp['enabled'] ?? false;
$senderEmail = App::getEnv('_APP_SYSTEM_EMAIL_ADDRESS', APP_EMAIL_TEAM);
$senderName = App::getEnv('_APP_SYSTEM_EMAIL_NAME', APP_NAME . ' Server');
$senderEmail = System::getEnv('_APP_SYSTEM_EMAIL_ADDRESS', APP_EMAIL_TEAM);
$senderName = System::getEnv('_APP_SYSTEM_EMAIL_NAME', APP_NAME . ' Server');
$replyTo = "";
if ($smtpEnabled) {
@ -3106,7 +3110,7 @@ App::post('/v1/account/verification')
->inject('queueForMails')
->action(function (string $url, Request $request, Response $response, Document $project, Document $user, Database $dbForProject, Locale $locale, Event $queueForEvents, Mail $queueForMails) {
if (empty(App::getEnv('_APP_SMTP_HOST'))) {
if (empty(System::getEnv('_APP_SMTP_HOST'))) {
throw new Exception(Exception::GENERAL_SMTP_DISABLED, 'SMTP Disabled');
}
@ -3163,8 +3167,8 @@ App::post('/v1/account/verification')
$smtp = $project->getAttribute('smtp', []);
$smtpEnabled = $smtp['enabled'] ?? false;
$senderEmail = App::getEnv('_APP_SYSTEM_EMAIL_ADDRESS', APP_EMAIL_TEAM);
$senderName = App::getEnv('_APP_SYSTEM_EMAIL_NAME', APP_NAME . ' Server');
$senderEmail = System::getEnv('_APP_SYSTEM_EMAIL_ADDRESS', APP_EMAIL_TEAM);
$senderName = System::getEnv('_APP_SYSTEM_EMAIL_NAME', APP_NAME . ' Server');
$replyTo = "";
if ($smtpEnabled) {
@ -3326,7 +3330,7 @@ App::post('/v1/account/verification/phone')
->inject('project')
->inject('locale')
->action(function (Request $request, Response $response, Document $user, Database $dbForProject, Event $queueForEvents, Messaging $queueForMessaging, Document $project, Locale $locale) {
if (empty(App::getEnv('_APP_SMS_PROVIDER'))) {
if (empty(System::getEnv('_APP_SMS_PROVIDER'))) {
throw new Exception(Exception::GENERAL_PHONE_DISABLED, 'Phone provider not configured');
}
@ -3894,7 +3898,7 @@ App::post('/v1/account/mfa/challenge')
switch ($factor) {
case Type::PHONE:
if (empty(App::getEnv('_APP_SMS_PROVIDER'))) {
if (empty(System::getEnv('_APP_SMS_PROVIDER'))) {
throw new Exception(Exception::GENERAL_PHONE_DISABLED, 'Phone provider not configured');
}
if (empty($user->getAttribute('phone'))) {
@ -3932,7 +3936,7 @@ App::post('/v1/account/mfa/challenge')
->setProviderType(MESSAGE_TYPE_SMS);
break;
case Type::EMAIL:
if (empty(App::getEnv('_APP_SMTP_HOST'))) {
if (empty(System::getEnv('_APP_SMTP_HOST'))) {
throw new Exception(Exception::GENERAL_SMTP_DISABLED, 'SMTP disabled');
}
if (empty($user->getAttribute('email'))) {
@ -3963,8 +3967,8 @@ App::post('/v1/account/mfa/challenge')
$smtp = $project->getAttribute('smtp', []);
$smtpEnabled = $smtp['enabled'] ?? false;
$senderEmail = App::getEnv('_APP_SYSTEM_EMAIL_ADDRESS', APP_EMAIL_TEAM);
$senderName = App::getEnv('_APP_SYSTEM_EMAIL_NAME', APP_NAME . ' Server');
$senderEmail = System::getEnv('_APP_SYSTEM_EMAIL_ADDRESS', APP_EMAIL_TEAM);
$senderName = System::getEnv('_APP_SYSTEM_EMAIL_NAME', APP_NAME . ' Server');
$replyTo = "";
if ($smtpEnabled) {

View file

@ -17,6 +17,7 @@ use Utopia\Domains\Domain;
use Utopia\Image\Image;
use Utopia\Logger\Log;
use Utopia\Logger\Logger;
use Utopia\System\System;
use Utopia\Validator\Boolean;
use Utopia\Validator\HexColor;
use Utopia\Validator\Range;
@ -155,7 +156,7 @@ $getUserGitHub = function (string $userId, Document $project, Database $dbForPro
];
} catch (Exception $error) {
if ($logger) {
$version = App::getEnv('_APP_VERSION', 'UNKNOWN');
$version = System::getEnv('_APP_VERSION', 'UNKNOWN');
$log = new Log();
$log->setNamespace('console');
@ -174,7 +175,7 @@ $getUserGitHub = function (string $userId, Document $project, Database $dbForPro
$log->setAction('avatarsGetGitHub');
$isProduction = App::getEnv('_APP_ENV', 'development') === 'production';
$isProduction = System::getEnv('_APP_ENV', 'development') === 'production';
$log->setEnvironment($isProduction ? Log::ENVIRONMENT_PRODUCTION : Log::ENVIRONMENT_STAGING);
$responseCode = $logger->addLog($log);
@ -348,8 +349,8 @@ App::get('/v1/avatars/favicon')
CURLOPT_URL => $url,
CURLOPT_USERAGENT => \sprintf(
APP_USERAGENT,
App::getEnv('_APP_VERSION', 'UNKNOWN'),
App::getEnv('_APP_SYSTEM_SECURITY_EMAIL_ADDRESS', APP_EMAIL_SECURITY)
System::getEnv('_APP_VERSION', 'UNKNOWN'),
System::getEnv('_APP_SYSTEM_SECURITY_EMAIL_ADDRESS', APP_EMAIL_SECURITY)
),
]);

View file

@ -4,6 +4,7 @@ use Appwrite\Extend\Exception;
use Appwrite\Utopia\Response;
use Utopia\App;
use Utopia\Database\Document;
use Utopia\System\System;
use Utopia\Validator\Text;
App::init()
@ -29,24 +30,24 @@ App::get('/v1/console/variables')
->label('sdk.response.model', Response::MODEL_CONSOLE_VARIABLES)
->inject('response')
->action(function (Response $response) {
$isDomainEnabled = !empty(App::getEnv('_APP_DOMAIN', ''))
&& !empty(App::getEnv('_APP_DOMAIN_TARGET', ''))
&& App::getEnv('_APP_DOMAIN', '') !== 'localhost'
&& App::getEnv('_APP_DOMAIN_TARGET', '') !== 'localhost';
$isDomainEnabled = !empty(System::getEnv('_APP_DOMAIN', ''))
&& !empty(System::getEnv('_APP_DOMAIN_TARGET', ''))
&& System::getEnv('_APP_DOMAIN', '') !== 'localhost'
&& System::getEnv('_APP_DOMAIN_TARGET', '') !== 'localhost';
$isVcsEnabled = !empty(App::getEnv('_APP_VCS_GITHUB_APP_NAME', ''))
&& !empty(App::getEnv('_APP_VCS_GITHUB_PRIVATE_KEY', ''))
&& !empty(App::getEnv('_APP_VCS_GITHUB_APP_ID', ''))
&& !empty(App::getEnv('_APP_VCS_GITHUB_CLIENT_ID', ''))
&& !empty(App::getEnv('_APP_VCS_GITHUB_CLIENT_SECRET', ''));
$isVcsEnabled = !empty(System::getEnv('_APP_VCS_GITHUB_APP_NAME', ''))
&& !empty(System::getEnv('_APP_VCS_GITHUB_PRIVATE_KEY', ''))
&& !empty(System::getEnv('_APP_VCS_GITHUB_APP_ID', ''))
&& !empty(System::getEnv('_APP_VCS_GITHUB_CLIENT_ID', ''))
&& !empty(System::getEnv('_APP_VCS_GITHUB_CLIENT_SECRET', ''));
$isAssistantEnabled = !empty(App::getEnv('_APP_ASSISTANT_OPENAI_API_KEY', ''));
$isAssistantEnabled = !empty(System::getEnv('_APP_ASSISTANT_OPENAI_API_KEY', ''));
$variables = new Document([
'_APP_DOMAIN_TARGET' => App::getEnv('_APP_DOMAIN_TARGET'),
'_APP_STORAGE_LIMIT' => +App::getEnv('_APP_STORAGE_LIMIT'),
'_APP_FUNCTIONS_SIZE_LIMIT' => +App::getEnv('_APP_FUNCTIONS_SIZE_LIMIT'),
'_APP_USAGE_STATS' => App::getEnv('_APP_USAGE_STATS'),
'_APP_DOMAIN_TARGET' => System::getEnv('_APP_DOMAIN_TARGET'),
'_APP_STORAGE_LIMIT' => +System::getEnv('_APP_STORAGE_LIMIT'),
'_APP_FUNCTIONS_SIZE_LIMIT' => +System::getEnv('_APP_FUNCTIONS_SIZE_LIMIT'),
'_APP_USAGE_STATS' => System::getEnv('_APP_USAGE_STATS'),
'_APP_VCS_ENABLED' => $isVcsEnabled,
'_APP_DOMAIN_ENABLED' => $isDomainEnabled,
'_APP_ASSISTANT_ENABLED' => $isAssistantEnabled

View file

@ -40,6 +40,7 @@ use Utopia\Storage\Validator\FileExt;
use Utopia\Storage\Validator\FileSize;
use Utopia\Storage\Validator\Upload;
use Utopia\Swoole\Request;
use Utopia\System\System;
use Utopia\Validator\ArrayList;
use Utopia\Validator\Assoc;
use Utopia\Validator\Boolean;
@ -55,8 +56,8 @@ $redeployVcs = function (Request $request, Document $function, Document $project
$deploymentId = ID::unique();
$entrypoint = $function->getAttribute('entrypoint', '');
$providerInstallationId = $installation->getAttribute('providerInstallationId', '');
$privateKey = App::getEnv('_APP_VCS_GITHUB_PRIVATE_KEY');
$githubAppId = App::getEnv('_APP_VCS_GITHUB_APP_ID');
$privateKey = System::getEnv('_APP_VCS_GITHUB_PRIVATE_KEY');
$githubAppId = System::getEnv('_APP_VCS_GITHUB_APP_ID');
$github->initializeVariables($providerInstallationId, $privateKey, $githubAppId);
$owner = $github->getOwnerName($providerInstallationId);
$providerRepositoryId = $function->getAttribute('providerRepositoryId', '');
@ -144,7 +145,7 @@ App::post('/v1/functions')
->param('execute', [], new Roles(APP_LIMIT_ARRAY_PARAMS_SIZE), 'An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https://appwrite.io/docs/permissions#permission-roles). Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' roles are allowed, each 64 characters long.', true)
->param('events', [], new ArrayList(new FunctionEvent(), APP_LIMIT_ARRAY_PARAMS_SIZE), 'Events list. Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' events are allowed.', true)
->param('schedule', '', new Cron(), 'Schedule CRON syntax.', true)
->param('timeout', 15, new Range(1, (int) App::getEnv('_APP_FUNCTIONS_TIMEOUT', 900)), 'Function maximum execution time in seconds.', true)
->param('timeout', 15, new Range(1, (int) System::getEnv('_APP_FUNCTIONS_TIMEOUT', 900)), 'Function maximum execution time in seconds.', true)
->param('enabled', true, new Boolean(), 'Is function enabled? When set to \'disabled\', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.', true)
->param('logging', true, new Boolean(), 'Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.', true)
->param('entrypoint', '', new Text(1028, 0), 'Entrypoint File. This path is relative to the "providerRootDirectory".', true)
@ -170,7 +171,7 @@ App::post('/v1/functions')
->action(function (string $functionId, string $name, string $runtime, array $execute, array $events, string $schedule, int $timeout, bool $enabled, bool $logging, string $entrypoint, string $commands, string $installationId, string $providerRepositoryId, string $providerBranch, bool $providerSilentMode, string $providerRootDirectory, string $templateRepository, string $templateOwner, string $templateRootDirectory, string $templateBranch, Request $request, Response $response, Database $dbForProject, Document $project, Document $user, Event $queueForEvents, Build $queueForBuilds, Database $dbForConsole, GitHub $github) use ($redeployVcs) {
$functionId = ($functionId == 'unique()') ? ID::unique() : $functionId;
$allowList = \array_filter(\explode(',', App::getEnv('_APP_FUNCTIONS_RUNTIMES', '')));
$allowList = \array_filter(\explode(',', System::getEnv('_APP_FUNCTIONS_RUNTIMES', '')));
if (!empty($allowList) && !\in_array($runtime, $allowList)) {
throw new Exception(Exception::FUNCTION_RUNTIME_UNSUPPORTED, 'Runtime "' . $runtime . '" is not supported');
@ -231,7 +232,7 @@ App::post('/v1/functions')
$schedule = Authorization::skip(
fn () => $dbForConsole->createDocument('schedules', new Document([
'region' => App::getEnv('_APP_REGION', 'default'), // Todo replace with projects region
'region' => System::getEnv('_APP_REGION', 'default'), // Todo replace with projects region
'resourceType' => 'function',
'resourceId' => $function->getId(),
'resourceInternalId' => $function->getInternalId(),
@ -280,7 +281,7 @@ App::post('/v1/functions')
$redeployVcs($request, $function, $project, $installation, $dbForProject, $queueForBuilds, $template, $github);
}
$functionsDomain = App::getEnv('_APP_DOMAIN_FUNCTIONS', '');
$functionsDomain = System::getEnv('_APP_DOMAIN_FUNCTIONS', '');
if (!empty($functionsDomain)) {
$ruleId = ID::unique();
$routeSubdomain = ID::unique();
@ -422,7 +423,7 @@ App::get('/v1/functions/runtimes')
->action(function (Response $response) {
$runtimes = Config::getParam('runtimes');
$allowList = \array_filter(\explode(',', App::getEnv('_APP_FUNCTIONS_RUNTIMES', '')));
$allowList = \array_filter(\explode(',', System::getEnv('_APP_FUNCTIONS_RUNTIMES', '')));
$allowed = [];
foreach ($runtimes as $key => $runtime) {
@ -675,7 +676,7 @@ App::put('/v1/functions/:functionId')
->param('execute', [], new Roles(APP_LIMIT_ARRAY_PARAMS_SIZE), 'An array of role strings with execution permissions. By default no user is granted with any execute permissions. [learn more about roles](https://appwrite.io/docs/permissions#permission-roles). Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' roles are allowed, each 64 characters long.', true)
->param('events', [], new ArrayList(new FunctionEvent(), APP_LIMIT_ARRAY_PARAMS_SIZE), 'Events list. Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' events are allowed.', true)
->param('schedule', '', new Cron(), 'Schedule CRON syntax.', true)
->param('timeout', 15, new Range(1, (int) App::getEnv('_APP_FUNCTIONS_TIMEOUT', 900)), 'Maximum execution time in seconds.', true)
->param('timeout', 15, new Range(1, (int) System::getEnv('_APP_FUNCTIONS_TIMEOUT', 900)), 'Maximum execution time in seconds.', true)
->param('enabled', true, new Boolean(), 'Is function enabled? When set to \'disabled\', users cannot access the function but Server SDKs with and API key can still access the function. No data is lost when this is toggled.', true)
->param('logging', true, new Boolean(), 'Whether executions will be logged. When set to false, executions will not be logged, but will reduce resource used by your Appwrite project.', true)
->param('entrypoint', '', new Text(1028, 0), 'Entrypoint File. This path is relative to the "providerRootDirectory".', true)
@ -1091,7 +1092,7 @@ App::post('/v1/functions/:functionId/deployments')
}
$fileExt = new FileExt([FileExt::TYPE_GZIP]);
$fileSizeValidator = new FileSize(App::getEnv('_APP_FUNCTIONS_SIZE_LIMIT', '30000000'));
$fileSizeValidator = new FileSize(System::getEnv('_APP_FUNCTIONS_SIZE_LIMIT', '30000000'));
$upload = new Upload();
// Make sure we handle a single file and multiple files the same way
@ -1580,7 +1581,7 @@ App::post('/v1/functions/:functionId/executions')
}
if (!$current->isEmpty()) {
$jwtObj = new JWT(App::getEnv('_APP_OPENSSL_KEY_V1'), 'HS256', 900, 10); // Instantiate with key, algo, maxAge and leeway.
$jwtObj = new JWT(System::getEnv('_APP_OPENSSL_KEY_V1'), 'HS256', 900, 10); // Instantiate with key, algo, maxAge and leeway.
$jwt = $jwtObj->encode([
'userId' => $user->getId(),
'sessionId' => $current->getId(),
@ -1703,7 +1704,7 @@ App::post('/v1/functions/:functionId/executions')
]);
/** Execute function */
$executor = new Executor(App::getEnv('_APP_EXECUTOR_HOST'));
$executor = new Executor(System::getEnv('_APP_EXECUTOR_HOST'));
try {
$version = $function->getAttribute('version', 'v2');
$command = $runtime['startCommand'];

View file

@ -17,6 +17,7 @@ use Swoole\Coroutine\WaitGroup;
use Utopia\App;
use Utopia\Database\Document;
use Utopia\Database\Validator\Authorization;
use Utopia\System\System;
use Utopia\Validator\JSON;
use Utopia\Validator\Text;
@ -177,9 +178,9 @@ function execute(
Adapter $promiseAdapter,
array $query
): array {
$maxBatchSize = App::getEnv('_APP_GRAPHQL_MAX_BATCH_SIZE', 10);
$maxComplexity = App::getEnv('_APP_GRAPHQL_MAX_COMPLEXITY', 250);
$maxDepth = App::getEnv('_APP_GRAPHQL_MAX_DEPTH', 3);
$maxBatchSize = System::getEnv('_APP_GRAPHQL_MAX_BATCH_SIZE', 10);
$maxComplexity = System::getEnv('_APP_GRAPHQL_MAX_COMPLEXITY', 250);
$maxDepth = System::getEnv('_APP_GRAPHQL_MAX_DEPTH', 3);
if (!empty($query) && !isset($query[0])) {
$query = [$query];
@ -199,7 +200,7 @@ function execute(
$flags = DebugFlag::INCLUDE_DEBUG_MESSAGE | DebugFlag::INCLUDE_TRACE;
$validations = GraphQL::getStandardValidationRules();
if (App::getEnv('_APP_OPTIONS_ABUSE', 'enabled') !== 'disabled') {
if (System::getEnv('_APP_OPTIONS_ABUSE', 'enabled') !== 'disabled') {
$validations[] = new DisableIntrospection();
$validations[] = new QueryComplexity($maxComplexity);
$validations[] = new QueryDepth($maxDepth);

View file

@ -15,6 +15,7 @@ use Utopia\Registry\Registry;
use Utopia\Storage\Device;
use Utopia\Storage\Device\Local;
use Utopia\Storage\Storage;
use Utopia\System\System;
use Utopia\Validator\Domain;
use Utopia\Validator\Integer;
use Utopia\Validator\Multiple;
@ -816,13 +817,13 @@ App::get('/v1/health/anti-virus')
'version' => ''
];
if (App::getEnv('_APP_STORAGE_ANTIVIRUS') === 'disabled') { // Check if scans are enabled
if (System::getEnv('_APP_STORAGE_ANTIVIRUS') === 'disabled') { // Check if scans are enabled
$output['status'] = 'disabled';
$output['version'] = '';
} else {
$antivirus = new Network(
App::getEnv('_APP_STORAGE_ANTIVIRUS_HOST', 'clamav'),
(int) App::getEnv('_APP_STORAGE_ANTIVIRUS_PORT', 3310)
System::getEnv('_APP_STORAGE_ANTIVIRUS_HOST', 'clamav'),
(int) System::getEnv('_APP_STORAGE_ANTIVIRUS_PORT', 3310)
);
try {

View file

@ -37,6 +37,7 @@ use Utopia\Database\Validator\Query\Offset;
use Utopia\Database\Validator\Roles;
use Utopia\Database\Validator\UID;
use Utopia\Locale\Locale;
use Utopia\System\System;
use Utopia\Validator\ArrayList;
use Utopia\Validator\Boolean;
use Utopia\Validator\Integer;
@ -2123,8 +2124,6 @@ App::get('/v1/messaging/topics/:topicId')
throw new Exception(Exception::TOPIC_NOT_FOUND);
}
$topic = $dbForProject->getDocument('topics', $topicId);
$response
->dynamic($topic, Response::MODEL_TOPIC);
});
@ -2692,7 +2691,7 @@ App::post('/v1/messaging/messages/email')
break;
case MessageStatus::SCHEDULED:
$schedule = $dbForConsole->createDocument('schedules', new Document([
'region' => App::getEnv('_APP_REGION', 'default'),
'region' => System::getEnv('_APP_REGION', 'default'),
'resourceType' => 'message',
'resourceId' => $message->getId(),
'resourceInternalId' => $message->getInternalId(),
@ -2808,7 +2807,7 @@ App::post('/v1/messaging/messages/sms')
break;
case MessageStatus::SCHEDULED:
$schedule = $dbForConsole->createDocument('schedules', new Document([
'region' => App::getEnv('_APP_REGION', 'default'),
'region' => System::getEnv('_APP_REGION', 'default'),
'resourceType' => 'message',
'resourceId' => $message->getId(),
'resourceInternalId' => $message->getInternalId(),
@ -2930,8 +2929,8 @@ App::post('/v1/messaging/messages/push')
throw new Exception(Exception::STORAGE_FILE_TYPE_UNSUPPORTED);
}
$host = App::getEnv('_APP_DOMAIN', 'localhost');
$protocol = App::getEnv('_APP_OPTIONS_FORCE_HTTPS') === 'disabled' ? 'http' : 'https';
$host = System::getEnv('_APP_DOMAIN', 'localhost');
$protocol = System::getEnv('_APP_OPTIONS_FORCE_HTTPS') === 'disabled' ? 'http' : 'https';
$scheduleTime = $currentScheduledAt ?? $scheduledAt;
if (!\is_null($scheduleTime)) {
@ -2940,7 +2939,7 @@ App::post('/v1/messaging/messages/push')
$expiry = (new \DateTime())->add(new \DateInterval('P15D'))->format('U');
}
$encoder = new JWT(App::getEnv('_APP_OPENSSL_KEY_V1'));
$encoder = new JWT(System::getEnv('_APP_OPENSSL_KEY_V1'));
$jwt = $encoder->encode([
'iat' => \time(),
@ -2986,7 +2985,7 @@ App::post('/v1/messaging/messages/push')
break;
case MessageStatus::SCHEDULED:
$schedule = $dbForConsole->createDocument('schedules', new Document([
'region' => App::getEnv('_APP_REGION', 'default'),
'region' => System::getEnv('_APP_REGION', 'default'),
'resourceType' => 'message',
'resourceId' => $message->getId(),
'resourceInternalId' => $message->getInternalId(),
@ -3330,7 +3329,7 @@ App::patch('/v1/messaging/messages/email/:messageId')
if (\is_null($currentScheduledAt) && !\is_null($scheduledAt)) {
$schedule = $dbForConsole->createDocument('schedules', new Document([
'region' => App::getEnv('_APP_REGION', 'default'),
'region' => System::getEnv('_APP_REGION', 'default'),
'resourceType' => 'message',
'resourceId' => $message->getId(),
'resourceInternalId' => $message->getInternalId(),
@ -3525,7 +3524,7 @@ App::patch('/v1/messaging/messages/sms/:messageId')
if (\is_null($currentScheduledAt) && !\is_null($scheduledAt)) {
$schedule = $dbForConsole->createDocument('schedules', new Document([
'region' => App::getEnv('_APP_REGION', 'default'),
'region' => System::getEnv('_APP_REGION', 'default'),
'resourceType' => 'message',
'resourceId' => $message->getId(),
'resourceInternalId' => $message->getInternalId(),
@ -3689,7 +3688,7 @@ App::patch('/v1/messaging/messages/push/:messageId')
if (\is_null($currentScheduledAt) && !\is_null($scheduledAt)) {
$schedule = $dbForConsole->createDocument('schedules', new Document([
'region' => App::getEnv('_APP_REGION', 'default'),
'region' => System::getEnv('_APP_REGION', 'default'),
'resourceType' => 'message',
'resourceId' => $message->getId(),
'resourceInternalId' => $message->getInternalId(),
@ -3792,8 +3791,8 @@ App::patch('/v1/messaging/messages/push/:messageId')
throw new Exception(Exception::STORAGE_FILE_TYPE_UNSUPPORTED);
}
$host = App::getEnv('_APP_DOMAIN', 'localhost');
$protocol = App::getEnv('_APP_OPTIONS_FORCE_HTTPS') === 'disabled' ? 'http' : 'https';
$host = System::getEnv('_APP_DOMAIN', 'localhost');
$protocol = System::getEnv('_APP_OPTIONS_FORCE_HTTPS') === 'disabled' ? 'http' : 'https';
$scheduleTime = $currentScheduledAt ?? $scheduledAt;
if (!\is_null($scheduleTime)) {
@ -3802,7 +3801,7 @@ App::patch('/v1/messaging/messages/push/:messageId')
$expiry = (new \DateTime())->add(new \DateInterval('P15D'))->format('U');
}
$encoder = new JWT(App::getEnv('_APP_OPENSSL_KEY_V1'));
$encoder = new JWT(System::getEnv('_APP_OPENSSL_KEY_V1'));
$jwt = $encoder->encode([
'iat' => \time(),

View file

@ -21,6 +21,7 @@ use Utopia\Migration\Sources\Appwrite;
use Utopia\Migration\Sources\Firebase;
use Utopia\Migration\Sources\NHost;
use Utopia\Migration\Sources\Supabase;
use Utopia\System\System;
use Utopia\Validator\ArrayList;
use Utopia\Validator\Host;
use Utopia\Validator\Integer;
@ -109,8 +110,8 @@ App::post('/v1/migrations/firebase/oauth')
->inject('request')
->action(function (array $resources, string $projectId, Response $response, Database $dbForProject, Database $dbForConsole, Document $project, Document $user, Event $queueForEvents, Migration $queueForMigrations, Request $request) {
$firebase = new OAuth2Firebase(
App::getEnv('_APP_MIGRATIONS_FIREBASE_CLIENT_ID', ''),
App::getEnv('_APP_MIGRATIONS_FIREBASE_CLIENT_SECRET', ''),
System::getEnv('_APP_MIGRATIONS_FIREBASE_CLIENT_ID', ''),
System::getEnv('_APP_MIGRATIONS_FIREBASE_CLIENT_SECRET', ''),
$request->getProtocol() . '://' . $request->getHostname() . '/v1/migrations/firebase/redirect'
);
@ -553,8 +554,8 @@ App::get('/v1/migrations/firebase/report/oauth')
->inject('dbForConsole')
->action(function (array $resources, string $projectId, Response $response, Request $request, Document $user, Database $dbForConsole) {
$firebase = new OAuth2Firebase(
App::getEnv('_APP_MIGRATIONS_FIREBASE_CLIENT_ID', ''),
App::getEnv('_APP_MIGRATIONS_FIREBASE_CLIENT_SECRET', ''),
System::getEnv('_APP_MIGRATIONS_FIREBASE_CLIENT_ID', ''),
System::getEnv('_APP_MIGRATIONS_FIREBASE_CLIENT_SECRET', ''),
$request->getProtocol() . '://' . $request->getHostname() . '/v1/migrations/firebase/redirect'
);
@ -575,7 +576,7 @@ App::get('/v1/migrations/firebase/report/oauth')
throw new Exception(Exception::USER_IDENTITY_NOT_FOUND);
}
if (App::getEnv('_APP_MIGRATIONS_FIREBASE_CLIENT_ID', '') === '' || App::getEnv('_APP_MIGRATIONS_FIREBASE_CLIENT_SECRET', '') === '') {
if (System::getEnv('_APP_MIGRATIONS_FIREBASE_CLIENT_ID', '') === '' || System::getEnv('_APP_MIGRATIONS_FIREBASE_CLIENT_SECRET', '') === '') {
throw new Exception(Exception::USER_IDENTITY_NOT_FOUND);
}
@ -655,8 +656,8 @@ App::get('/v1/migrations/firebase/connect')
$dbForConsole->updateDocument('users', $user->getId(), $user);
$oauth2 = new OAuth2Firebase(
App::getEnv('_APP_MIGRATIONS_FIREBASE_CLIENT_ID', ''),
App::getEnv('_APP_MIGRATIONS_FIREBASE_CLIENT_SECRET', ''),
System::getEnv('_APP_MIGRATIONS_FIREBASE_CLIENT_ID', ''),
System::getEnv('_APP_MIGRATIONS_FIREBASE_CLIENT_SECRET', ''),
$request->getProtocol() . '://' . $request->getHostname() . '/v1/migrations/firebase/redirect'
);
$url = $oauth2->getLoginURL();
@ -710,8 +711,8 @@ App::get('/v1/migrations/firebase/redirect')
// OAuth Authroization
if (!empty($code)) {
$oauth2 = new OAuth2Firebase(
App::getEnv('_APP_MIGRATIONS_FIREBASE_CLIENT_ID', ''),
App::getEnv('_APP_MIGRATIONS_FIREBASE_CLIENT_SECRET', ''),
System::getEnv('_APP_MIGRATIONS_FIREBASE_CLIENT_ID', ''),
System::getEnv('_APP_MIGRATIONS_FIREBASE_CLIENT_SECRET', ''),
$request->getProtocol() . '://' . $request->getHostname() . '/v1/migrations/firebase/redirect'
);
@ -797,8 +798,8 @@ App::get('/v1/migrations/firebase/projects')
->inject('request')
->action(function (Document $user, Response $response, Document $project, Database $dbForConsole, Request $request) {
$firebase = new OAuth2Firebase(
App::getEnv('_APP_MIGRATIONS_FIREBASE_CLIENT_ID', ''),
App::getEnv('_APP_MIGRATIONS_FIREBASE_CLIENT_SECRET', ''),
System::getEnv('_APP_MIGRATIONS_FIREBASE_CLIENT_ID', ''),
System::getEnv('_APP_MIGRATIONS_FIREBASE_CLIENT_SECRET', ''),
$request->getProtocol() . '://' . $request->getHostname() . '/v1/migrations/firebase/redirect'
);
@ -819,7 +820,7 @@ App::get('/v1/migrations/firebase/projects')
throw new Exception(Exception::USER_IDENTITY_NOT_FOUND);
}
if (App::getEnv('_APP_MIGRATIONS_FIREBASE_CLIENT_ID', '') === '' || App::getEnv('_APP_MIGRATIONS_FIREBASE_CLIENT_SECRET', '') === '') {
if (System::getEnv('_APP_MIGRATIONS_FIREBASE_CLIENT_ID', '') === '' || System::getEnv('_APP_MIGRATIONS_FIREBASE_CLIENT_SECRET', '') === '') {
throw new Exception(Exception::USER_IDENTITY_NOT_FOUND);
}

Some files were not shown because too many files have changed in this diff Show more