diff --git a/README.md b/README.md index 1257227266..fe1614912f 100644 --- a/README.md +++ b/README.md @@ -41,8 +41,6 @@ Once the Docker installation completes, go to http://localhost to access the App For advanced, production and custon installation check out our Docker [enviornemnt variables](/docs/EnviornementVariables.md) docs. -For complete API documentation, visit [https://appwrite.io/docs](https://appwrite.io/docs) - ### Changing Port Number In case your port 80 is already taken, change the port number in the command above. Make sure to set the correct endpoint in your selected SDK, including your new port number. @@ -67,6 +65,8 @@ Getting started with Appwrite is as easy as creating a new project, choosing you * [**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. +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). + ### SDKs Currently we are supporting a few SDK libraries and we are constantly working on adding new ones. @@ -80,12 +80,24 @@ Below is a list of currently supported platforms and languages. If you wish to h * ✅ [Python](https://github.com/appwrite/sdk-for-python) - **Work in progress** (Maintained by the Appwrite Team) * ✳️ Looking for more SDKs? - Help us by contributing a pull request to our [SDK Generator](https://github.com/appwrite/sdk-generator)! +## Security + +For security issues, please email [security@appwrite.io](mailto:security@appwrite.io) instead of posting a public issue in GitHub. + +## Follow Us + +Join our growing commuinty around the world! Follow us on both [Twitter](https://twitter.com/appwrite_io), [Facebook Page](https://www.facebook.com/appwrite.io), [Facebook Group](https://www.facebook.com/groups/appwrite.developers/) or join our live [Gitter community](https://gitter.im/appwrite/community) for more help, ideas and discussions. + ## Contributing 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). -## Security +## Credits -For security issues, please email [security@appwrite.io](mailto:security@appwrite.io) instead of posting a public issue in GitHub. +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)) +* 🇳🇴Chaaarles ([Github](https://github.com/Chaaarles)) \ No newline at end of file diff --git a/app/config/locale/en.php b/app/config/locale/en.php index 6500cf225d..cbd1dd2f51 100644 --- a/app/config/locale/en.php +++ b/app/config/locale/en.php @@ -1,246 +1,10 @@ '"The art of being wise is the art of knowing what to overlook."', + 'settings.inspire' => '"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' => 'en', 'settings.direction' => 'ltr', - // General - 'general.description' => 'Appwrite 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 grow your business in a fast and secure way.', - 'general.loading' => 'Loading...', - 'general.next' => 'Next', - 'general.back' => 'Back', - 'general.optional' => 'optional', - 'general.learn-more-about' => 'Learn more about your', - 'general.confirm.alert' => 'Please confirm your account by clicking the verification link sent to your email', - 'general.confirm.resend' => 'send again', - 'general.confirm.resend.success' => 'Confirmation mail sent successfully', - 'general.confirm.resend.failure' => 'Confirmation mail failed to send. Please try again later', - - 'general.roles.owner' => 'Owner', - 'general.roles.developer' => 'Developer', - 'general.roles.admin' => 'Admin', - - 'general.alerts.cookie' => 'We are using cookies to make this website easier to use.', - 'general.alerts.learn' => 'Learn More', - - 'navigation.home' => 'Home', - 'navigation.features' => 'Features', - 'navigation.pricing' => 'Pricing', - 'navigation.signup' => 'Sign Up', - 'navigation.signin' => 'Sign In', - 'navigation.console' => 'Console', - - 'footer.blog' => 'Blog', - 'footer.about' => 'About', - 'footer.security' => 'Security', - 'footer.status' => 'Status', - 'footer.support' => 'Support', - 'footer.contact' => 'Contact', - 'footer.twitter' => 'on Twitter', - 'footer.facebook' => 'on Facebook', - 'footer.instagram' => 'on Instagram', - 'footer.linkedin' => 'on LinkedIn', - 'footer.copyright' => 'Copyright', - 'footer.terms' => 'Terms', - 'footer.privacy' => 'Privacy', - 'footer.cookies' => 'Cookies', - - 'home.press.title' => 'Press Kit', - 'home.press.subtitle' => 'For media inquires and more information, email us at team@appwrite.io', - 'home.press.title.logos' => 'Logos', - 'home.press.title.colors' => 'Brand Colors', - 'home.press.title.photos' => 'Product Photos', - - 'home.cookies.title' => 'Cookies', - 'home.cookies.paragraph-1' => 'When someone visits '.APP_NAME.', we collect standard internet log information and details of visitor behaviour patterns. We do this to find out things such as the number of visitors to the various parts of the site. We collect this information in a way which does not personally identify anyone.', - 'home.cookies.paragraph-2' => 'Most web browsers allow some control of most cookies through the browser settings. To find out more about cookies, including how to see what cookies have been set and how to manage and delete them, visit', - 'home.cookies.set' => 'Cookies set by '.APP_NAME, - 'home.cookies.cell.name' => 'Name', - 'home.cookies.cell.description' => 'Description', - 'home.cookies.cell.duration' => 'Duration', - 'home.cookies.more' => 'Read More', - 'home.cookies.months' => 'months', - 'home.cookies.days' => 'days', - 'home.cookies.hours' => 'hours', - 'home.cookies.minutes' => 'minutes', - 'home.cookies.description1' => 'Keeps your website session alive.', - 'home.cookies.description2' => 'Google Analytics cookie, used to distinguish users.', - 'home.cookies.description3' => 'Google Analytics cookie, used to distinguish users.', - 'home.cookies.description4' => 'Google Analytics cookie, Used to throttle request rate.', - 'home.cookies.description5' => 'Google Analytics cookie, Contains campaign related information for the user.', - 'home.cookies.description6' => 'Google cookie, Contains information that changes the way the site behaves or looks, such as your preferred language or the region you are in.', - 'home.cookies.description7' => 'System user interface preferred language.', - - 'home.contact.title' => 'Contact Us', - 'home.contact.subtitle' => 'We’d love your input: questions, feature requests, bugs or compliments', - 'home.contact.form.name' => 'Name', - 'home.contact.form.email' => 'Email', - 'home.contact.form.subject' => 'Subject', - 'home.contact.form.message' => 'Message', - 'home.contact.form.submit' => 'Submit', - 'home.contact.form.social' => 'Social Networks', - 'home.contact.form.company' => 'Company Name', - 'home.contact.form.size' => 'Company Size', - 'home.contact.thanks.title' => 'Thank You!', - 'home.contact.thanks.subtitle' => 'Your message has been sent successfully. We appreciate your feedback, our team will try to get back to you as soon as possible!', - 'home.contact.thanks.back' => 'Back to Homepage', - - 'home.support.title' => 'Support', - 'home.support.healthy' => 'Service is healthy.', - 'home.support.unhealthy' => 'We are experiencing some service disruption.', - 'home.support.view' => 'View Status', - 'home.support.uptime' => 'uptime in last 24h', - 'home.support.updated' => 'Last updated at', - 'home.support.powered' => 'Powered by', - - // Auth - Signin - 'home.auth.signin.title' => 'Sign In', - 'home.auth.signin.regular.title' => 'Login using email and password', - 'home.auth.signin.oauth.title' => 'Login using your favorite OAuth provider', - 'home.auth.signin.oauth.facebook' => 'Sign in with Facebook', - 'home.auth.signin.oauth.linkedin' => 'Sign in with LinkedIn', - 'home.auth.signin.oauth.github' => 'Sign in with GitHub', - 'home.auth.signin.labels.email' => 'Email', - 'home.auth.signin.labels.password' => 'Password', - 'home.auth.signin.labels.password.validation' => 'Six or more characters', - 'home.auth.signin.labels.action1' => 'Sign In', - 'home.auth.signin.labels.action2' => 'Forgot password?', - 'home.auth.signin.labels.action3' => 'Sign up now', - 'home.auth.signin.labels.or' => 'or don\'t have an account?', - 'home.auth.signin.failure' => 'Login failed. Please check your credentials.', - - // Auth - Signup - 'home.auth.signup.title' => 'Sign Up', - 'home.auth.signup.required' => 'All fields are required', - 'home.auth.signup.labels.name' => 'Name', - 'home.auth.signup.labels.email' => 'Email', - 'home.auth.signup.labels.password' => 'Password', - 'home.auth.signup.labels.password.validation' => 'Six or more characters', - 'home.auth.signup.labels.agree' => 'By signing up, you agree to the', - 'home.auth.signup.labels.and' => ' and ', - 'home.auth.signup.labels.terms' => 'Terms and Conditions', - 'home.auth.signup.labels.privacy' => 'Privacy Policy', - 'home.auth.signup.labels.action' => 'Sign Up', - 'home.auth.signup.failure' => 'Registration Failed. Please try again later', - - // Auth - Recovery - 'home.auth.recovery.title' => 'Password Recovery', - 'home.auth.recovery.required' => 'All fields are required', - 'home.auth.recovery.labels.email' => 'Email', - 'home.auth.recovery.action' => 'Recover', - 'home.auth.recovery.back' => 'Back to sign in', - 'home.auth.recovery.success' => 'We have sent you a mail with a password reset link', - 'home.auth.recovery.failure' => 'Password recovery failed', - - // Auth - Reset - 'home.auth.reset.title' => 'Password Reset', - 'home.auth.reset.required' => 'All fields are required', - 'home.auth.reset.labels.passwordA' => 'Password', - 'home.auth.reset.labels.passwordB' => 'Password Again', - 'home.auth.reset.labels.password.validation' => 'Six or more characters', - 'home.auth.reset.action' => 'Apply', - 'home.auth.reset.success' => 'Password Reset Completed', - 'home.auth.reset.failure' => 'Password Reset Failed', - - // Auth - Confirm - 'home.auth.confirm.title' => 'Account Confirmation in Progress', - 'home.auth.confirm.subtitle' => 'Please wait a few seconds while your account is verified.', - 'home.auth.confirm.success' => 'Confirmation Completed Successfully', - 'home.auth.confirm.failure' => 'Confirmation Failed', - - // Auth - Join - 'home.auth.join.title' => 'Invitation', - 'home.auth.join.subtitle' => 'You have been invited to join %s team on '.APP_NAME, - 'home.auth.join.success' => 'Joined Team Successfully', - 'home.auth.join.failure' => 'Failed to join team. Please try again later', - 'home.auth.join.agree' => 'By accepting the invitation, you agree to the %s and %s.', - 'home.auth.join.terms' => 'Terms and Conditions', - 'home.auth.join.privacy' => 'Privacy Policy', - 'home.auth.join.accept' => 'Accept', - 'home.auth.join.cancel' => 'Cancel', - - 'console.title' => 'Console', - - // Console - Account - 'console.account.title' => 'Account', - 'console.account.section.overview.title' => 'Overview', - 'console.account.section.overview.labels.name' => 'Name', - 'console.account.section.overview.labels.email' => 'Email', - 'console.account.section.overview.labels.password' => 'Password', - 'console.account.section.overview.labels.password1' => 'Current Password', - 'console.account.section.overview.labels.password2' => 'New Password', - 'console.account.section.overview.labels.localization' => 'Localization', - 'console.account.section.overview.labels.language' => 'Language', - 'console.account.section.overview.labels.timezone' => 'Timezone', - 'console.account.section.overview.actions.update-name' => 'Update Name', - 'console.account.section.overview.actions.update-email' => 'Update Email', - 'console.account.section.overview.actions.update-password' => 'Update Password', - 'console.account.section.overview.actions.update-avatar' => 'Upload', - 'console.account.section.overview.actions.update-avatar-via' => 'via', - 'console.account.section.overview.actions.update' => 'Update', - 'console.account.section.overview.actions.cancel' => 'Cancel', - 'console.account.section.overview.actions.logout' => 'Logout', - 'console.account.section.overview.danger.title' => 'Danger Zone', - 'console.account.section.overview.danger.subtitle' => 'This is the area where you can delete your account.', - 'console.account.section.overview.danger.disclaimer' => 'By deleting your account you will lose access to any of your teams and shared data.', - 'console.account.section.overview.danger.note' => 'PLEASE NOTICE: Account deletion is irreversible.', - 'console.account.section.overview.danger.action' => 'Delete Account', - - 'console.account.section.security.title' => 'Security', - 'console.account.section.security.devices.title' => 'Devices and Sessions', - 'console.account.section.security.devices.logout' => 'Logout', - 'console.account.section.security.devices.logout.failure' => 'Logout from Session Failed', - 'console.account.section.security.devices.logout-all' => 'Logout from all devices', - 'console.account.section.security.devices.logout-all.failure' => 'Logout from All Sessions Failed', - 'console.account.section.security.devices.current' => 'Current Session', - 'console.account.section.security.devices.unknown' => 'Unknown Location', - - 'console.account.section.security.recent-activity.title' => 'Recent Activity', - 'console.account.section.security.recent-activity.date' => 'Date', - 'console.account.section.security.recent-activity.event' => 'Event', - 'console.account.section.security.recent-activity.client' => 'Client', - 'console.account.section.security.recent-activity.location' => 'Location', - 'console.account.section.security.recent-activity.ip' => 'IP', - - 'console.notifications.title' => 'Notifications', - - 'console.settings.title' => 'Settings', - 'console.settings.section.overview.title' => 'Overview', - 'console.settings.section.keys.title' => 'API Keys', - 'console.settings.section.webhooks.title' => 'Webhooks', - 'console.settings.section.tasks.title' => 'Tasks', - 'console.settings.section.members.title' => 'Members', - 'console.settings.section.members.labels.leave' => 'Leave', - 'console.settings.section.members.labels.resend' => 'Resend', - 'console.settings.section.members.labels.pending' => 'Pending Approval', - 'console.settings.section.members.labels.invite' => 'Invite Member', - 'console.settings.section.members.labels.send' => 'Send Invite', - 'console.settings.section.members.labels.cancel' => 'Cancel', - 'console.settings.section.members.labels.name' => 'Name', - 'console.settings.section.members.labels.email' => 'Email', - 'console.settings.section.members.labels.role' => 'Role', - 'console.settings.section.members.invite.success' => 'Invitation Sent Successfully', - 'console.settings.section.members.invite.failure' => 'Failed to Send Invite', - 'console.settings.section.members.leave.success' => 'Member Removed Successfully', - 'console.settings.section.members.leave.failure' => 'Failed to Remove Member', - - 'console.home.title' => 'Console', - - 'console.database.title' => 'Database', - - 'console.storage.title' => 'Storage', - - 'console.users.title' => 'Users', - 'console.users.section.users.title' => 'Users', - 'console.users.section.teams.title' => 'Teams', - 'console.users.section.providers.title' => 'Providers', - 'console.users.section.templates.title' => 'Templates', - - 'console.webhooks.title' => 'Webhooks', - 'console.keys.title' => 'API Keys', - 'console.tasks.title' => 'Tasks', - // Service - Users 'auth.emails.team' => '%s Team', 'auth.emails.confirm.title' => 'Account Confirmation', diff --git a/app/config/locale/he.php b/app/config/locale/he.php index d5ef84991a..41ce63ea79 100644 --- a/app/config/locale/he.php +++ b/app/config/locale/he.php @@ -1,6 +1,7 @@ '"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' => 'he', 'settings.direction' => 'rtl', diff --git a/app/controllers/auth.php b/app/controllers/auth.php index 4c7319981c..f7c9fb2ecd 100644 --- a/app/controllers/auth.php +++ b/app/controllers/auth.php @@ -244,7 +244,7 @@ $utopia->post('/v1/auth/register/confirm/resend') ->label('sdk.description', "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.\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.") ->label('abuse-limit', 10) ->label('abuse-key', 'url:{url},userId:{param-userId}') - ->param('confirmation', '', function () use ($clients) {return new Host($clients);}, 'Confirmation page to redirect user to your app after confirm token has been sent to user email.') + ->param('confirmation', '', function () use ($clients) {return new Host($clients);}, 'Confirmation URL to redirect user to your app after confirm token has been sent to user email.') ->action( function ($confirmation) use ($response, $request, $projectDB, $user, $register, $project) { if ($user->getAttribute('confirm', false)) { @@ -458,9 +458,9 @@ $utopia->post('/v1/auth/recovery') ->label('abuse-limit', 10) ->label('abuse-key', 'url:{url},email:{param-email}') ->param('email', '', function () {return new Email();}, 'User account email address.') - ->param('confirmation', '', function () use ($clients) {return new Host($clients);}, 'Reset page URL in your app to redirect user after reset token has been sent to user email.') + ->param('reset', '', function () use ($clients) {return new Host($clients);}, 'Reset URL in your app to redirect the user after the reset token has been sent to the user email.') ->action( - function ($email, $confirmation) use ($request, $response, $projectDB, $register, $audit, $project) { + function ($email, $reset) use ($request, $response, $projectDB, $register, $audit, $project) { $profile = $projectDB->getCollection([ // Get user by email address 'limit' => 1, 'first' => true, @@ -494,16 +494,16 @@ $utopia->post('/v1/auth/recovery') throw new Exception('Failed to save user to DB', 500); } - $confirmation = Template::parseURL($confirmation); - $confirmation['query'] = Template::mergeQuery(((isset($confirmation['query'])) ? $confirmation['query'] : ''), ['userId' => $profile->getUid(), 'token' => $secret]); - $confirmation = Template::unParseURL($confirmation); + $reset = Template::parseURL($reset); + $reset['query'] = Template::mergeQuery(((isset($reset['query'])) ? $reset['query'] : ''), ['userId' => $profile->getUid(), 'token' => $secret]); + $reset = Template::unParseURL($reset); $body = new Template(__DIR__.'/../config/locale/templates/'.Locale::getText('auth.emails.recovery.body')); $body ->setParam('{{direction}}', Locale::getText('settings.direction')) ->setParam('{{project}}', $project->getAttribute('name', ['[APP-NAME]'])) ->setParam('{{name}}', $profile->getAttribute('name')) - ->setParam('{{redirect}}', $confirmation) + ->setParam('{{redirect}}', $reset) ; $mail = $register->get('smtp'); /* @var $mail \PHPMailer\PHPMailer\PHPMailer */ diff --git a/app/controllers/console.php b/app/controllers/console.php index 4c7f6f4fc2..222ec917c6 100644 --- a/app/controllers/console.php +++ b/app/controllers/console.php @@ -66,7 +66,7 @@ $utopia->get('/console') ; $layout - ->setParam('title', APP_NAME.' - '.Locale::getText('console.title')) + ->setParam('title', APP_NAME.' - Console') ->setParam('body', $page); }); @@ -83,7 +83,7 @@ $utopia->get('/console/account') ; $layout - ->setParam('title', APP_NAME.' - '.Locale::getText('console.account.title')) + ->setParam('title', 'Account - ' . APP_NAME) ->setParam('body', $page); }); @@ -95,7 +95,7 @@ $utopia->get('/console/notifications') $page = new View(__DIR__.'/../views/v1/console/notifications/index.phtml'); $layout - ->setParam('title', APP_NAME.' - '.Locale::getText('console.notifications.title')) + ->setParam('title', APP_NAME.' - Notifications') ->setParam('body', $page); }); @@ -107,7 +107,7 @@ $utopia->get('/console/home') $page = new View(__DIR__.'/../views/console/home/index.phtml'); $layout - ->setParam('title', APP_NAME.' - '.Locale::getText('console.home.title')) + ->setParam('title', APP_NAME.' - Console') ->setParam('body', $page); }); @@ -119,7 +119,7 @@ $utopia->get('/console/settings') $page = new View(__DIR__.'/../views/console/settings/index.phtml'); $layout - ->setParam('title', APP_NAME.' - '.Locale::getText('console.settings.title')) + ->setParam('title', APP_NAME.' - Settings') ->setParam('body', $page); }); @@ -131,7 +131,7 @@ $utopia->get('/console/webhooks') $page = new View(__DIR__.'/../views/console/webhooks/index.phtml'); $layout - ->setParam('title', APP_NAME.' - '.Locale::getText('console.webhooks.title')) + ->setParam('title', APP_NAME.' - Webhooks') ->setParam('body', $page); }); @@ -143,7 +143,7 @@ $utopia->get('/console/keys') $page = new View(__DIR__.'/../views/console/keys/index.phtml'); $layout - ->setParam('title', APP_NAME.' - '.Locale::getText('console.keys.title')) + ->setParam('title', APP_NAME.' - API Keys') ->setParam('body', $page); }); @@ -155,7 +155,7 @@ $utopia->get('/console/tasks') $page = new View(__DIR__.'/../views/console/tasks/index.phtml'); $layout - ->setParam('title', APP_NAME.' - '.Locale::getText('console.tasks.title')) + ->setParam('title', APP_NAME.' - Tasks') ->setParam('body', $page); }); @@ -167,7 +167,7 @@ $utopia->get('/console/database') $page = new View(__DIR__.'/../views/console/database/index.phtml'); $layout - ->setParam('title', APP_NAME.' - '.Locale::getText('console.database.title')) + ->setParam('title', APP_NAME.' - Database') ->setParam('body', $page); }); @@ -190,7 +190,7 @@ $utopia->get('/console/database/collection') ; $layout - ->setParam('title', APP_NAME.' - '.Locale::getText('console.database.title')) + ->setParam('title', APP_NAME.' - Database') ->setParam('body', $page); }); @@ -202,7 +202,7 @@ $utopia->get('/console/storage') $page = new View(__DIR__.'/../views/console/storage/index.phtml'); $layout - ->setParam('title', APP_NAME.' - '.Locale::getText('console.storage.title')) + ->setParam('title', APP_NAME.' - Storage') ->setParam('body', $page); }); diff --git a/app/controllers/home.php b/app/controllers/home.php index 03e00120c0..58f5b7e1d4 100644 --- a/app/controllers/home.php +++ b/app/controllers/home.php @@ -9,7 +9,7 @@ use Utopia\Locale\Locale; $layout ->setParam('title', APP_NAME) - ->setParam('description', Locale::getText('general.description')) + ->setParam('description', '') ->setParam('class', 'home') ->setParam('header', [new View(__DIR__.'/../views/home/comps/header.phtml')]) ; @@ -35,7 +35,7 @@ $utopia->get('/auth/signin') $page = new View(__DIR__.'/../views/home/auth/signin.phtml'); $layout - ->setParam('title', Locale::getText('home.auth.signin.title').' - '.APP_NAME) + ->setParam('title', 'Sign In - '.APP_NAME) ->setParam('body', $page); }); @@ -47,7 +47,7 @@ $utopia->get('/auth/signup') $page = new View(__DIR__.'/../views/home/auth/signup.phtml'); $layout - ->setParam('title', Locale::getText('home.auth.signup.title').' - '.APP_NAME) + ->setParam('title', 'Sign Up - '.APP_NAME) ->setParam('body', $page); }); @@ -59,7 +59,7 @@ $utopia->get('/auth/recovery') $page = new View(__DIR__.'/../views/home/auth/recovery.phtml'); $layout - ->setParam('title', Locale::getText('home.auth.recovery.title').' - '.APP_NAME) + ->setParam('title', 'Password Recovery - '.APP_NAME) ->setParam('body', $page); }); @@ -71,7 +71,7 @@ $utopia->get('/auth/confirm') $page = new View(__DIR__.'/../views/home/auth/confirm.phtml'); $layout - ->setParam('title', Locale::getText('home.auth.confirm.title').' - '.APP_NAME) + ->setParam('title', 'Account Confirmation - '.APP_NAME) ->setParam('body', $page); }); @@ -83,7 +83,7 @@ $utopia->get('/auth/join') $page = new View(__DIR__.'/../views/home/auth/join.phtml'); $layout - ->setParam('title', Locale::getText('home.auth.join.title').' - '.APP_NAME) + ->setParam('title', 'Invitation - '.APP_NAME) ->setParam('body', $page); }); @@ -95,7 +95,7 @@ $utopia->get('/auth/recovery/reset') $page = new View(__DIR__.'/../views/home/auth/recovery/reset.phtml'); $layout - ->setParam('title', Locale::getText('home.auth.reset.title').' - '.APP_NAME) + ->setParam('title', 'Password Reset - '.APP_NAME) ->setParam('body', $page); }); diff --git a/app/controllers/shared/web.php b/app/controllers/shared/web.php index 6a2a354b38..ffaa6a5b87 100644 --- a/app/controllers/shared/web.php +++ b/app/controllers/shared/web.php @@ -6,9 +6,9 @@ use Utopia\Locale\Locale; Locale::$exceptions = false; $roles = [ - ['type' => 'owner', 'label' => Locale::getText('general.roles.owner')], - ['type' => 'developer', 'label' => Locale::getText('general.roles.developer')], - ['type' => 'admin', 'label' => Locale::getText('general.roles.admin')], + ['type' => 'owner', 'label' => 'Owner'], + ['type' => 'developer', 'label' => 'Developer'], + ['type' => 'admin', 'label' => 'Admin'], ]; $layout = new View(__DIR__.'/../../views/layouts/default.phtml'); @@ -20,7 +20,6 @@ if (!empty($request->getQuery('version', ''))) { $layout ->setParam('title', APP_NAME) - ->setParam('description', Locale::getText('general.description')) ->setParam('protocol', $request->getServer('REQUEST_SCHEME', 'https')) ->setParam('domain', $domain) ->setParam('home', $request->getServer('_APP_HOME')) diff --git a/app/init.php b/app/init.php index ab53340976..fb23c9bdf1 100644 --- a/app/init.php +++ b/app/init.php @@ -22,15 +22,7 @@ const APP_NAME = 'Appwrite'; const APP_DOMAIN = 'appwrite.io'; const APP_EMAIL_TEAM = 'team@' . APP_DOMAIN; const APP_EMAIL_SECURITY = 'security@' . APP_DOMAIN; -const APP_EMAIL_NEWSLETTER = 'newsletter@' . APP_DOMAIN; const APP_USERAGENT = APP_NAME . '-Server/%s Please report abuse at ' . APP_EMAIL_SECURITY; -const APP_SOCIAL_TWITTER = 'https://twitter.com/appwrite_io'; -const APP_SOCIAL_TWITTER_HANDLE = 'appwrite_io'; -const APP_SOCIAL_FACEBOOK = 'https://www.facebook.com/appwrite.io'; -const APP_SOCIAL_LINKEDIN = 'https://www.linkedin.com/company/appwrite'; -const APP_SOCIAL_INSTAGRAM = 'https://www.instagram.com/appwrite.io'; -const APP_SOCIAL_GITHUB = 'https://github.com/appwrite'; -const APP_SOCIAL_DISCORD = 'https://discord.gg/GSeTUeA'; const APP_MODE_ADMIN = 'admin'; const APP_LOCALES = ['en', 'he']; const APP_PAGING_LIMIT = 15; diff --git a/app/tasks/sdks.php b/app/tasks/sdks.php index 4d3989b841..f47564e405 100644 --- a/app/tasks/sdks.php +++ b/app/tasks/sdks.php @@ -62,7 +62,7 @@ $cli 'gitRepo' => 'git@github.com:appwrite/sdk-for-node.git', 'gitRepoName' => 'sdk-for-node', 'gitUserName' => 'appwrite', - 'warning' => '', + 'warning' => 'This SDK if compitable with Appwrite server version 0.2.0 for older versions check previous releases.', 'platform' => 'server', ], 'python' => [ diff --git a/app/views/console/account/index.phtml b/app/views/console/account/index.phtml index 5d9b9b1d9d..6686cf5e52 100644 --- a/app/views/console/account/index.phtml +++ b/app/views/console/account/index.phtml @@ -1,10 +1,6 @@ -

