diff --git a/CHANGES.md b/CHANGES.md index 135facb84..5ae0928e7 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -5,7 +5,7 @@ * Added option to limit access to the Appwrite console * Added option to disable abuse check and rate limits * Added input field with the server API endpoint for easy access -* Added new OAuth providers for Google and Gitlab +* Added new OAuth providers for Google and GitLab * Added 15 new locales for locale service and email templates (cat, de, es, fi, fr, gr, hi, id, it, nl, pt-br, pt-pt, ro, tr, ua) * Improved test coverage for the project and synced DEV & CI environments settings @@ -20,4 +20,4 @@ * Changed auth service 'redirect' param to 'confirm' for better clarity * Updated all SDKs to sync with API changes -# Version 0.1.15 (NOT-RELEASED) \ No newline at end of file +# Version 0.1.15 (NOT-RELEASED) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index e07b9c159..5dba194a2 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -3,9 +3,9 @@ ## Our Pledge In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and +contributors and maintainers pledge to make participation in our project and our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, sex characteristics, gender identity and expression, +size, disability, ethnicity, sex characteristics, gender identity, expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f985e7c6d..a1d0e90ec 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -42,7 +42,7 @@ We use prettier for our JS coding standards and for auto-formatting our code. Appwrite is built to scale. Please keep in mind that the Appwrite stack can run in different environments and different scales. -We wish Appwrite will be as easy to set up and in a single, local host and easy to grow to a large environment with thousands and even hundreds of instances. +We wish Appwrite will be as easy to set up and in a single, localhost and easy to grow to a large environment with thousands and even hundreds of instances. When contributing code please take into account the following considerations: @@ -67,7 +67,7 @@ Although the Appwrite API is a monolithic app, it has a very clear separation of ### The Microservice Part -Each container in Appwrite is a microservice by its own. Each service is an independent process which can scale without regard to any of the other services. +Each container in Appwrite is a microservice on its own. Each service is an independent process that can scale without regard to any of the other services. Currently, all of the Appwrite microservices are intended to communicate using TCP protocol over a private network. You should be aware to not expose any of the services to the public-facing network, besides the public port 80 and 443 who by default are used to expose the Appwrite HTTP API. @@ -93,10 +93,10 @@ This is also important for the Appwrite lead developers to be able to give techn ## Setup -To set up a working development environment just clone the project git repository and install the backend and frontend dependencies using the proper package manager and create run the docker-compose stack. +To set up a working development environment just fork the project git repository and install the backend and frontend dependencies using the proper package manager and create run the docker-compose stack. ```bash -git clone git@github.com:appwrite/appwrite.git +git clone git@github.com:[YOUR_FORK_HERE]/appwrite.git cd appwrite diff --git a/README.md b/README.md index 5133e967d..e3590efe1 100644 --- a/README.md +++ b/README.md @@ -16,9 +16,9 @@ Appwrite is a simple self-hosted backend server for web and mobile developers with a shiny dashboard and a very easy to use REST API. -Appwrite API services aims to make developers life a lot easier by hiding the complexity of common and repetitive software development tasks. +Appwrite API services aim to make developers life a lot easier by hiding the complexity of common and repetitive software development tasks. -Using Appwrite you can easily manage user authentication with multiple sign-in methods, database for storing and querying user and teams data, storage and file management, image manipulation and cropping, scheduled cron tasks and many other features to help you get more results in faster times and with a lot less code. +Using Appwrite you can easily manage user authentication with multiple sign-in methods, a database for storing and querying user and teams data, storage and file management, image manipulation and cropping, scheduled cron tasks and many other features to help you get more results in faster times and with a lot less code. [https://appwrite.io](https://appwrite.io) @@ -26,7 +26,7 @@ Using Appwrite you can easily manage user authentication with multiple sign-in m ## Installation -Appwrite backend server is designed to run in a container environment. Running your server is as easy as running one command from your terminal. You can run Appwrite on your localhost using docker-compose or on any other container orchestration tool like Kubernetes, Docker Swarm or Rancher. +Appwrite backend server is designed to run in a container environment. Running your server is as easy as running one command from your terminal. You can either run Appwrite on your localhost using docker-compose or on any other container orchestration tool like Kubernetes, Docker Swarm or Rancher. The easiest way to start running your Appwrite server is by running our docker compose file: @@ -61,13 +61,13 @@ Getting started with Appwrite is as easy as creating a new project, choosing you * [**Auth**](https://appwrite.io/docs/auth) - Manage user authentication using multiple sign-in methods and account recovery. * [**Account**](https://appwrite.io/docs/account) - Manage current user account. Track and manage the user sessions, devices and security audit log. * [**Users**](https://appwrite.io/docs/users) - Manage and list all project users when in admin mode. -* [**Teams**](https://appwrite.io/docs/teams) - Manage and group users in teams. Manage memberships, invites and users roles within a team. -* [**Database**](https://appwrite.io/docs/database) - Manage database collections and document. Read, create, update and delete documents and filter lists of documents collections using advanced filter with graph like capabilities. -* [**Storage**](https://appwrite.io/docs/storage) - Manage storage files. Read, create, delete and preview files. Manipulate your files preview to fit your app perfectly. All files are scanned by ClamAV and stored in a secure and encrypted way. -* [**Locale**](https://appwrite.io/docs/locale) - Track users location, and manage your app locale based data. -* [**Avatars**](https://appwrite.io/docs/avatars) - Manage your users avatars, countries flags, browser icons, credit card symbols and generate QR codes. +* [**Teams**](https://appwrite.io/docs/teams) - Manage and group users in teams. Manage memberships, invites and user roles within a team. +* [**Database**](https://appwrite.io/docs/database) - Manage database collections and document. Read, create, update and delete documents and filter lists of documents collections using an advanced filter with graph like capabilities. +* [**Storage**](https://appwrite.io/docs/storage) - Manage storage files. Read, create, delete and preview files. Manipulate the preview of your files to fit your app perfectly. All files are scanned by ClamAV and stored in a secure and encrypted way. +* [**Locale**](https://appwrite.io/docs/locale) - Track user's location, and manage your app locale based data. +* [**Avatars**](https://appwrite.io/docs/avatars) - Manage your user's avatars, country's flags, browser icons, credit card symbols and generate QR codes. -For the complete API documentation, visit [https://appwrite.io/docs](https://appwrite.io/docs). For more tutorials, news and announcments checkout our [blog](https://medium.com/appwrite-io). +For the complete API documentation, visit [https://appwrite.io/docs](https://appwrite.io/docs). For more tutorials, news and announcments check out our [blog](https://medium.com/appwrite-io). ### SDKs @@ -94,32 +94,34 @@ Join our growing community around the world! Follow us on [Twitter](https://twit All code contributions - including those of people having commit access - must go through a pull request and approved by a core developer before being merged. This is to ensure proper review of all the code. -We really ❤️ pull requests! If you wish to help, you can learn more about how you can contribute to this project in the [contribution guide](CONTRIBUTING.md). +We truly ❤️ pull requests! If you wish to help, you can learn more about how you can contribute to this project in the [contribution guide](CONTRIBUTING.md). ## Credits Created by [Eldad Fux](https://twitter.com/eldadfux) with the amazing help of our **amazing contributors:** -* 🇺🇸 Justin Dorfman ([Github](https://github.com/jdorfman), [Twitter](https://twitter.com/jdorfman)) -* 🇺🇳 0xflotus ([Github](https://github.com/0xflotus)) -* 🇳🇴 Petter Charles Redfern ([Github](https://github.com/Chaaarles)) -* 🇧🇷 Jessé Souza ([Github](https://github.com/jessescn)) -* 🇪🇸 Esther Álvarez Feijoo ([Github](https://github.com/EstherAF)) -* 🇮🇳 Christy Jacob ([Github](https://github.com/christyjacob4), [Linkedin](https://www.linkedin.com/in/christyjacob4/)) -* 🇺🇦 Dmitriy Danilov ([Github](https://github.com/daniloff200), [Twitter](https://twitter.com/daniloff200)) -* 🇮🇩 Zeet ([Github](https://github.com/Kiy4h)) -* 🇫🇮 Pessi Päivärinne ([Github](https://github.com/pessip)) -* 🇺🇳 Sergi Vos ([Github](https://github.com/sergivb01), [Twitter](https://twitter.com/sergivb01), [Linkedin](https://www.linkedin.com/in/sergivb01/)) -* 🇮🇱 Tomer Cohen ([Github](https://github.com/tomer), [Twitter](https://twitter.com/tomer)) -* 🇮🇹 Tatiana ([Github](https://github.com/tacoelho)) -* 🇬🇷 Panagiotis Skarlas ([Github](https://github.com/1qk1), [Twitter](https://twitter.com/qktweets)) -* 🇷🇺 Alexey Pyltsyn ([Github](https://github.com/lex111)) -* 🇩🇪 Robin C ([Github](https://github.com/Taminoful)) -* 🇮🇳 Parikshit Hooda ([Github](https://github.com/Parikshit-Hooda)) -* 🇫🇷 Corentin Le Fur ([Github](https://github.com/crtlf)) -* 🇬🇧 Callum Lowry ([Github](https://github.com/Girxffe)) -* 🇷🇴 Bogdan Covrig ([Github](https://github.com/BogDAAAMN), [Twitter](https://twitter.com/BogdanCovrig)) -* 🇳🇱 Kolkies ([Github](https://github.com/kolkies.dev)) -* 🇹🇷 Mustafa Dur ([Github](https://github.com/tosbaha)) -* 🇵🇹 Luís Pinto ([Github](https://github.com/LiTO773)) -* 🇮🇳 Saksham Saxena ([Github](https://github.com/sakkshm)) +* 🇺🇸 Justin Dorfman ([GitHub](https://github.com/jdorfman), [Twitter](https://twitter.com/jdorfman)) +* 🇺🇳 0xflotus ([GitHub](https://github.com/0xflotus)) +* 🇳🇴 Petter Charles Redfern ([GitHub](https://github.com/Chaaarles)) +* 🇧🇷 Jessé Souza ([GitHub](https://github.com/jessescn)) +* 🇪🇸 Esther Álvarez Feijoo ([GitHub](https://github.com/EstherAF)) +* 🇮🇳 Christy Jacob ([GitHub](https://github.com/christyjacob4), [LinkedIn](https://www.linkedin.com/in/christyjacob4/)) +* 🇺🇦 Dmitriy Danilov ([GitHub](https://github.com/daniloff200), [Twitter](https://twitter.com/daniloff200)) +* 🇮🇩 Zeet ([GitHub](https://github.com/Kiy4h)) +* 🇫🇮 Pessi Päivärinne ([GitHub](https://github.com/pessip)) +* 🇺🇳 Sergi Vos ([GitHub](https://github.com/sergivb01), [Twitter](https://twitter.com/sergivb01), [LinkedIn](https://www.linkedin.com/in/sergivb01/)) +* 🇮🇱 Tomer Cohen ([GitHub](https://github.com/tomer), [Twitter](https://twitter.com/tomer)) +* 🇮🇹 Tatiana ([GitHub](https://github.com/tacoelho)) +* 🇬🇷 Panagiotis Skarlas ([GitHub](https://github.com/1qk1), [Twitter](https://twitter.com/qktweets)) +* 🇷🇺 Alexey Pyltsyn ([GitHub](https://github.com/lex111)) +* 🇩🇪 Robin C ([GitHub](https://github.com/Taminoful)) +* 🇮🇳 Parikshit Hooda ([GitHub](https://github.com/Parikshit-Hooda)) +* 🇫🇷 Corentin Le Fur ([GitHub](https://github.com/crtlf)) +* 🇬🇧 Callum Lowry ([GitHub](https://github.com/Girxffe)) +* 🇷🇴 Bogdan Covrig ([GitHub](https://github.com/BogDAAAMN), [Twitter](https://twitter.com/BogdanCovrig)) +* 🇳🇱 Kolkies ([GitHub](https://github.com/kolkies.dev)) +* 🇹🇷 Mustafa Dur ([GitHub](https://github.com/tosbaha)) +* 🇵🇹 Luís Pinto ([GitHub](https://github.com/LiTO773)) +* 🇮🇳 Saksham Saxena ([GitHub](https://github.com/sakkshm)) +* 🇮🇱 Dima Vishnevetsky ([GitHub](https://github.com/dimshik100), [Twitter](https://twitter.com/dimshik100)) +* 🇭🇺 lacexd ([GitHub](https://github.com/lacexd)) diff --git a/app/config/locale/cz.continents.php b/app/config/locale/cz.continents.php new file mode 100644 index 000000000..d1e5bc36f --- /dev/null +++ b/app/config/locale/cz.continents.php @@ -0,0 +1,11 @@ + 'Afrika', + 'AN' => 'Antarktida', + 'AS' => 'Asie', + 'EU' => 'Evropa', + 'NA' => 'Severní Amerika', + 'OC' => 'Oceánie', + 'SA' => 'Jižní Amerika', +]; diff --git a/app/config/locale/cz.countries.php b/app/config/locale/cz.countries.php new file mode 100644 index 000000000..93393c30d --- /dev/null +++ b/app/config/locale/cz.countries.php @@ -0,0 +1,198 @@ + 'Afghánistán', + 'AO' => 'Angola', + 'AL' => 'Albánie', + 'AD' => 'Andorra', + 'AE' => 'Spojené arabské emiráty', + 'AR' => 'Argentina', + 'AM' => 'Arménie', + 'AG' => 'Antigua a Barbuda', + 'AU' => 'Austrálie', + 'AT' => 'Rakousko', + 'AZ' => 'Ázerbájdžán', + 'BI' => 'Burundi', + 'BE' => 'Belgie', + 'BJ' => 'Benin', + 'BF' => 'Burkina Faso', + 'BD' => 'Bangladesh', + 'BG' => 'Bulharsko', + 'BH' => 'Bahrain', + 'BS' => 'Bahamy', + 'BA' => 'Bosna a Hercegovina', + 'BY' => 'Belarus', + 'BZ' => 'Belize', + 'BO' => 'Bolívie', + 'BR' => 'Brazílie', + 'BB' => 'Barbados', + 'BN' => 'Brunej', + 'BT' => 'Bhútán', + 'BW' => 'Botswana', + 'CF' => 'Středoafrická republika', + 'CA' => 'Canada', + 'CH' => 'Švýcarsko', + 'CL' => 'Chile', + 'CN' => 'China', + 'CI' => 'Pobřeží slonoviny', + 'CM' => 'Kamerun', + 'CD' => 'DR Kongo', + 'CG' => 'Konžská republika', + 'CO' => 'Colombia', + 'KM' => 'Komory', + 'CV' => 'Cape Verde', + 'CR' => 'Kostarika', + 'CU' => 'Kuba', + 'CY' => 'Cyprus', + 'CZ' => 'Česko', + 'DE' => 'Německo', + 'DJ' => 'Djibouti', + 'DM' => 'Dominika', + 'DK' => 'Denmark', + 'DO' => 'Dominikánská republika', + 'DZ' => 'Alžírsko', + 'EC' => 'Ekvádor', + 'EG' => 'Egypt', + 'ER' => 'Eritrea', + 'ES' => 'Španělsko', + 'EE' => 'Estonsko', + 'ET' => 'Etiopie', + 'FI' => 'Finsko', + 'FJ' => 'Fidži', + 'FR' => 'France', + 'FM' => 'Mikronésie', + 'GA' => 'Gabun', + 'GB' => 'Spojené království', + 'GE' => 'Georgia', + 'GH' => 'Ghana', + 'GN' => 'Guinea', + 'GM' => 'Gambia', + 'GW' => 'Guinea-Bissau', + 'GQ' => 'Rovníková Guinea', + 'GR' => 'Řecko', + 'GD' => 'Grenada', + 'GT' => 'Guatemala', + 'GY' => 'Guyana', + 'HN' => 'Honduras', + 'HR' => 'Chorvatsko', + 'HT' => 'Haiti', + 'HU' => 'Maďarsko', + 'ID' => 'Indonésie', + 'IN' => 'India', + 'IE' => 'Irsko', + 'IR' => 'Iran', + 'IQ' => 'Irák', + 'IS' => 'Island', + 'IL' => 'Israel', + 'IT' => 'Itálie', + 'JM' => 'Jamajka', + 'JO' => 'Jordan', + 'JP' => 'Japan', + 'KZ' => 'Kazachstán', + 'KE' => 'Keňa', + 'KG' => 'Kyrgyzstán', + 'KH' => 'Kambodža', + 'KI' => 'Kiribati', + 'KN' => 'Svatý Kryštof a Nevis', + 'KR' => 'Jižní Korea', + 'KW' => 'Kuvajt', + 'LA' => 'Laos', + 'LB' => 'Lebanon', + 'LR' => 'Libérie', + 'LY' => 'Libya', + 'LC' => 'Svatá Lucie', + 'LI' => 'Lichtenštejnsko', + 'LK' => 'Srí Lanka', + 'LS' => 'Lesotho', + 'LT' => 'Litva', + 'LU' => 'Luxembourg', + 'LV' => 'Latvia', + 'MA' => 'Maroko', + 'MC' => 'Monaco', + 'MD' => 'Moldavsko', + 'MG' => 'Madagaskar', + 'MV' => 'Maledivy', + 'MX' => 'Mexico', + 'MH' => 'Marshallovy ostrovy', + 'MK' => 'Macedonia', + 'ML' => 'Mali', + 'MT' => 'Malta', + 'MM' => 'Myanmar', + 'ME' => 'Montenegro', + 'MN' => 'Mongolia', + 'MZ' => 'Mozambik', + 'MR' => 'Mauritania', + 'MU' => 'Mauricius', + 'MW' => 'Malawi', + 'MY' => 'Malajsie', + 'NA' => 'Namibie', + 'NE' => 'Niger', + 'NG' => 'Nigeria', + 'NI' => 'Nikaragua', + 'NL' => 'Netherlands', + 'NO' => 'Norway', + 'NP' => 'Nepál', + 'NR' => 'Nauru', + 'NZ' => 'Nový Zéland', + 'OM' => 'Omán', + 'PK' => 'Pákistán', + 'PA' => 'Panama', + 'PE' => 'Peru', + 'PH' => 'Filipíny', + 'PW' => 'Palau', + 'PG' => 'Papua Nová Guinea', + 'PL' => 'Polsko', + 'KP' => 'Severní Korea', + 'PT' => 'Portugal', + 'PY' => 'Paraguay', + 'QA' => 'Katar', + 'RO' => 'Rumunsko', + 'RU' => 'Russia', + 'RW' => 'Rwanda', + 'SA' => 'Saúdská Arábie', + 'SD' => 'Súdán', + 'SN' => 'Senegal', + 'SG' => 'Singapur', + 'SB' => 'Šalamounovy ostrovy', + 'SL' => 'Sierra Leone', + 'SV' => 'Salvador', + 'SM' => 'San Marino', + 'SO' => 'Somalia', + 'RS' => 'Srbsko', + 'SS' => 'Jižní Súdán', + 'ST' => 'São Tomé a Príncipe', + 'SR' => 'Surinam', + 'SK' => 'Slovakia', + 'SI' => 'Slovinsko', + 'SE' => 'Švédsko', + 'SZ' => 'Svazijsko', + 'SC' => 'Seychely', + 'SY' => 'Sýrie', + 'TD' => 'Čad', + 'TG' => 'Togo', + 'TH' => 'Thajsko', + 'TJ' => 'Tádžikistán', + 'TM' => 'Turkmenistán', + 'TL' => 'Timor-Leste', + 'TO' => 'Tonga', + 'TT' => 'Trinidad a Tobago', + 'TN' => 'Tunisko', + 'TR' => 'Turecko', + 'TV' => 'Tuvalu', + 'TZ' => 'Tanzanie', + 'UG' => 'Uganda', + 'UA' => 'Ukraine', + 'UY' => 'Uruguay', + 'US' => 'United States', + 'UZ' => 'Uzbekistán', + 'VA' => 'Vatikán', + 'VC' => 'Svatý Vincenc a Grenadiny', + 'VE' => 'Venezuela', + 'VN' => 'Vietnam', + 'VU' => 'Vanuatu', + 'WS' => 'Samoa', + 'YE' => 'Jemen', + 'ZA' => 'Jižní Afrika', + 'ZM' => 'Zambia', + 'ZW' => 'Zimbabwe', +]; diff --git a/app/config/locale/cz.php b/app/config/locale/cz.php new file mode 100644 index 000000000..4162906ca --- /dev/null +++ b/app/config/locale/cz.php @@ -0,0 +1,21 @@ + '"Umění moudrosti je umění vědět, co přehlédnout."', // This is the line printed in the homepage and console 'view-source' + 'settings.locale' => 'cz', + 'settings.direction' => 'ltr', + + // Service - Users + 'auth.emails.team' => '%s tým', + 'auth.emails.confirm.title' => 'Potvrzení účtu', + 'auth.emails.confirm.body' => 'cz.email.auth.confirm.tpl', + 'auth.emails.recovery.title' => 'Resetovat heslo', + 'auth.emails.recovery.body' => 'cz.email.auth.recovery.tpl', + 'auth.emails.invitation.title' => 'Pozvánka do týmu% s na% s', + 'auth.emails.invitation.body' => 'cz.email.auth.invitation.tpl', + + 'locale.country.unknown' => 'Neznámý', + + 'countries' => include 'cz.countries.php', + 'continents' => include 'cz.continents.php', +]; diff --git a/app/config/locale/hu.continents.php b/app/config/locale/hu.continents.php new file mode 100644 index 000000000..57a88d6f7 --- /dev/null +++ b/app/config/locale/hu.continents.php @@ -0,0 +1,11 @@ + 'Afrika', + 'AN' => 'Antarktika', + 'AS' => 'Ázsia', + 'EU' => 'Európa', + 'NA' => 'Észak-Amerika', + 'OC' => 'Óceánia', + 'SA' => 'Dél-Amerika', +]; diff --git a/app/config/locale/hu.countries.php b/app/config/locale/hu.countries.php new file mode 100644 index 000000000..949313c35 --- /dev/null +++ b/app/config/locale/hu.countries.php @@ -0,0 +1,198 @@ + 'Afganisztán', + 'AO' => 'Angola', + 'AL' => 'Albánia', + 'AD' => 'Andorra', + 'AE' => 'Egyesült Arab Emírségek', + 'AR' => 'Argentína', + 'AM' => 'Örményország', + 'AG' => 'Antigua és Barbuda', + 'AU' => 'Ausztrália', + 'AT' => 'Ausztria', + 'AZ' => 'Azerbajdzsán', + 'BI' => 'Burundi', + 'BE' => 'Belgium', + 'BJ' => 'Benin', + 'BF' => 'Burkina Faso', + 'BD' => 'Banglades', + 'BG' => 'Bulgaria', + 'BH' => 'Bahrein', + 'BS' => 'Bahamák', + 'BA' => 'Bosznia-Hercegovina', + 'BY' => 'Fehéroroszország', + 'BZ' => 'Belize', + 'BO' => 'Bolívia', + 'BR' => 'Brazília', + 'BB' => 'Barbadosz', + 'BN' => 'Brunei', + 'BT' => 'Bhután', + 'BW' => 'Botswana', + 'CF' => 'Közép-afrikai Köztársaság', + 'CA' => 'Kanada', + 'CH' => 'Svájc', + 'CL' => 'Chile', + 'CN' => 'Kína', + 'CI' => 'Elefántcsontpart', + 'CM' => 'Kamerun', + 'CD' => 'Kongói Demokratikus Köztársaság', + 'CG' => 'Kongói Köztársaság', + 'CO' => 'Kolumbia', + 'KM' => 'Comoros', + 'CV' => 'Zöld-foki Köztársaság', + 'CR' => 'Costa Rica', + 'CU' => 'Kuba', + 'CY' => 'Ciprus', + 'CZ' => 'Csehország', + 'DE' => 'Németország', + 'DJ' => 'Djibouti', + 'DM' => 'Dominika', + 'DK' => 'Dánia', + 'DO' => 'Dominikai Köztársaság', + 'DZ' => 'Algíria', + 'EC' => 'Ecuador', + 'EG' => 'Egyiptom', + 'ER' => 'Eritrea', + 'ES' => 'Spanyolország', + 'EE' => 'Észtország', + 'ET' => 'Etiópia', + 'FI' => 'Finnország', + 'FJ' => 'Fidzsi-szigetek', + 'FR' => 'Franciaország', + 'FM' => 'Mikronéziai Szövetségi Államok', + 'GA' => 'Gabon', + 'GB' => 'Egyesült Királyság', + 'GE' => 'Grúzia', + 'GH' => 'Ghána', + 'GN' => 'Guinea', + 'GM' => 'Gambia', + 'GW' => 'Guinea-Bissau', + 'GQ' => 'Egyenlítői-Guinea', + 'GR' => 'Görögország', + 'GD' => 'Grenada', + 'GT' => 'Guatemala', + 'GY' => 'Guyana', + 'HN' => 'Honduras', + 'HR' => 'Horvátország', + 'HT' => 'Haiti', + 'HU' => 'Magyarország', + 'ID' => 'Indonézia', + 'IN' => 'India', + 'IE' => 'Írország', + 'IR' => 'Irán', + 'IQ' => 'Iraq', + 'IS' => 'Izland', + 'IL' => 'Izrael', + 'IT' => 'Olaszország', + 'JM' => 'Jamaika', + 'JO' => 'Jordánia', + 'JP' => 'Japán', + 'KZ' => 'Kazakhsztán', + 'KE' => 'Kenya', + 'KG' => 'Kirgizisztán', + 'KH' => 'Kambodzsa', + 'KI' => 'Kiribati', + 'KN' => 'Saint Kitts és Nevis', + 'KR' => 'Dél Korea', + 'KW' => 'Kuwait', + 'LA' => 'Laosz', + 'LB' => 'Libanon', + 'LR' => 'Libéria', + 'LY' => 'Líbia', + 'LC' => 'Saint Lucia', + 'LI' => 'Liechtenstein', + 'LK' => 'Sri Lanka', + 'LS' => 'Lesotho', + 'LT' => 'Litvánia', + 'LU' => 'Luxembourg', + 'LV' => 'Lettország', + 'MA' => 'Marokkó', + 'MC' => 'Monaco', + 'MD' => 'Moldova', + 'MG' => 'Madagaszkár', + 'MV' => 'Maldív-szigetek', + 'MX' => 'Mexikó', + 'MH' => 'Marshall-szigetek', + 'MK' => 'Macedónia', + 'ML' => 'Mali', + 'MT' => 'Málta', + 'MM' => 'Mianmar', + 'ME' => 'Montenegró', + 'MN' => 'Mongólia', + 'MZ' => 'Mozambik', + 'MR' => 'Mauritánia', + 'MU' => 'Mauritius', + 'MW' => 'Malawi', + 'MY' => 'Malajzia', + 'NA' => 'Namíbia', + 'NE' => 'Niger', + 'NG' => 'Nigeria', + 'NI' => 'Nikaragua', + 'NL' => 'Hollandia', + 'NO' => 'Norvégia', + 'NP' => 'Nepál', + 'NR' => 'Nauru', + 'NZ' => 'Új-Zéland', + 'OM' => 'Omán', + 'PK' => 'Pakisztán', + 'PA' => 'Panama', + 'PE' => 'Peru', + 'PH' => 'Fülöp-szigetek', + 'PW' => 'Palau', + 'PG' => 'Pápua Új-Guinea', + 'PL' => 'Lengyelország', + 'KP' => 'Észak-Korea', + 'PT' => 'Portugália', + 'PY' => 'Paraguay', + 'QA' => 'Qatar', + 'RO' => 'Románia', + 'RU' => 'Oroszország', + 'RW' => 'Rwanda', + 'SA' => 'Szaúd-Arábia', + 'SD' => 'Szudán', + 'SN' => 'Szenegál', + 'SG' => 'Szingapúr', + 'SB' => 'Salamon-szigetek', + 'SL' => 'Sierra Leone', + 'SV' => 'El Salvador', + 'SM' => 'San Marino', + 'SO' => 'Szomália', + 'RS' => 'Szerbia', + 'SS' => 'Dél-Szudán', + 'ST' => 'São Tomé és Príncipe', + 'SR' => 'Szurinám', + 'SK' => 'Szlovákia', + 'SI' => 'Szlovénia', + 'SE' => 'Svédország', + 'SZ' => 'Swaziland', + 'SC' => 'Seychelles-szigetek', + 'SY' => 'Szíria', + 'TD' => 'Csád', + 'TG' => 'Togo', + 'TH' => 'Tájföld', + 'TJ' => 'Tádzsikisztán', + 'TM' => 'Türkmenisztán', + 'TL' => 'Timor-Leste', + 'TO' => 'Tonga', + 'TT' => 'Trinidad és Tobago', + 'TN' => 'Tunézia', + 'TR' => 'Törökország', + 'TV' => 'Tuvalu', + 'TZ' => 'Tanzania', + 'UG' => 'Uganda', + 'UA' => 'Ukraina', + 'UY' => 'Uruguay', + 'US' => 'Egyesült Államok', + 'UZ' => 'Üzbegisztán', + 'VA' => 'Vatikánváros', + 'VC' => 'Saint Vincent és a Grenadine-szigetek', + 'VE' => 'Venezuela', + 'VN' => 'Vietnám', + 'VU' => 'Vanuatu', + 'WS' => 'Szamoa', + 'YE' => 'Yemen', + 'ZA' => 'Dél-Afrikai Köztársaság', + 'ZM' => 'Zambia', + 'ZW' => 'Zimbabwe', +]; diff --git a/app/config/locale/hu.php b/app/config/locale/hu.php new file mode 100644 index 000000000..a4ca49b5c --- /dev/null +++ b/app/config/locale/hu.php @@ -0,0 +1,21 @@ + '"The art of being wise is the art of knowing what to overlook."', // This is the line printed in the homepage and console 'view-source' + 'settings.locale' => 'hu', + 'settings.direction' => 'ltr', + + // Service - Users + 'auth.emails.team' => '%s Csapat', + 'auth.emails.confirm.title' => 'Fiók megerősítés', + 'auth.emails.confirm.body' => 'hu.email.auth.confirm.tpl', + 'auth.emails.recovery.title' => 'Jelszó Visszaállítás', + 'auth.emails.recovery.body' => 'hu.email.auth.recovery.tpl', + 'auth.emails.invitation.title' => 'Meghívás a %s Csapathoz %s', + 'auth.emails.invitation.body' => 'hu.email.auth.invitation.tpl', + + 'locale.country.unknown' => 'Ismeretlen', + + 'countries' => include 'hu.countries.php', + 'continents' => include 'hu.continents.php', +]; diff --git a/app/config/locale/it.countries.php b/app/config/locale/it.countries.php index cf8a339b1..ce4e56349 100644 --- a/app/config/locale/it.countries.php +++ b/app/config/locale/it.countries.php @@ -29,22 +29,22 @@ return [ 'BN' => 'Brunei', 'BT' => 'Bhutan', 'BW' => 'Botswana', - 'CF' => 'Repubblica centrafricana', + 'CF' => 'Repubblica Centrafricana', 'CA' => 'Canada', 'CH' => 'Svizzera', 'CL' => 'Cile', 'CN' => 'Cina', 'CI' => 'Costa d\'Avorio', 'CM' => 'Camerun', - 'CD' => 'DR Congo', + 'CD' => 'Repubblica Democratica del Congo', 'CG' => 'Repubblica del Congo', 'CO' => 'Colombia', - 'KM' => 'Comore', + 'KM' => 'Unione delle Comore', 'CV' => 'Capo Verde', 'CR' => 'Costa Rica', 'CU' => 'Cuba', 'CY' => 'Cipro', - 'CZ' => 'Czechia', + 'CZ' => 'Repubblica Ceca', 'DE' => 'Germania', 'DJ' => 'Gibuti', 'DM' => 'Dominica', @@ -59,7 +59,7 @@ return [ 'ET' => 'Etiopia', 'FI' => 'Finlandia', 'FJ' => 'Figi', - 'FR' => 'France', + 'FR' => 'Francia', 'FM' => 'Micronesia', 'GA' => 'Gabon', 'GB' => 'Regno Unito', @@ -140,7 +140,7 @@ return [ 'PE' => 'Perù', 'PH' => 'Filippine', 'PW' => 'Palau', - 'PG' => 'Papua New Guinea', + 'PG' => 'Papua Nuova Guinea', 'PL' => 'Polonia', 'KP' => 'Corea del Nord', 'PT' => 'Portogallo', @@ -160,7 +160,7 @@ return [ 'SO' => 'Somalia', 'RS' => 'Serbia', 'SS' => 'Sudan del Sud', - 'ST' => 'São Tomé and Príncipe', + 'ST' => 'São Tomé e Príncipe', 'SR' => 'Suriname', 'SK' => 'Slovacchia', 'SI' => 'Slovenia', diff --git a/app/config/locale/it.php b/app/config/locale/it.php index dfc8d1197..3cccea78e 100644 --- a/app/config/locale/it.php +++ b/app/config/locale/it.php @@ -4,15 +4,18 @@ return [ 'settings.inspire' => '"L\'arte di essere saggi è l\'arte di sapere cosa trascurare."', // Questa è la riga stampata nella homepage e nella console 'view-source' 'settings.locale' => 'it', 'settings.direction' => 'ltr', + // Servizio - Utenti - 'auth.emails.team' => '%s Squadra', + 'auth.emails.team' => 'Team %s', 'auth.emails.confirm.title' => 'Conferma dell\'account', 'auth.emails.confirm.body' => 'en.email.auth.confirm.tpl', - 'auth.emails.recovery.title' => 'Reimpostazione della password', + 'auth.emails.recovery.title' => 'Recupero password', 'auth.emails.recovery.body' => 'en.email.auth.recovery.tpl', - 'auth.emails.invitation.title' => 'Invito a %s squadra %s', + 'auth.emails.invitation.title' => 'Invito al team %s di %s', 'auth.emails.invitation.body' => 'en.email.auth.invitation.tpl', + 'locale.country.unknown' => 'Sconosciuto', + 'countries' => include 'it.countries.php', 'continents' => include 'it.continents.php', ]; diff --git a/app/config/locale/ru.continents.php b/app/config/locale/ru.continents.php new file mode 100644 index 000000000..e07828bfb --- /dev/null +++ b/app/config/locale/ru.continents.php @@ -0,0 +1,11 @@ + 'Африка', + 'AN' => 'Антарктика', + 'AS' => 'Азия', + 'EU' => 'Европа', + 'NA' => 'Северная Америка', + 'OC' => 'Океания', + 'SA' => 'Южная Америка', +]; diff --git a/app/config/locale/ru.countries.php b/app/config/locale/ru.countries.php new file mode 100644 index 000000000..2b54288a4 --- /dev/null +++ b/app/config/locale/ru.countries.php @@ -0,0 +1,198 @@ + 'Афганистан', + 'AO' => 'Ангола', + 'AL' => 'Албания', + 'AD' => 'Андорра', + 'AE' => 'Объединенные Арабские Эмираты', + 'AR' => 'Аргентина', + 'AM' => 'Армения', + 'AG' => 'Антигуа и Барбуда', + 'AU' => 'Австралия', + 'AT' => 'Австрия', + 'AZ' => 'Азербайджан', + 'BI' => 'Бурунди', + 'BE' => 'Бельгия', + 'BJ' => 'Бенин', + 'BF' => 'Буркина Фасо', + 'BD' => 'Бангладеш', + 'BG' => 'Болгария', + 'BH' => 'Бахрейн', + 'BS' => 'Багамские острова', + 'BA' => 'Босния и Герцеговина', + 'BY' => 'Беларусь', + 'BZ' => 'Бейлиз', + 'BO' => 'Боливия', + 'BR' => 'Бразилия', + 'BB' => 'Барбадос', + 'BN' => 'Бруней', + 'BT' => 'Бутан', + 'BW' => 'Ботсвана', + 'CF' => 'Центральноафриканская Республика', + 'CA' => 'Канада', + 'CH' => 'Швейцария', + 'CL' => 'Чили', + 'CN' => 'Китай', + 'CI' => 'Кот-д\'Ивуар', + 'CM' => 'Камерун', + 'CD' => 'ДР Конго', + 'CG' => 'Республика Конго', + 'CO' => 'Колумбия', + 'KM' => 'Коморы', + 'CV' => 'Кабо-Верде', + 'CR' => 'Коста-Рика', + 'CU' => 'Куба', + 'CY' => 'Кипр', + 'CZ' => 'Чехия', + 'DE' => 'Германия', + 'DJ' => 'Джибути', + 'DM' => 'Доминика', + 'DK' => 'Дания', + 'DO' => 'Доминиканская Республика', + 'DZ' => 'Алжир', + 'EC' => 'Эквадор', + 'EG' => 'Египет', + 'ER' => 'Эритрея', + 'ES' => 'Испания', + 'EE' => 'Эстония', + 'ET' => 'Эфиопия', + 'FI' => 'Финляндия', + 'FJ' => 'Фиджи', + 'FR' => 'Франция', + 'FM' => 'Микронезия', + 'GA' => 'Габон', + 'GB' => 'Великобритания', + 'GE' => 'Грузия', + 'GH' => 'Гана', + 'GN' => 'Гвинея', + 'GM' => 'Гамбия', + 'GW' => 'Гвинея-Бисау', + 'GQ' => 'Экваториальная Гвинея', + 'GR' => 'Греция', + 'GD' => 'Гренада', + 'GT' => 'Гватемала', + 'GY' => 'Гайана', + 'HN' => 'Гондурас', + 'HR' => 'Хорватия', + 'HT' => 'Гаити', + 'HU' => 'Венгрия', + 'ID' => 'Индонезия', + 'IN' => 'Индия', + 'IE' => 'Ирландия', + 'IR' => 'Иран', + 'IQ' => 'Ирак', + 'IS' => 'Исландия', + 'IL' => 'Израиль', + 'IT' => 'Италия', + 'JM' => 'Ямайка', + 'JO' => 'Иордания', + 'JP' => 'Япония', + 'KZ' => 'Казахстан', + 'KE' => 'Кения', + 'KG' => 'Киргизия', + 'KH' => 'Камбоджа', + 'KI' => 'Кирибати', + 'KN' => 'Сент-Китс и Невис', + 'KR' => 'Южная Корея', + 'KW' => 'Кувейт', + 'LA' => 'Лаос', + 'LB' => 'Ливан', + 'LR' => 'Либерия', + 'LY' => 'Ливия', + 'LC' => 'Сент-Люсия', + 'LI' => 'Лихтенштейн', + 'LK' => 'Шри Ланка', + 'LS' => 'Лесото', + 'LT' => 'Литва', + 'LU' => 'Люксембург', + 'LV' => 'Латвия', + 'MA' => 'Марокко', + 'MC' => 'Монако', + 'MD' => 'Молдова', + 'MG' => 'Мадагаскар', + 'MV' => 'Мальдивы', + 'MX' => 'Мексика', + 'MH' => 'Маршалловы острова', + 'MK' => 'Македония', + 'ML' => 'Мали', + 'MT' => 'Мальта', + 'MM' => 'Мьянма', + 'ME' => 'Черногория', + 'MN' => 'Монголия', + 'MZ' => 'Мозамбик', + 'MR' => 'Мавритания', + 'MU' => 'Маврикий', + 'MW' => 'Малави', + 'MY' => 'Малайзия', + 'NA' => 'Намибия', + 'NE' => 'Нигер', + 'NG' => 'Нигерия', + 'NI' => 'Никарагуа', + 'NL' => 'Нидерланды', + 'NO' => 'Норвегия', + 'NP' => 'Непал', + 'NR' => 'Науру', + 'NZ' => 'Новая Зеландия', + 'OM' => 'Оман', + 'PK' => 'Пакистан', + 'PA' => 'Панама', + 'PE' => 'Перу', + 'PH' => 'Филлиппины', + 'PW' => 'Палау', + 'PG' => 'Папуа Новая Гвинея', + 'PL' => 'Польша', + 'KP' => 'Северная Корея', + 'PT' => 'Португалия', + 'PY' => 'Парагвай', + 'QA' => 'Катар', + 'RO' => 'Румыния', + 'RU' => 'Россия', + 'RW' => 'Руанда', + 'SA' => 'Саудовская Аравия', + 'SD' => 'Судан', + 'SN' => 'Сенегал', + 'SG' => 'Сингапур', + 'SB' => 'Соломоновы Острова', + 'SL' => 'Сьерра Леоне', + 'SV' => 'Эль Сальвадор', + 'SM' => 'Сан Марино', + 'SO' => 'Сомали', + 'RS' => 'Сербия', + 'SS' => 'Южный Судан', + 'ST' => 'Сан-Томе и Принсипи', + 'SR' => 'Суринам', + 'SK' => 'Словакия', + 'SI' => 'Словения', + 'SE' => 'Швеция', + 'SZ' => 'Свазиленд', + 'SC' => 'Сейшеллы', + 'SY' => 'Сирия', + 'TD' => 'Чад', + 'TG' => 'Того', + 'TH' => 'Таиланд', + 'TJ' => 'Таджикистан', + 'TM' => 'Туркменистан', + 'TL' => 'Восточный Тимор', + 'TO' => 'Тонга', + 'TT' => 'Тринидад и Тобаго', + 'TN' => 'Тунис', + 'TR' => 'Турция', + 'TV' => 'Тувалу', + 'TZ' => 'Танзания', + 'UG' => 'Уганда', + 'UA' => 'Украина', + 'UY' => 'Уругвай', + 'US' => 'Соединенные Штаты', + 'UZ' => 'Узбекистан', + 'VA' => 'Ватикан', + 'VC' => 'Сент-Винсент и Гренадины', + 'VE' => 'Венесуэла', + 'VN' => 'Вьетнам', + 'VU' => 'Вануату', + 'WS' => 'Самоа', + 'YE' => 'Йемен', + 'ZA' => 'Южная Африка', + 'ZM' => 'Замбия', + 'ZW' => 'Зимбабве', +]; diff --git a/app/config/locale/ru.php b/app/config/locale/ru.php new file mode 100644 index 000000000..49cd3f19e --- /dev/null +++ b/app/config/locale/ru.php @@ -0,0 +1,20 @@ + '"Искусство быть мудрым — это искусство знать, чем можно пренебречь."', // This is the line printed in the homepage and console 'view-source' + 'settings.locale' => 'ru', + 'settings.direction' => 'ltr', + + 'auth.emails.team' => 'Команда %s', + 'auth.emails.confirm.title' => 'Подтверждение аккаунта', + 'auth.emails.confirm.body' => 'ru.email.auth.confirm.tpl', + 'auth.emails.recovery.title' => 'Сброс пароля', + 'auth.emails.recovery.body' => 'ru.email.auth.recovery.tpl', + 'auth.emails.invitation.title' => 'Приглашение в команду %s по проекту %s', + 'auth.emails.invitation.body' => 'ru.email.auth.invitation.tpl', + + 'locale.country.unknown' => 'Неизвестно', + + 'countries' => include 'ru.countries.php', + 'continents' => include 'ru.continents.php', +]; diff --git a/app/config/locale/sv.continents.php b/app/config/locale/sv.continents.php new file mode 100644 index 000000000..ba158cccf --- /dev/null +++ b/app/config/locale/sv.continents.php @@ -0,0 +1,11 @@ + 'Afrika', + 'AN' => 'Antarktis', + 'AS' => 'Asien', + 'EU' => 'Europa', + 'NA' => 'Nordamerika', + 'OC' => 'Oceanien', + 'SA' => 'Sydamerika', +]; diff --git a/app/config/locale/sv.countries.php b/app/config/locale/sv.countries.php new file mode 100644 index 000000000..7bfc8f22a --- /dev/null +++ b/app/config/locale/sv.countries.php @@ -0,0 +1,198 @@ + 'Afganistan', + 'AO' => 'Angola', + 'AL' => 'Albanien', + 'AD' => 'Andorra', + 'AE' => 'Förenade Arabemiraterna', + 'AR' => 'Argentina', + 'AM' => 'Armenien', + 'AG' => 'Antigua och Barbuda', + 'AU' => 'Australien', + 'AT' => 'Österrike', + 'AZ' => 'Azerbajdzjan', + 'BI' => 'Burundi', + 'BE' => 'Belgien', + 'BJ' => 'Benin', + 'BF' => 'Burkina Faso', + 'BD' => 'Bangladesh', + 'BG' => 'Bulgarien', + 'BH' => 'Bahrain', + 'BS' => 'Bahamas', + 'BA' => 'Bosnien och Hercegovina', + 'BY' => 'Vitrysslnd', + 'BZ' => 'Belize', + 'BO' => 'Bolivien', + 'BR' => 'Brasilien', + 'BB' => 'Barbados', + 'BN' => 'Brune', + 'BT' => 'Butan', + 'BW' => 'Botswana', + 'CF' => 'Centralafrikanska republiken', + 'CA' => 'Kanada', + 'CH' => 'Schweiz', + 'CL' => 'Chile', + 'CN' => 'Kina', + 'CI' => 'Elfenbenskusten', + 'CM' => 'Kamerun', + 'CD' => 'Kongo-Kinshasa', + 'CG' => 'Kongo-Brazzaville', + 'CO' => 'Colombia', + 'KM' => 'Komorerna', + 'CV' => 'Kap Verde', + 'CR' => 'Costa Rica', + 'CU' => 'Kuba', + 'CY' => 'Cypern', + 'CZ' => 'Tjeckien', + 'DE' => 'Tyskland', + 'DJ' => 'Djibouti', + 'DM' => 'Dominica', + 'DK' => 'Danmark', + 'DO' => 'Dominikanska republiken', + 'DZ' => 'Algeriet', + 'EC' => 'Ekvador', + 'EG' => 'Egypten', + 'ER' => 'Eritrea', + 'ES' => 'Spanien', + 'EE' => 'Estonia', + 'ET' => 'Etiopien', + 'FI' => 'Finland', + 'FJ' => 'Fiji', + 'FR' => 'Frankrike', + 'FM' => 'Mikronesien', + 'GA' => 'Gabon', + 'GB' => 'Storbrittannien', + 'GE' => 'Georgien', + 'GH' => 'Ghana', + 'GN' => 'Guinea', + 'GM' => 'Gambia', + 'GW' => 'Guinea-Bissau', + 'GQ' => 'Ekvatorialguinea', + 'GR' => 'Grekland', + 'GD' => 'Grenada', + 'GT' => 'Guatemala', + 'GY' => 'Guyana', + 'HN' => 'Honduras', + 'HR' => 'Kroatien', + 'HT' => 'Haiti', + 'HU' => 'Ungern', + 'ID' => 'Indonesien', + 'IN' => 'Indien', + 'IE' => 'Irland', + 'IR' => 'Iran', + 'IQ' => 'Irak', + 'IS' => 'Island', + 'IL' => 'Israel', + 'IT' => 'Italien', + 'JM' => 'Jamaika', + 'JO' => 'Jordanien', + 'JP' => 'Japan', + 'KZ' => 'Kazakstan', + 'KE' => 'Kenya', + 'KG' => 'Kirgizistan', + 'KH' => 'Kambodja', + 'KI' => 'Kiribati', + 'KN' => 'Saint Kitts och Nevis', + 'KR' => 'Sydkorea', + 'KW' => 'Kuwait', + 'LA' => 'Laos', + 'LB' => 'Libanon', + 'LR' => 'Liberien', + 'LY' => 'Libyen', + 'LC' => 'Saint Lucia', + 'LI' => 'Liechtenstein', + 'LK' => 'Sri Lanka', + 'LS' => 'Lesotho', + 'LT' => 'Litauen', + 'LU' => 'Luxemburg', + 'LV' => 'Latvien', + 'MA' => 'Marocko', + 'MC' => 'Monaco', + 'MD' => 'Moldavien', + 'MG' => 'Madagaskar', + 'MV' => 'Maldiverna', + 'MX' => 'Mexiko', + 'MH' => 'Marshall Islands', + 'MK' => 'Nordmakedonien', + 'ML' => 'Mali', + 'MT' => 'Malta', + 'MM' => 'Myanmar', + 'ME' => 'Montenegro', + 'MN' => 'Mongolien', + 'MZ' => 'Moçambique', + 'MR' => 'Mauritanien', + 'MU' => 'Mauritius', + 'MW' => 'Malawi', + 'MY' => 'Malaysia', + 'NA' => 'Namibia', + 'NE' => 'Niger', + 'NG' => 'Nigeria', + 'NI' => 'Nicaragua', + 'NL' => 'Nederländerna', + 'NO' => 'Norge', + 'NP' => 'Nepal', + 'NR' => 'Nauru', + 'NZ' => 'Nya Zealand', + 'OM' => 'Oman', + 'PK' => 'Pakistan', + 'PA' => 'Panama', + 'PE' => 'Peru', + 'PH' => 'Filppinerna', + 'PW' => 'Palau', + 'PG' => 'Papua New Guinea', + 'PL' => 'Polen', + 'KP' => 'Nordkorea', + 'PT' => 'Portugal', + 'PY' => 'Paraguay', + 'QA' => 'Qatar', + 'RO' => 'Rumänien', + 'RU' => 'Ryssland', + 'RW' => 'Rwanda', + 'SA' => 'Saudiarabien', + 'SD' => 'Sudan', + 'SN' => 'Senegal', + 'SG' => 'Singapor', + 'SB' => 'Solomonöarna', + 'SL' => 'Sierra Leone', + 'SV' => 'El Salvador', + 'SM' => 'San Marino', + 'SO' => 'Somalien', + 'RS' => 'Serbien', + 'SS' => 'Sydsudan', + 'ST' => 'São Tomé och Príncipe', + 'SR' => 'Surinam', + 'SK' => 'Slovakien', + 'SI' => 'Slovenien', + 'SE' => 'Sverige', + 'SZ' => 'Swaziland', + 'SC' => 'Seychellerna', + 'SY' => 'Syrien', + 'TD' => 'Tchad', + 'TG' => 'Togo', + 'TH' => 'Thailand', + 'TJ' => 'Tadzjikistan', + 'TM' => 'Turkmenistan', + 'TL' => 'Timor-Leste', + 'TO' => 'Tonga', + 'TT' => 'Trinidad och Tobago', + 'TN' => 'Tunisien', + 'TR' => 'Turkiet', + 'TV' => 'Tuvalu', + 'TZ' => 'Tanzania', + 'UG' => 'Uganda', + 'UA' => 'Ukraina', + 'UY' => 'Uruguay', + 'US' => 'Amerikas Förenta Stater', + 'UZ' => 'Uzbekistan', + 'VA' => 'Vatikanstaten', + 'VC' => 'Sankt Vincent och Grenadinerna', + 'VE' => 'Venezuela', + 'VN' => 'Vietnam', + 'VU' => 'Vanuatu', + 'WS' => 'Samoa', + 'YE' => 'Jemen', + 'ZA' => 'Sydafrika', + 'ZM' => 'Zambia', + 'ZW' => 'Zimbabwe', +]; diff --git a/app/config/locale/sv.php b/app/config/locale/sv.php new file mode 100644 index 000000000..9f34de341 --- /dev/null +++ b/app/config/locale/sv.php @@ -0,0 +1,21 @@ + '"The art of being wise is the art of knowing what to overlook."', // This is the line printed in the homepage and console 'view-source' + 'settings.locale' => 'sv', + 'settings.direction' => 'ltr', + + // Service - Users + 'auth.emails.team' => '%s-teamet', + 'auth.emails.confirm.title' => 'Kontobekräftelse', + 'auth.emails.confirm.body' => 'sv.email.auth.confirm.tpl', + 'auth.emails.recovery.title' => 'Ändra lösenord', + 'auth.emails.recovery.body' => 'sv.email.auth.recovery.tpl', + 'auth.emails.invitation.title' => 'Inbjudan till %s-teamet i %s', + 'auth.emails.invitation.body' => 'sv.email.auth.invitation.tpl', + + 'locale.country.unknown' => 'Okänt', + + 'countries' => include 'sv.countries.php', + 'continents' => include 'sv.continents.php', +]; diff --git a/app/config/locale/templates/cz.email.auth.confirm.tpl b/app/config/locale/templates/cz.email.auth.confirm.tpl new file mode 100644 index 000000000..481b440ab --- /dev/null +++ b/app/config/locale/templates/cz.email.auth.confirm.tpl @@ -0,0 +1,24 @@ + + +
+ Ahoj {{name}}, +
+
+ Kliknutím na tento odkaz ověřte svou e-mailovou adresu. +
+ {{redirect}} +
+
+ Pokud jste nepožádali o ověření této adresy, můžete tuto zprávu ignorovat. +
+
+ dík, +
+ {{project}} tým +
diff --git a/app/config/locale/templates/cz.email.auth.invitation.tpl b/app/config/locale/templates/cz.email.auth.invitation.tpl new file mode 100644 index 000000000..8e8a8dc5c --- /dev/null +++ b/app/config/locale/templates/cz.email.auth.invitation.tpl @@ -0,0 +1,27 @@ + + +
+ Ahoj, +
+
+ Tento e-mail vám byl zaslán, protože vás {{owner}} chtěl pozvat, abyste se stali členem týmu v týmu {{team}} v {{project}}. +
+
+ Klepnutím na tento odkaz se připojíte k týmu {{team}}: +
+ {{redirect}} +
+
+ Pokud vás nezajímá, můžete tuto zprávu ignorovat. +
+
+ Dík, +
+ {{project}} tým +
diff --git a/app/config/locale/templates/cz.email.auth.recovery.tpl b/app/config/locale/templates/cz.email.auth.recovery.tpl new file mode 100644 index 000000000..d8a3e6a2b --- /dev/null +++ b/app/config/locale/templates/cz.email.auth.recovery.tpl @@ -0,0 +1,24 @@ + + +
+ Ahoj {{name}}, +
+
+ Pomocí tohoto odkazu obnovte své heslo {{project}}. +
+ {{redirect}} +
+
+ Pokud jste nepožádali o resetování hesla, můžete tuto zprávu ignorovat. +
+
+ Dík, +
+ {{project}} tým +
diff --git a/app/config/locale/templates/hu.email.auth.confirm.tpl b/app/config/locale/templates/hu.email.auth.confirm.tpl new file mode 100644 index 000000000..680e0da2e --- /dev/null +++ b/app/config/locale/templates/hu.email.auth.confirm.tpl @@ -0,0 +1,24 @@ + + +
+ Szia {{name}}, +
+
+ Kattints erre a linkre, hogy megerősítsd az e-mail címed. +
+ {{redirect}} +
+
+ Ha nem kérelmezted, hogy megerősítsük ezt a címet, ignoráld ezt a levelet. +
+
+ Köszönettel, +
+ {{project}} csapat +
diff --git a/app/config/locale/templates/hu.email.auth.invitation.tpl b/app/config/locale/templates/hu.email.auth.invitation.tpl new file mode 100644 index 000000000..6dce55a63 --- /dev/null +++ b/app/config/locale/templates/hu.email.auth.invitation.tpl @@ -0,0 +1,27 @@ + + +
+ Szia, +
+
+ Azért küldtük ezt az e-mailt {{owner}} mert meg szeretnénk hívni a {{team}} csapatba a következő projektre {{project}}. +
+
+ Kattints erre a linkre, hogy a {{team}} csapat tagja legyél: +
+ {{redirect}} +
+
+ Ha nem vegy ebben érdekelt ignoráld ezt az üzenetet. +
+
+ Köszönettel, +
+ {{project}} csapat +
diff --git a/app/config/locale/templates/hu.email.auth.recovery.tpl b/app/config/locale/templates/hu.email.auth.recovery.tpl new file mode 100644 index 000000000..564d55bd0 --- /dev/null +++ b/app/config/locale/templates/hu.email.auth.recovery.tpl @@ -0,0 +1,24 @@ + + +
+ Szia {{name}}, +
+
+ Kattints erre a linkre, hogy visszaállítsuk a {{project}} jelszavad. +
+ {{redirect}} +
+
+ Ha nem kérvényezted, hogy visszaállítsuk a jelszavad ignoráld ezt a levelet. +
+
+ Köszönettel, +
+ {{project}} csapat +
diff --git a/app/config/locale/templates/it.email.auth.confirm.tpl b/app/config/locale/templates/it.email.auth.confirm.tpl index 8106722d8..fedbe8018 100644 --- a/app/config/locale/templates/it.email.auth.confirm.tpl +++ b/app/config/locale/templates/it.email.auth.confirm.tpl @@ -21,5 +21,5 @@
Grazie,
- {{project}} squadra + Il team di {{project}} \ No newline at end of file diff --git a/app/config/locale/templates/it.email.auth.invitation.tpl b/app/config/locale/templates/it.email.auth.invitation.tpl index be7becac4..9ec03cf39 100644 --- a/app/config/locale/templates/it.email.auth.invitation.tpl +++ b/app/config/locale/templates/it.email.auth.invitation.tpl @@ -11,10 +11,10 @@ Ciao,

