Commit Graph

541 Commits

Author SHA1 Message Date
Nidhi
53c2d815f6
Fixes refresh token flow (#4450)
* Fixes refresh token flow

* Review comments

* Reverting mistake with CI cs url
2021-05-12 17:07:59 +05:30
dependabot[bot]
3573ea3913
Bump commons-io from 2.6 to 2.7 in /app/server/appsmith-interfaces (#4172)
Bumps commons-io from 2.6 to 2.7.

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-05-09 09:49:43 +05:30
Nidhi
4a288439f0
Added basic authentication type to REST APIs (#4040)
* Added basic authentication type to REST APIs

* Spacing for prefix

* Tests and json ignore for password

* Client side form changes

* Review comments
2021-05-07 17:24:05 +05:30
Nidhi
b2aaa7787c Merge branch 'release' of github.com:appsmithorg/appsmith into task/apply-encryption 2021-05-06 12:55:25 +05:30
Sumit Kumar
52bfd25824
Feature: return request parameters with type for debug tab (#4078)
- return request parameters with type for debug tab.
- request params are stored in a RequestParamDTO object.
- a configProperty -> label map is cached in pluginService, which returns the param label as per the configProperty it is mapped to via editor.json file.
- This feature currently only works with prepared statements disabled.
2021-04-30 16:26:51 +05:30
Nidhi
c8b2035eeb Accessibility reset 2021-04-26 18:13:55 +05:30
Nidhi
8afac888c7 Merge branch 'release' of github.com:appsmithorg/appsmith into task/apply-encryption 2021-04-26 13:30:49 +05:30
Sumit Kumar
275843e61a
Fix: Return helpful error message when get structure fails for mongo db due to lack of read permission. (#4077)
- return helpful error message when get structure fails for mongo db due to lack of read permission. The message returned is: Appsmith has failed to get database structure. Please provide read permission on the database to fix this.
- any get structure error is also generically being caught by the getStrucuture method in DatasourceStructureSolution.java
- error msg and status code is now returned as part of DatasourceStructure object.
- ErrorDTO is used to store error info.
- ErrorDTO definition is moved to appsmith-interfaces package so that it can be used all packages.
- Other changes:
  - stop logging PLUGIN_GET_STRUCTURE_ERROR externally, as this error is mostly triggered by credentials error or -lack of read permission.
  - start logging PLUGIN_GET_STRUCTURE_TIMEOUT_ERROR externally, because this is not a user error.
2021-04-26 11:18:08 +05:30
Nidhi
6b31aa333b
Introducing Google Sheets Plugin (#3517)
* cherry pick -make new

* revert to enable fix from release

* attempt to hook into existing datasource editor

* gSheets plugin skeleton from Rest API

* Changes for database migration

* fix for auth code

* separate it out

* action page loads!

* add to explorer

* create action from datasource

* Editor JSON WIP

* working query form

* Editor JSON WIP

* import to

* fix toast message

* redirect from datasource and editor pages

* fix onboarding

* fix imports and constants

* refactor form out

* refactor queryForm

* Merge branch 'release' into feature/google-sheets

* Merge branch 'release' into feature/google-sheets

* initial values from settings, editor and form

* Check

* remove dangling code around lightTheme

* Safety net

* remove class

* try mouseover solve

* force click

* changes from review

* fix action form name on import

* Merge branch 'release' into feature/google-sheets

* minor cleanup

* Merge branch 'release' into feature/google-sheets

* WIP

* Google sheets changes

* Merge conflicts

* Merging and fixes, needs refactoring

* Check

* Merge branch 'release' into feature/google-sheets

* Fixed tests

* Add cloud services env variable

* Clean up saga

* Clean up

* Refactoring

* Deleted svg file

* Minor fixes

* Modified design to allow behaviour in google sheets methods (#3486)

* Modified design to allow behaviour in google sheets methods

* Review changes

* Removed sysout

* Added handling of edge cases with table data

* Merge branch 'release' into feature/google-sheets

* Fixes

* Fixes

* Added validations

* Improved tests

* Removed extraneous injected bean

* Review changes

* Fixed bug with method

* Changes to Google sheets plugin's request and response structures (#3692)

* Method changes

* Removed logging

* Renaming options

* Reverting pom version

* Modified type of collection variables, fixed errors

* Converted row offset field to one that supports dynamic bindings

* Review changes

* List SAAS plugin type actions under lightning menu apis (#3820)

* list saas plugin type actions under lightning menu apis

* combine saas plugin type actions in the other sub menu of lightning menu

Co-authored-by: Hetu Nandu <hetunandu@gmail.com>

* Fix merge issues

* Prettified query editor and a few fixes w/ ux

* Test fixes

* Reformatting request

* code for REST added (#3876)


Co-authored-by: hetunandu <hetu@appsmith.com>

* Renamed body to row object

* Renamed placeholder for range

* Renamed range heading

* Modifications to handle range semantics

* Use spreadsheet Url instead of id

* Ordering of methods

* Removed logging

* Add tests for Dynamic text controls

* Add tests for url helpers

* Fix coverage config

* Nevermind

* Interface changes

* There is no body here

* Yay to hints

* Delete row field is separately handled as row index

* placeholder support (#4001)

* Fixed tests, typos and creating new sheets with random rows

* Switched to using 'rowIndex' throughout

* binding path added for query input field (#4016)

* - Fixed QA bugs (#4032)

- Split delete sheet into two
- Removed dynamic query input types from hidden keys

* Proper exceptions

* Removed extra logging

* Throw exception if update method does not match any of the columns

* Same for bulk update

* Zero-indexed delete row

* I'm a space bound rocket ship

* Logic to register installations with cs (#4062)

* Logic to register installations with cs

* Clean up

* Casting to string

* Checking to see if this makes the test pass

* Added an extra null check

Co-authored-by: Piyush <piyush@codeitout.com>
Co-authored-by: hetunandu <hetu@appsmith.com>
Co-authored-by: Hetu Nandu <hetunandu@gmail.com>
Co-authored-by: Apeksha Bhosale <7846888+ApekshaBhosale@users.noreply.github.com>
2021-04-22 09:00:09 +05:30
Trisha Anand
eeaa26a7cc
Type migration from String to Object for plugin specified templates to preserve boolean and any other future data types (#4053)
* WIP : Type migration from String to Object for value

* Migrating config from string to boolean for prepared statement.
Handled error for already stored actions where PS config is stored as String and not Boolean.
2021-04-20 16:09:48 +05:30
Nidhi
963d1225dc
Reverting use of Mongo Listener since we aren't applying this yet (#4073)
* Added synchronization to encryption map

* Reverting listener for now
2021-04-20 13:58:59 +05:30
Nidhi
9e6e8e5e4b
Safe handling of alias (#4004)
* Safe handling of alias

* Unnecessary import
2021-04-15 12:14:39 +05:30
Sumit Kumar
9c8bce0415
Feature: return data types of returned data on query execution for better data display (#3914)
- Return data type list along with action execution result so that the data can be displayed in the correct format.
- Handles these three data types for now : table, json, raw.
  - If a plugin has already assigned the data type, then common handler is not used.
  - Mongo plugin assigns the data types in the plugin specific flow i.e. does not use the common data type parse / assign method.
- To address review comments:
  - added a new enum ActionResultDataType for data types. It is consumed by ParsedDataType. A list of ParsedDataType is returned by ActionExecutionResult
  - parsed data in parallel using streams.parallel().
2021-04-09 10:58:37 +05:30
Nidhi
13a3e8f240 Applying AOP encryption 2021-04-08 16:58:45 +05:30
Sumit Kumar
41e44eed30
Feature: add title to action execution errors to improve user experience (#3872)
- add title to action execution errors to improve user experience
    - all errors in AppsmithPluginErrors
    - action execution related errors in AppsmithError : NO_CONFIGURATION_FOUND_IN_DATASOURCE, INVALID_ACTION, INVALID_DATASOURCE, INVALID_DATASOURCE_CONFIGURATION - as these are the likely errors in an action execution flow (excluding plugin specific flow) that might result from faulty action / datasource configuration by a user.
    - title is returned as part of ActionExecutionResult.
    - title is set in ActionExecutionResult on failure during action execution.
    - In response to review comment - added a new BaseException class, so that both AppsmithException and AppsmithPluginException extend this base class. Also, refactored code to introduce setErrorInfo() function in ActionExecutionResult class to set its attributes.
- Some unrelated cleanup:
    - catch PoolInitializationException for Postgres plugin and return AppsmithPuginException
    - catch MongoTimeoutException and return AppsmithPluginException
2021-04-08 09:49:05 +05:30
Nidhi
927a6a3479
Annotation based encryption (#3610)
* Annotation set up

* Removed annotation uses

* Redundant condition

* Commented out logging, retained for implementation

* Handling for Collection and Map parameterized types

* Removed comments
2021-04-07 15:27:36 +05:30
Trisha Anand
4a087b172c
Feature : BSON Smart Substitution in Mongo Plugin (#3804)
* Feature : JSON Smart Substitution in Mongo Plugin

* Added BSON data type for Mongo substitution. Added test case

* Minor comment added

* Minor variable re-naming and correcting failing test cases.

* REST API : Escaping special characters in string before smart substitution

* Incorporated review comment
2021-04-05 17:12:29 +05:30
Trisha Anand
554c45eef8
[Bug Fix] Prepared Statement -String starting with a number recognized as JSON object instead of String (#3710)
* String starting with float like 2.1 recognized as JSON object instead of String.

* Incorporated review comments.
2021-03-29 12:22:06 +05:30
Trisha Anand
b9fd72e89d
Smart Substitution Debugging - Adding Appsmith data type to each parameter in response's request object for execute (#3716)
* Smart Substitution Debugging - Adding appsmith data type to each parameter in response's request object for execute

* Incorporated review comments.

* Fixed failing test cases.

* Fixed MS-SQL test failures.
2021-03-26 23:29:12 +05:30
Nidhi
683176fc48
Increased default limit for webclient payload (#3718)
* Increased default limit for webclient payload
2021-03-26 21:34:10 +05:30
Sumit Kumar
e347b61e53
Return hint on localhost url (#3611)
- Return hint for localhost URL on the following events:
Test datasource
Save datasource
Update REST API Url
Create datasource from REST API
When page gets loaded for first time.
- Hint message returned: "You may not able to access your localhost if Appsmith is running inside a docker container or on the cloud. Please check out Appsmith's documentation to understand more."
- It has been decided as part of actions pod meeting that these messages will not be persisted.
2021-03-26 15:42:34 +05:30
Trisha Anand
c420d0207f
Supporting timestamp datatype in Prepared Statement (#3690)
* WIP : Adding timestamp datatype in Prepared Statement

* Added simple tests for commonly used data types' identification

* Added plugin level test cases for timestamp with Prepared Statement to Postgres
2021-03-26 13:19:22 +05:30
Trisha Anand
ed1a0b4045
Refactor the smart substitution code to extract common code at plugin interface level. (#3497) 2021-03-25 19:10:42 +05:30
Trisha Anand
c6e4f91ffb
[Bug fix] A lax search for presence of binding during save page to match client algorithm to reduce page save error (#3698)
* Lax mustache binding check added to match the client side check when client recognizes a field to have a dynamic binding. This would reduce/remove bad bindings from throwing a 400 during save page.

* Added a test to assert that update layout does not fail in case the binding is technically incorrect because part of the mustache's lie inside quotes. Since client has a lax way of finding a dynamic path, server also follows suite.
2021-03-25 16:00:45 +05:30
Sumit Kumar
56f22edbe8
Return hint message on identical columns (#3656)
- Return hint message if identical column names are found in SQL query for postgres, MySQL, mssql, redshift plugin.
- Add a PluginUtils class to hold general utility functions for plugins.
2021-03-24 08:22:49 +05:30
Shri
a18e569f7d
Fix data serialization in analytics (#3677)
* Serialize object fields before sending to analytics

* Push event when application is published
2021-03-23 17:13:02 +05:30
Sumit Kumar
38c5639542
Provide non client certificate based SSL support for Mysql, Mongo, Postgres plugins. (#3518)
- Provide non client certificate based SSL support for Mysql, Mongo, Postgres plugins.
- Added a new option default, apart from the the SSL mode types supported by the driver. Default means that go with whatever default configuration driver provides.
2021-03-19 15:03:56 +05:30
Shri
bb1d0059d3
Clear OAuth tokens for forked datasources (#3609)
* Clear OAuth tokens for forked datasources

* Fix datasource duplicate finder in light of oAuth tokens

* Fix potential NPE
2021-03-18 21:08:56 +05:30
Shri
e1fb1203b5
Application forking fixes and improvements (#3519)
* Clone only those datasources that are actually used

* Retry when cloning app causes a name class

* Search for an existing datasource before cloning

* Test deep matching of datasources

* Refactoring, since now the tests pass

* Allow forking of owning applications

* Don't limit datasource naming suffix number
2021-03-15 22:19:40 +05:30
Trisha Anand
9f63bfafd2
Adding JSON intelligent substitution for Rest Api plugin (#3474)
* POC : null value getting handled correctly

* Refactor code. Tested with and without quotes. This is working! Woohoo!

* Added support for mustache binding to include json objects and arrays

* Added test for smart substitution.

* Added setting to turn on/off smart substitutions in Rest API plugin

* Handling turning on smart json substitution

* Added error handling

* Added config to turn on smart substitution in JSON to make the tests pass now

* Adding a beta tag to the API setting.

* Spelling error resolved.

* Incorporated review comments.

* Catching JSON Parse exception in http call.
2021-03-11 14:10:00 +05:30
Sumit Kumar
b6961ce7a4
Add timeout failure for mongo plugin test datasource (#3431)
- Mongo plugin client driver does not return with exception upon first failure - instead it keeps retrying. Hence, adding timeout error to report failure before the client thread cancels due to delay in response.
- It seems that the mongdb connection string cannot be directly used for ping test, hence skipping it.
2021-03-10 11:11:14 +05:30
Trisha Anand
cd45a1dd74
Added support for Arrays in Prepared Statement in Postgres (#3421)
* Added support for Arrays in Prepared Statement

* Minor code cleanup

* Super minor code readability changes

* Incorporated review comment
2021-03-09 13:17:42 +05:30
Sumit Kumar
800d305dab
Gracefully handle the timeout overflow / out of expected range errors (#3411)
- Expect max value of timeout as 60000 ms.
- If value exceeds max value then add error message to the list of invalids. This list is returned to the client in response body.
- Detect integer overflow exception (Number format exception) and override the value to 60000 ms.
2021-03-05 17:09:29 +05:30
Trisha Anand
91e308665b
Requests preparation by plugins instead of ActionService (#3159)
* Added action request in S3 plugin.

* Added request data in Dynamo plugin

* Added request in Elastic Search.

* Request in Firestore.

* Request added in Mongo

* MsSQL request added.

* Added MySQL request.

* Added Postgres request.

* Added redis request.

* Redshift doen.

* Catching AppsmithPluginExceptions at the plugin level itself to ensure that the request gets passed on as part of the result.

* Fixed failing plugin test failures

* Fixed AmazonS3 test failures.

* WIP post analytics working

* WIP : Making the request data confirm to existing analytics request data format.

* Fixed the headers in the analytics body.

* Migrations S3, Postgres to the accepted format for request in analytics

* Updated S3 action to be the query

* Migration completed for all plugins for analytics.

* Removed the old analytics event. Now sending only the new one.

* Ensuring all data is captured in S3 plugin request in case of error.

* Minor editing of firestore to ensure that the errors get caught by the plugin itself.

* Fixed test cases in Amazon S3

* Incorporated review comments.
2021-03-02 10:58:46 +05:30
Trisha Anand
31b20da347
Adding support for NULL value parameters in Prepared Statement. (#3255) 2021-02-27 18:59:51 +05:30
Sumit Kumar
63ff3c73fa
Fix execute on page load for api on app copy (#3150)
* first draft

* added fix without TC

* cleanup

* Update app/server/appsmith-server/src/main/java/com/appsmith/server/services/NewActionServiceImpl.java

Co-authored-by: Trisha Anand <trisha@appsmith.com>

* Update app/server/appsmith-server/src/main/java/com/appsmith/server/services/NewActionServiceImpl.java

Co-authored-by: Trisha Anand <trisha@appsmith.com>

* Update app/server/appsmith-server/src/main/java/com/appsmith/server/services/NewActionServiceImpl.java

Co-authored-by: Trisha Anand <trisha@appsmith.com>

* - add TC
- minor code refactor

* fix condition

* update clone page test

Co-authored-by: Trisha Anand <trisha@appsmith.com>
2021-02-24 10:21:03 +05:30
Shrikant Sharat Kandula
68bbc4fb28
Support server-side pagination for Firestore (#3128)
* POC for Firestore server-side pagination

* Load pagination information values from action configuration

* Get execution information for Firestore plugin

* Working implementation of pagination for Firestore

* Add tests for next and previou page navigations

* Require ordering to be set when paginating

* Remove commented code

* Don't report error on bad configuration

* Error out on usupported operation

Co-authored-by: Trisha Anand <trisha@appsmith.com>

* Move constant indices to constant fields

* Use executeParameterized instead of execute

Co-authored-by: Trisha Anand <trisha@appsmith.com>
2021-02-24 10:20:08 +05:30
Trisha Anand
e5574c1945
Support Prepared Statements in Postgres (#2967)
* Pushing minor editor form changes to ensure that prepared statement could be turned off.

* Code refactor to do variable substitution in PluginExecutor instead of action service.

* WIP : Prepared Statement handling in psql plugin

* WIP Prepared Statements.

* Working version of prepared statements

* Quote trimming added for post preparing sql statements. Now the unprepared statements and prepared statements do not require edits.

* Fixed existing test cases failing.

* Code formatting.

* Super minor code cleanup.

* Added migration for the existing postgres actions.

* Fixed failing test cases in ActionServiceTest.

* Minor change in the text for turning on and off prepared statements in the postgres query pane.

* Added test cases for prepared statement.

* Some minor comments for code readability

* Moved Prepared Statement setting from Action Configuration to Plugin Specified Templates since this setting does not make sense for all the DB plugins.

* Added function level comments

* Update app/server/appsmith-interfaces/src/main/java/com/appsmith/external/helpers/SqlStringUtils.java

Co-authored-by: Arpit Mohan <mohanarpit@users.noreply.github.com>

* Update app/server/appsmith-interfaces/src/main/java/com/appsmith/external/helpers/SqlStringUtils.java

Co-authored-by: Arpit Mohan <mohanarpit@users.noreply.github.com>

* Incorporated review comments.

* Fixed compile time error.

Co-authored-by: Arpit Mohan <mohanarpit@users.noreply.github.com>
2021-02-18 18:33:27 +05:30
Piyush Mishra
74b013d909
Encode params toggle (#3006)
* Makes client side changes to support actionConfiguration.encodeParamsToggle setting.
* Add migration code.

Co-authored-by: Sumit Kumar <sumit@appsmith.com>
Co-authored-by: Arpit Mohan <mohanarpit@users.noreply.github.com>
2021-02-16 20:31:35 +05:30
Nidhi
afc329fd7b
Added grant type Authorization code to OAuth2 (#2992)
Co-authored-by: Piyush <piyush@codeitout.com>
2021-02-16 17:58:03 +05:30
Sumit Kumar
4df595417f
return url on file create and fix image/video file upload issues with amazons3 plugin (#3012)
1. Return url on file create.
2. Fix image/video upload/download.
3. Change error msg format to directly print error msg without adding any prefix sentence.
2021-02-12 16:01:26 +05:30
Nidhi
8823f9d407
Added client credentials grant type for OAuth2 (#2649)
* Added client credentials grant type for OAuth2

Co-authored-by: Piyush <piyush@codeitout.com>
2021-02-11 17:58:06 +05:30
Sumit Kumar
e9e30d1fa4
Enable toggle for params encoding (#2968)
Enable toggle for params encoding
1. Add toggle param to ActionConfiguration class.
2. Add TCs to test toggle on/off/null.
2021-02-11 11:02:29 +05:30
Shrikant Sharat Kandula
ed1c926c8a
Add datasource structure support for DynamoDB (#2919) 2021-02-10 13:28:35 +05:30
Nidhi
c0e44d0cd9
Added null check for error messages (#2922)
* Added null check for error messages

* Added a generic null check for future null pointers from other sources.
2021-02-09 15:00:22 +05:30
Sumit Kumar
e6b77a1299
Stop logging some AppsmithPluginException to Sentry (#2351)
1. Move package  appsmith-interfaces/src/main/java/com/appsmith/external/pluginExceptions-> appsmith-interfaces/src/main/java/com/appsmith/external/exceptions/pluginExceptions
2. Move enum AppsmithErrorAction from appsmith-server/src/main/java/com/appsmith/server/exceptions/AppsmithError.java -> appsmith-interfaces/src/main/java/com/appsmith/external/exceptions/AppsmithErrorAction.java, so that both plugin exceptions and server exceptions could use the same enum.
3. Log exception based on the error action defined for each exception.
2021-02-04 15:24:30 +05:30
Trisha Anand
9e0f36a6f2
Improve Server thrown Error Messages' language (#2705)
* Improve Error Messages

* Added naming convention expansion for action name in the error

* Fixed failing test case assertion.

* Minor formatting.
2021-01-25 18:50:32 +05:30
dependabot[bot]
e781ceb30a
Bump jackson-databind in /app/server/appsmith-interfaces (#2652)
Bumps [jackson-databind](https://github.com/FasterXML/jackson) from 2.9.10.5 to 2.9.10.7.
- [Release notes](https://github.com/FasterXML/jackson/releases)
- [Commits](https://github.com/FasterXML/jackson/commits)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-01-21 10:48:01 +05:30
Nidhi
e6a0b00a25
Added Oauth2 functionality for REST APIs (#2509)
* Added Oauth2 functionality for REST APIs

* Encrypted response

* Missed file

* Review comments and tests

* Removed broken test
2021-01-15 16:41:13 +05:30
Shrikant Sharat Kandula
d5e0fb18d8
Add migration to set isEncrypted field where missing (#2332) 2020-12-23 15:35:45 +05:30
Shrikant Sharat Kandula
c7f330c4c7 Missing isEncrypted should mean a true value 2020-12-23 14:23:03 +05:30
Shrikant Sharat Kandula
cfcd7aa0bb
Fix Firestore datasources not encrypting secret key JSON when editing (#2296)
* Fix encrypted field not being ignored in JSON

* Don't mask error in decrypting

* Revert masking of error in decrypting
2020-12-21 17:43:15 +05:30
Nidhi
e3cf285d1e
Fixed encryption related bugs for empty/new datasource (#2287) 2020-12-21 10:41:57 +05:30
Nidhi
5a36d17f7a
Fixed encryption related bugs for empty/new datasource (#2272) 2020-12-18 16:13:01 +05:30
Nidhi
a00c144e85
Subclassing authentication (#2215)
* Sublcassing authentication

* Removed TODO

* Review changes
2020-12-17 21:38:52 +05:30
Trisha Anand
2062c60ca3
Moved all the scheduling of the plugin executions to bounded elastic instead of elastic. (#1931) 2020-11-26 17:50:43 +05:30
Shrikant Sharat Kandula
74cd362057
Firestore Integration (#1799)
* Adding the skeleton for Firestore integration

* Adding the datasource & query editor forms

Also adding the database changelog for the firestore plugin

Commenting out the firestore.close() connection because that causes issues with multiple Firestore tenants running in the same JVM.

* Adding the code for fetching the structure of collections from Firestore

* Use single document path field for Firestore

* Fix potential NPE when datasource destroy timeouts

* Work in progress on collection level ops for Firestore

* Get documents in a collection now works

* Add collection level querying support

* Mild refactoring

* Fix NPE when some fields are missing

* Hide clientJSON as a password field for Firestore

* Make collection level querying reactive

* Make reactive

* Validate before connecting

* Add tests for all supported methods in Firestore

* Fix forms for Firestore with hidden fields

* Hide limit and order by fields when not needed

* Restore log entry deleted by mistake

* Use S3 URL for Firestore/Firebase logo

* Add comments detailing why some code is commented

* Make parsing JSON reactive and fix subscribe calls

* Fix reactive scheduler

Co-authored-by: Arpit Mohan <arpit@appsmith.com>
2020-11-23 18:42:33 +05:30
Nidhi
c7efe55c9c
Fixed timeout error message, added new type of error for plugin timeout (#1519)
* Fixed timeout error message, added new type of error for plugin timeouts

* Switched error code and added test for a secondary StaleConnectionException
2020-11-04 12:56:52 +05:30
Prashant Chaubey
bf69c7d66b
Adding basic structure for plugin integrating with Redis (#1085)
Co-authored-by: nitesh261193 <nitesh261193@gmail.com>
2020-10-22 13:26:58 +05:30
dependabot[bot]
668c8e9c1c
Bump junit from 4.11 to 4.13.1 in /app/server/appsmith-interfaces (#1161)
Bumps [junit](https://github.com/junit-team/junit4) from 4.11 to 4.13.1.
- [Release notes](https://github.com/junit-team/junit4/releases)
- [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.11.md)
- [Commits](https://github.com/junit-team/junit4/compare/r4.11...r4.13.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-10-13 14:33:50 +05:30
Shrikant Sharat Kandula
13ddcc0cc9
Upgrade pf4j & test containers and fix plugin tests (#1156) 2020-10-13 13:42:14 +05:30
Shrikant Sharat Kandula
4f3de3ab9f
Datasource structure support for MongoDB (#641)
* Added structure for MongoDB datasources

* Fixed tests for MongoDB template queries
2020-10-01 10:41:29 +05:30
Shrikant Sharat Kandula
75ba90928e
Add datasource structure caching and MySQL structure support (#553)
* 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
2020-09-17 13:59:46 +05:30
Shrikant Sharat Kandula
6c7e45d010
Add a connection type variable for Plugin implementations (#531)
* 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
2020-09-14 20:36:47 +05:30
Shrikant Sharat Kandula
3f5930e52e
Add datasource structure support for DB plugins (#523)
* 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
2020-09-14 18:59:11 +05:30
Shrikant Sharat Kandula
b511c3ada9
Change return type of plugin execution to be more specific (#247) 2020-08-10 14:41:32 +05:30
Shrikant Sharat Kandula
dfcabab4cc
Handle stale database connection from datasources (#151)
* 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
2020-07-24 12:18:25 +05:30
Trisha Anand
fd0f23b9cc
Database credentials encryption in MongoDB (#80)
* 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.
2020-07-14 14:45:08 +05:30
Trisha Anand
8734067cad
Resolving the dependabot vulnerabilities. (#69) 2020-07-09 21:12:16 +05:30
Shrikant Kandula
3217daab14 Fix Mustache rendering to work on object fields directly 2020-06-25 09:58:20 +00:00
Trisha Anand
0603da29ee User test - Add request URL and http method to the execution result 2020-06-19 16:24:58 +00:00
Trisha Anand
73757c3425 Merge branch 'release' into feature/acl-spring-object
# Conflicts:
#	.gitignore
#	appsmith-plugins/mongoPlugin/plugin.properties
#	appsmith-plugins/postgresPlugin/plugin.properties
#	appsmith-plugins/rapidApiPlugin/plugin.properties
#	appsmith-plugins/restApiPlugin/plugin.properties
#	appsmith-plugins/restApiPlugin/src/main/java/com/external/plugins/RestApiPlugin.java
#	appsmith-server/src/main/java/com/appsmith/server/constants/FieldName.java
#	appsmith-server/src/main/java/com/appsmith/server/repositories/ActionRepository.java
#	appsmith-server/src/main/java/com/appsmith/server/services/ActionServiceImpl.java
#	appsmith-server/src/main/java/com/appsmith/server/services/DatasourceContextServiceImpl.java
#	appsmith-server/src/main/java/com/appsmith/server/services/DatasourceServiceImpl.java
#	appsmith-server/src/test/java/com/appsmith/server/services/ActionServiceTest.java
#	appsmith-server/src/test/java/com/appsmith/server/services/ApplicationServiceTest.java
#	appsmith-server/src/test/java/com/appsmith/server/services/LayoutServiceTest.java
#	appsmith-server/src/test/java/com/appsmith/server/services/PageServiceTest.java
#	build.sh
2020-06-12 19:14:31 +05:30
Arpit Mohan
bbd33c2968 Removing the query field in ActionConfiguration and using String body as the field to store the query
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.
2020-06-09 12:12:27 +00:00
Trisha Anand
6475be63d1 Baseline code added for cascading the org level permissions to applications, pages and eventually actions. 2020-05-27 14:36:57 +00:00
Arpit Mohan
fb9e9fbf4c Request body and header in Action Execution Response 2020-05-14 02:08:46 +00:00
Trisha Anand
5829a92998 Merge branch 'release' into feature/acl-spring-object
# Conflicts:
#	appsmith-server/src/main/java/com/appsmith/server/services/ActionServiceImpl.java
2020-05-13 23:37:31 +05:30
Shrikant Kandula
9c48f42990 Rename ActionExecutionResult.shouldCacheResponse -> isExecutionSuccess. 2020-05-12 18:25:49 +05:30
Trisha Anand
957116409d Resolved the review comments. Changed the structure of the DTO returned. Added the userPermissions as part of the base domain leading to this field always computed before returning any object to the user. 2020-05-07 10:49:48 +00:00
Trisha Anand
2d1fe9d8b4 Merge branch 'release' into feature/acl-spring-object
# Conflicts:
#	appsmith-interfaces/src/main/java/com/appsmith/external/models/SSHPrivateKey.java
#	appsmith-server/src/main/java/com/appsmith/server/filters/AclFilter.java
#	appsmith-server/src/main/java/com/appsmith/server/services/CurlImporterService.java
#	appsmith-server/src/test/java/com/appsmith/server/services/CurlImporterServiceTest.java
2020-04-28 18:13:06 +05:30
Shrikant Kandula
23bd4e1722 Add NO_SSL option to SSL authType to turn off SSL explicitly. 2020-04-28 12:31:34 +00:00
Shrikant Kandula
89d04f11e7 Merge branch 'bug/show-password-in-datasource-form' into 'release'
Show passwords in datasource forms.

See merge request theappsmith/internal-tools-server!308
2020-04-28 09:34:46 +00:00
Shrikant Kandula
1dbb98e1e8 Fix cURL import bugs with new cURL command parser 2020-04-28 09:09:03 +00:00
Shrikant Kandula
0a05036f9f Show passwords in datasource forms. 2020-04-28 11:12:03 +05:30
Shrikant Kandula
e0880c7d31 Support separate default database for MongoPlugin, besides authDatabase. 2020-04-23 11:09:02 +00:00
Trisha Anand
a8f32d8b2a Merge branch 'release' into feature/acl-spring-object
# Conflicts:
#	appsmith-server/src/main/java/com/appsmith/server/services/MarketplaceService.java
2020-04-23 14:45:40 +05:30
Trisha Anand
4cde1413fc Provider credential steps is not a write only property. It must be readable. 2020-04-21 13:45:28 +05:30
Trisha Anand
373c9ac738 Code formatting corrected. 2020-04-20 18:17:25 +05:30
Trisha Anand
6be0b7ae23 Merge branch 'release' into feature/acl-spring-object
# Conflicts:
#	appsmith-server/pom.xml
#	appsmith-server/src/main/java/com/appsmith/server/migrations/DatabaseChangelog.java
#	appsmith-server/src/main/java/com/appsmith/server/repositories/BaseRepositoryImpl.java
#	appsmith-server/src/main/java/com/appsmith/server/services/LayoutActionServiceImpl.java
#	appsmith-server/src/test/java/com/appsmith/server/services/OrganizationServiceTest.java
2020-04-20 18:13:55 +05:30
Shrikant Kandula
08b7f51d5d Datasource API cleanup and better error reporting 2020-04-17 07:27:56 +00:00
Shrikant Kandula
2dbf9d1c6b Test API for data sources 2020-04-15 10:02:09 +00:00
Shrikant Kandula
781eec0d24 Add a boolean field for enabling/disabling SSH Proxy on datasources. 2020-04-13 07:22:29 +00:00
Shrikant Kandula
abd9235360 Richer plugin validations 2020-04-10 09:59:50 +00:00
Shrikant Kandula
42d0060ecd Upgrade pf4j-spring to 0.6.0 so we can consistently use pf4j 3.2.0. 2020-04-09 19:55:58 +05:30
Shrikant Kandula
91dd8bf5c3 Fix old enums being used in Postgres plugin. Build failed because of this. 2020-04-08 12:45:18 +00:00
Shrikant Kandula
edf4043430 Merge branch 'bug/datasource-enum-mismatches' into 'release'
Fix Datasource data structure to be inline with UI

See merge request theappsmith/internal-tools-server!268
2020-04-08 12:32:57 +00:00
Shrikant Kandula
1b75be0fe3 Fix Datasource data structure to be inline with UI 2020-04-08 12:32:56 +00:00
Shrikant Kandula
0ad15b4cb6 Fix: Duplicate key error when reusing the name of a deleted application 2020-04-08 12:09:41 +00:00
Shrikant Kandula
ff6b0ce6bc Increase restapi client buffer size from 256KB to 10MB. 2020-04-07 11:20:46 +00:00
Trisha Anand
5911234276 To ensure that special characters like "\n", "\t", etc are preserved in the request json body, convert the json string into object. 2020-04-03 14:27:10 +00:00
Arpit Mohan
b7b7328c3f Merge branch 'release' into feature/acl-spring-object 2020-04-02 13:53:31 +05:30
Trisha Anand
f882ffcdf3 Fetching the providers from the Marketplace using webclient. Introduced a temporary end point to support the new source for Providers 2020-04-01 18:53:39 +00:00
Shrikant Kandula
1f524827b9 Datasource CRUD APIs 2020-04-01 08:50:36 +00:00
Arpit Mohan
995bfd0bbd * Adding CustomRepository interfaces and implementations to all the domain objects in the classpath
* Adding generic get(Multivalue<String, String> params) implementation to the BaseService. Now all the domain obejcts can simply leverage this base implementation for get queries out of the box for all the fields.

* IMP: For some reason, the query by example has stopped working across the board. Even the super implementation in SimpleReactiveMongoRepository doesn't work. No idea why this is happening. For the time being, have moved to Criteria queries for the get request.
2020-04-01 10:00:18 +05:30
Arpit Mohan
4725421cba Merge branch 'release' into feature/acl-spring-object 2020-03-19 11:54:36 +05:30
Trisha Anand
0b7b4716db Credential steps should only be written but not read. 2020-03-18 14:40:02 +05:30
Trisha Anand
fad606a156 Updated Provider to include fields to help with display and sort order 2020-03-18 14:21:38 +05:30
Arpit Mohan
1f35bd6a07 Adding the policy hierarchy graph and the lateral policy graph
These graphs help us map policies that are inherited from the parent and also lateral policies that are assigned to the users given that the user has a particular permission. Currently, the hierarchy has been defined for org & application. Need to cascade it to more documents such as pages & actions.
2020-03-16 10:46:28 +05:30
Arpit Mohan
a892ee90b5 Merge release branch 2020-03-13 12:47:16 +05:30
Arpit Mohan
2da4727cbd Removing document version from all the Mongo documents.
Also adding Origin header to the user invite flow so that we can send the correct links to the user
2020-03-11 18:18:10 +05:30
Arpit Mohan
1475d9124a Fixing all the test cases for OrganizationService
We still need to add a lot more test cases to ensure that no functionality has broken. But this is a start in the right direction.
2020-03-05 19:35:24 +05:30
Arpit Mohan
c813678f49 Adding the AclPermission enum to track all possible permissions globally
Also moving the argument AclPermission to the custom Repository interface level. This is to ensure that all the service functions can invoke the same repository function with different permissions based on their requirements.
2020-03-05 15:33:41 +05:30
Arpit Mohan
c5e8f3bef4 Removing unnecessary and extra code in AclFilter, MongoAspect and CustomWebExpressionHandler 2020-03-04 19:12:34 +05:30
Arpit Mohan
0914acdca6 Adding default principal for anonymous Users in SecurityConfig
Also, hard-coding the document fields in BaseRepositoryImpl criteria queries.
2020-03-04 18:57:46 +05:30
Arpit Mohan
7019bae082 Adding policy to the document object instead of the user
The login has broken and all users are being treated as un-authenticated users
2020-03-04 18:57:46 +05:30
Arpit Mohan
3a1673dfca Adding QueryDsl to the appsmith-server and appsmith-interfaces modules
This will generate the annotated classes so that we can refer to the fields easily and scalably.
2020-03-04 18:57:46 +05:30
Arpit Mohan
249bbbde39 Adding the field shouldCacheResponse to the ActionExecutionResult to make the response caching generic across various plugins 2020-02-25 11:36:02 +00:00
Trisha Anand
6109bd4b6c Added valueOptions to store the permitted values for a key (which is being sent by rapidApi today) 2020-02-21 11:16:07 +05:30
Trisha Anand
977bac62dc Added hashValue and scraperid to Template 2020-02-20 19:18:48 +05:30
Trisha Anand
1795be3c76 Added route parameters to action configuration to handle the scenario of rapid api putting variables in the path 2020-02-19 17:47:26 +05:30
Trisha Anand
634a625906 1. Adding provider plan subscribed to and list of all the plans to Provider
2. Curl Importer should call create action instead of saving it directly so that all the defaults can be set up properly.
2020-02-17 10:08:35 +00:00
Trisha Anand
96cd15e9ce Extended the ActionConfiguration to accept rest api body in the form of key-value for form-data input. Also extended Property to include fields which would help the user in configuring the API (like description, mandatory, etc.) 2020-02-14 13:18:26 +05:30
Trisha Anand
2e11a5c2d5 Added datasource configuration to the provider to support the provider level configurations in rapid api 2020-02-14 06:32:34 +00:00
Trisha Anand
8661f71a80 Mock apis for 3P frontend work 2020-02-07 09:05:14 +00:00
Arpit Mohan
ffc7328e13 Renaming isPaginated to PaginationType to support different types of pagination on the frontend
If the API is paginated via the table's page number, then the next and prev URLs in the action don't play any role. Those fields are only required when the paginationType is of type URL. In all other scenarios, the action is executed normally.
2020-02-05 14:41:53 +05:30
Trisha Anand
17f4a6f2e8 Handle server side pagination in action 2020-01-28 14:40:59 +00:00
Trisha Anand
670ca4cb7e Added log for execute action 2020-01-15 09:13:27 +00:00
Trisha Anand
f4a2a73abe In case of non json results, set the result body as string, otherwise parse the json and then store it as jsonNode 2020-01-14 09:48:43 +00:00
Trisha Anand
b16909de61 JS functions can now be stored to an action. 2019-12-05 09:19:45 +00:00
Arpit Mohan
ca4ff6a28b Fixing action execution timeout bug which was defaulting the execution timeout to 0 instead of 10.
Now if we provide a null / negative value to action execution timeout, it'll default to 10s
2019-11-26 18:19:12 +05:30
Trisha Anand
0fd6351a76 Added timeout on the plugin execution.
Next TODO : Make the timeout duration configurable
2019-11-26 11:34:27 +00:00
Trisha Anand
31cf94f08e 1. Added datasource validator function in the plugin interface which simply returns true for all the current plugins.
2. Added static method getPluginExecutor as a util function which removes duplicate code from across different files.
2019-11-14 08:50:02 +00:00
Arpit Mohan
bcda3f0feb Renaming all the references of resource to datasource
This renaming is reflective of the entity and it's potential values in the future.
2019-11-06 16:25:08 +05:30
Arpit Mohan
3622d8b0d3 Converting actionConfiguration to a string to extract mustache keys
Also making jsonPathKeys a read-only field. Cannot be written via the API.
2019-11-05 10:40:09 +00:00
Trisha Anand
84837fe57f Mongo Plugin works here. Barring the scenarios where the query json contains special characters in keys ($, .) it works properly. 2019-10-18 08:27:19 +00:00
Arpit Mohan
3a9f344a51 Removing plugins from appsmith-interfaces module 2019-10-17 09:25:58 +05:30
Trisha Anand
e1d59ca3a6 Multi data source support for plugins using Resource Context 2019-10-11 10:32:18 +00:00
Trisha Anand
8658df95a9 All action executions now return object of type ActionExecutionResult. RestApiPlugin returns the same object which contains statusCode, headers and body. 2019-09-30 18:17:35 +00:00
Trisha Anand
566a245451 Segment & Rollbar Integration 2019-09-25 16:20:51 +00:00
Trisha Anand
bec8b2e0a1 Adding the docker-compose up command to the build
This should ideally run the mongo-seed container to restore the DB before each run
2019-09-24 12:14:41 +00:00
Arpit Mohan
0edc0f6363 Adding the executeAction API in the ActionController.
Also changed the interface for the PluginExecutor to include the resourceConfig and ActionConfig as well.
2019-09-17 12:18:23 +00:00
Arpit Mohan
b3c987a9f9 Convert the project into a multi-module structure
We are moving to a multi-module structure so that different parts of the codebase can be exposed to the public while others can remain private. Using pf4j for plugin framework.

Also adding a build script `build.sh` which compiles the code and creates the `dist` folder for distribution purposes. Now we can build the code via

```
$ ./build.sh -DskipTests
```
2019-09-16 11:21:57 +00:00