* Returning validation failures while creating organization
* Added unit tests
* Changing the name of test security config
Co-authored-by: nitesh261193 <nitesh261193@gmail.com>
* Update README.md
* Updating README to add contributor section (#870)
* Remove gitlab-ci configuration files (#865)
We have since moved our CI to Github Actions and no longer require Gitlab CI config files.
* Updating the README in the client codebase
We now reference the global contribution guide directly
* Feature/share app test (#843)
* Add ShareApp test
* Sharing app tests and public access
* Update CONTRIBUTING.md
* Update install.sh
fixes#889
* Update deploy install script to use api64.ipify.org which supports IPv4 (#887)
Co-authored-by: Nikhil Nandagopal <nikhil.nandagopal@gmail.com>
* Id value issue for radio groups (#895)
Fixes: #661
There was issue related to id value while creating new radio group options other than the default ones. And as said I, the id field is not needed at all, but some old config still has the id field.
So since ID field is not required , I have removed it. Which solves the issue.
* Fix triggering of onChange when value is the same (#892)
Fixes: #710
* Invite user modal in view mode can be closed by clicking outside (#906)
* Update README.md
Spelling correction
* #678 Correction in contributing.md for client setup (#907)
Co-authored-by: Saket Agrawal <saketagr@in.ibm.com>
* Docs: Add instructions in client setup for any port conflicts with 80/443 (#918)
Co-authored-by: Arpit Mohan <mohanarpit@users.noreply.github.com>
* Fix(sign-up): change in sign up error message (#908)
* Fix(backend): Wrong error message while resetting the password fixed, changed from id to email (#911)
Fixes#637
* Options Validaor checks for empty values
Fixes: #662
* fix: add missed error callback for download (#912)
Fixes: #673
* Revert "Options Validaor checks for empty values"
This reverts commit 6b49d4c4e4.
* Update table icon (#761)
* style: center login form when 3rd party auth is not enabled (#919)
* style: center login form when 3rd party auth is not enabled
* style: center signup form when 3rd party auth is not enabled
* fix: input widget number validation #768 (#917)
* Explorer fixes (#689)
* Make entity icon an actionable area
Persist user toggled entity collapse states
* remove dependency on props.isDefaultExpanded
* Hover effect for dependencies
* Pass search keyword for reliable toggling of entity groups on entity search
* Fix default expanded state of Datasource group entity
* Remove plugingroup file, which was added due to a botched merge conflict resolution
* Fix issue with radio widget crashing (#922)
* fix types
* Options Validaor checks for empty values
Fixes: #662
Co-authored-by: Sanchit Jain <171220040@nitdelhi.ac.in>
* Fixed the pull request template issue partially (#902)
Fixes#826
* Feature: Invite modal (#927)
* light and dark mode added in Invite modal
* warnings removed
* create org and invite user test cases fixed
* Application invite design implemented
* manage user icon added
* button width fixed
* PR feedback implemented
* Improve PR template.
* Remove troublesome test
* Fix failing Radio tests (#931)
* Possible fix for CI checkout issue
* Possible fix for CI checkout issue
* Fixed the ipify URL in PingScheduledTask (#1013)
* Revert "Feature: Invite modal (#927)" (#1017)
This reverts commit 63daf74a44.
* Fix image widget not showing default image when image property is invalid (#882)
Fixes: #760
* Fix CI checkouts for all pull_request_target steps
* Local meta state in widgets (#851)
* Update README.md
* Fix for action execution (#1023)
* Adding the condition to fix push vs pull_request_target commit checkouts
* Input Widget: Parse regexp before regex validation (#884)
Fixes#697
* Display warning icon for forgot password failure (#890)
Fixes: #587
* Create Org Form: don't allow to use only spaces in names (#913)
Also disables the submit button when invalid
Fixes: #807, #621
* Auto Focus on email fields in auth screens (#923)
Fixes: #610
Co-authored-by: Anshul <anshul@typito.com>
* Added check for duplicate values in Dropdown and Radio Widgets (#1011)
Fixes#655
* Fix Reset password not disabled after successful reset (#1021)
Fixes#636
* Fix active styles for checkbox & radio (#1061)
Fixes: #994
* Add source to user sign up event (#1065)
* Send separate user create event for new users (#1066)
* Expand datasource entity in explorer based on some conditions (#1062)
* Expand datasource entity in explorer based on some conditions
* Fix test
* Do not show error tost when api fails
* Expand datasource entity on test success
* Use email as id for users and fix signup events not being reported (#1067)
* Fixing typos in the README file (#871)
Co-authored-by: Arpit Mohan <mohanarpit@users.noreply.github.com>
* Forgot password submit button enable condition (#701)
Fixes: #586
Co-authored-by: Anshul <anshul@typito.com>
* Adding a new email template for sending an email when an appsmith use… (#1077)
* Adding a new email template for sending an email when an appsmith user's role in an organization changes.
* Minor changes in text.
* Fix - Distorted UI when there are too many characters in email ID #584 (#1010)
* Fix - Distorted UI when there are too many characters in email ID #584
* Fix - Distorted UI when there are too many characters in email ID #584
* Fix the hidden column list is not bounded and overflows in height (#981) (#1024)
* fix(applications): add validation for empty name (#914)
* Update CONTRIBUTING.md
* Update CodeContributionsGuidelines.md
* replaced dragdrop with dsl (#1081)
* Fix datasource structure test (#1080)
* Fix datasource structure test
* Dummy commit
* CI: Try creating build id
* CI: Fix build id step:
* Revert build id changes
* Update README.md
* Fix/new ui is distorted due to long organization name #735 (#1014)
* Fix for long org names on side menu.
Now ellipsizes with tooltip if Orgname is over the value set in ellipsize prop. Otherwise functions as before.
* added ellipsize prop to index. Fixes#735
20 seems to be a good value that stop org names running onto next line. Tested on Firefox and chrome. Linux debian stretch.
Co-authored-by: root <root@rutabaga.groudon>
* Use username instead of object_id in analytics (#1082)
* Adding the close-label.yml file required by Github App to mark issues as QA (#1091)
Fixes#1090
When a PR is successfully merged, the Github bot will add the label QA to the issue. These issues can then be picked up by the QA team for verification. Refer: https://github.com/Logerfo/close-label
* Only mark applications as example applications if the application id exists in the template configuration. (#1093)
* docs: add mohanarpit as a contributor (#1095)
* docs: update README.md [skip ci]
* docs: create .all-contributorsrc [skip ci]
* Moving the contributor badge to the correct location in README
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
Co-authored-by: Arpit Mohan <mohanarpit@users.noreply.github.com>
* docs: add Nikhil-Nandagopal as a contributor (#1096)
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
Co-authored-by: Arpit Mohan <mohanarpit@users.noreply.github.com>
* docs: add areyabhishek as a contributor (#1097)
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
* docs: add trishaanand as a contributor (#1098)
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
* docs: add riodeuno as a contributor (#1099)
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
* docs: add hetunandu as a contributor (#1100)
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
Co-authored-by: Trisha Anand <trisha@appsmith.com>
* docs: add satbir121 as a contributor (#1106)
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
Co-authored-by: Arpit Mohan <mohanarpit@users.noreply.github.com>
* docs: add sharat87 as a contributor (#1102)
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
Co-authored-by: Arpit Mohan <mohanarpit@users.noreply.github.com>
* docs: add aakashDesign as a contributor (#1107)
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
* docs: add Debsourabh as a contributor (#1108)
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
* docs: add NandanAnantharamu as a contributor (#1103)
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
Co-authored-by: Arpit Mohan <mohanarpit@users.noreply.github.com>
* docs: add prapullac as a contributor (#1104)
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
Co-authored-by: Arpit Mohan <mohanarpit@users.noreply.github.com>
* docs: add Saket2 as a contributor (#1109)
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
* docs: add harishkotra as a contributor (#1110)
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
* docs: add visibleajay as a contributor (#1111)
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
* docs: add akbansa as a contributor (#1112)
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
* docs: add gogetter22 as a contributor (#1113)
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
* docs: add Xniveres as a contributor (#1114)
* docs: update README.md [skip ci]
* docs: update .all-contributorsrc [skip ci]
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
* Correcting hyperlink from contributor badge to contributor section
* Show datasource structure fixes (#1078)
* Tests for binding related use cases (#1116)
Co-authored-by: Nandan <nandan@thinkify.io>
* Feature/video widget test (#1115)
Co-authored-by: nandan.anantharamu <nandan@thinkify.io>
* Adding filter tests for table (#1117)
Co-authored-by: nandan.anantharamu <nandan@thinkify.io>
* Getting Cypress to work correctly for internal pull requests (#1121)
* Hotfix to fix the client build workflow
* Update README.md
* Fix release cleanup issues (#1132)
* Changed CSS to prevent share button from coming out (#925)
Changed CSS to prevent share button from coming out.
Decreased the width of the wrapper to a suitable value.
* Fix issue with setting dynamic triggers on immutable widget objects (#1137)
* Feature/invitation modal (#938)
* light and dark mode added in Invite modal
* warnings removed
* create org and invite user test cases fixed
* Application invite design implemented
* manage user icon added
* button width fixed
* PR feedback implemented
* test cases fixed
* used blueprint classes
* used calc for width distribution
* copy button width fixed
* prop passing fixed
* copy button size reduced
* readonly input field background color fixed
* input background theme name ordering changed
* TagInputComponent moved to ads
* created DropdownWrapper for select field in orgInviteForm
* Warnings created due to unique key and depdencies is fixed
* Warning fixed in dropdown component
* correct prop name used
Co-authored-by: Rohit Kumawat <rohit.kumawat@primathon.in>
* fix(codemirror-autocomplete): show selection background on hover for options (#1134)
This fix if merged shows the selection background by hovering on autocomplete
options.
Ref: #946
* Stop expanding datasource in explorer after testing (#1138)
Co-authored-by: areyabhishek <nayak.abhishek@gmail.com>
Co-authored-by: Arpit Mohan <mohanarpit@users.noreply.github.com>
Co-authored-by: Ari <36749814+ari-hacks@users.noreply.github.com>
Co-authored-by: NandanAnantharamu <67676905+NandanAnantharamu@users.noreply.github.com>
Co-authored-by: jack1142 <6032823+jack1142@users.noreply.github.com>
Co-authored-by: Sanchit Jain <171220040@nitdelhi.ac.in>
Co-authored-by: Nicholas <wasabigeek@users.noreply.github.com>
Co-authored-by: Aditya Vats <avats.osc@gmail.com>
Co-authored-by: Saket2 <49346036+Saket2@users.noreply.github.com>
Co-authored-by: Saket Agrawal <saketagr@in.ibm.com>
Co-authored-by: MartinT <44962077+MartinTuroci@users.noreply.github.com>
Co-authored-by: Dmitriy Danilov <daniloff200@gmail.com>
Co-authored-by: Petro Popelyshko <petrneok@gmail.com>
Co-authored-by: Hetu Nandu <hetunandu@gmail.com>
Co-authored-by: akash-codemonk <67054171+akash-codemonk@users.noreply.github.com>
Co-authored-by: Abhinav Jha <abhinav@appsmith.com>
Co-authored-by: Omkar Phansopkar <48476025+OmkarPh@users.noreply.github.com>
Co-authored-by: devrk96 <rohit.kumawat@primathon.in>
Co-authored-by: Prashant Chaubey <prashantchaubey9795@gmail.com>
Co-authored-by: satbir121 <39981226+satbir121@users.noreply.github.com>
Co-authored-by: Ajay Kumar <visibleajay@gmail.com>
Co-authored-by: Arpit Mohan <arpit@appsmith.com>
Co-authored-by: dodococo <deepakchethan@outlook.com>
Co-authored-by: Josh Mak <joshmak@berkeley.edu>
Co-authored-by: Anshul Bansal <bansalanshul11@yahoo.com>
Co-authored-by: Anshul <anshul@typito.com>
Co-authored-by: Caitlin-Fotheringham <49273562+Caitlin-Fotheringham@users.noreply.github.com>
Co-authored-by: Akash Hamirwasia <akash.hamirwasia@gmail.com>
Co-authored-by: Yash Joshi <jyash97@gmail.com>
Co-authored-by: Shrikant Sharat Kandula <shrikant@appsmith.com>
Co-authored-by: Aadhitya A <59508546+alphaX86@users.noreply.github.com>
Co-authored-by: Trisha Anand <trisha@appsmith.com>
Co-authored-by: Kishore <reachtokish@users.noreply.github.com>
Co-authored-by: Adam <ascratcherd@gmail.com>
Co-authored-by: root <root@rutabaga.groudon>
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
Co-authored-by: Nandan <nandan@thinkify.io>
Co-authored-by: Ishaan Mehta <ishaanmehta4@gmail.com>
Co-authored-by: Thakur Karthik <iamkarthik08@gmail.com>
* Add option to override server timezone for MySQL datasources
* Added test for server timezone override for MySQL
* Fix serverTimezone property config
This is because this `cacheResponse` field is only used for auto-complete on the UI. The user can still run the action manually and get the auto-complete to work. The downside to sending the `cacheResponse` field in the JSON response is that for large responses, the client times out as our response times increase to 20 secs. Hence removing this for now.
In future, we'll extract the JSON schema structure from the response body and send that to the client for populating auto-complete.
This is because this `cacheResponse` field is only used for auto-complete on the UI. The user can still run the action manually and get the auto-complete to work. The downside to sending the `cacheResponse` field in the JSON response is that for large responses, the client times out as our response times increase to 20 secs. Hence removing this for now.
In future, we'll extract the JSON schema structure from the response body and send that to the client for populating auto-complete.
* Implement caching for datasource structure
* Avoid using final fields so spring-data can load objects
* Use type variable for getStructure method
* Initial version with base structure for MySQL plugin
* Add tests for MySQL plugin structure
* Add sorting for keys in Postgres structure as well
* Show "primary key" instead of just "primary"
* Refactor to reduce inline magic strings
* Add a connection type variable for Plugin implementations
This type variable is intended to represent the type of the
connection object, if any, that the plugin will use. This will
help make the implementations more robust by leveraging Java's
type checking instead of rudimentary type casts over the
connection objects.
* Fix missing typevar usage
* Base interface for getting datasource structure for databases
* Add keys and constraints to structure for Postgres datasources
* Use connection from datasource context for computing structure
* Refactor context retrying into a separate method
* Add base datastructures for templates in entity explorer
* Fix spring circular dependency
* Add test for postgres datasource structure
* Generate column names and sample values for INSERT query
* Add LIMIT clause to generated SELECT query
* Fix tests for generated SELECT query
* Minor refactoring
* Add migration to fix incorrect action IDs for onLoad
* Remove redundant comments
* Fix migration to work with published onLoad actions as well
* Only update the action ID when correcting onLoad action IDs
* Fix migration name for correcting action IDs
Co-authored-by: Trisha Anand <trisha@appsmith.com>
* Fix migration id for correcting action IDs
* Reformat code
Co-authored-by: Trisha Anand <trisha@appsmith.com>
* Get list of application IDs to be cloned as examples
* Fix tests so that apps to be cloned are explicit
* Add migration to set applicationIds for example cloning
* Fix example org cloning tests
* Fix aliases not showing up for MySQL actions
* Fix date column display for MySQL actions
* Fix datetime columns for MySQL actions
* Add support for timestamp and year data types for MySQL actions
* Fix column label for MySQL plugin
* Add tests for MySQL temporal data types
* Add tests for alias columns in MySQL and Postgres
* Add a node.js script to dump examples organization
This dump file is used to setup initial examples organization
in a self-hosted setup.
* Remove unused variable
* Add npm run shortcut for dump script
* Start with new controller for assets
* Progress on uploading logo image
* Saving and loading organization logo assets now works
* Remove existing logo asset before saving a new one
* Fix 500 when uploading logo for the first time
* Fix URL in response for uploading logo image
* Add test for uploading logo for ogranization
* Mild refactoring in tests
* GET API actions recognized as page load actions should also be updated as executeOnLoad actions.
* Update action during updateLayout only if executeOnLoad is not set or is false.
* WIP : First draft of clone applications
* Cloning of application now works correctly.
* Fixed the failing test case for page cloning.
* Added test case to assert the clone of application successfully.
* Minor function renaming to avoid confusion.
* Minor code refactoring to remove duplicate code.
1. Fixed the bug where policies are being set to empty during organization update.
2. Added email field in organization.
* Updated the test case for update organization to assert the organization policies being present post the update.
We are currently getting the *list* of all pages, updating the
`isDefault` fields inside, and then saving the whole *list* of
all pages. If a new page got added to that list in the DB during
this process, that page would be lost. This commit fixes this
problem.
This race condition was causing tests for cloning applications
to fail *sometimes*.
* Working version of cloning page given page id. The clone is created inside the same application and is in unpublished state.
* Added a test case for Clone Page feature
* Incorporated review comments.
* Don't always automatically create a blank personal org
It will still be created, only if a example template organization
has not been configured in the system.
* Name examples organization same as personal organization
* Minor fixes in tests
* Remove unused userService in clone tests
* During add role to an organziation, the application was only inheriting from subset of the organization permissions. Generalized this code to ensure that this doesnt happen again in the future when more permissions are introduced. Refactored some code as well.
This is a hack to get around the fact that Github Actions doesn't support conditional status checks for monorepo PRs. Hence, we create similar jobs in the both server & client builds. In the server build, those jobs are dummy jobs that do nothing but satisfy the all-encompassing green tick so that PRs can be merged without using Admin privileges.
* Introduced new permissions for making app public and inviting users.
* WIP : Returning a subset of roles depending on the current user's role
* Added code and tests for generating hierarchical children given a role name
* Get all invite roles now returns roles depending on the current users permissions (aka - admin can invite users for all roles, developers can invite users for roles develoeprs and below)
* When invite api is called, check if the user has correct permissions ( invite permission) and check if the role for which the users are bieng invited is allowed (aka the current user has the permission to invite for the said role)
* Introduced a new permission at application level which is inherited from manage:organizations. This new permission gives the administrator of the organization to make any application public .
* Incorporated review comments.
* Minor code changes.
* Added migration script to add the new policies introduced as part of this new share modal changes.
* Null pointer exception handled due to improper data in the database.
* Integration testing bug fixes.
* Correcting the Docker image for Appsmith server for Github actions test
* Also fixing the bug where the datasource config is not returned properly for restapi-plugin
Co-authored-by: Arpit Mohan <arpit@appsmith.com>
* WIP: Not working bulk invite.
* WIP : Non compilable.
* Current test cases running.
TODO : Code Cleanup and write new test cases for bulk invite.
* Code cleanup
* Added a test case for bulk invite of users to an organization.
* Incorporated review comment.
* Merged the latest release and incorporated review comments.
* Corrected the error thrown when usernames is empty or null for invite user API.
* Auto-login on signup works!
* Support form-encoded data body for signup requests
* Remove debug log entry when getting session
* Refactoring and add some docs to UserSignup solution
* Move user object construction to UserSignup solution
* Redirect with error message on signup errors
* Added information to setup domain
* Fixed incorrect var reference
* Updated documentation message
* Updated env template
* updated template
* removed debug echo
* Updated Script
* Updated Text
* Removed option to connect to external mongo for fresh installs
Exit script of docker desktop is not installed
* Updated docker installation explanation
* added a question to skip custom domain if user is installing locally
* Inverted script question and
* Removed question to determine local installation
* Updated Popup CTA to Modal
Updated query templates to contain bindings
Added a message to display on API / Query errors
* updated styles for evaluated value
updated styles for auto complete
* added spaces to questions
Co-authored-by: Nikhil Nandagopal <nikhil@appsmith.com>
Keeping the function to read plugin resource generic for any type of resource. Now the parent function can also conditionally decide which plugin would require to read which resources from the filesystem.
Co-authored-by: Arpit Mohan <arpit@appsmith.com>
* Overwriting the base service's getById for OrganizationService to ensure that the response contains userPermissions (by using custom repository instead of default mongo repository classes)
* Fixed the failing test cases.
* Minor code formatting.
The client will have to send a query parameter redirectUrl or a header X-Redirect-Url in order for the server to redirect the client to the appropriate URL post login. If neither of these parameters are present, the client is redirected to /applications by default.
Co-authored-by: Shrikant Sharat Kandula <shrikant@appsmith.com>
* During signup, if the user already exists, instead of throwing a generic duplicate key exception, request the user to sign in.
* Minor change in the error message.
* Fix cloning fails in some cases for organizations
Cloning currently fails in cases like the following:
- Application with no pages
- Pages with no actions
- Pages with more than one action
* Remove debug naming of cloned datasources
* Add test for organization cloning
* Add more tests for organization cloning
* Fix potential race condition in adding pages to an application
* Move db update call to add page to application, into repository
* Use `getIdCriteria` to query for document's _id
* Reuse layout that's automatically created with page
* Use correct API for updating a layout
* Commenting out organization cloning test.
* Removed organization cloning test
* Adding a dummy commit to run the pipeline.
Co-authored-by: Arpit Mohan <arpit@appsmith.com>
* Fix layouts not be updated when an action is updated
* Add test for updating onLoadActions when action updated
* Split layout and action test to separate class
* Remove duplicated test in ActionServiceTest
The policies of `User` objects is an empty set by default. So, when using a new `User` object to call `update`, it also updates existing policies to be an empty list.
* Fixing test cases failing due to non unique names.
* Adding execute action permissions policy to match read actions policy in existing actions.
* Only save the action if there are read actions permission present (and hence could have been updated)
* Datasource test should always test the latest object given by the client (instead of fetching the same from the db). If it is a saved datasource, then we should decrypt and set the password in the datasource (unless the password is one of the changes that is being tested).
* Added function level comment to clarify that this function can no longer be used by just sending the datasource.id field set.
* Handle stale database connection from datasources
* Fix potential secondary case of stale connection error
* Fix Postgres to MySQL
* Move validity check timeout to a constant field
* Add test for recovery when stale connection error is thrown
The plugin class loader from Pf4J looks for jars under target/lib
to use to load any classes that are missing target/classes. This
PR adds the `maven-dependency-plugin` to copy the jars to this
folder automatically so the classes are available during
development.
The client can send the redirect URL in X-Redirect-Url header. The server will honour the value set and redirect the client browser to this particular url. By default the server will redirect to /applications if the custom header is missing. The redirect url can either be absolute or relative.
Co-authored-by: Shrikant Sharat Kandula <shrikant@appsmith.com>
1. Bug fix for when actions for a public application use an external datasource (aka db queries). The db queries were not getting executed because the permission for execute datasource was not getting set for anonymousUser.
2. When using the Test endpoint for datasource, if the datasource is being read from the db and there are encrypted fields, first decrypt the field and then send to the plugin for testing the co
This commit adds the Mysql plugin to the Appsmith server. We also add a migration to ensure that this plugin is installed by default for all existing organizations. The migration also adds the plugin details into the DB.
Also adding the test cases for mysql plugin.
Co-authored-by: Arpit Mohan <arpit@appsmith.com>
Co-authored-by: Hetu Nandu <hetu@appsmith.com>
Co-authored-by: Arpit Mohan <me@arpitmohan.com>
Co-authored-by: Nupur Singhal <nupursinghal@Nupurs-MacBook-Air.local>
* When cloning examples organization, clone only public applications
* Create template organization within the test
* Cleaned up test for cloning of examples organization
* Fix Mono chaning
Co-authored-by: Trisha Anand <trisha@appsmith.com>
* Create test apps and config simultaneously
Co-authored-by: Trisha Anand <trisha@appsmith.com>
* Datasource authentication object fields should only be encrypted during create or if the update object contains authentication object. Added a test case to check that update to any other field doesnt update the encrypted fields.
* Incorporated review comment
* Trying to clone the examples repo on new user signup
* Working implementation of cloning examples organization on user sign up
* Fix personal org not being created when template org is missing
* A working version of cloning of examples organization on first-login
* Add docs for methods in ExamplesOrganizationCloner
* Refactor computing user's first name into a method
* Add some menial tests for examples organization cloning
* Use explicit permissions when fetching applications and datasources
* Fix template organization config name hard-coding
* Refactor implicit permissions in service methods as function arguments
* Revert an unintended change that got committed
* Fix permission variable name
Co-authored-by: Trisha Anand <trisha@appsmith.com>
Co-authored-by: Trisha Anand <trisha@appsmith.com>
* Disable the direct `create` methods for pages and applications
* Create differently named versions of create methods to avoid ambiguity
* Removed unused pageService in DatasourceServiceTest
* Rename createPlain method to createDefault to better convey intent
* Bug fixes :
1. Get actions in view mode should be open for unauthorized requests. Fixed that.
2. set transient fields in action is called post fetching all the actions (after taking care of all the permissions). At this point, we shouldnt be using permissions to fetch datasource.
* Added pageId in the ActionViewDTO and NPE check for setting the json path keys.
* Checking for both json path keys being null and not empty before copying the json path keys into action view dto.
The MAIL_FROM & REPLY_TO addresses default to appsmith@localhost. This should be changed in the generated docker.env file during deployment to actual values.
Most email providers will not send emails unless they originate from a valid sender ID.
* Encrypting the password stored in AuthenticationDTO for every db.
* Adding comment to the properties file to denote that adding encryption salt and password are mandatory to the server coming up.
* Added the encryption salt and password to server.yml to allow the github actions to succeed.
* Adding database migration to encrypt the existing passwords for authentication object (used for storing db connection username/password)
Changes to the installation script install.sh:
1. Instead of overwriting the existing encryption password or salt, giving the user an option to conserve the previous encryption credentials to ensure that the developer users do not lose access to their database configurations (passwords).
2. Added another file for writing encryption credentials (encryption.env) to ensure that we dont delete the encryption password and salt by mistake.
* On setting an application to public view, correct permissions are assigned to the application and its pages & actions.
* If anonymous user is allowed a certain permission, the all users (anonymous/logged in) should be allowed the certain permission.
* Bug fix is working. Added a test case which is not working.
* Code cleanup. Test case fixed. Now, when we set the user to enabled, we also store the password that has been passed to the flatMap.
* Minor code cleanup.
* 404 error added for a few API calls which would be specially handled on the frontend to display an ACL 404 error.
* Putting everything except GET actions, GET pages, and GET applications behind authenticated. This ensures that in the future public applications (view only) would not lead to 401 but any other page would.
* Code formatted.
* Dates from Postgres queries now show up as ISO date strings
* Use constant for date column name in PostgresPlugin
* Fix formats for more date-time types on Postgres
* Add support for time and timestamp data types in Postgres plugin
* Add support for timestamptz column data type in Postgres plugin
* Add support for interval data type in PostgresPlugin
* Move application configuration to be loaded from environment variables
* Remove unused sentry.properties
* Make missing value sentinel a constant and ignore all *.env files
* Removed now-used ACL properties
* Prefix RapidAPI environment variable with APPSMITH_
* Fix application properties not being loaded into static fields
* Remove application-test.properties file
* Add required env variables for test in GitHub
* Quote URLs for MongoDB and Redis in test config
* Change RAPIDAPI to RAPID_API in environment variable names
* Source .env file in the root of repo in start script
* Adding the Github action workflow for the server code
* Modifying the redis endpoint in application-test.properties to point to localhost because the Docker service exposes ports to the host
* Fixing the move action API by removing invocations to subscribe
Calling subscribe() inside function calls is an anti-pattern and we shouldn't be doing it.
The reactiveContext is not called if the subscribe() function is called in the middle of execution flows. This breaks DB queries.
* Added test case for move action.
Co-authored-by: Trisha Anand <trisha@appsmith.com>
When organizationId is null in a datasource, fail with the right error message
The organization id is subsequently used to find a matching plugin (checking for installation essentially), but when organization id is missing, this query never returns. But the error message reads as if the plugin is not installed, whereas it should've been that organization id is missing.
See merge request theappsmith/internal-tools-server!406
Race condition bug caught in remove user from organization flow where multiple applicaitons/pages/actions exist for an organization.
See merge request theappsmith/internal-tools-server!407
Bug fix : Create Organization is failing because the user is read from the session and not from the repository. Now reading the user at appropriate places.
See merge request theappsmith/internal-tools-server!405
Add server-side templates support for plugins
Two main themes in this MR:
1. Add support for saving query templates as resource files inside a plugin. This has been done for both Postgres and MongoDB plugins, based on current template contents.
2. Loading of form JSON is now reactive. The blocking call has been moved inside a `Mono.fromSupplier`.
3. The loading of from JSON as well as the templates is cached and are loaded on-demand. This means that the templates are loaded once for a plugin through the lifetime of the server process, and that they are loaded only at the first time they are needed.
4. If loading of these resources fails, we try again when they are needed the next time.
See merge request theappsmith/internal-tools-server!385
Bug Fix : Application and page can only be deleted if you have manage application/page permissions respectively.
See merge request theappsmith/internal-tools-server!395
Adding the widget names set to the default layout for a page
During action name refactor, we require the widget names to exist in the layout. Hence all default layouts must have the widgetName set.
See merge request theappsmith/internal-tools-server!387
This is to simplify the query pane on the frontend client. The client doesn't need to have separate interfaces for sql and non-sql plugins. All queries will be sent to the server in the form of a String that is parsed in different formats based on the plugin.
Also adding test cases for PostgresPlugin. Used TestContainers to simulate the postgres db in Docker inside the Java test itself. Very useful.
This is because the client sends us the data for form-data in the form of a list of Property fields with keys and values. This is consistent with how the client stores & renders headers & query parameters as well.
For MediaType application/x-www-form-urlencoded we will use the bodyFormData field.
Fix : In getAllApplications, instead of iterating over collections of applications which could be empty, we iterate over organizations where we are guaranteed to have atleast one organization.
Adding the ForwardedHeaderTransform bean to enable spring to parse...
Adding the ForwardedHeaderTransform bean to enable spring to parse X-Forwarded-* headers from Nginx proxy
See merge request theappsmith/internal-tools-server!344
Automatically use a unique name for creating datasources without name.
In the request from frontend for datasource creation, if the data
doesn't have a `name` value, we now set it to an automatically numbered
value and save with that.
See merge request theappsmith/internal-tools-server!333
In the request from frontend for datasource creation, if the data
doesn't have a `name` value, we now set it to an automatically numbered
value and save with that.