- Questa mail ti stata inviata perch {{owner}} volevo invitarti a diventare un membro del team al {{team}} squadra a {{project}}. + Questa mail ti è stata inviata perchè {{owner}} vuole invitarti a diventare un membro del team {{team}} del progetto {{project}}.

- Segui questo link per unirti a {{team}} squadra: + Segui questo link per unirti al team {{team}}:
{{redirect}}
@@ -24,5 +24,5 @@
Grazie,
- {{project}} squadra + Il team di {{project}} \ No newline at end of file diff --git a/app/config/locale/templates/it.email.auth.recovery.tpl b/app/config/locale/templates/it.email.auth.recovery.tpl index 6a5adb5cb..2756b1569 100644 --- a/app/config/locale/templates/it.email.auth.recovery.tpl +++ b/app/config/locale/templates/it.email.auth.recovery.tpl @@ -10,7 +10,7 @@ Ciao {{name}},

- Segui questo link per reimpostare la tua {{project}} password. + Segui questo link per reimpostare la tua password per {{project}}.
{{redirect}}
@@ -20,5 +20,5 @@
Grazie,
- {{project}} squadra + Il team di {{project}} \ No newline at end of file diff --git a/app/config/locale/templates/ru.email.auth.confirm.tpl b/app/config/locale/templates/ru.email.auth.confirm.tpl new file mode 100644 index 000000000..29993e988 --- /dev/null +++ b/app/config/locale/templates/ru.email.auth.confirm.tpl @@ -0,0 +1,24 @@ + + +
+ Здравствуйте, {{name}}, +
+
+ Перейдите по ссылке, чтобы подтвердить свой адрес электронной почты. +
+ {{redirect}} +
+
+ Если вы не запрашивали подтверждение этого адреса, проигнорируйте это сообщение. +
+
+ Спасибо, +
+ команда {{project}} +
\ No newline at end of file diff --git a/app/config/locale/templates/ru.email.auth.invitation.tpl b/app/config/locale/templates/ru.email.auth.invitation.tpl new file mode 100644 index 000000000..41de21d09 --- /dev/null +++ b/app/config/locale/templates/ru.email.auth.invitation.tpl @@ -0,0 +1,27 @@ + + +
+ Здравствуйте, +
+
+ Это письмо отправлено вам, потому что {{owner}} приглашает стать членом команды {{team}} в проекте {{project}}. +
+
+ Перейдите по ссылке, чтобы присоединиться к команде {{team}} : +
+ {{redirect}} +
+
+ Если вы не заинтересованы, проигнорируйте это сообщение. +
+
+ Спасибо, +
+ команда {{project}} +
diff --git a/app/config/locale/templates/ru.email.auth.recovery.tpl b/app/config/locale/templates/ru.email.auth.recovery.tpl new file mode 100644 index 000000000..680278e42 --- /dev/null +++ b/app/config/locale/templates/ru.email.auth.recovery.tpl @@ -0,0 +1,24 @@ + + +
+ Здравствуйте, {{name}}, +
+
+ Перейдите по ссылке, чтобы сбросить пароль для проекта {{project}}. +
+ {{redirect}} +
+
+ Если вы не запрашивали сброс пароля, проигнорируйте это сообщение. +
+
+ Спасибо, +
+ команда {{project}} +
diff --git a/app/config/locale/templates/sv.email.auth.confirm.tpl b/app/config/locale/templates/sv.email.auth.confirm.tpl new file mode 100644 index 000000000..0b1e4451f --- /dev/null +++ b/app/config/locale/templates/sv.email.auth.confirm.tpl @@ -0,0 +1,24 @@ + + +
+ Hej {{name}}, +
+
+ Vänligen följ länken nedan för att verifiera din epostadress. +
+ {{redirect}} +
+
+ Om du inte vill verifiera din epostadress så kan du ignorera detta meddelande. +
+
+ Tack, +
+ {{project}}-teamet +
\ No newline at end of file diff --git a/app/config/locale/templates/sv.email.auth.invitation.tpl b/app/config/locale/templates/sv.email.auth.invitation.tpl new file mode 100644 index 000000000..604e94227 --- /dev/null +++ b/app/config/locale/templates/sv.email.auth.invitation.tpl @@ -0,0 +1,27 @@ + + +
+ Hej, +
+
+ {{owner}} vill bjuda in dig att bli del av {{team}}-teamet inom {{project}}. +
+
+ Följ denna länk för att bli del av {{team}}-teamet: +
+ {{redirect}} +
+
+ Om du inte är intresserad så kan du ignorera detta meddelande. +
+
+ Tack, +
+ {{project}}-teamet +
diff --git a/app/config/locale/templates/sv.email.auth.recovery.tpl b/app/config/locale/templates/sv.email.auth.recovery.tpl new file mode 100644 index 000000000..dba922155 --- /dev/null +++ b/app/config/locale/templates/sv.email.auth.recovery.tpl @@ -0,0 +1,24 @@ + + +
+ Hej {{name}}, +
+
+ Följ denna länk för att ändra ditt {{project}} lösenord. +
+ {{redirect}} +
+
+ Om du inte bett om att ändr ditt lösenord så kan du ignorera detta meddelande. +
+
+ Tack, +
+ {{project}}-teamet +
diff --git a/app/config/locale/templates/vi.email.auth.confirm.tpl b/app/config/locale/templates/vi.email.auth.confirm.tpl new file mode 100644 index 000000000..40c7d496e --- /dev/null +++ b/app/config/locale/templates/vi.email.auth.confirm.tpl @@ -0,0 +1,24 @@ + + +
+ Xin chào {{name}}, +
+
+ Hãy vào liên kết này để xác nhận địa chỉ email của bạn. +
+ {{redirect}} +
+
+ Xin hãy bỏ qua email này nếu bạn không yêu cầu xác nhận địa chỉ này. +
+
+ Xin cảm ơn, +
+ {{project}} team +
\ No newline at end of file diff --git a/app/config/locale/templates/vi.email.auth.invitation.tpl b/app/config/locale/templates/vi.email.auth.invitation.tpl new file mode 100644 index 000000000..387c537f5 --- /dev/null +++ b/app/config/locale/templates/vi.email.auth.invitation.tpl @@ -0,0 +1,27 @@ + + +
+ Xin chào, +
+
+ Bạn nhận được email này vì {{owner}} muốn mời bạn tham gia {{project}} cùng với {{team}} team. +
+
+ Hãy theo liên kết này để tham gia vào {{team}} team: +
+ {{redirect}} +
+
+ Nếu bạn không thích tham gia, hãy bỏ qua lời nhắn này. +
+
+ Xin cảm ơn, +
+ {{project}} team +
diff --git a/app/config/locale/templates/vi.email.auth.recovery.tpl b/app/config/locale/templates/vi.email.auth.recovery.tpl new file mode 100644 index 000000000..57c704f0c --- /dev/null +++ b/app/config/locale/templates/vi.email.auth.recovery.tpl @@ -0,0 +1,24 @@ + + +
+ Xin chào {{name}}, +
+
+ Hãy theo liên kết này để khôi phục mật khẩu của bạn ở {{project}}. +
+ {{redirect}} +
+
+ Hãy bỏ qua lời nhắn này nếu bạn không yêu cầu khôi phục mật khẩu. +
+
+ Xin cảm ơn, +
+ {{project}} team +
diff --git a/app/config/locale/templates/zh.email.auth.confirm.tpl b/app/config/locale/templates/zh.email.auth.confirm.tpl new file mode 100644 index 000000000..a557d451c --- /dev/null +++ b/app/config/locale/templates/zh.email.auth.confirm.tpl @@ -0,0 +1,24 @@ + + +
+ {{name}} 你好, +
+
+ 请点击下方的链接验证你的电子邮箱地址。 +
+ {{redirect}} +
+
+ 如果你没有请求验证本邮箱,请忽略这份邮件。 +
+
+ 谢谢。 +
+ 来自 {{project}} +
\ No newline at end of file diff --git a/app/config/locale/templates/zh.email.auth.invitation.tpl b/app/config/locale/templates/zh.email.auth.invitation.tpl new file mode 100644 index 000000000..7ee56a401 --- /dev/null +++ b/app/config/locale/templates/zh.email.auth.invitation.tpl @@ -0,0 +1,27 @@ + + +
+ 你好, +
+
+ {{owner}}邀请您加入{{project}}项目的{{team}}小组。 +
+
+ 请点击下方的链接加入{{team}}小组: +
+ {{redirect}} +
+
+ 如果您没有加入该小组的计划,请忽略本邮件。 +
+
+ 谢谢。 +
+ 来自 {{project}} +
diff --git a/app/config/locale/templates/zh.email.auth.recovery.tpl b/app/config/locale/templates/zh.email.auth.recovery.tpl new file mode 100644 index 000000000..8a473b553 --- /dev/null +++ b/app/config/locale/templates/zh.email.auth.recovery.tpl @@ -0,0 +1,25 @@ + + +
+ {{name}} 你好, +
+
+ 请点击下方的链接重新设置{{project}}的密码。 + Follow this link to reset your {{project}} password. +
+ {{redirect}} +
+
+ 如果您未曾申请重设密码,请忽略本邮件。 +
+
+ 谢谢。 +
+ 来自 {{project}} +
diff --git a/app/config/locale/vi.continents.php b/app/config/locale/vi.continents.php new file mode 100644 index 000000000..bb6e5d9ad --- /dev/null +++ b/app/config/locale/vi.continents.php @@ -0,0 +1,11 @@ + 'Châu Phi', + 'AN' => 'Nam Cực', + 'AS' => 'Châu Á', + 'EU' => 'Châu Âu', + 'NA' => 'Bắc Mỹ', + 'OC' => 'Châu Đại Dương', + 'SA' => 'Nam Mỹ', +]; diff --git a/app/config/locale/vi.countries.php b/app/config/locale/vi.countries.php new file mode 100644 index 000000000..f8f8de74a --- /dev/null +++ b/app/config/locale/vi.countries.php @@ -0,0 +1,198 @@ + 'Afghanistan', + 'AO' => 'Angola', + 'AL' => 'Albania', + 'AD' => 'Andorra', + 'AE' => 'United Arab Emirates', + 'AR' => 'Argentina', + 'AM' => 'Armenia', + 'AG' => 'Antigua and Barbuda', + 'AU' => 'Australia', + 'AT' => 'Austria', + 'AZ' => 'Azerbaijan', + 'BI' => 'Burundi', + 'BE' => 'Belgium', + 'BJ' => 'Benin', + 'BF' => 'Burkina Faso', + 'BD' => 'Bangladesh', + 'BG' => 'Bulgaria', + 'BH' => 'Bahrain', + 'BS' => 'Bahamas', + 'BA' => 'Bosnia and Herzegovina', + 'BY' => 'Belarus', + 'BZ' => 'Belize', + 'BO' => 'Bolivia', + 'BR' => 'Brazil', + 'BB' => 'Barbados', + 'BN' => 'Brunei', + 'BT' => 'Bhutan', + 'BW' => 'Botswana', + 'CF' => 'Central African Republic', + 'CA' => 'Canada', + 'CH' => 'Switzerland', + 'CL' => 'Chile', + 'CN' => 'China', + 'CI' => 'Ivory Coast', + 'CM' => 'Cameroon', + 'CD' => 'DR Congo', + 'CG' => 'Republic of the Congo', + 'CO' => 'Colombia', + 'KM' => 'Comoros', + 'CV' => 'Cape Verde', + 'CR' => 'Costa Rica', + 'CU' => 'Cuba', + 'CY' => 'Cyprus', + 'CZ' => 'Czechia', + 'DE' => 'Germany', + 'DJ' => 'Djibouti', + 'DM' => 'Dominica', + 'DK' => 'Denmark', + 'DO' => 'Dominican Republic', + 'DZ' => 'Algeria', + 'EC' => 'Ecuador', + 'EG' => 'Egypt', + 'ER' => 'Eritrea', + 'ES' => 'Spain', + 'EE' => 'Estonia', + 'ET' => 'Ethiopia', + 'FI' => 'Finland', + 'FJ' => 'Fiji', + 'FR' => 'France', + 'FM' => 'Micronesia', + 'GA' => 'Gabon', + 'GB' => 'United Kingdom', + 'GE' => 'Georgia', + 'GH' => 'Ghana', + 'GN' => 'Guinea', + 'GM' => 'Gambia', + 'GW' => 'Guinea-Bissau', + 'GQ' => 'Equatorial Guinea', + 'GR' => 'Greece', + 'GD' => 'Grenada', + 'GT' => 'Guatemala', + 'GY' => 'Guyana', + 'HN' => 'Honduras', + 'HR' => 'Croatia', + 'HT' => 'Haiti', + 'HU' => 'Hungary', + 'ID' => 'Indonesia', + 'IN' => 'India', + 'IE' => 'Ireland', + 'IR' => 'Iran', + 'IQ' => 'Iraq', + 'IS' => 'Iceland', + 'IL' => 'Israel', + 'IT' => 'Italy', + 'JM' => 'Jamaica', + 'JO' => 'Jordan', + 'JP' => 'Japan', + 'KZ' => 'Kazakhstan', + 'KE' => 'Kenya', + 'KG' => 'Kyrgyzstan', + 'KH' => 'Cambodia', + 'KI' => 'Kiribati', + 'KN' => 'Saint Kitts and Nevis', + 'KR' => 'South Korea', + 'KW' => 'Kuwait', + 'LA' => 'Laos', + 'LB' => 'Lebanon', + 'LR' => 'Liberia', + 'LY' => 'Libya', + 'LC' => 'Saint Lucia', + 'LI' => 'Liechtenstein', + 'LK' => 'Sri Lanka', + 'LS' => 'Lesotho', + 'LT' => 'Lithuania', + 'LU' => 'Luxembourg', + 'LV' => 'Latvia', + 'MA' => 'Morocco', + 'MC' => 'Monaco', + 'MD' => 'Moldova', + 'MG' => 'Madagascar', + 'MV' => 'Maldives', + 'MX' => 'Mexico', + 'MH' => 'Marshall Islands', + 'MK' => 'Macedonia', + 'ML' => 'Mali', + 'MT' => 'Malta', + 'MM' => 'Myanmar', + 'ME' => 'Montenegro', + 'MN' => 'Mongolia', + 'MZ' => 'Mozambique', + 'MR' => 'Mauritania', + 'MU' => 'Mauritius', + 'MW' => 'Malawi', + 'MY' => 'Malaysia', + 'NA' => 'Namibia', + 'NE' => 'Niger', + 'NG' => 'Nigeria', + 'NI' => 'Nicaragua', + 'NL' => 'Netherlands', + 'NO' => 'Norway', + 'NP' => 'Nepal', + 'NR' => 'Nauru', + 'NZ' => 'New Zealand', + 'OM' => 'Oman', + 'PK' => 'Pakistan', + 'PA' => 'Panama', + 'PE' => 'Peru', + 'PH' => 'Philippines', + 'PW' => 'Palau', + 'PG' => 'Papua New Guinea', + 'PL' => 'Poland', + 'KP' => 'North Korea', + 'PT' => 'Portugal', + 'PY' => 'Paraguay', + 'QA' => 'Qatar', + 'RO' => 'Romania', + 'RU' => 'Russia', + 'RW' => 'Rwanda', + 'SA' => 'Saudi Arabia', + 'SD' => 'Sudan', + 'SN' => 'Senegal', + 'SG' => 'Singapore', + 'SB' => 'Solomon Islands', + 'SL' => 'Sierra Leone', + 'SV' => 'El Salvador', + 'SM' => 'San Marino', + 'SO' => 'Somalia', + 'RS' => 'Serbia', + 'SS' => 'South Sudan', + 'ST' => 'São Tomé and Príncipe', + 'SR' => 'Suriname', + 'SK' => 'Slovakia', + 'SI' => 'Slovenia', + 'SE' => 'Sweden', + 'SZ' => 'Swaziland', + 'SC' => 'Seychelles', + 'SY' => 'Syria', + 'TD' => 'Chad', + 'TG' => 'Togo', + 'TH' => 'Thailand', + 'TJ' => 'Tajikistan', + 'TM' => 'Turkmenistan', + 'TL' => 'Timor-Leste', + 'TO' => 'Tonga', + 'TT' => 'Trinidad and Tobago', + 'TN' => 'Tunisia', + 'TR' => 'Turkey', + 'TV' => 'Tuvalu', + 'TZ' => 'Tanzania', + 'UG' => 'Uganda', + 'UA' => 'Ukraine', + 'UY' => 'Uruguay', + 'US' => 'United States', + 'UZ' => 'Uzbekistan', + 'VA' => 'Vatican City', + 'VC' => 'Saint Vincent and the Grenadines', + 'VE' => 'Venezuela', + 'VN' => 'Việt Nam', + 'VU' => 'Vanuatu', + 'WS' => 'Samoa', + 'YE' => 'Yemen', + 'ZA' => 'South Africa', + 'ZM' => 'Zambia', + 'ZW' => 'Zimbabwe', +]; diff --git a/app/config/locale/vi.php b/app/config/locale/vi.php new file mode 100644 index 000000000..b444b1153 --- /dev/null +++ b/app/config/locale/vi.php @@ -0,0 +1,21 @@ + '"Nghệ thuật khôn ngoan là nghệ thuật biết những gì cần bỏ qua."', // This is the line printed in the homepage and console 'view-source' + 'settings.locale' => 'vi', + 'settings.direction' => 'ltr', + + // Service - Users + 'auth.emails.team' => '%s Team', + 'auth.emails.confirm.title' => 'Xác nhận tài khoản', + 'auth.emails.confirm.body' => 'vi.email.auth.confirm.tpl', + 'auth.emails.recovery.title' => 'Đặt lại mật khẩu', + 'auth.emails.recovery.body' => 'vi.email.auth.recovery.tpl', + 'auth.emails.invitation.title' => 'Lời mới vào %s Team ở %s', + 'auth.emails.invitation.body' => 'vi.email.auth.invitation.tpl', + + 'locale.country.unknown' => 'Chưa xác định', + + 'countries' => include 'vi.countries.php', + 'continents' => include 'vi.continents.php', +]; diff --git a/app/config/locale/zh.continents.php b/app/config/locale/zh.continents.php new file mode 100644 index 000000000..625302189 --- /dev/null +++ b/app/config/locale/zh.continents.php @@ -0,0 +1,11 @@ + '非洲', + 'AN' => '南极洲', + 'AS' => '亚洲', + 'EU' => '欧洲', + 'NA' => '北美洲', + 'OC' => '大洋洲', + 'SA' => '南美洲', +]; diff --git a/app/config/locale/zh.countries.php b/app/config/locale/zh.countries.php new file mode 100644 index 000000000..c5c722458 --- /dev/null +++ b/app/config/locale/zh.countries.php @@ -0,0 +1,198 @@ + '阿富汗', + 'AO' => '安哥拉', + 'AL' => '阿尔巴尼亚', + 'AD' => '安道尔', + 'AE' => '阿拉伯联合酋长国', + 'AR' => '阿根廷', + 'AM' => '亚美尼亚', + 'AG' => '安提瓜和巴布达', + 'AU' => '澳大利亚', + 'AT' => '奥地利', + 'AZ' => '阿塞拜疆', + 'BI' => '布隆迪', + 'BE' => '比利时', + 'BJ' => '贝宁', + 'BF' => '布基纳法索', + 'BD' => '孟加拉国', + 'BG' => '保加利亚', + 'BH' => '巴林', + 'BS' => '巴哈马', + 'BA' => '波黑', + 'BY' => '白罗斯', + 'BZ' => '伯利兹', + 'BO' => '玻利维亚', + 'BR' => '巴西', + 'BB' => '巴巴多斯', + 'BN' => '文莱', + 'BT' => '不丹', + 'BW' => '博茨瓦纳', + 'CF' => '中非共和国', + 'CA' => '加拿大', + 'CH' => '瑞士', + 'CL' => '智利', + 'CN' => '中国', + 'CI' => '象牙海岸', + 'CM' => '喀麦隆', + 'CD' => '刚果民主共和国', + 'CG' => '刚果共和国', + 'CO' => '哥伦比亚', + 'KM' => '科摩', + 'CV' => '佛得角', + 'CR' => '哥斯达黎加', + 'CU' => '古巴', + 'CY' => '塞浦路斯', + 'CZ' => '捷克', + 'DE' => '德国', + 'DJ' => '吉布提', + 'DM' => '多米尼克', + 'DK' => '丹麦', + 'DO' => '多明尼加共和国', + 'DZ' => '阿尔及利亚', + 'EC' => '厄瓜多尔', + 'EG' => '埃及', + 'ER' => '厄立特里亚', + 'ES' => '西班牙', + 'EE' => '爱沙尼亚', + 'ET' => '埃塞俄比亚', + 'FI' => '芬兰', + 'FJ' => '斐济', + 'FR' => '法国', + 'FM' => '密克罗尼西亚', + 'GA' => '加蓬', + 'GB' => '英国', + 'GE' => '格鲁吉亚', + 'GH' => '加纳', + 'GN' => '几内亚', + 'GM' => '冈比亚', + 'GW' => '几内亚比绍', + 'GQ' => '赤道几内亚', + 'GR' => '希腊', + 'GD' => '格林纳达', + 'GT' => '危地马拉', + 'GY' => '圭亚那', + 'HN' => '洪都拉斯', + 'HR' => '克罗地亚', + 'HT' => '海地', + 'HU' => '匈牙利', + 'ID' => '印度尼西亚', + 'IN' => '印度', + 'IE' => '爱尔兰', + 'IR' => '伊朗', + 'IQ' => '伊拉克', + 'IS' => '冰岛', + 'IL' => '以色列', + 'IT' => '意大利', + 'JM' => '牙买加', + 'JO' => '约旦', + 'JP' => '日本', + 'KZ' => '哈萨克斯坦', + 'KE' => '肯尼亚', + 'KG' => '吉尔吉斯斯坦', + 'KH' => '柬埔寨', + 'KI' => '基里巴斯', + 'KN' => '圣基茨和尼维斯', + 'KR' => '韩国', + 'KW' => '科威特', + 'LA' => '老挝', + 'LB' => '黎巴嫩', + 'LR' => '利比里亚', + 'LY' => '利比亚', + 'LC' => '圣卢西亚', + 'LI' => '列支敦士登', + 'LK' => '斯里兰卡', + 'LS' => '莱索托', + 'LT' => '立陶宛', + 'LU' => '卢森堡', + 'LV' => '拉脱维亚', + 'MA' => '摩洛哥', + 'MC' => '摩纳哥', + 'MD' => '摩尔多瓦', + 'MG' => '马达加斯加', + 'MV' => '马尔代夫', + 'MX' => '墨西哥', + 'MH' => '马绍尔群岛', + 'MK' => '马其顿共和国', + 'ML' => '马里', + 'MT' => '马耳他', + 'MM' => '缅甸', + 'ME' => '黑山', + 'MN' => '蒙古', + 'MZ' => '莫桑比克', + 'MR' => '毛里塔尼亚', + 'MU' => '毛里求斯', + 'MW' => '马拉维', + 'MY' => '马来西亚', + 'NA' => '纳米比亚', + 'NE' => '尼日尔', + 'NG' => '尼日利亚', + 'NI' => '尼加拉瓜', + 'NL' => '荷兰', + 'NO' => '挪威', + 'NP' => '尼泊尔', + 'NR' => '瑙鲁', + 'NZ' => '新西兰', + 'OM' => '阿曼', + 'PK' => '巴基斯坦', + 'PA' => '巴拿马', + 'PE' => '秘鲁', + 'PH' => '菲律宾', + 'PW' => '帕劳', + 'PG' => '巴布亚新几内亚', + 'PL' => '波兰', + 'KP' => '北朝鲜', + 'PT' => '葡萄牙', + 'PY' => '巴拉圭', + 'QA' => '卡塔尔', + 'RO' => '罗马尼亚', + 'RU' => '俄罗斯', + 'RW' => '卢旺达', + 'SA' => '沙特阿拉伯', + 'SD' => '苏丹', + 'SN' => '塞内加尔', + 'SG' => '新加坡', + 'SB' => '所罗门群岛', + 'SL' => '塞拉利昂', + 'SV' => '萨尔瓦多', + 'SM' => '圣马力诺', + 'SO' => '索马里', + 'RS' => '塞尔维亚', + 'SS' => '南苏丹', + 'ST' => '圣多美和普林西比', + 'SR' => '苏里南', + 'SK' => '斯洛伐克', + 'SI' => '斯洛文尼亚', + 'SE' => '瑞典', + 'SZ' => '斯威士兰', + 'SC' => '塞舌尔', + 'SY' => '叙利亚', + 'TD' => '乍得', + 'TG' => '多哥', + 'TH' => '泰国', + 'TJ' => '塔吉克斯坦', + 'TM' => '土库曼斯坦', + 'TL' => '东帝汶', + 'TO' => '汤加', + 'TT' => '特立尼达和多巴哥', + 'TN' => '突尼斯', + 'TR' => '土耳其', + 'TV' => '图瓦卢', + 'TZ' => '坦桑尼亚', + 'UG' => '乌干达', + 'UA' => '乌克兰', + 'UY' => '乌拉圭', + 'US' => '美国', + 'UZ' => '乌兹别克斯', + 'VA' => '梵蒂冈', + 'VC' => '圣文森特和格林纳丁斯', + 'VE' => '委内瑞拉', + 'VN' => '越南', + 'VU' => '瓦努阿图', + 'WS' => '萨摩亚', + 'YE' => '也门', + 'ZA' => '南非', + 'ZM' => '赞比亚', + 'ZW' => '津巴布韦', +]; diff --git a/app/config/locale/zh.php b/app/config/locale/zh.php new file mode 100644 index 000000000..b4499416f --- /dev/null +++ b/app/config/locale/zh.php @@ -0,0 +1,21 @@ + '"懂得取舍,方显睿智。"', // This is the line printed in the homepage and console 'view-source' + 'settings.locale' => 'zh', + 'settings.direction' => 'ltr', + + // Service - Users + 'auth.emails.team' => '%s 小组', + 'auth.emails.confirm.title' => '账户确认', + 'auth.emails.confirm.body' => 'zh.email.auth.confirm.tpl', + 'auth.emails.recovery.title' => '重设密码', + 'auth.emails.recovery.body' => 'zh.email.auth.recovery.tpl', + 'auth.emails.invitation.title' => '邀请加入%s小组(%s)', // I used brackets to keep the order + 'auth.emails.invitation.body' => 'zh.email.auth.invitation.tpl', + + 'locale.country.unknown' => '未知', + + 'countries' => include 'zh.countries.php', + 'continents' => include 'zh.continents.php', +]; diff --git a/app/config/providers.php b/app/config/providers.php index 7b7402f71..f8c587b43 100644 --- a/app/config/providers.php +++ b/app/config/providers.php @@ -34,7 +34,7 @@ return [ 'microsoft' => [ 'developers' => 'https://developer.microsoft.com/en-us/', 'icon' => 'icon-windows', - 'enabled' => false, + 'enabled' => true, ], 'twitter' => [ 'developers' => 'https://developer.twitter.com/', @@ -51,4 +51,9 @@ return [ 'icon' => 'icon-slack', 'enabled' => true, ], + 'dropbox' => [ + 'developers' => 'https://www.dropbox.com/developers/documentation', + 'icon' => 'icon-dropbox', + 'enabled' => true, + ], ]; diff --git a/app/controllers/auth.php b/app/controllers/auth.php index 5d07bef47..75d7da05f 100644 --- a/app/controllers/auth.php +++ b/app/controllers/auth.php @@ -24,7 +24,7 @@ $utopia->post('/v1/auth/register') ->label('scope', 'auth') ->label('sdk.namespace', 'auth') ->label('sdk.method', 'register') - ->label('sdk.description', "Use this endpoint to allow a new user to register an account in your project. Use the success and failure URL's to redirect users back to your application after signup completes.\n\nIf registration completes successfully user will be sent with a confirmation email in order to confirm he is the owner of the account email address. Use the confirmation parameter to redirect the user from the confirmation email back to your app. When the user is redirected, use the /auth/confirm endpoint to complete the account confirmation.\n\nPlease notice that in order to avoid a [Redirect Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URL's are the once from domains you have set when added your platforms in the console interface.\n\nWhen accessing this route using Javascript from the browser, success and failure parameter URLs are required. Appwrite server will respond with a 301 redirect status code and will set the user session cookie. This behavior is enforced because modern browsers are limiting 3rd party cookies in XHR of fetch requests to protect user privacy.") + ->label('sdk.description', "Use this endpoint to allow a new user to register an account in your project. Use the success and failure URL's to redirect users back to your application after signup completes.\n\nIf registration completes successfully user will be sent with a confirmation email in order to confirm he is the owner of the account email address. Use the confirmation parameter to redirect the user from the confirmation email back to your app. When the user is redirected, use the /auth/confirm endpoint to complete the account confirmation.\n\nPlease notice that in order to avoid a [Redirect Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URL's are the once from domains you have set when added your platforms in the console interface.\n\nWhen accessing this route using JavaScript from the browser, success and failure parameter URLs are required. Appwrite server will respond with a 301 redirect status code and will set the user session cookie. This behavior is enforced because modern browsers are limiting 3rd party cookies in XHR of fetch requests to protect user privacy.") ->label('sdk.cookies', true) ->label('abuse-limit', 10) ->param('email', '', function () { @@ -322,7 +322,7 @@ $utopia->post('/v1/auth/login') ->label('scope', 'auth') ->label('sdk.namespace', 'auth') ->label('sdk.method', 'login') - ->label('sdk.description', "Allow the user to login into his account by providing a valid email and password combination. Use the success and failure arguments to provide a redirect URL\'s back to your app when login is completed. \n\nPlease notice that in order to avoid a [Redirect Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URL's are the once from domains you have set when added your platforms in the console interface.\n\nWhen accessing this route using Javascript from the browser, success and failure parameter URLs are required. Appwrite server will respond with a 301 redirect status code and will set the user session cookie. This behavior is enforced because modern browsers are limiting 3rd party cookies in XHR of fetch requests to protect user privacy.") + ->label('sdk.description', "Allow the user to login into his account by providing a valid email and password combination. Use the success and failure arguments to provide a redirect URL\'s back to your app when login is completed. \n\nPlease notice that in order to avoid a [Redirect Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URL's are the once from domains you have set when added your platforms in the console interface.\n\nWhen accessing this route using JavaScript from the browser, success and failure parameter URLs are required. Appwrite server will respond with a 301 redirect status code and will set the user session cookie. This behavior is enforced because modern browsers are limiting 3rd party cookies in XHR of fetch requests to protect user privacy.") ->label('sdk.cookies', true) ->label('abuse-limit', 10) ->label('abuse-key', 'url:{url},email:{param-email}') diff --git a/app/controllers/locale.php b/app/controllers/locale.php index 3873cf71c..f9c68c2c4 100644 --- a/app/controllers/locale.php +++ b/app/controllers/locale.php @@ -132,7 +132,7 @@ $utopia->get('/v1/locale/currencies') ->label('scope', 'locale.read') ->label('sdk.namespace', 'locale') ->label('sdk.method', 'getCurrencies') - ->label('sdk.description', 'List of all currencies, including currency symol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in supported language.') + ->label('sdk.description', 'List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in supported language.') ->action( function () use ($response) { $currencies = include __DIR__.'/../config/currencies.php'; diff --git a/app/init.php b/app/init.php index 7ea75a3c6..30d45e602 100644 --- a/app/init.php +++ b/app/init.php @@ -24,7 +24,7 @@ const APP_EMAIL_TEAM = 'team@'.APP_DOMAIN; const APP_EMAIL_SECURITY = 'security@'.APP_DOMAIN; const APP_USERAGENT = APP_NAME.'-Server/%s Please report abuse at '.APP_EMAIL_SECURITY; const APP_MODE_ADMIN = 'admin'; -const APP_LOCALES = ['cat', 'de', 'en', 'es', 'fi', 'fr', 'gr', 'he', 'hi', 'id', 'it', 'nl', /* 'no',*/ 'pt-br', 'pt-pt', 'ro', 'tr', 'ua']; +const APP_LOCALES = ['cat', 'de', 'en', 'es', 'fi', 'fr', 'gr', 'he', 'hi', 'id', 'it', 'nl', /* 'no',*/ 'pt-br', 'pt-pt', 'ro', 'tr', 'ua', 'zh']; const APP_PAGING_LIMIT = 15; $register = new Registry(); @@ -143,8 +143,10 @@ Locale::setLanguage('nl', include __DIR__.'/config/locale/nl.php'); Locale::setLanguage('pt-br', include __DIR__.'/config/locale/pt-br.php'); Locale::setLanguage('pt-pt', include __DIR__.'/config/locale/pt-pt.php'); Locale::setLanguage('ro', include __DIR__.'/config/locale/ro.php'); +Locale::setLanguage('ru', include __DIR__ . '/config/locale/ru.php'); Locale::setLanguage('tr', include __DIR__.'/config/locale/tr.php'); Locale::setLanguage('ua', include __DIR__.'/config/locale/ua.php'); +Locale::setLanguage('zh', include __DIR__.'/config/locale/zh.php'); if (in_array($locale, APP_LOCALES)) { Locale::setDefault($locale); diff --git a/app/sdks/dart/README.md b/app/sdks/dart/README.md index 866ec3195..e7f5e5a81 100644 --- a/app/sdks/dart/README.md +++ b/app/sdks/dart/README.md @@ -30,4 +30,4 @@ pub get ## License -Please see the [BSD-3-Clause license](https://raw.githubusercontent.com/appwrite/appwrite/master/LICENSE) file for more information. \ No newline at end of file +Please see the [BSD-3-Clause license](https://raw.githubusercontent.com/appwrite/appwrite/master/LICENSE) file for more information. diff --git a/app/sdks/dart/lib/services/auth.dart b/app/sdks/dart/lib/services/auth.dart index 45c0be71a..c1b1a18d5 100644 --- a/app/sdks/dart/lib/services/auth.dart +++ b/app/sdks/dart/lib/services/auth.dart @@ -3,19 +3,19 @@ import "package:appwrite/client.dart"; import 'package:dio/dio.dart'; class Auth extends Service { - + Auth(Client client): super(client); /// Allow the user to login into his account by providing a valid email and /// password combination. Use the success and failure arguments to provide a - /// redirect URL\'s back to your app when login is completed. - /// + /// redirect URL\'s back to your app when login is completed. + /// /// Please notice that in order to avoid a [Redirect /// Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) /// the only valid redirect URL's are the once from domains you have set when /// added your platforms in the console interface. - /// - /// When accessing this route using Javascript from the browser, success and + /// + /// When accessing this route using JavaScript from the browser, success and /// failure parameter URLs are required. Appwrite server will respond with a /// 301 redirect status code and will set the user session cookie. This /// behavior is enforced because modern browsers are limiting 3rd party cookies @@ -84,7 +84,7 @@ class Auth extends Service { /// **userId** and **token** arguments will be passed as query parameters to /// the redirect URL you have provided when sending your request to the /// /auth/recovery endpoint. - /// + /// /// Please notice that in order to avoid a [Redirect /// Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) /// the only valid redirect URL's are the once from domains you have set when @@ -104,19 +104,19 @@ class Auth extends Service { /// Use this endpoint to allow a new user to register an account in your /// project. Use the success and failure URL's to redirect users back to your /// application after signup completes. - /// + /// /// If registration completes successfully user will be sent with a /// confirmation email in order to confirm he is the owner of the account email /// address. Use the confirmation parameter to redirect the user from the /// confirmation email back to your app. When the user is redirected, use the /// /auth/confirm endpoint to complete the account confirmation. - /// + /// /// Please notice that in order to avoid a [Redirect /// Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) /// the only valid redirect URL's are the once from domains you have set when /// added your platforms in the console interface. - /// - /// When accessing this route using Javascript from the browser, success and + /// + /// When accessing this route using JavaScript from the browser, success and /// failure parameter URLs are required. Appwrite server will respond with a /// 301 redirect status code and will set the user session cookie. This /// behavior is enforced because modern browsers are limiting 3rd party cookies @@ -152,7 +152,7 @@ class Auth extends Service { /// This endpoint allows the user to request your app to resend him his email /// confirmation message. The redirect arguments acts the same way as in /// /auth/register endpoint. - /// + /// /// Please notice that in order to avoid a [Redirect /// Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) /// the only valid redirect URL's are the once from domains you have set when @@ -166,4 +166,4 @@ class Auth extends Service { return await this.client.call('post', path: path, params: params); } -} \ No newline at end of file +} diff --git a/app/sdks/js/README.md b/app/sdks/js/README.md index 03802a4e1..0a0a4bf1d 100644 --- a/app/sdks/js/README.md +++ b/app/sdks/js/README.md @@ -1,9 +1,9 @@ -# [Appwrite SDK for Javascript](https://appwrite.io)   [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Appwrite%20is%20a%20backend%20as%20a%20service%20for%20building%20web%20or%20mobile%20apps&url=http%3A%2F%2Fappwrite.io&via=appwrite_io&hashtags=JS%2Cjavascript%2Creactjs%2Cangular%2Cios%2Candroid) +# [Appwrite SDK for JavaScript](https://appwrite.io)   [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Appwrite%20is%20a%20backend%20as%20a%20service%20for%20building%20web%20or%20mobile%20apps&url=http%3A%2F%2Fappwrite.io&via=appwrite_io&hashtags=JS%2Cjavascript%2Creactjs%2Cangular%2Cios%2Candroid) ![License](https://img.shields.io/github/license/appwrite/sdk-for-js.svg?v=1) ![Version](https://img.shields.io/badge/api%20version-0.1.15-blue.svg?v=1) -This SDK if compitable with Appwrite server version 0.2.0 for older versions check previous releases. +This SDK is compatible with Appwrite server version 0.2.0 for older versions check previous releases. Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https://appwrite.io/docs](https://appwrite.io/docs) @@ -23,4 +23,4 @@ npm install appwrite --save ## License -Please see the [BSD-3-Clause license](https://raw.githubusercontent.com/appwrite/appwrite/master/LICENSE) file for more information. \ No newline at end of file +Please see the [BSD-3-Clause license](https://raw.githubusercontent.com/appwrite/appwrite/master/LICENSE) file for more information. diff --git a/app/sdks/js/src/sdk.js b/app/sdks/js/src/sdk.js index 5c6d2dd8b..8b5ca9f3e 100644 --- a/app/sdks/js/src/sdk.js +++ b/app/sdks/js/src/sdk.js @@ -133,7 +133,7 @@ let addGlobalHeader = function(key, value) { globalHeaders[key] = {key: key.toLowerCase(), value: value.toLowerCase()}; }; - + let addGlobalParam = function(key, value) { globalParams.push({key: key, value: value}); }; @@ -346,17 +346,17 @@ if(email === undefined) { throw new Error('Missing required parameter: "email"'); } - + if(password === undefined) { throw new Error('Missing required parameter: "password"'); } - + let path = '/account/email'; return http .patch(path, {'content-type': 'application/json'}, { - 'email': email, + 'email': email, 'password': password }); }, @@ -373,7 +373,7 @@ if(name === undefined) { throw new Error('Missing required parameter: "name"'); } - + let path = '/account/name'; return http @@ -397,17 +397,17 @@ if(password === undefined) { throw new Error('Missing required parameter: "password"'); } - + if(oldPassword === undefined) { throw new Error('Missing required parameter: "oldPassword"'); } - + let path = '/account/password'; return http .patch(path, {'content-type': 'application/json'}, { - 'password': password, + 'password': password, 'old-password': oldPassword }); }, @@ -441,7 +441,7 @@ if(prefs === undefined) { throw new Error('Missing required parameter: "prefs"'); } - + let path = '/account/prefs'; return http @@ -493,14 +493,14 @@ * * Allow the user to login into his account by providing a valid email and * password combination. Use the success and failure arguments to provide a - * redirect URL\'s back to your app when login is completed. - * + * redirect URL\'s back to your app when login is completed. + * * Please notice that in order to avoid a [Redirect * Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) * the only valid redirect URL's are the once from domains you have set when * added your platforms in the console interface. - * - * When accessing this route using Javascript from the browser, success and + * + * When accessing this route using JavaScript from the browser, success and * failure parameter URLs are required. Appwrite server will respond with a * 301 redirect status code and will set the user session cookie. This * behavior is enforced because modern browsers are limiting 3rd party cookies @@ -516,25 +516,25 @@ if(email === undefined) { throw new Error('Missing required parameter: "email"'); } - + if(password === undefined) { throw new Error('Missing required parameter: "password"'); } - + if(success === undefined) { throw new Error('Missing required parameter: "success"'); } - + if(failure === undefined) { throw new Error('Missing required parameter: "failure"'); } - + let path = '/auth/login'; return iframe('post', path, {project: config.project, - 'email': email, - 'password': password, - 'success': success, + 'email': email, + 'password': password, + 'success': success, 'failure': failure }); }, @@ -571,7 +571,7 @@ if(id === undefined) { throw new Error('Missing required parameter: "id"'); } - + let path = '/auth/logout/{id}'.replace(new RegExp('{id}', 'g'), id); return http @@ -593,13 +593,13 @@ if(provider === undefined) { throw new Error('Missing required parameter: "provider"'); } - + let path = '/auth/oauth/{provider}'.replace(new RegExp('{provider}', 'g'), provider); return http .get(path, {'content-type': 'application/json'}, { - 'success': success, + 'success': success, 'failure': failure }); }, @@ -622,17 +622,17 @@ if(email === undefined) { throw new Error('Missing required parameter: "email"'); } - + if(reset === undefined) { throw new Error('Missing required parameter: "reset"'); } - + let path = '/auth/recovery'; return http .post(path, {'content-type': 'application/json'}, { - 'email': email, + 'email': email, 'reset': reset }); }, @@ -644,7 +644,7 @@ * **userId** and **token** arguments will be passed as query parameters to * the redirect URL you have provided when sending your request to the * /auth/recovery endpoint. - * + * * Please notice that in order to avoid a [Redirect * Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) * the only valid redirect URL's are the once from domains you have set when @@ -660,27 +660,27 @@ if(userId === undefined) { throw new Error('Missing required parameter: "userId"'); } - + if(token === undefined) { throw new Error('Missing required parameter: "token"'); } - + if(passwordA === undefined) { throw new Error('Missing required parameter: "passwordA"'); } - + if(passwordB === undefined) { throw new Error('Missing required parameter: "passwordB"'); } - + let path = '/auth/recovery/reset'; return http .put(path, {'content-type': 'application/json'}, { - 'userId': userId, - 'token': token, - 'password-a': passwordA, + 'userId': userId, + 'token': token, + 'password-a': passwordA, 'password-b': passwordB }); }, @@ -691,19 +691,19 @@ * Use this endpoint to allow a new user to register an account in your * project. Use the success and failure URL's to redirect users back to your * application after signup completes. - * + * * If registration completes successfully user will be sent with a * confirmation email in order to confirm he is the owner of the account email * address. Use the confirmation parameter to redirect the user from the * confirmation email back to your app. When the user is redirected, use the * /auth/confirm endpoint to complete the account confirmation. - * + * * Please notice that in order to avoid a [Redirect * Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) * the only valid redirect URL's are the once from domains you have set when * added your platforms in the console interface. - * - * When accessing this route using Javascript from the browser, success and + * + * When accessing this route using JavaScript from the browser, success and * failure parameter URLs are required. Appwrite server will respond with a * 301 redirect status code and will set the user session cookie. This * behavior is enforced because modern browsers are limiting 3rd party cookies @@ -721,23 +721,23 @@ if(email === undefined) { throw new Error('Missing required parameter: "email"'); } - + if(password === undefined) { throw new Error('Missing required parameter: "password"'); } - + if(confirm === undefined) { throw new Error('Missing required parameter: "confirm"'); } - + let path = '/auth/register'; return iframe('post', path, {project: config.project, - 'email': email, - 'password': password, - 'confirm': confirm, - 'success': success, - 'failure': failure, + 'email': email, + 'password': password, + 'confirm': confirm, + 'success': success, + 'failure': failure, 'name': name }); }, @@ -758,17 +758,17 @@ if(userId === undefined) { throw new Error('Missing required parameter: "userId"'); } - + if(token === undefined) { throw new Error('Missing required parameter: "token"'); } - + let path = '/auth/register/confirm'; return http .post(path, {'content-type': 'application/json'}, { - 'userId': userId, + 'userId': userId, 'token': token }); }, @@ -779,7 +779,7 @@ * This endpoint allows the user to request your app to resend him his email * confirmation message. The redirect arguments acts the same way as in * /auth/register endpoint. - * + * * Please notice that in order to avoid a [Redirect * Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) * the only valid redirect URL's are the once from domains you have set when @@ -792,7 +792,7 @@ if(confirm === undefined) { throw new Error('Missing required parameter: "confirm"'); } - + let path = '/auth/register/confirm/resend'; return http @@ -823,14 +823,14 @@ if(code === undefined) { throw new Error('Missing required parameter: "code"'); } - + let path = '/avatars/browsers/{code}'.replace(new RegExp('{code}', 'g'), code); return http .get(path, {'content-type': 'application/json'}, { - 'width': width, - 'height': height, + 'width': width, + 'height': height, 'quality': quality }); }, @@ -853,14 +853,14 @@ if(code === undefined) { throw new Error('Missing required parameter: "code"'); } - + let path = '/avatars/credit-cards/{code}'.replace(new RegExp('{code}', 'g'), code); return http .get(path, {'content-type': 'application/json'}, { - 'width': width, - 'height': height, + 'width': width, + 'height': height, 'quality': quality }); }, @@ -878,7 +878,7 @@ if(url === undefined) { throw new Error('Missing required parameter: "url"'); } - + let path = '/avatars/favicon'; return http @@ -905,14 +905,14 @@ if(code === undefined) { throw new Error('Missing required parameter: "code"'); } - + let path = '/avatars/flags/{code}'.replace(new RegExp('{code}', 'g'), code); return http .get(path, {'content-type': 'application/json'}, { - 'width': width, - 'height': height, + 'width': width, + 'height': height, 'quality': quality }); }, @@ -934,14 +934,14 @@ if(url === undefined) { throw new Error('Missing required parameter: "url"'); } - + let path = '/avatars/image'; return http .get(path, {'content-type': 'application/json'}, { - 'url': url, - 'width': width, + 'url': url, + 'width': width, 'height': height }); }, @@ -962,15 +962,15 @@ if(text === undefined) { throw new Error('Missing required parameter: "text"'); } - + let path = '/avatars/qr'; return http .get(path, {'content-type': 'application/json'}, { - 'text': text, - 'size': size, - 'margin': margin, + 'text': text, + 'size': size, + 'margin': margin, 'download': download }); } @@ -998,9 +998,9 @@ return http .get(path, {'content-type': 'application/json'}, { - 'search': search, - 'limit': limit, - 'offset': offset, + 'search': search, + 'limit': limit, + 'offset': offset, 'orderType': orderType }); }, @@ -1020,15 +1020,15 @@ if(name === undefined) { throw new Error('Missing required parameter: "name"'); } - + let path = '/database'; return http .post(path, {'content-type': 'application/json'}, { - 'name': name, - 'read': read, - 'write': write, + 'name': name, + 'read': read, + 'write': write, 'rules': rules }); }, @@ -1046,7 +1046,7 @@ if(collectionId === undefined) { throw new Error('Missing required parameter: "collectionId"'); } - + let path = '/database/{collectionId}'.replace(new RegExp('{collectionId}', 'g'), collectionId); return http @@ -1071,19 +1071,19 @@ if(collectionId === undefined) { throw new Error('Missing required parameter: "collectionId"'); } - + if(name === undefined) { throw new Error('Missing required parameter: "name"'); } - + let path = '/database/{collectionId}'.replace(new RegExp('{collectionId}', 'g'), collectionId); return http .put(path, {'content-type': 'application/json'}, { - 'name': name, - 'read': read, - 'write': write, + 'name': name, + 'read': read, + 'write': write, 'rules': rules }); }, @@ -1101,7 +1101,7 @@ if(collectionId === undefined) { throw new Error('Missing required parameter: "collectionId"'); } - + let path = '/database/{collectionId}'.replace(new RegExp('{collectionId}', 'g'), collectionId); return http @@ -1134,20 +1134,20 @@ if(collectionId === undefined) { throw new Error('Missing required parameter: "collectionId"'); } - + let path = '/database/{collectionId}/documents'.replace(new RegExp('{collectionId}', 'g'), collectionId); return http .get(path, {'content-type': 'application/json'}, { - 'filters': filters, - 'offset': offset, - 'limit': limit, - 'order-field': orderField, - 'order-type': orderType, - 'order-cast': orderCast, - 'search': search, - 'first': first, + 'filters': filters, + 'offset': offset, + 'limit': limit, + 'order-field': orderField, + 'order-type': orderType, + 'order-cast': orderCast, + 'search': search, + 'first': first, 'last': last }); }, @@ -1170,21 +1170,21 @@ if(collectionId === undefined) { throw new Error('Missing required parameter: "collectionId"'); } - + if(data === undefined) { throw new Error('Missing required parameter: "data"'); } - + let path = '/database/{collectionId}/documents'.replace(new RegExp('{collectionId}', 'g'), collectionId); return http .post(path, {'content-type': 'application/json'}, { - 'data': data, - 'read': read, - 'write': write, - 'parentDocument': parentDocument, - 'parentProperty': parentProperty, + 'data': data, + 'read': read, + 'write': write, + 'parentDocument': parentDocument, + 'parentProperty': parentProperty, 'parentPropertyType': parentPropertyType }); }, @@ -1203,11 +1203,11 @@ if(collectionId === undefined) { throw new Error('Missing required parameter: "collectionId"'); } - + if(documentId === undefined) { throw new Error('Missing required parameter: "documentId"'); } - + let path = '/database/{collectionId}/documents/{documentId}'.replace(new RegExp('{collectionId}', 'g'), collectionId).replace(new RegExp('{documentId}', 'g'), documentId); return http @@ -1231,22 +1231,22 @@ if(collectionId === undefined) { throw new Error('Missing required parameter: "collectionId"'); } - + if(documentId === undefined) { throw new Error('Missing required parameter: "documentId"'); } - + if(data === undefined) { throw new Error('Missing required parameter: "data"'); } - + let path = '/database/{collectionId}/documents/{documentId}'.replace(new RegExp('{collectionId}', 'g'), collectionId).replace(new RegExp('{documentId}', 'g'), documentId); return http .patch(path, {'content-type': 'application/json'}, { - 'data': data, - 'read': read, + 'data': data, + 'read': read, 'write': write }); }, @@ -1266,11 +1266,11 @@ if(collectionId === undefined) { throw new Error('Missing required parameter: "collectionId"'); } - + if(documentId === undefined) { throw new Error('Missing required parameter: "documentId"'); } - + let path = '/database/{collectionId}/documents/{documentId}'.replace(new RegExp('{collectionId}', 'g'), collectionId).replace(new RegExp('{documentId}', 'g'), documentId); return http @@ -1410,26 +1410,26 @@ if(name === undefined) { throw new Error('Missing required parameter: "name"'); } - + if(teamId === undefined) { throw new Error('Missing required parameter: "teamId"'); } - + let path = '/projects'; return http .post(path, {'content-type': 'application/json'}, { - 'name': name, - 'teamId': teamId, - 'description': description, - 'logo': logo, - 'url': url, - 'legalName': legalName, - 'legalCountry': legalCountry, - 'legalState': legalState, - 'legalCity': legalCity, - 'legalAddress': legalAddress, + 'name': name, + 'teamId': teamId, + 'description': description, + 'logo': logo, + 'url': url, + 'legalName': legalName, + 'legalCountry': legalCountry, + 'legalState': legalState, + 'legalCity': legalCity, + 'legalAddress': legalAddress, 'legalTaxId': legalTaxId }); }, @@ -1445,7 +1445,7 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + let path = '/projects/{projectId}'.replace(new RegExp('{projectId}', 'g'), projectId); return http @@ -1475,25 +1475,25 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(name === undefined) { throw new Error('Missing required parameter: "name"'); } - + let path = '/projects/{projectId}'.replace(new RegExp('{projectId}', 'g'), projectId); return http .patch(path, {'content-type': 'application/json'}, { - 'name': name, - 'description': description, - 'logo': logo, - 'url': url, - 'legalName': legalName, - 'legalCountry': legalCountry, - 'legalState': legalState, - 'legalCity': legalCity, - 'legalAddress': legalAddress, + 'name': name, + 'description': description, + 'logo': logo, + 'url': url, + 'legalName': legalName, + 'legalCountry': legalCountry, + 'legalState': legalState, + 'legalCity': legalCity, + 'legalAddress': legalAddress, 'legalTaxId': legalTaxId }); }, @@ -1509,7 +1509,7 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + let path = '/projects/{projectId}'.replace(new RegExp('{projectId}', 'g'), projectId); return http @@ -1529,7 +1529,7 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + let path = '/projects/{projectId}/keys'.replace(new RegExp('{projectId}', 'g'), projectId); return http @@ -1551,21 +1551,21 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(name === undefined) { throw new Error('Missing required parameter: "name"'); } - + if(scopes === undefined) { throw new Error('Missing required parameter: "scopes"'); } - + let path = '/projects/{projectId}/keys'.replace(new RegExp('{projectId}', 'g'), projectId); return http .post(path, {'content-type': 'application/json'}, { - 'name': name, + 'name': name, 'scopes': scopes }); }, @@ -1582,11 +1582,11 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(keyId === undefined) { throw new Error('Missing required parameter: "keyId"'); } - + let path = '/projects/{projectId}/keys/{keyId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{keyId}', 'g'), keyId); return http @@ -1609,25 +1609,25 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(keyId === undefined) { throw new Error('Missing required parameter: "keyId"'); } - + if(name === undefined) { throw new Error('Missing required parameter: "name"'); } - + if(scopes === undefined) { throw new Error('Missing required parameter: "scopes"'); } - + let path = '/projects/{projectId}/keys/{keyId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{keyId}', 'g'), keyId); return http .put(path, {'content-type': 'application/json'}, { - 'name': name, + 'name': name, 'scopes': scopes }); }, @@ -1644,11 +1644,11 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(keyId === undefined) { throw new Error('Missing required parameter: "keyId"'); } - + let path = '/projects/{projectId}/keys/{keyId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{keyId}', 'g'), keyId); return http @@ -1671,18 +1671,18 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(provider === undefined) { throw new Error('Missing required parameter: "provider"'); } - + let path = '/projects/{projectId}/oauth'.replace(new RegExp('{projectId}', 'g'), projectId); return http .patch(path, {'content-type': 'application/json'}, { - 'provider': provider, - 'appId': appId, + 'provider': provider, + 'appId': appId, 'secret': secret }); }, @@ -1698,7 +1698,7 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + let path = '/projects/{projectId}/platforms'.replace(new RegExp('{projectId}', 'g'), projectId); return http @@ -1723,24 +1723,24 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(type === undefined) { throw new Error('Missing required parameter: "type"'); } - + if(name === undefined) { throw new Error('Missing required parameter: "name"'); } - + let path = '/projects/{projectId}/platforms'.replace(new RegExp('{projectId}', 'g'), projectId); return http .post(path, {'content-type': 'application/json'}, { - 'type': type, - 'name': name, - 'key': key, - 'store': store, + 'type': type, + 'name': name, + 'key': key, + 'store': store, 'url': url }); }, @@ -1757,11 +1757,11 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(platformId === undefined) { throw new Error('Missing required parameter: "platformId"'); } - + let path = '/projects/{projectId}/platforms/{platformId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{platformId}', 'g'), platformId); return http @@ -1786,23 +1786,23 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(platformId === undefined) { throw new Error('Missing required parameter: "platformId"'); } - + if(name === undefined) { throw new Error('Missing required parameter: "name"'); } - + let path = '/projects/{projectId}/platforms/{platformId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{platformId}', 'g'), platformId); return http .put(path, {'content-type': 'application/json'}, { - 'name': name, - 'key': key, - 'store': store, + 'name': name, + 'key': key, + 'store': store, 'url': url }); }, @@ -1819,11 +1819,11 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(platformId === undefined) { throw new Error('Missing required parameter: "platformId"'); } - + let path = '/projects/{projectId}/platforms/{platformId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{platformId}', 'g'), platformId); return http @@ -1843,7 +1843,7 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + let path = '/projects/{projectId}/tasks'.replace(new RegExp('{projectId}', 'g'), projectId); return http @@ -1872,44 +1872,44 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(name === undefined) { throw new Error('Missing required parameter: "name"'); } - + if(status === undefined) { throw new Error('Missing required parameter: "status"'); } - + if(schedule === undefined) { throw new Error('Missing required parameter: "schedule"'); } - + if(security === undefined) { throw new Error('Missing required parameter: "security"'); } - + if(httpMethod === undefined) { throw new Error('Missing required parameter: "httpMethod"'); } - + if(httpUrl === undefined) { throw new Error('Missing required parameter: "httpUrl"'); } - + let path = '/projects/{projectId}/tasks'.replace(new RegExp('{projectId}', 'g'), projectId); return http .post(path, {'content-type': 'application/json'}, { - 'name': name, - 'status': status, - 'schedule': schedule, - 'security': security, - 'httpMethod': httpMethod, - 'httpUrl': httpUrl, - 'httpHeaders': httpHeaders, - 'httpUser': httpUser, + 'name': name, + 'status': status, + 'schedule': schedule, + 'security': security, + 'httpMethod': httpMethod, + 'httpUrl': httpUrl, + 'httpHeaders': httpHeaders, + 'httpUser': httpUser, 'httpPass': httpPass }); }, @@ -1926,11 +1926,11 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(taskId === undefined) { throw new Error('Missing required parameter: "taskId"'); } - + let path = '/projects/{projectId}/tasks/{taskId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{taskId}', 'g'), taskId); return http @@ -1960,48 +1960,48 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(taskId === undefined) { throw new Error('Missing required parameter: "taskId"'); } - + if(name === undefined) { throw new Error('Missing required parameter: "name"'); } - + if(status === undefined) { throw new Error('Missing required parameter: "status"'); } - + if(schedule === undefined) { throw new Error('Missing required parameter: "schedule"'); } - + if(security === undefined) { throw new Error('Missing required parameter: "security"'); } - + if(httpMethod === undefined) { throw new Error('Missing required parameter: "httpMethod"'); } - + if(httpUrl === undefined) { throw new Error('Missing required parameter: "httpUrl"'); } - + let path = '/projects/{projectId}/tasks/{taskId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{taskId}', 'g'), taskId); return http .put(path, {'content-type': 'application/json'}, { - 'name': name, - 'status': status, - 'schedule': schedule, - 'security': security, - 'httpMethod': httpMethod, - 'httpUrl': httpUrl, - 'httpHeaders': httpHeaders, - 'httpUser': httpUser, + 'name': name, + 'status': status, + 'schedule': schedule, + 'security': security, + 'httpMethod': httpMethod, + 'httpUrl': httpUrl, + 'httpHeaders': httpHeaders, + 'httpUser': httpUser, 'httpPass': httpPass }); }, @@ -2018,11 +2018,11 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(taskId === undefined) { throw new Error('Missing required parameter: "taskId"'); } - + let path = '/projects/{projectId}/tasks/{taskId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{taskId}', 'g'), taskId); return http @@ -2042,7 +2042,7 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + let path = '/projects/{projectId}/usage'.replace(new RegExp('{projectId}', 'g'), projectId); return http @@ -2062,7 +2062,7 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + let path = '/projects/{projectId}/webhooks'.replace(new RegExp('{projectId}', 'g'), projectId); return http @@ -2088,33 +2088,33 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(name === undefined) { throw new Error('Missing required parameter: "name"'); } - + if(events === undefined) { throw new Error('Missing required parameter: "events"'); } - + if(url === undefined) { throw new Error('Missing required parameter: "url"'); } - + if(security === undefined) { throw new Error('Missing required parameter: "security"'); } - + let path = '/projects/{projectId}/webhooks'.replace(new RegExp('{projectId}', 'g'), projectId); return http .post(path, {'content-type': 'application/json'}, { - 'name': name, - 'events': events, - 'url': url, - 'security': security, - 'httpUser': httpUser, + 'name': name, + 'events': events, + 'url': url, + 'security': security, + 'httpUser': httpUser, 'httpPass': httpPass }); }, @@ -2131,11 +2131,11 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(webhookId === undefined) { throw new Error('Missing required parameter: "webhookId"'); } - + let path = '/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{webhookId}', 'g'), webhookId); return http @@ -2162,37 +2162,37 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(webhookId === undefined) { throw new Error('Missing required parameter: "webhookId"'); } - + if(name === undefined) { throw new Error('Missing required parameter: "name"'); } - + if(events === undefined) { throw new Error('Missing required parameter: "events"'); } - + if(url === undefined) { throw new Error('Missing required parameter: "url"'); } - + if(security === undefined) { throw new Error('Missing required parameter: "security"'); } - + let path = '/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{webhookId}', 'g'), webhookId); return http .put(path, {'content-type': 'application/json'}, { - 'name': name, - 'events': events, - 'url': url, - 'security': security, - 'httpUser': httpUser, + 'name': name, + 'events': events, + 'url': url, + 'security': security, + 'httpUser': httpUser, 'httpPass': httpPass }); }, @@ -2209,11 +2209,11 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(webhookId === undefined) { throw new Error('Missing required parameter: "webhookId"'); } - + let path = '/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{webhookId}', 'g'), webhookId); return http @@ -2244,9 +2244,9 @@ return http .get(path, {'content-type': 'application/json'}, { - 'search': search, - 'limit': limit, - 'offset': offset, + 'search': search, + 'limit': limit, + 'offset': offset, 'orderType': orderType }); }, @@ -2268,15 +2268,15 @@ if(files === undefined) { throw new Error('Missing required parameter: "files"'); } - + let path = '/storage/files'; return http .post(path, {'content-type': 'multipart/form-data'}, { - 'files': files, - 'read': read, - 'write': write, + 'files': files, + 'read': read, + 'write': write, 'folderId': folderId }); }, @@ -2294,7 +2294,7 @@ if(fileId === undefined) { throw new Error('Missing required parameter: "fileId"'); } - + let path = '/storage/files/{fileId}'.replace(new RegExp('{fileId}', 'g'), fileId); return http @@ -2319,14 +2319,14 @@ if(fileId === undefined) { throw new Error('Missing required parameter: "fileId"'); } - + let path = '/storage/files/{fileId}'.replace(new RegExp('{fileId}', 'g'), fileId); return http .put(path, {'content-type': 'application/json'}, { - 'read': read, - 'write': write, + 'read': read, + 'write': write, 'folderId': folderId }); }, @@ -2344,7 +2344,7 @@ if(fileId === undefined) { throw new Error('Missing required parameter: "fileId"'); } - + let path = '/storage/files/{fileId}'.replace(new RegExp('{fileId}', 'g'), fileId); return http @@ -2367,7 +2367,7 @@ if(fileId === undefined) { throw new Error('Missing required parameter: "fileId"'); } - + let path = '/storage/files/{fileId}/download'.replace(new RegExp('{fileId}', 'g'), fileId); return http @@ -2396,16 +2396,16 @@ if(fileId === undefined) { throw new Error('Missing required parameter: "fileId"'); } - + let path = '/storage/files/{fileId}/preview'.replace(new RegExp('{fileId}', 'g'), fileId); return http .get(path, {'content-type': 'application/json'}, { - 'width': width, - 'height': height, - 'quality': quality, - 'background': background, + 'width': width, + 'height': height, + 'quality': quality, + 'background': background, 'output': output }); }, @@ -2424,7 +2424,7 @@ if(fileId === undefined) { throw new Error('Missing required parameter: "fileId"'); } - + let path = '/storage/files/{fileId}/view'.replace(new RegExp('{fileId}', 'g'), fileId); return http @@ -2456,9 +2456,9 @@ return http .get(path, {'content-type': 'application/json'}, { - 'search': search, - 'limit': limit, - 'offset': offset, + 'search': search, + 'limit': limit, + 'offset': offset, 'orderType': orderType }); }, @@ -2479,13 +2479,13 @@ if(name === undefined) { throw new Error('Missing required parameter: "name"'); } - + let path = '/teams'; return http .post(path, {'content-type': 'application/json'}, { - 'name': name, + 'name': name, 'roles': roles }); }, @@ -2503,7 +2503,7 @@ if(teamId === undefined) { throw new Error('Missing required parameter: "teamId"'); } - + let path = '/teams/{teamId}'.replace(new RegExp('{teamId}', 'g'), teamId); return http @@ -2526,11 +2526,11 @@ if(teamId === undefined) { throw new Error('Missing required parameter: "teamId"'); } - + if(name === undefined) { throw new Error('Missing required parameter: "name"'); } - + let path = '/teams/{teamId}'.replace(new RegExp('{teamId}', 'g'), teamId); return http @@ -2553,7 +2553,7 @@ if(teamId === undefined) { throw new Error('Missing required parameter: "teamId"'); } - + let path = '/teams/{teamId}'.replace(new RegExp('{teamId}', 'g'), teamId); return http @@ -2575,7 +2575,7 @@ if(teamId === undefined) { throw new Error('Missing required parameter: "teamId"'); } - + let path = '/teams/{teamId}/members'.replace(new RegExp('{teamId}', 'g'), teamId); return http @@ -2590,12 +2590,12 @@ * Use this endpoint to invite a new member to your team. An email with a link * to join the team will be sent to the new member email address. If member * doesn't exists in the project it will be automatically created. - * + * * Use the redirect parameter to redirect the user from the invitation email * back to your app. When the user is redirected, use the * /teams/{teamId}/memberships/{inviteId}/status endpoint to finally join the * user to the team. - * + * * Please notice that in order to avoid a [Redirect * Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) * the only valid redirect URL's are the once from domains you have set when @@ -2612,27 +2612,27 @@ if(teamId === undefined) { throw new Error('Missing required parameter: "teamId"'); } - + if(email === undefined) { throw new Error('Missing required parameter: "email"'); } - + if(roles === undefined) { throw new Error('Missing required parameter: "roles"'); } - + if(redirect === undefined) { throw new Error('Missing required parameter: "redirect"'); } - + let path = '/teams/{teamId}/memberships'.replace(new RegExp('{teamId}', 'g'), teamId); return http .post(path, {'content-type': 'application/json'}, { - 'email': email, - 'name': name, - 'roles': roles, + 'email': email, + 'name': name, + 'roles': roles, 'redirect': redirect }); }, @@ -2651,11 +2651,11 @@ if(teamId === undefined) { throw new Error('Missing required parameter: "teamId"'); } - + if(inviteId === undefined) { throw new Error('Missing required parameter: "inviteId"'); } - + let path = '/teams/{teamId}/memberships/{inviteId}'.replace(new RegExp('{teamId}', 'g'), teamId).replace(new RegExp('{inviteId}', 'g'), inviteId); return http @@ -2679,15 +2679,15 @@ if(teamId === undefined) { throw new Error('Missing required parameter: "teamId"'); } - + if(inviteId === undefined) { throw new Error('Missing required parameter: "inviteId"'); } - + if(redirect === undefined) { throw new Error('Missing required parameter: "redirect"'); } - + let path = '/teams/{teamId}/memberships/{inviteId}/resend'.replace(new RegExp('{teamId}', 'g'), teamId).replace(new RegExp('{inviteId}', 'g'), inviteId); return http @@ -2704,12 +2704,12 @@ * is being redirect back to your app from the invitation email. Use the * success and failure URL's to redirect users back to your application after * the request completes. - * + * * Please notice that in order to avoid a [Redirect * Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) * the only valid redirect URL's are the once from domains you have set when * added your platforms in the console interface. - * + * * When not using the success or failure redirect arguments this endpoint will * result with a 200 status code on success and with 401 status error on * failure. This behavior was applied to help the web clients deal with @@ -2728,25 +2728,25 @@ if(teamId === undefined) { throw new Error('Missing required parameter: "teamId"'); } - + if(inviteId === undefined) { throw new Error('Missing required parameter: "inviteId"'); } - + if(userId === undefined) { throw new Error('Missing required parameter: "userId"'); } - + if(secret === undefined) { throw new Error('Missing required parameter: "secret"'); } - + let path = '/teams/{teamId}/memberships/{inviteId}/status'.replace(new RegExp('{teamId}', 'g'), teamId).replace(new RegExp('{inviteId}', 'g'), inviteId); return iframe('patch', path, {project: config.project, - 'userId': userId, - 'secret': secret, - 'success': success, + 'userId': userId, + 'secret': secret, + 'success': success, 'failure': failure }); } @@ -2772,9 +2772,9 @@ return http .get(path, {'content-type': 'application/json'}, { - 'search': search, - 'limit': limit, - 'offset': offset, + 'search': search, + 'limit': limit, + 'offset': offset, 'orderType': orderType }); }, @@ -2793,18 +2793,18 @@ if(email === undefined) { throw new Error('Missing required parameter: "email"'); } - + if(password === undefined) { throw new Error('Missing required parameter: "password"'); } - + let path = '/users'; return http .post(path, {'content-type': 'application/json'}, { - 'email': email, - 'password': password, + 'email': email, + 'password': password, 'name': name }); }, @@ -2821,7 +2821,7 @@ if(userId === undefined) { throw new Error('Missing required parameter: "userId"'); } - + let path = '/users/{userId}'.replace(new RegExp('{userId}', 'g'), userId); return http @@ -2842,7 +2842,7 @@ if(userId === undefined) { throw new Error('Missing required parameter: "userId"'); } - + let path = '/users/{userId}/logs'.replace(new RegExp('{userId}', 'g'), userId); return http @@ -2863,7 +2863,7 @@ if(userId === undefined) { throw new Error('Missing required parameter: "userId"'); } - + let path = '/users/{userId}/prefs'.replace(new RegExp('{userId}', 'g'), userId); return http @@ -2884,7 +2884,7 @@ if(userId === undefined) { throw new Error('Missing required parameter: "userId"'); } - + let path = '/users/{userId}/sessions'.replace(new RegExp('{userId}', 'g'), userId); return http @@ -2905,7 +2905,7 @@ if(userId === undefined) { throw new Error('Missing required parameter: "userId"'); } - + let path = '/users/{userId}/sessions'.replace(new RegExp('{userId}', 'g'), userId); return http @@ -2927,11 +2927,11 @@ if(userId === undefined) { throw new Error('Missing required parameter: "userId"'); } - + if(sessionId === undefined) { throw new Error('Missing required parameter: "sessionId"'); } - + let path = '/users/{userId}/sessions/:session'.replace(new RegExp('{userId}', 'g'), userId); return http @@ -2954,11 +2954,11 @@ if(userId === undefined) { throw new Error('Missing required parameter: "userId"'); } - + if(status === undefined) { throw new Error('Missing required parameter: "status"'); } - + let path = '/users/{userId}/status'.replace(new RegExp('{userId}', 'g'), userId); return http @@ -2987,4 +2987,4 @@ }; }; -})(window); \ No newline at end of file +})(window); diff --git a/app/sdks/node/README.md b/app/sdks/node/README.md index 74b4df7c5..ee747f480 100644 --- a/app/sdks/node/README.md +++ b/app/sdks/node/README.md @@ -3,7 +3,7 @@ ![License](https://img.shields.io/github/license/appwrite/sdk-for-node.svg?v=1) ![Version](https://img.shields.io/badge/api%20version-0.1.15-blue.svg?v=1) -This SDK if compitable with Appwrite server version 0.2.0 for older versions check previous releases. +This SDK is compatible with Appwrite server version 0.2.0 for older versions check previous releases. Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https://appwrite.io/docs](https://appwrite.io/docs) @@ -23,4 +23,4 @@ npm install node-appwrite --save ## License -Please see the [BSD-3-Clause license](https://raw.githubusercontent.com/appwrite/appwrite/master/LICENSE) file for more information. \ No newline at end of file +Please see the [BSD-3-Clause license](https://raw.githubusercontent.com/appwrite/appwrite/master/LICENSE) file for more information. diff --git a/app/sdks/node/lib/services/auth.js b/app/sdks/node/lib/services/auth.js index f31d24b01..39cf72ad1 100644 --- a/app/sdks/node/lib/services/auth.js +++ b/app/sdks/node/lib/services/auth.js @@ -7,14 +7,14 @@ class Auth extends Service { * * Allow the user to login into his account by providing a valid email and * password combination. Use the success and failure arguments to provide a - * redirect URL\'s back to your app when login is completed. - * + * redirect URL\'s back to your app when login is completed. + * * Please notice that in order to avoid a [Redirect * Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) * the only valid redirect URL's are the once from domains you have set when * added your platforms in the console interface. - * - * When accessing this route using Javascript from the browser, success and + * + * When accessing this route using JavaScript from the browser, success and * failure parameter URLs are required. Appwrite server will respond with a * 301 redirect status code and will set the user session cookie. This * behavior is enforced because modern browsers are limiting 3rd party cookies @@ -29,7 +29,7 @@ class Auth extends Service { */ async login(email, password, success, failure) { let path = '/auth/login'; - + return await this.client.call('post', path, {'content-type': 'application/json'}, { 'email': email, @@ -51,7 +51,7 @@ class Auth extends Service { */ async logout() { let path = '/auth/logout'; - + return await this.client.call('delete', path, {'content-type': 'application/json'}, { }); @@ -70,7 +70,7 @@ class Auth extends Service { */ async logoutBySession(id) { let path = '/auth/logout/{id}'.replace(new RegExp('{id}', 'g'), id); - + return await this.client.call('delete', path, {'content-type': 'application/json'}, { }); @@ -87,7 +87,7 @@ class Auth extends Service { */ async oauth(provider, success = '', failure = '') { let path = '/auth/oauth/{provider}'.replace(new RegExp('{provider}', 'g'), provider); - + return await this.client.call('get', path, {'content-type': 'application/json'}, { 'success': success, @@ -112,7 +112,7 @@ class Auth extends Service { */ async recovery(email, reset) { let path = '/auth/recovery'; - + return await this.client.call('post', path, {'content-type': 'application/json'}, { 'email': email, @@ -127,7 +127,7 @@ class Auth extends Service { * **userId** and **token** arguments will be passed as query parameters to * the redirect URL you have provided when sending your request to the * /auth/recovery endpoint. - * + * * Please notice that in order to avoid a [Redirect * Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) * the only valid redirect URL's are the once from domains you have set when @@ -142,7 +142,7 @@ class Auth extends Service { */ async recoveryReset(userId, token, passwordA, passwordB) { let path = '/auth/recovery/reset'; - + return await this.client.call('put', path, {'content-type': 'application/json'}, { 'userId': userId, @@ -158,19 +158,19 @@ class Auth extends Service { * Use this endpoint to allow a new user to register an account in your * project. Use the success and failure URL's to redirect users back to your * application after signup completes. - * + * * If registration completes successfully user will be sent with a * confirmation email in order to confirm he is the owner of the account email * address. Use the confirmation parameter to redirect the user from the * confirmation email back to your app. When the user is redirected, use the * /auth/confirm endpoint to complete the account confirmation. - * + * * Please notice that in order to avoid a [Redirect * Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) * the only valid redirect URL's are the once from domains you have set when * added your platforms in the console interface. - * - * When accessing this route using Javascript from the browser, success and + * + * When accessing this route using JavaScript from the browser, success and * failure parameter URLs are required. Appwrite server will respond with a * 301 redirect status code and will set the user session cookie. This * behavior is enforced because modern browsers are limiting 3rd party cookies @@ -187,7 +187,7 @@ class Auth extends Service { */ async register(email, password, confirm, success = '', failure = '', name = '') { let path = '/auth/register'; - + return await this.client.call('post', path, {'content-type': 'application/json'}, { 'email': email, @@ -214,7 +214,7 @@ class Auth extends Service { */ async confirm(userId, token) { let path = '/auth/register/confirm'; - + return await this.client.call('post', path, {'content-type': 'application/json'}, { 'userId': userId, @@ -228,7 +228,7 @@ class Auth extends Service { * This endpoint allows the user to request your app to resend him his email * confirmation message. The redirect arguments acts the same way as in * /auth/register endpoint. - * + * * Please notice that in order to avoid a [Redirect * Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) * the only valid redirect URL's are the once from domains you have set when @@ -240,7 +240,7 @@ class Auth extends Service { */ async confirmResend(confirm) { let path = '/auth/register/confirm/resend'; - + return await this.client.call('post', path, {'content-type': 'application/json'}, { 'confirm': confirm @@ -248,4 +248,4 @@ class Auth extends Service { } } -module.exports = Auth; \ No newline at end of file +module.exports = Auth; diff --git a/app/sdks/php/README.md b/app/sdks/php/README.md index 820edf0b7..0e095a413 100644 --- a/app/sdks/php/README.md +++ b/app/sdks/php/README.md @@ -3,7 +3,7 @@ ![License](https://img.shields.io/github/license/appwrite/sdk-for-php.svg?v=1) ![Version](https://img.shields.io/badge/api%20version-0.1.15-blue.svg?v=1) -This SDK if compitable with Appwrite server version 0.2.0 for older versions check previous releases. +This SDK is compatible with Appwrite server version 0.2.0 for older versions check previous releases. Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https://appwrite.io/docs](https://appwrite.io/docs) @@ -23,4 +23,4 @@ composer require appwrite/appwrite ## License -Please see the [BSD-3-Clause license](https://raw.githubusercontent.com/appwrite/appwrite/master/LICENSE) file for more information. \ No newline at end of file +Please see the [BSD-3-Clause license](https://raw.githubusercontent.com/appwrite/appwrite/master/LICENSE) file for more information. diff --git a/app/sdks/php/docs/auth.md b/app/sdks/php/docs/auth.md index 32927befb..880823747 100644 --- a/app/sdks/php/docs/auth.md +++ b/app/sdks/php/docs/auth.md @@ -10,7 +10,7 @@ POST https://appwrite.test/v1/auth/login Please notice that in order to avoid a [Redirect Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URL's are the once from domains you have set when added your platforms in the console interface. -When accessing this route using Javascript from the browser, success and failure parameter URLs are required. Appwrite server will respond with a 301 redirect status code and will set the user session cookie. This behavior is enforced because modern browsers are limiting 3rd party cookies in XHR of fetch requests to protect user privacy. ** +When accessing this route using JavaScript from the browser, success and failure parameter URLs are required. Appwrite server will respond with a 301 redirect status code and will set the user session cookie. This behavior is enforced because modern browsers are limiting 3rd party cookies in XHR of fetch requests to protect user privacy. ** ### Parameters @@ -103,7 +103,7 @@ If registration completes successfully user will be sent with a confirmation ema Please notice that in order to avoid a [Redirect Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URL's are the once from domains you have set when added your platforms in the console interface. -When accessing this route using Javascript from the browser, success and failure parameter URLs are required. Appwrite server will respond with a 301 redirect status code and will set the user session cookie. This behavior is enforced because modern browsers are limiting 3rd party cookies in XHR of fetch requests to protect user privacy. ** +When accessing this route using JavaScript from the browser, success and failure parameter URLs are required. Appwrite server will respond with a 301 redirect status code and will set the user session cookie. This behavior is enforced because modern browsers are limiting 3rd party cookies in XHR of fetch requests to protect user privacy. ** ### Parameters @@ -146,4 +146,3 @@ Please notice that in order to avoid a [Redirect Attacks](https://github.com/OWA | Field Name | Type | Description | Default | | --- | --- | --- | --- | | confirm | string | Confirmation URL to redirect user to your app after confirm token has been sent to user email. | | - diff --git a/app/sdks/php/src/Appwrite/Services/Auth.php b/app/sdks/php/src/Appwrite/Services/Auth.php index dae305144..818a5e1db 100644 --- a/app/sdks/php/src/Appwrite/Services/Auth.php +++ b/app/sdks/php/src/Appwrite/Services/Auth.php @@ -13,14 +13,14 @@ class Auth extends Service * * Allow the user to login into his account by providing a valid email and * password combination. Use the success and failure arguments to provide a - * redirect URL\'s back to your app when login is completed. - * + * redirect URL\'s back to your app when login is completed. + * * Please notice that in order to avoid a [Redirect * Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) * the only valid redirect URL's are the once from domains you have set when * added your platforms in the console interface. - * - * When accessing this route using Javascript from the browser, success and + * + * When accessing this route using JavaScript from the browser, success and * failure parameter URLs are required. Appwrite server will respond with a * 301 redirect status code and will set the user session cookie. This * behavior is enforced because modern browsers are limiting 3rd party cookies @@ -143,7 +143,7 @@ class Auth extends Service * **userId** and **token** arguments will be passed as query parameters to * the redirect URL you have provided when sending your request to the * /auth/recovery endpoint. - * + * * Please notice that in order to avoid a [Redirect * Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) * the only valid redirect URL's are the once from domains you have set when @@ -176,19 +176,19 @@ class Auth extends Service * Use this endpoint to allow a new user to register an account in your * project. Use the success and failure URL's to redirect users back to your * application after signup completes. - * + * * If registration completes successfully user will be sent with a * confirmation email in order to confirm he is the owner of the account email * address. Use the confirmation parameter to redirect the user from the * confirmation email back to your app. When the user is redirected, use the * /auth/confirm endpoint to complete the account confirmation. - * + * * Please notice that in order to avoid a [Redirect * Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) * the only valid redirect URL's are the once from domains you have set when * added your platforms in the console interface. - * - * When accessing this route using Javascript from the browser, success and + * + * When accessing this route using JavaScript from the browser, success and * failure parameter URLs are required. Appwrite server will respond with a * 301 redirect status code and will set the user session cookie. This * behavior is enforced because modern browsers are limiting 3rd party cookies @@ -250,7 +250,7 @@ class Auth extends Service * This endpoint allows the user to request your app to resend him his email * confirmation message. The redirect arguments acts the same way as in * /auth/register endpoint. - * + * * Please notice that in order to avoid a [Redirect * Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) * the only valid redirect URL's are the once from domains you have set when @@ -271,4 +271,4 @@ class Auth extends Service ], $params); } -} \ No newline at end of file +} diff --git a/app/tasks/sdks.php b/app/tasks/sdks.php index d1698a0d4..2b62b76e8 100644 --- a/app/tasks/sdks.php +++ b/app/tasks/sdks.php @@ -43,7 +43,7 @@ $cli 'gitRepo' => 'git@github.com:appwrite/sdk-for-php.git', 'gitRepoName' => 'sdk-for-php', 'gitUserName' => 'appwrite', - 'warning' => 'This SDK if compitable with Appwrite server version ' . $version . ' for older versions check previous releases.', + 'warning' => 'This SDK is compitable with Appwrite server version ' . $version . ' for older versions check previous releases.', 'platform' => 'server', ], 'js' => [ @@ -53,7 +53,7 @@ $cli 'gitRepo' => 'git@github.com:appwrite/sdk-for-js.git', 'gitRepoName' => 'sdk-for-js', 'gitUserName' => 'appwrite', - 'warning' => 'This SDK if compitable with Appwrite server version ' . $version . ' for older versions check previous releases.', + 'warning' => 'This SDK is compitable with Appwrite server version ' . $version . ' for older versions check previous releases.', 'platform' => 'client', ], 'node' => [ @@ -63,7 +63,7 @@ $cli 'gitRepo' => 'git@github.com:appwrite/sdk-for-node.git', 'gitRepoName' => 'sdk-for-node', 'gitUserName' => 'appwrite', - 'warning' => 'This SDK if compitable with Appwrite server version ' . $version . ' for older versions check previous releases.', + 'warning' => 'This SDK is compitable with Appwrite server version ' . $version . ' for older versions check previous releases.', 'platform' => 'server', ], 'python' => [ diff --git a/app/views/console/comps/footer.phtml b/app/views/console/comps/footer.phtml index 13b1b3e78..9e6d0383e 100644 --- a/app/views/console/comps/footer.phtml +++ b/app/views/console/comps/footer.phtml @@ -4,7 +4,7 @@ $home = $this->getParam('home', ''); \ No newline at end of file + diff --git a/build.sh b/build.sh index e4364c45d..b3be98262 100644 --- a/build.sh +++ b/build.sh @@ -8,7 +8,7 @@ echo "Updating git repository" git fetch origin git reset --hard origin/master -if test `find "./app/db/GeoLite2/GeoLite2-Country.mmdb" -mmin +259200` +if test $(find "./app/db/GeoLite2/GeoLite2-Country.mmdb" -mmin +259200) then printf "${RED}GEO country DB has not been updated for more than 6 months. Go to https://dev.maxmind.com/geoip/geoip2/geolite2/ for more info${NC}\n" fi @@ -23,8 +23,8 @@ composer update --ignore-platform-reqs --optimize-autoloader --no-dev --no-plugi echo 'Starting build...' -docker build -t appwrite/appwrite:$1 . +docker build -t appwrite/appwrite:"$1" . echo 'Pushing build to registry...' -docker push appwrite/appwrite:$1 \ No newline at end of file +docker push appwrite/appwrite:"$1" diff --git a/docker-compose.yml b/docker-compose.yml index c45a3294f..fd9632f0a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -36,7 +36,7 @@ services: - _APP_INFLUXDB_PORT=8086 - _APP_STATSD_HOST=telegraf - _APP_STATSD_PORT=8125 - + mariadb: image: appwrite/mariadb:1.0.0 # fix issues when upgrading using: mysql_upgrade -u root -p restart: unless-stopped @@ -63,7 +63,7 @@ services: restart: unless-stopped volumes: - ./storage:/storage:rw - + redis: image: redis:5.0 restart: unless-stopped @@ -78,4 +78,4 @@ services: telegraf: image: appwrite/telegraf:1.0.0 ports: - - "8125:8125/udp" \ No newline at end of file + - "8125:8125/udp" diff --git a/docker/nginx.conf b/docker/nginx.conf index d92e24fbb..db1dc8c20 100644 --- a/docker/nginx.conf +++ b/docker/nginx.conf @@ -88,7 +88,7 @@ http { add_header Cache-Control "public"; } - # CSS and Javascript + # CSS and JavaScript location ~* \.(?:css|js)$ { expires 1y; access_log off; @@ -145,4 +145,4 @@ http { deny all; } } -} \ No newline at end of file +} diff --git a/public/images/oauth/dropbox.png b/public/images/oauth/dropbox.png new file mode 100644 index 000000000..20df74c10 Binary files /dev/null and b/public/images/oauth/dropbox.png differ diff --git a/public/images/oauth/microsoft.png b/public/images/oauth/microsoft.png new file mode 100644 index 000000000..9e40f2342 Binary files /dev/null and b/public/images/oauth/microsoft.png differ diff --git a/src/Auth/OAuth/Dropbox.php b/src/Auth/OAuth/Dropbox.php new file mode 100644 index 000000000..a4a6335f3 --- /dev/null +++ b/src/Auth/OAuth/Dropbox.php @@ -0,0 +1,128 @@ +appID). + '&redirect_uri='.urlencode($this->callback). + '&state='.urlencode(json_encode($this->state)). + '&response_type=code'; + } + + /** + * @param string $code + * + * @return string + */ + public function getAccessToken(string $code): string + { + $headers[] = 'Content-Type: application/x-www-form-urlencoded'; + $accessToken = $this->request( + 'POST', + 'https://api.dropboxapi.com/oauth2/token', + $headers, + 'code='.urlencode($code). + '&client_id='.urlencode($this->appID). + '&client_secret='.urlencode($this->appSecret). + '&redirect_uri='.urlencode($this->callback). + '&grant_type=authorization_code' + ); + + $accessToken = json_decode($accessToken, true); + + if (isset($accessToken['access_token'])) { + return $accessToken['access_token']; + } + + return ''; + } + + /** + * @param string $accessToken + * + * @return string + */ + public function getUserID(string $accessToken): string + { + $user = $this->getUser($accessToken); + + if (isset($user['account_id'])) { + return $user['account_id']; + } + + return ''; + } + + /** + * @param string $accessToken + * + * @return string + */ + public function getUserEmail(string $accessToken): string + { + $user = $this->getUser($accessToken); + + if (isset($user['email'])) { + return $user['email']; + } + + return ''; + } + + /** + * @param string $accessToken + * + * @return string + */ + public function getUserName(string $accessToken): string + { + $user = $this->getUser($accessToken); + + if (isset($user['name'])) { + return $user['name']['display_name']; + } + + return ''; + } + + /** + * @param string $accessToken + * + * @return array + */ + protected function getUser(string $accessToken): array + { + if (empty($this->user)) { + $headers[] = 'Authorization: Bearer '. urlencode($accessToken); + $user = $this->request('POST', 'https://api.dropboxapi.com/2/users/get_current_account', $headers); + $this->user = json_decode($user, true); + } + + return $this->user; + } +} diff --git a/src/Auth/OAuth/Microsoft.php b/src/Auth/OAuth/Microsoft.php new file mode 100644 index 000000000..6bbf0bad8 --- /dev/null +++ b/src/Auth/OAuth/Microsoft.php @@ -0,0 +1,132 @@ +appID). + '&redirect_uri='.urlencode($this->callback). + '&state='.urlencode(json_encode($this->state)). + '&scope=offline_access+user.read'. + '&response_type=code'. + '&response_mode=query'; + } + + /** + * @param string $code + * + * @return string + */ + public function getAccessToken(string $code): string + { + $headers[] = 'Content-Type: application/x-www-form-urlencoded'; + + $accessToken = $this->request( + 'POST', + 'https://login.microsoftonline.com/common/oauth2/v2.0/token', + $headers, + 'code='.urlencode($code). + '&client_id='.urlencode($this->appID). + '&client_secret='.urlencode($this->appSecret). + '&redirect_uri='.urlencode($this->callback). + '&scope=offline_access+user.read'. + '&grant_type=authorization_code' + ); + + $accessToken = json_decode($accessToken, true); + + if (isset($accessToken['access_token'])) { + return $accessToken['access_token']; + } + + return ''; + } + + /** + * @param string $accessToken + * + * @return string + */ + public function getUserID(string $accessToken): string + { + $user = $this->getUser($accessToken); + + if (isset($user['id'])) { + return $user['id']; + } + + return ''; + } + + /** + * @param string $accessToken + * + * @return string + */ + public function getUserEmail(string $accessToken): string + { + $user = $this->getUser($accessToken); + + if (isset($user['userPrincipalName'])) { + return $user['userPrincipalName']; + } + + return ''; + } + + /** + * @param string $accessToken + * + * @return string + */ + public function getUserName(string $accessToken): string + { + $user = $this->getUser($accessToken); + + if (isset($user['displayName'])) { + return $user['displayName']; + } + + return ''; + } + + /** + * @param string $accessToken + * + * @return array + */ + protected function getUser(string $accessToken): array + { + if (empty($this->user)) { + $headers[] = 'Authorization: Bearer '. urlencode($accessToken); + $user = $this->request('GET', 'https://graph.microsoft.com/v1.0/me', $headers); + $this->user = json_decode($user, true); + } + + return $this->user; + } +}