- + Account

@@ -19,7 +15,7 @@ use Utopia\Locale\Locale; data-failure="trigger" data-failure-param-trigger-events="logout"> -

+

Overview

@@ -35,14 +31,14 @@ use Utopia\Locale\Locale; data-failure-param-alert-text="Failed to update your name" data-failure-param-alert-classname="error"> - +
- +
@@ -64,18 +60,18 @@ use Utopia\Locale\Locale; data-failure-param-alert-text="Failed updating email address" data-failure-param-alert-classname="error"> - +
- @@ -84,8 +80,8 @@ use Utopia\Locale\Locale;
- @@ -133,25 +129,25 @@ use Utopia\Locale\Locale;
- + Upload
- ( gravatar.com ) + (via gravatar.com )
-

+

Danger Zone

-

+

This is the area where you can delete your account.

-

+

By deleting your account you will lose access to any of your teams and shared data.

-

+

PLEASE NOTICE: Account deletion is irreversible.

- +
@@ -172,9 +168,9 @@ use Utopia\Locale\Locale;
  • -

    +

    Security

    -

    +

    Devices and Sessions

    - + @@ -208,15 +204,15 @@ use Utopia\Locale\Locale; data-service="auth.logoutBySession" data-scope="console" data-event="submit" - data-loading="escape(Locale::getText('general.loading')); ?>" + data-loading="Loading..." data-success="trigger,redirect" data-success-param-trigger-events="logout" data-success-param-redirect-url="/" data-failure="alert" - data-failure-param-alert-text="escape(Locale::getText('console.account.section.security.devices.logout.failure')); ?>" + data-failure-param-alert-text="Logout from Session Failed" data-failure-param-alert-classname="error"> - + @@ -225,7 +221,7 @@ use Utopia\Locale\Locale; on   - + Current Session
    @@ -244,10 +240,10 @@ use Utopia\Locale\Locale; data-success-param-trigger-events="session-delete" data-success-redirect-url="/" data-failure="alert" - data-failure-param-alert-text="escape(Locale::getText('console.account.section.security.devices.logout-all')); ?>" + data-failure-param-alert-text="Logout from All Sessions Failed" data-failure-param-alert-classname="error"> - +
  • @@ -263,26 +259,26 @@ use Utopia\Locale\Locale; - - - - - + + + + + - - - + + - - +
    DateEventClientLocationIP
    + +
    diff --git a/app/views/console/database/index.phtml b/app/views/console/database/index.phtml index 45fde94c95..0230e0faf4 100644 --- a/app/views/console/database/index.phtml +++ b/app/views/console/database/index.phtml @@ -1,10 +1,6 @@ -

    - + Database

    diff --git a/app/views/console/keys/index.phtml b/app/views/console/keys/index.phtml index a8f511cf41..45f9b1a5f2 100644 --- a/app/views/console/keys/index.phtml +++ b/app/views/console/keys/index.phtml @@ -1,7 +1,5 @@

    - + API Keys

    -

    - + Settings

    @@ -22,7 +16,7 @@ use Utopia\Locale\Locale;
    • -

      +

      Overview

    • -

      +

      Members

      - + User Avatar
      -       +      
    -
  • diff --git a/docker-compose.yml b/docker-compose.yml index 02ca1956be..8fa6bfd7ea 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -26,7 +26,7 @@ services: - _APP_DB_HOST=mariadb - _APP_DB_PORT=3306 - _APP_DB_SCHEMA=appwrite - - _APP_DB_USER=root + - _APP_DB_USER=user - _APP_DB_PASS=password - _APP_INFLUXDB_HOST=influxdb - _APP_INFLUXDB_PORT=8086 @@ -37,7 +37,9 @@ services: image: appwrite/mariadb:1.0.0 # fix issues when upgrading using: mysql_upgrade -u root -p restart: unless-stopped environment: - - MYSQL_ROOT_PASSWORD=password + - MYSQL_ROOT_PASSWORD=rootsecretpassword + - MYSQL_USER=user + - MYSQL_PASSWORD=password volumes: - ./storage/db:/var/lib/mysql:rw ports: diff --git a/package-lock.json b/package-lock.json index 0485732f57..1e3a04feb7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -834,9 +834,9 @@ } }, "appwrite": { - "version": "1.0.19", - "resolved": "https://registry.npmjs.org/appwrite/-/appwrite-1.0.19.tgz", - "integrity": "sha512-SP9VNSrrVZi0B9kkdQLpoEy6hAoAanXtc9pk5TwBqEZf6OIs0BRRTK64eethyvzSrklceeBxY8FwEb+lYBNhuw==", + "version": "1.0.21", + "resolved": "https://registry.npmjs.org/appwrite/-/appwrite-1.0.21.tgz", + "integrity": "sha512-NfNG9JQkOQypanMKOGzPzHVTZP1MTDipbTkRveIfmNd0W25OAqpE1up9f7KHaAi8yha1uyqkYW6l9QgjECZMEw==", "dev": true }, "archy": { @@ -3688,9 +3688,9 @@ } }, "handlebars": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", - "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.3.1.tgz", + "integrity": "sha512-c0HoNHzDiHpBt4Kqe99N8tdLPKAnGCQ73gYMPWtAYM4PwGnf7xl8PBUHJqh9ijlzt2uQKaSRxbXRt+rZ7M2/kA==", "dev": true, "requires": { "neo-async": "^2.6.0", diff --git a/package.json b/package.json index ad71cfe40c..1a46663e6e 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "license": "BSD-3-Clause", "repository": "public", "devDependencies": { - "appwrite": "^1.0.19", + "appwrite": "^1.0.21", "gulp": "^4.0.0", "gulp-clean-css": "^4.0.0", "gulp-concat": "2.5.2", diff --git a/public/dist/scripts/app-all.js b/public/dist/scripts/app-all.js index 3011ab288c..6bedf84d45 100644 --- a/public/dist/scripts/app-all.js +++ b/public/dist/scripts/app-all.js @@ -5,7 +5,7 @@ {http.addGlobalHeader('X-Appwrite-Locale',value);config.locale=value;return this;};let setMode=function(value) {http.addGlobalHeader('X-Appwrite-Mode',value);config.mode=value;return this;};let http=function(document){let globalParams=[],globalHeaders=[];let addParam=function(url,param,value){let a=document.createElement('a'),regex=/(?:\?|&|&)+([^=]+)(?:=([^&]*))*/g;let match,str=[];a.href=url;param=encodeURIComponent(param);while(match=regex.exec(a.search))if(param!==match[1])str.push(match[1]+(match[2]?"="+match[2]:""));str.push(param+(value?"="+encodeURIComponent(value):""));a.search=str.join("&");return a.href;};let buildQuery=function(params){let str=[];for(let p in params){if(Array.isArray(params[p])){for(let index=0;indexassertIsInt($response['body']['local']); $this->assertNotEmpty($response['body']['remote']); $this->assertNotEmpty($response['body']['local']); - $this->assertEquals(0, $response['body']['diff']); + $this->assertLessThan(10, $response['body']['diff']); } public function testWebhooksSuccess() diff --git a/tests/resources/docker-compose.yml b/tests/resources/docker-compose.yml index 1d8716a46e..6fadf1fe82 100644 --- a/tests/resources/docker-compose.yml +++ b/tests/resources/docker-compose.yml @@ -20,7 +20,7 @@ services: - _APP_DB_HOST=mariadb - _APP_DB_PORT=3306 - _APP_DB_SCHEMA=appwrite - - _APP_DB_USER=root + - _APP_DB_USER=uesr - _APP_DB_PASS=password - _APP_INFLUXDB_HOST=influxdb - _APP_INFLUXDB_PORT=8086 @@ -31,7 +31,9 @@ services: image: appwrite/mariadb:1.0.0 restart: unless-stopped environment: - - MYSQL_ROOT_PASSWORD=password + - MYSQL_ROOT_PASSWORD=rootsecretpassword + - MYSQL_USER=user + - MYSQL_PASSWORD=password ports: - 3306:3306/tcp #command: mysqld --innodb-flush-method=fsync