Commit Graph

566 Commits

Author SHA1 Message Date
Anagh Hegde
cef530e835
Add binding query to the suggested widget to improve the experience (#6016)
* Add binding query to the suggested widget to improve the experience

* Fix test failures

* Add comments and change as per review

* Move the query template to enum class

* Change Test cases as per review

* Remove unused methods from the test class

* Remove commented code

* Use proper attributes in binding query

* Refactor suggestWidget method to support node

* Add unit tests
2021-07-23 14:29:27 +05:30
Anagh Hegde
c82c518f60
[Bug] - Add check for duplicate name issue while creating mock data set (#6039)
* Add check for duplicate name issue while creating mock data set

* Fix Test failures
2021-07-23 13:34:03 +05:30
Abhijeet
9633d1e1c3
Add autogenerate field in datasource structure for each column (#6018)
* Added field to autogenerate values in DB column

* Added comment and refactor

* Autogenerate field update according to names instead of type for ArangoDB
2021-07-23 09:00:32 +05:30
Abhijeet
a6c357ac16
Removed support for S3 and GSheets for generate CRUD page (#6076)
* Removed support for S3 and GSheets for now as FE code does not have support for these plugins yet

* Commented TCs for S3 and GSheets
2021-07-22 19:12:32 +05:30
Abhijeet
886ed672ca
Extend backend support for S3 and Google Sheets plugin for generating page from DB table feature (#5997)
* Comments update

* S3 plugin support added

* Support for GSheet

* GSheet and S3 support, TCs update

* TC added for MongoDB datasource

* ilike opertor for SQL fixed

* Resolve merge conflicts

* Seperate template page for postgresql and other SQL datasources as there are minor changes in action bodies

* Added ListFiles query as on page load action, Insert all the columns from user's table in SelectWidget

Co-authored-by: Nikhil Nandagopal <nikhil.nandagopal@gmail.com>
2021-07-22 14:24:22 +05:30
Bhavin K
7259d1e908
Bug/mustache binding extra space (#5587)
Table data was not populating when extra space inside the mustache binding, This is now fixed for list and table widget

* removed return statements from computed values

* list widget responce update

* table data handled return, added migration

* removed unused function

* updatetd rowBinding string generator

* fix failing cypress test

* fix cypress tests
2021-07-22 14:13:58 +05:30
Nayan
5261f782df
Fixed comment missing issue when user role is changed (#5898)
* -fixed comment missing issue when user role is changed

* WIP: add test for policy utils

* -added test for policy utils comment permission when users are added or removed

* -removed unused code

* -removed public access modifier for an internal function

* -add test to verify comment thread policy updated when user role changed in organization

* -add tests for add user and remove user from organization to test comment thread policies
2021-07-21 12:30:34 +06:00
Anagh Hegde
ed7e4457fe
Bug - Fix page order sorting (#5971)
* Use the order from Application object

* Fix the bug in test cases
2021-07-20 09:09:20 +05:30
Nayan
5185a0af5c
Log analytics event when comment created (#5953)
* -log analytics event when comment created

* -mocked analytics for comment tests

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

Co-authored-by: Shrikant Sharat Kandula <shrikant@appsmith.com>

Co-authored-by: Shrikant Sharat Kandula <shrikant@appsmith.com>
2021-07-19 20:45:37 +06:00
Anagh Hegde
d5d6c3fa9c
Feature/page order API refactor (#5799)
* Refactor Page order API - Instead of the order filed use the Order persistency in Array offered by Mongo

* Add migration script to remove the order filed from the Application Pages

* Change unit tests as per the new implementation

* Fix indentation issues

* Compute pages based on the view mode

* Removed order field in response and changed the page order API response to List of pages instead of the application object

* Remove the Order filed from the Response class

* Use the $push instead of $addToSet to maintain order of pages in array
2021-07-19 15:12:29 +05:30
Nayan
8fcbb6e4c1
Add a bot thread when someone adds first comment or tags someone is the comment for the first time (#5521)
* resolved conflicts

* -fixed some issues in PR

* -used sequence in generating thread number

* -refactored the create thread method

* -refactored comment service

* -add bot reply to the first comment thread of an user

* -added a new bot thread when user resolves the first bot thread

* -handle the case when user data can be absent

* -add organization id and widget type to comment and comment threads

* -resolved conflicts

* -mark appsmith bot username as a tagged user in the bot comment

* -turn a private thread to a public thread when someone is tagged in it

* -updated as per the review comments

* -fixed compile error in unit test

* -updated as per PR review comments

* -removed commented code
2021-07-15 23:45:08 +06:00
Anagh Hegde
99a06728d4
Suggest List of possible widgets and add exception handling (#5800)
* Add try catch block to handle the data conversion exception

* Suggest widget only in edit mode

* Add JsonNodeType to the widget suggestion logic

* Use ClassCastException instead of generic exception

* add tests for the array data type

* Suggest list of possible widgets instead of one

* Use constant in if condition to avoid possible NPE
Fix typo
2021-07-14 22:25:13 +05:30
Nayan
45198c7d68
Increased maximum image size to be uploaded as profile picture (#5641)
* -increased max image size to upload as profile picture

* -removed unnecessary changes

* -show message on maximum allowed file size
2021-07-09 15:38:14 +06:00
Rishabh Rathod
c27974b2a2
Replace pluginName with packageName in mockDB creation (#5720)
* replace pluginName with packageName in mockDB creation

* Replace pluginName with packageName

Co-authored-by: Anagh Hegde <anagh@appsmith.com>
2021-07-08 16:03:41 +05:30
Anagh Hegde
0154017836
Refactor Get mock-data set API (#5620)
* Call cloud services to fetch mock datasets

* Call cloud services to fetch mock datasets

* Change the MockData Config,

* Remove unused import statements and fix small indentation issues

* 1. Moved the mock data creation and fetching to a separate class
2. Added plugin type to mockdata class
3. Used pluginName to identify the db type
4. Removed the block call mock data creating method
5. Added unit tests for the mockdata

* 1. Removed unused field from contract and
2. Updated the url to cloud service

* 1. renamed the field of mockdata contract
2. Updated the test cases

* using new mock datasources apis

* 1. Added the Cloud Service release end point to env variable

Co-authored-by: Pranav Kanade <pranav@appsmith.com>
2021-07-08 11:29:11 +05:30
Abhijeet
07944f214b
Provide API for MongoDB datasource to generate page from DB table feature (#5590)
* Template application updated to include separate page for MongoDB as a datasource

* Support for mongoDB as datasource added

* Added comments

Co-authored-by: Nikhil Nandagopal <nikhil.nandagopal@gmail.com>
2021-07-08 07:18:23 +05:30
Nayan
eb557035b2
Added new API to get unread comment thread count (#5429)
* -added new API to get unread comment thread count

* -changed query to get unread comments so that it only searches where user has permission

* -added unit test for unread comment thread count

* -improved formatting

* -updated as per PR review
2021-07-07 13:00:33 +06:00
Abhijeet
17006ffe0e
Minimise DB calls to throw duplicate app name error message (#5625)
* Minimise DB calls to throw duplicate error message for updating application name
2021-07-06 22:20:47 +05:30
Trisha Anand
d1ef21dce3
Reliable change application access from public to private & vice versa (#5530)
* Changing application public/private view can no longer be cancelled (for example by client timeout, etc.)

* Update test to only read the datasource used in the application

* Incorporated review comment

* Comment update
2021-07-06 21:49:35 +05:30
Sumit Kumar
d68ca405a8
Feature: integrate ArangoDB plugin (#5518)
* integrate arangoDB plugin.

Co-authored-by: Ming Fang <mingfang@mac.com>
Co-authored-by: Automated Github Action <automated@github.com>
Co-authored-by: Trisha Anand <trisha@appsmith.com>
2021-07-06 18:40:19 +05:30
Anagh Hegde
027603697a
Suggest widget after executing Action (#5574)
* Add widget suggestion to query execution flow

* Change the logic for Chart widget suggestion

* Add tests for the all the suggested widgets

* Added enum class to store widget types
2021-07-06 18:15:48 +05:30
Nayan
13fec4e30e
Update email notification template when there is comment (#5392)
* WIP: updated the email template

* -updated the comment link in email as per the user role

* -rebased from release

* Update app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/EmailEventHandler.java

Co-authored-by: Shrikant Sharat Kandula <shrikant@appsmith.com>

* -updated the template as per review comment

* -removed unused email template file

* -fixed compile error

* -checked application policy instead of role when sending email for comment

* -minor changes as per PR review comment

Co-authored-by: Shrikant Sharat Kandula <shrikant@appsmith.com>
2021-06-30 20:46:56 +06:00
Abhijeet
6ec6f9578c
API for generating a page with UI based on the structure of a given database table (#5269)
* Keymapping, Clone actions from template application, Used exported application JSON file as template app

* Delete references of widgets from action config if extra widgets not required

* Separate API added when pageId is not present with the client

* Added TCs

* Update in regex, enable reqArgsConstructor, separate DTO for CRUD page
2021-06-24 14:58:57 +05:30
Nayan
9a247f3e78
Fix bug where some fields are missing for notifications from the API (#5336)
* -set createdAt and type fields in notification
-add threadId in response for comment

* -fixed bug with unread notification count
2021-06-24 14:35:30 +06:00
Nayan
e52680fb1f
Feature/implement comment thread subscriber (#5261)
* -send email to users who are subscribed to a thread only

* -fixed null pointer exception while set subscriber in create thread

* -updated as per PR comments and review
2021-06-23 17:24:57 +06:00
Abhijeet
7fc04f043f
Error message when updating duplicate application name modified to give more contextual information (#5341) 2021-06-23 13:08:12 +05:30
Anagh Hegde
32ecffbf8f Merge remote-tracking branch 'origin/feature/page-order-api' into feature/page-order-api 2021-06-18 22:40:43 +05:30
Anagh Hegde
9ad742e97e Change the test method name to more meaningful,.equals for boolean comparision, fix indentation 2021-06-18 22:40:16 +05:30
Anagh Hegde
82a1289f45
Merge branch 'release' into feature/page-order-api 2021-06-18 15:15:48 +05:30
Anagh Hegde
e02e572df7 Change the logic to have check for the order of all the pages 2021-06-18 14:53:33 +05:30
Anagh Hegde
bd3369dd03 Remove * import statements 2021-06-18 10:25:36 +05:30
Nayan
a1a4f0ef3f
Fature/add pagination in notifications (#5096)
* -added pagination to notifications API

* -add unit tests for notification pagination

* -added unread count in get notifications API

* -moved notification creations to notification service from comment service

* -add repository method to mark a notification as read

* -added repository to update isRead by for username

* -add API to mark notification as read

* -addd application id and application name in notification

* -save application id and name in notification when creating notification for comment and comment threads

* -added page id, from user information in notifications

* -fixed failing unit test due to dependency error

* -removed unused imports

* -extended base controller in notification controller

* - introduced pagination based on before created data instead of offset based pagination

* -moved application id, name and page id inside comment from notification

* -moved author information from notification to comment thread

* -return data from notification service instead of the response object in the mark read or unread API
2021-06-16 23:24:03 +06:00
Anagh Hegde
e119bd716c Ignore the order of the page while checking the published and edited pages test 2021-06-16 21:12:18 +05:30
Anagh Hegde
8296f416cc Merge remote-tracking branch 'origin/feature/page-order-api' into feature/page-order-api 2021-06-16 14:29:37 +05:30
Anagh Hegde
2ccc1ef1f2 Change the test scenario 2021-06-16 14:29:03 +05:30
Anagh Hegde
e748623e57
Merge branch 'release' into feature/page-order-api 2021-06-16 13:56:52 +05:30
Anagh Hegde
5a8ac3fd33 1. Fix failing unit tests for the page reorder 2021-06-16 11:21:19 +05:30
Anagh Hegde
3e1702b4f9 1. Add migration logic
2. Add order while creating pages
2021-06-16 09:12:53 +05:30
Abhijeet
7c430303aa
Allow only organization admins to export application (#5085)
* Added permission export:applications for admin role

* Only admins are allowed to export applications

Co-authored-by: Pranav Kanade <pranav@appsmith.com>
2021-06-15 18:18:21 +05:30
Anagh Hegde
9932f918f9 Use assertThat type of assertions and move the order initialization logic to migration 2021-06-15 10:03:39 +05:30
Anagh Hegde
1ca7a0cb20 Add test for page reorder and add order to the response 2021-06-14 15:34:07 +05:30
Shrikant Sharat Kandula
8db64e6355
Merge pull request #4980 from appsmithorg/feature/send-email-on-comment
Feature/send email on comment
2021-06-10 15:20:34 +05:30
Abhijeet
0246563bd2
Bugfix for applications with MongoDB datasources authenticated with SRV string (#4944)
* Avoid updating authenticationDTO for mongo-plugin with SRV if the authentication object is already present
2021-06-10 10:52:23 +05:30
Nayan
b3bde4eb95 -organized imports 2021-06-08 15:52:25 +06:00
Nayan
ba4ea3a61b -fixed issue in unit test 2021-06-08 15:34:10 +06:00
Nayan
280155ac89 -added test for the email event handler 2021-06-08 14:43:21 +06:00
Nayan
5550c9310f -moved email sender to background task 2021-06-08 14:43:20 +06:00
Nayan
f9493a4bd2 -add unit test for utils 2021-06-08 14:43:19 +06:00
Nayan
db7363fac6 -Issue #4706 - send email when new comment added or comment thread resolved 2021-06-08 14:43:18 +06:00
Nayan
77940c0cfa
[Issue #3785][Bug] User names in organization management page are stale (#4702)
* [Issue #3785][Bug] User names in organization management page are stale

* -update name in userroles in background when there is a change in user
2021-06-02 15:56:52 +06:00
Nayan
78915301e3
[Issue #4572]-Allow users to leave an organization (#4634)
* [Issue #4572]-Added API to leave organisation by any user

[Issue #4572]-Add option for organization admins to leave an organization

* -add option to leave organization in frontend for non-admin users

* -updated the leave org endpoint path and HTTP method as per PR review

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

Co-authored-by: Shrikant Sharat Kandula <shrikant@appsmith.com>

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

Co-authored-by: Shrikant Sharat Kandula <shrikant@appsmith.com>

* -add cypress test and some minor changes as per PR comment

Co-authored-by: Shrikant Sharat Kandula <shrikant@appsmith.com>
2021-06-02 15:56:22 +06:00
Abhijeet
51addbc963
Feature/import-export-application (#4553)
* Decryption for dbauth, basic and OAuth datasources added in exported file

* All authentications for datasources included while exporting as deserialization is done through json file otherwise cast is throwing error

* Content-Disposition header implemented 

* MongoEscapedWidget names segregated for published and unpublished layout, to prevent overwrite while exporting

* Published pages and actions explicitly handled in cases where unpublished resources are deleted
2021-06-01 17:38:26 +05:30
Nidhi
5ddd58cdfd
Added optional audience and resource fields for oauth2 datasources (#4678)
* Added optional audience and resource fields for oauth2

* Review changes

* Don't show audience and resource fields by default
2021-05-27 21:53:59 +05:30
Nayan
caf7f3678c
[Issue #2689][Bug] Duplicate Accounts with Same Email - Field is Case… (#4529)
* [Issue #2689][Bug] Duplicate Accounts with Same Email - Field is Case Sensitive

Co-authored-by: Shrikant Sharat Kandula <shrikant@appsmith.com>

Co-authored-by: Nayan <83352306+nayan-appsmith@users.noreply.github.com>
Co-authored-by: Shrikant Sharat Kandula <shrikant@appsmith.com>
2021-05-26 15:25:48 +06:00
Nidhi
2bf1fbff04
Removed check for encryption since this is not handled manually anymore (#4673)
* Removed check for encryption since this is not handled manually anymore

* Removed migration for isEncrypted
2021-05-25 20:29:57 +05:30
Sumit Kumar
c156560313
[Bug] fix NPE (#4613)
* fix NPE
* add ip check for localhost
2021-05-21 13:47:51 +05:30
Arpit Mohan
b1d7258dcb
Adding support for multipart form data (#4547)
* Handling multipart form data in the CURL import flow

* Adding Cypress test for curl import with multipart/form-data

* Also fixing minor bug where the form values need not always be double-quoted
2021-05-19 10:48:51 +05:30
Shrikant Sharat Kandula
b1c523eef4 Fix flaky UserData test 2021-05-18 17:48:40 +05:30
Nayan
51dd6587cf
[Issue #2093]-show last used organizations first in home page (#4461)
* [Issue #2093]-show last used organizations first in home page

* -updated as per the comments in PR
2021-05-16 09:42:10 +06:00
Shrikant Sharat Kandula
27af947852
APIs for adding and removing reactions on comments (#4457)
* Add APIs for reacting and unreacting on comments

* Add tests for Reactions APIs

* Fix s/create/delete typo

Co-authored-by: Nidhi <nidhi@appsmith.com>

* Deletion is successful if more than one are deleted

Co-authored-by: Nidhi <nidhi@appsmith.com>
2021-05-13 12:52:43 +05:30
Trisha Anand
aa51040c99
Small housekeeping server side changes (#4245)
* Minor refactor datasource policy generation for easy re-use.

* Added simple widget name refactor test
2021-05-06 16:27:08 +05:30
Nidhi
6c0668e74d Tests for encryption 2021-05-06 13:36:37 +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
Rishabh Saxena
a0d2e8533d
Initialise comments (#3328)
* Initial scaffolding for comments CRUD APIs

* add actions

* add assets

* state management for existing comments and creating new

* add ui components

* add overlay comments wrapper to baseWidget

* add toggle comment mode button at editor header

* trigger tests

* Disallow commenting as someone else

* Add applicationId for comments

* lint

* Add overlay blacklist to prevent component interaction while adding comments

* Comment thread style updates

* Placeholder comment context menu

* Controlled comment thread visibility for making new comments visible by default

* Update comment type description

* Reset input on save

* Resolve comment thread button ui

* fix close on esc key, dont create new comment on outside click

* Submit on enter

* add emoji picker

* Attempt at adding a websocket server in Java

* CRUD APIs for comment threads

* Add API for getting all threads in application

* Move types to a separate file

* Initial commit for real time server (RTS)

* Add script to start RTS

* Fix position property

* Use create comment thread API

* Use add comment to thread API

* Add custom cursor

* Dispatch logout init on 401 errors

* Allow CORS for real time connection

* Add more logs to RTS

* Fix construction of MongoClient

* WIP: Real time comments

* Enable comments

* Minor updates

* Read backend API base URL from environment

* Escape to reset comments mode

* Set popover position as auto and boundary as scroll parent

* Disable warning

* Added permissions for comment threads

* Add resolved API for comment threads

* Migration to set commenting permission on existing apps

* Fix updates bringing the RTS down

* Show view latest button, scroll to bottom on creating a new comment

* Cleanup comment reducer

* Move to typescript for RTS

* Add missing server.ts and tsconfig files

* Resolve / unresolve comment

* Scaffold app comments

* Minor fixes: comment on top of all widgets, add toggle button at viewer header

* Reconnect socket on creating a new app, set connected status in store

* Retry socket connection flow

* Integration tests for comments with api mocks using msw

* Fix circular depependency

* rm file

* Minor cleanup and comments

* Minor refactors: move isScrolledToBottom to common hooks, decouple prevent interactions overlay from comments wrapper

* Use policies when pushing updates in RTS

* ENV var to set if comments are enabled

* Fix: check if editor/viewer is initialised before waiting for init action

* Add tests for comments reducer

* Revert "ENV var to set if comments are enabled"

This reverts commit 988efeaa69d378d943a387e1e73510334958adc5.

* Enable comments for users with appsmith email

* lint

* fix

* Try running a socket.io server inside backend

* Update comment reducer tests

* Init mentions within comments

* Fix comment thread updates with email rooms

* Minor fixes

* Refactors / review suggestions

* lint

* increase cache limit for builds

* Comment out tests for feature that's under development

* Add Dockerfile for RTS

* Fix policies missing for first comment in threads

* Use draftJS for comments input with mentions support

* fix fixtures

* Use thread's policies when querying for threads

* Update socket.io to v4

* Add support for richer body with mentions

* Update comment body type to RawDraftContentState

* fix stale method

* Fix mentions search

* Minor cleanups

* Comment context menu and thread UI updates

* revert: Scaffold app comments

* Yarn dependencies

* Delete comment using id api added

* Init app comments

* Add test for creating thread

* Api for delete comment with id

* Test comment creation response and policies

* Copy comment links

* Fix reset editor state

* Delete valid comment testcase added

* Delete comment TC : code refactor

* Don't allow creating comments with an empty body

* Pin comments WIP[]

* Ignore dependency-reduced-pom.xml files from VCS

* Cleanup of some dev-only files, for review

* Delete comment

* Update socket.io to v4 in RTS

* Pin and resolve comment thread object added in commentThread

* Pin and resolve comment thread object added in commentThread

* Update comment thread API

* Added creationTime and updationTime in comment thread response

* Added creationTime and updationTime in comment thread response

* Added human readable id to comment threads, fallback to username for null name in user document

* Refactor

* lint

* fix test, rm duplicate selector

* comment out saga used for dev

* CommentThread viewed status, username fallback for getName=null, username field added in pin & resolve status

* lint

* trigger tests

Co-authored-by: Shrikant Sharat Kandula <shrikant@appsmith.com>
Co-authored-by: Abhijeet <abhi.nagarnaik@gmail.com>
2021-04-29 16:03:51 +05:30
Trisha Anand
73c2b09dc4
[Bug Fix] : In case the table being renamed has mongo escaped fields, rename the table name in set keeping a track of these widgets as well (#4195) 2021-04-28 17:36:30 +05:30
Nidhi
8afac888c7 Merge branch 'release' of github.com:appsmithorg/appsmith into task/apply-encryption 2021-04-26 13:30:49 +05:30
Abhijeet
c11dab9673 Auto-generated-organization field added in organization DB to differentiate between user created and auto generated organization 2021-04-23 19:29:20 +05:30
Abhijeet
bb0516a495
Default counter for new datasource in organization should initiate at 1 (#4005)
* OrgId is added as a suffix to link datasource entry with orgId when creating document in sequenceDB.

* Each document entry in sequenceDB is linked to organization ID which is then used by the datasourceDB to generate default name. Testcase for testing default names to new datasources (#2212)

* Migration ChangeSet added to setup sequenceDB with organization ID in name field

* Optimization in string operation
2021-04-22 12:46:43 +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
eaa24ca894
[Bug Fix] : Fetch actions by id during refactor action name to solve IncorrectResultSizeDataAccessException for pages where duplicate action names exist (#4030)
* New dto for refactoring action name which includes actionId as well

* Refactor action name now also takes actionId as payload and fetches the action from db by id instead of name to solve for the scenario where the action names could be duplicated.

* Adding actionId to QP of action refactor API.

* WIP : test for asserting the bug fix

* WIP test

* Fixed the test case asserting refactoring works for an action when there are duplicate action names in the page.

Co-authored-by: Ashok Kumar M <35134347+marks0351@users.noreply.github.com>
2021-04-19 12:35:10 +05:30
Trisha Anand
4f8cf79041
[Bug fix] : Disallowing action creation with existing names from the page (#4015) 2021-04-16 16:13:03 +05:30
Abhijeet
6ea795e8a1
Autoscroll to invited organisation (#3945)
* Added organization slug to the invite Url, which is finally used by email template(#2359)

* Separate method to create email params. Welcome email url variable updated so as to be consistent with other email templates

* Unused enum emailType removed, importing of java.util.* removed as per suggestion
2021-04-15 16:46:46 +05:30
Trisha Anand
9b49308abe
Adding dependency relationship to plugins (#3997)
* Added dependencies to be added to dependencyMap on client to Postgres, MSSQL, MySQL and Mongo plugins

* Added Dependency config for API

* Fixed the test case
2021-04-15 11:36:41 +05:30
Shrikant Sharat Kandula
a259dd00ed
Fix internal server error on invalid header in curl command (#3931)
* Fix internal server error on invalid header in curl command

* Add tests for invalid header/method
2021-04-14 10:44:43 +05:30
Sumit Kumar
b4e43798ab
fix NPE by adding null check conditional (#3989)
Fix NPE seen on Sentry by adding null check for result body
2021-04-13 19:58:40 +05:30
Nidhi
a24eb90091
Fixed escaped layout being used for update (#3968)
* Fixed escaped layout being used for update

* Few more cases of unescaped layout usage
2021-04-13 09:36:50 +05:30
Nidhi
4bddfa0a4e
Fixed curl import without valid tokens (#3933) 2021-04-09 14:03:53 +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
4f68d5f472 Logging test failure 2021-04-08 19:53:48 +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
Trisha Anand
174ef284f0
[Bug Fix Improvement] : Table widget keys are unescaped after walking through the DSL (#3908)
* WIP : untested

* Minor refactoring

* Added test case to assert escaping and unescaping of the table widget primary column keys
2021-04-07 19:36:37 +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
Sumit Kumar
3140e98146
modify hint message to include fix (#3829)
Modify hint message to include fix.
2021-04-01 17:10:30 +05:30
Shrikant Sharat Kandula
efec01344a
Clone explicitly set datasource for new users (#3793) 2021-04-01 12:44:44 +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
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
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
cbd7828503
Add migration to remove template organization config (#3568) 2021-03-16 15:29:06 +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
Shrikant Sharat Kandula
b12057ef73
Allow client to set layouts without id when creating a page (#3477)
* Allow client to set layouts without id when creating a page

* Mild refactoring

* Fix Layout action tests
2021-03-11 15:13:24 +05:30
Shrikant Sharat Kandula
65568a4e13
Add more devices in AppLayout options (#3451)
* Remove width and introduce more AppLayout type enums

* Fix: Adding min width to layout options.

Co-authored-by: Ashok Kumar M <35134347+marks0351@users.noreply.github.com>
2021-03-11 07:51:48 +05:30
Shrikant Sharat Kandula
bb9a9a307f
APIs for profile photos (#3260)
* Add API for uploading profile photos for current user

* Add delete and get APIs for profile photos

* Add test for uploading and deleting profile photo

* Added negative tests for upload profile photo API
2021-03-09 17:03:20 +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
f49cc7b455
Added throwing a properly formatted error for client to consume when dynamic binding path list contains an invalid entry (#3343) 2021-03-03 17:47:35 +05:30
Shrikant Sharat Kandula
9c50182f0e
API for forking of public applications (#3221)
* A barely working API for forking a public application

* Tests WIP

* Mild refactoring in tests

* Refactoring in test

* Not all applications are forkable
2021-03-03 15:45:47 +05:30
Shrikant Sharat Kandula
a1d027bb59
Save separate appLayout for edit/view and sync on publish (#3245) 2021-02-26 16:18:04 +05:30
Shrikant Sharat Kandula
5808620716
Add API for the signed in user to set their name (#3164)
* Add API for the signed in user to set their name

* Use the correct error in session handling
2021-02-26 14:48:20 +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
Piyush
faea2f36ff
Add support for setting.json for pluginType DB (#3156) 2021-02-23 13:57:37 +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
Trisha Anand
b565301afe
Datasource is given permission for a public app during create/update of a public action (#3086)
* Added test case to assert that new datasources and actions created post making an application public have the correct permissions for public execution.
2021-02-18 18:05:07 +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
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
Shrikant Sharat Kandula
0861836db4
Fix bindings in Firestore plugin's where condition value (#2934) 2021-02-09 19:11:16 +05:30
Trisha Anand
af273c60d8
When fetching unpublished actions and unpublished pages, check if the undeployed version is not deleted before fetching. (#2792)
* When fetching unpublished actions and unpublished pages, check if the undeployed version is not deleted before fetching.

* Only add unpublished page deleted at check if the view mode is false (aka edit mode)

* 1. Update action repository to fetch only non deleted actions if fetching actions in edit mode.
2. Added test cases to assert re-using of deleted page and action names.
2021-02-09 12:57:10 +05:30
Trisha Anand
078870f7c9
Communicate action execute on load changes in update layout (#2825)
* 1. Update on load actions correctly
2. Send the changed actions with their changes as well as messages back to the client as part of the response.

* Added test case to assert that the action updates are correctly recorded in updateLayout.

* Code cleanup + added more comments for code readability

* Incorporated review comments.
2021-02-09 10:39:08 +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
Shrikant Sharat Kandula
5c9f90fd59
Fix missing user name in first organization name (#2873) 2021-02-04 14:04:24 +05:30
Shrikant Sharat Kandula
f950a9352b
Fix datasource hostnames being saved with spaces (#2844) 2021-02-03 16:46:09 +05:30
Nidhi
c83fb70b95
Fixed ExecuteOnLoad not getting set for onPageLoad actions (#2801)
* Piped onpageload update function

* Added tests
2021-02-02 10:48:51 +05:30
Tim Dillon
91d5eb5860
Fix user email duplicated as name (#2787) 2021-02-01 14:51:44 +05:30
Shrikant Sharat Kandula
a6d76d1672
Fix organization slug computation clashes (#2725)
* Fix organization slug computation clashes

* Handle case where number-less slug is available
2021-01-27 14:35:43 +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
Trisha Anand
3776e82fb8
Scheduling of parallel tasks implementation for on-page load actions (#2667)
* Proof of concept code which calculates the on load page actions.

* Refactored the field names introduced in Layout. Added a new field to keep a track of direct action names used in dynamic bindings in the DSL.

* Untested compute on on page load actions completed.

* Working page load actions computation.
TODO : Update the tests for correctness.

* Added fix for BFS starting from root nodes instead of arbitrary nodes.
Fixed a test case to assert for correct page load actions.

* Fixed the bug where the ids of the actions were not getting set in the layout. Also asserting the same in the test case for catching the future breaks.

* Minor refactor of function name to clear its purpose without reading the code.

* Incorporated review comments.

* Added conditional checks for unpublished action deleted and circular dependency of actions depending on each other.
2021-01-25 16:54:45 +05:30
Nidhi
9ea5c884e1
Null check for empty pagination next url (#2546) 2021-01-13 12:12:29 +05:30
Shrikant Sharat Kandula
c6c128270c
Include version information when building Docker images for server and client (#2200)
* Include version information in backend builds

* Enable manual trigger of server workflow

* Add a dummy input field for manual trigger

* Fix secret checking in github actions

* Disable cron scheduling of sync job

* Build docker image on pushing a version tag

* Fix duplicated id and invalid id in release workflow

* Don't try to login to Docker

* Avoid download progress outputs from Maven

* Add version information for building client

* Calculate version number only once

* Enable push to DockerHub after building images

* Use Docker username from GitHub secrets

* Fix Docker username in tags when building image

* Use different secret for org name

* Minor refactoring in server workflow

* Update client build workflow to use version

* Enable manual triggering of client workflow

* Set snapshot version for server builds

* Push to docker for all branches (temp)

* Undo temp change to push all branches to DockerHub

* Use Docker org from secrets in client.yml

* Fix missing version reference in client.yml

* Remove debug command in dockerfile

* Save release notes in a resource file in Docker image

* Fix query serialization to get release notes

* Get releases of current repo instead of hard-coded repo

* Fix variable quoting for repo variables

* Exclude draft and prerelease nodes from image

* Fix call to any in release notes processor

* Fix syntax error in release notes script

* Implement API to get new release count and info

* Add missing ReleaseNotes component

* Have the release workflow run after a release is created

* Build server after generating release notes

* Change release trigger to "released"

* Change release trigger to "published"

* Change release trigger to released, edited and deleted

* Use JS script to get release notes, take 1

* Filter drafts and prereleases in script

* Fix syntax error in ES6

* Write release notes to file

* Create parent directory before writing release notes

* Log cwd in release notes script

* Log pwd along with release-notes content

* Handle case where working directory is incorrect

* Remove shell based release notes generator

* Don't show error when Sentry config is missing

* Check for sentry auth token to enable Sentry

* Carry build's exit code over to CI

* Mark out build result and add a note about it

* Add a small test to verify new versions computation

* Remove incorrect test assertion

* Remove generation of release notes file

* Connect to cloud services to fetch release notes data

* Fix missing runner for test class

* Handle missing cloud_services base URL

* Fix test failures due to missing mocks

* Enable sync-ee cron job

* Revert build.sh as there's no real change

* Add API to update release notes viewed version for users

* Fix prettier line-length errors

* Create UserData model for info unrelated to auth

* Fix field name calls

* Ensure we have a userId before setting userData

* Add tests for setting version number in UserData

* Include instanceId when fetching release notes
2021-01-12 18:15:15 +05:30
Shrikant Sharat Kandula
23cffc208f
Allow signup for admins, even if publicly disabled (#2520)
* Allow signup for admins, even if publicly disabled

* Use Set for admin email addresses

* Set two admin emails in test
2021-01-12 14:13:44 +05:30
Shrikant Sharat Kandula
9cd9edd3fa
Disable uninvited signups via environment variable (#2512)
* Disable signup API via environment variable

* Allow signup for invited users, even if disabled publicly

* Add test for signup when signup is disabled

* Run invite flow tests when signup is disabled

* Revert status annotation in signup API endpoint

* Remove unused tests on invite flow

* Change signup disabled error message
2021-01-11 20:10:50 +05:30
Nidhi
1fa7d46845
Fixed unreferenced actions not being triggered for execute on load (#2434)
* Fixed unreferenced actions not being triggered for execute on load

* WIP : Have to commit some minor cosmetic code formatting changes

* Comments and fix for action ordering

* modified test case

Co-authored-by: Trisha Anand <trisha@appsmith.com>
2021-01-11 12:18:07 +05:30
Trisha Anand
d4640e01a2
Invite users once triggered should not be cancellable. (#2401)
* Invite users once triggered should not be cancellable.
2020-12-30 16:50:01 +05:30
Trisha Anand
712f41db92
Reducing the probability of getting pages out of order (Expected order is the order in which the pages were created and added to the application). This should : (#2391)
1. Get rid of cypress test failures which asserts a certain order till the cypress test case is fixed and unblocks the frontend team.
2. Uses a bulk API to fetch all the pages instead of fetching each page sequentially over different network calls with the database.
2020-12-29 19:10:01 +05:30
Trisha Anand
ea0f9c159c
[Bug] Multi page applications return only a single page when fetching pages per application (#2383)
* Zipping flux with mono leads to mono not getting repeated and only the first emitted value of flux is processed further. This is leading to only a single page getting emitted in a multi page application.

* Added a test case to assert this for a multi page application
2020-12-29 13:38:47 +05:30
Trisha Anand
6210b9a0c0
All newly created applications now have a default published state. (#2309)
* All newly created applications now have a default published state.

* Added a test case to assert a new application comes up with default published states for both application and the default page.

* Function name changed.

* When trying to fetch a published version of a page when the page has not been published, throw a 404.

* WIP : Not working
2020-12-28 10:30:43 +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
Nidhi
9a9feff678
Reset execute on page load for new actions (copied or otherwise) (#2162) 2020-12-11 14:33:07 +05:30
Trisha Anand
b8b24604a6
[Bug] Update of an action leads to userSetOnLoad getting reset. (#2023)
* Update of an action leads to userSetOnLoad getting reset.

* Added test case to assert the same.
2020-12-04 13:07:34 +05:30
Shrikant Sharat Kandula
4a57a739b6
Render templates directly without Mustache (#2010)
* Render templates directly without Mustache

* Remove an unused variable
2020-12-03 14:38:31 +05:30
Trisha Anand
63fe27fae1
[Bug Fix] : Clone Application creates corrupted clone when interrupted. (#1800)
* Doing a deep copy during clone application instead of updating the original application which may have been causing a concurrency bug.

* Ensuring that once the clone application flow is triggered, the flow completes eventually even if the client cancels the request before completion.

* Cloned application would not be public.

* Added parametrized Application constructor

* Removed lombok all args constructor

* Optimized import

* Incorporated review comments :
1. Updated the constructor for creating the application
2. Added a test case to assert that if during cloning of an application the flow gets cancelled, the cloning would still complete and ensure that the application created is sane.
2020-11-20 10:55:59 +05:30
Nidhi
941be8c58d
Fixed check for incorrect dynamic bindings (#1775)
* Fixed check for incorrect dynamic bindings
2020-11-18 14:25:55 +05:30
Shrikant Sharat Kandula
f36adeb6b5
Fix #1766: cURL parser eats backslashes in single-quotes (#1768) 2020-11-18 11:20:23 +05:30
Trisha Anand
fc3197b78f
Email sending is now non-blocking. The blocking code for email sending is triggered and then immediately returned. (#1762) 2020-11-18 00:31:39 +05:30
Arpit Mohan
c3a44651f2
Adding null check for dynamic binding path list (#1752)
* Adding null check for dynamic binding path list.

* Increased timeout duration for failing test

Co-authored-by: Nidhi <nidhi.nair93@gmail.com>
2020-11-17 15:38:48 +05:30
Nidhi
9de085f264
Switched to using dynamicBindingPathList for generic scan, supports DB queries and nested structures
* Switched to using dynamicBindingPathList for generic scan
2020-11-17 11:26:08 +05:30
Nidhi
1741e61ba0
Added user roles list to application fetcher (#1624)
* Added user roles list to application fetcher

* Fixed blanket import
2020-11-09 11:54:30 +05:30
Nidhi
62e4e28c8e
Fixed upload logo payload limit and added delete logo API (#1574)
Also changed name of default organization to xyz's apps
2020-11-09 07:52:08 +05:30
Trisha Anand
24582a2e58
Adding server side performance tooling using spring metrics. (#1562)
* Experimenting with spring metrics, prometheus

* Added prometheus config in application.properties.

* Added a few more configurations for spring metrics to improve performance tooling.

* Added basic authentication to allow prometheus to scrape our monitoring data in an authenticated fashion.

* Only exposing prometheus end point at this junction instead of other metric endpoints as well.

* Fixed test case which failed because of actuator instantiating bean.
2020-11-05 14:33:40 +05:30
Nidhi
fc4fca8bf0
Added fallback email to new organization from user email (#1536) 2020-11-04 12:57:17 +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
imgbot[bot]
f5924c6895
[ImgBot] Optimize images (#1513)
*Total -- 1,942.96kb -> 1,638.83kb (15.65%)

/app/client/src/assets/icons/header/save-loading.gif -- 14.17kb -> 5.67kb (59.99%)
/app/client/src/assets/images/Postman.png -- 10.34kb -> 4.63kb (55.24%)
/app/client/src/assets/images/Google.png -- 11.18kb -> 5.62kb (49.76%)
/static/appsmith_logo_primary.png -- 8.02kb -> 4.06kb (49.34%)
/app/client/src/assets/images/appsmith_logo.png -- 8.02kb -> 4.06kb (49.34%)
/static/logo.png -- 13.20kb -> 7.77kb (41.11%)
/app/client/src/assets/images/no_image.png -- 4.94kb -> 2.97kb (39.97%)
/app/client/src/assets/images/query-image-outline.png -- 1.65kb -> 1.01kb (38.71%)
/app/client/src/assets/images/404-image.png -- 141.37kb -> 94.81kb (32.93%)
/app/server/appsmith-server/src/test/resources/test_assets/OrganizationServiceTest/my_organization_logo.png -- 1.77kb -> 1.20kb (32.41%)
/app/client/src/assets/images/appsmith_logo_white.png -- 1.88kb -> 1.29kb (31.17%)
/app/client/src/assets/icons/control/play-icon.png -- 2.00kb -> 1.39kb (30.15%)
/Query.png -- 219.82kb -> 155.18kb (29.41%)
/app/client/src/assets/images/Github.png -- 4.17kb -> 2.94kb (29.36%)
/API.png -- 332.87kb -> 239.07kb (28.18%)
/static/logo-no-padding.png -- 17.63kb -> 12.84kb (27.16%)
/app/client/src/assets/images/Curl.png -- 40.68kb -> 32.55kb (19.99%)
/app/client/src/assets/icons/ads/logout.svg -- 0.94kb -> 0.76kb (19.38%)
/app/client/src/assets/icons/menu/datasource-column.svg -- 0.64kb -> 0.52kb (19.15%)
/static/API2.png -- 167.58kb -> 140.36kb (16.24%)
/static/Query2.png -- 118.59kb -> 102.85kb (13.27%)
/app/client/src/assets/icons/ads/context-menu.svg -- 0.52kb -> 0.45kb (12.99%)
/app/client/src/assets/icons/help/github-icon.svg -- 2.63kb -> 2.34kb (10.85%)
/app/client/src/assets/icons/ads/search.svg -- 0.26kb -> 0.25kb (3.73%)
/app/client/src/assets/icons/widget/slash.svg -- 0.19kb -> 0.18kb (3.59%)
/app/client/src/assets/icons/widget/plus.svg -- 0.30kb -> 0.29kb (3.58%)
/app/client/src/assets/icons/widget/modal.svg -- 0.20kb -> 0.19kb (2.99%)
/app/client/src/assets/icons/ads/frame.svg -- 0.50kb -> 0.48kb (2.96%)
/app/client/src/assets/icons/menu/explorer.svg -- 0.19kb -> 0.18kb (2.11%)
/app/client/src/assets/icons/control/lightning.svg -- 0.23kb -> 0.23kb (2.1%)
/app/client/src/assets/icons/ads/product.svg -- 0.34kb -> 0.33kb (2.03%)
/app/client/src/assets/icons/widget/container.svg -- 0.20kb -> 0.19kb (1.99%)
/app/client/src/assets/images/placeholder-image.svg -- 0.15kb -> 0.14kb (1.99%)
/static/Share5.png -- 143.35kb -> 140.55kb (1.95%)
/app/client/src/assets/icons/form/info-outline.svg -- 1.77kb -> 1.73kb (1.93%)
/app/client/src/assets/icons/ads/file.svg -- 0.36kb -> 0.35kb (1.89%)
/app/client/src/assets/icons/ads/success.svg -- 0.26kb -> 0.25kb (1.88%)
/app/client/src/assets/icons/widget/input.svg -- 0.32kb -> 0.31kb (1.84%)
/app/client/src/assets/icons/ads/create-new.svg -- 0.23kb -> 0.22kb (1.73%)
/app/client/src/assets/icons/ads/book.svg -- 0.52kb -> 0.51kb (1.69%)
/app/client/src/assets/icons/control/email.svg -- 0.17kb -> 0.17kb (1.69%)
/app/client/src/assets/icons/ads/down_arrow.svg -- 0.18kb -> 0.18kb (1.63%)
/app/client/src/assets/icons/ads/upper_arrow.svg -- 0.18kb -> 0.18kb (1.63%)
/app/client/src/assets/icons/ads/bag.svg -- 0.42kb -> 0.42kb (1.61%)
/app/client/src/assets/icons/control/compact.svg -- 0.55kb -> 0.54kb (1.59%)
/app/client/src/assets/icons/help/openlink.svg -- 0.70kb -> 0.69kb (1.53%)
/app/client/src/assets/icons/help/document.svg -- 0.80kb -> 0.79kb (1.47%)
/app/client/src/assets/images/logo.svg -- 2.61kb -> 2.57kb (1.46%)
/app/client/src/assets/icons/ads/manage.svg -- 0.27kb -> 0.27kb (1.42%)
/app/client/src/assets/icons/ads/error.svg -- 0.35kb -> 0.34kb (1.4%)
/app/client/src/assets/icons/ads/view-all.svg -- 0.21kb -> 0.21kb (1.39%)
/app/client/src/assets/icons/control/pick-location-initial.svg -- 0.50kb -> 0.49kb (1.38%)
/app/client/src/assets/icons/menu/storage.svg -- 0.21kb -> 0.21kb (1.36%)
/app/client/src/assets/icons/ads/calender.svg -- 0.51kb -> 0.50kb (1.35%)
/app/client/src/assets/icons/menu/widgets-colored.svg -- 0.22kb -> 0.22kb (1.32%)
/app/client/src/assets/icons/control/input.svg -- 0.31kb -> 0.30kb (1.27%)
/app/client/src/assets/icons/header/share-white.svg -- 0.47kb -> 0.46kb (1.26%)
/app/client/src/assets/icons/control/pick-location-onclick.svg -- 0.48kb -> 0.48kb (1.21%)
/app/client/src/assets/icons/menu/datasource-table.svg -- 0.25kb -> 0.24kb (1.2%)
/app/client/src/assets/icons/form/add-new.svg -- 0.34kb -> 0.34kb (1.15%)
/app/client/src/assets/icons/ads/camera.svg -- 0.86kb -> 0.85kb (1.14%)
/app/client/src/assets/icons/widget/image.svg -- 0.35kb -> 0.35kb (1.11%)
/app/client/src/assets/icons/ads/shopper.svg -- 0.62kb -> 0.61kb (1.11%)
/app/client/src/assets/icons/control/sort-icon.svg -- 0.27kb -> 0.27kb (1.09%)
/app/client/src/assets/icons/menu/pages.svg -- 0.37kb -> 0.36kb (1.07%)
/app/client/src/assets/icons/ads/delete.svg -- 0.28kb -> 0.27kb (1.06%)
/app/client/src/assets/icons/menu/page.svg -- 0.37kb -> 0.37kb (1.06%)
/app/client/src/assets/icons/ads/workspace.svg -- 0.28kb -> 0.28kb (1.05%)
/app/client/src/assets/icons/control/download-table.svg -- 0.47kb -> 0.47kb (1.03%)
/app/client/src/assets/icons/control/help.svg -- 0.47kb -> 0.47kb (1.03%)
/app/client/src/assets/icons/control/close.svg -- 0.29kb -> 0.29kb (1.01%)
/app/client/src/assets/icons/control/move.svg -- 0.39kb -> 0.39kb (1%)
/app/client/src/assets/icons/ads/general.svg -- 0.29kb -> 0.29kb (1%)
/app/client/src/assets/icons/ads/duplicate.svg -- 0.30kb -> 0.30kb (0.96%)
/app/client/src/assets/icons/control/edit-white.svg -- 0.41kb -> 0.40kb (0.96%)
/app/client/src/assets/icons/control/view.svg -- 0.32kb -> 0.32kb (0.92%)
/app/client/src/assets/icons/header/feedback.svg -- 0.43kb -> 0.42kb (0.91%)
/app/client/src/assets/icons/control/remove.svg -- 0.33kb -> 0.33kb (0.89%)
/app/client/src/assets/icons/ads/heart.svg -- 0.79kb -> 0.79kb (0.86%)
/app/client/src/assets/icons/control/more-vertical.svg -- 1.02kb -> 1.01kb (0.86%)
/app/client/src/assets/icons/widget/rich-text.svg -- 1.60kb -> 1.58kb (0.86%)
/app/client/src/assets/icons/control/info.svg -- 0.34kb -> 0.34kb (0.85%)
/app/client/src/assets/icons/control/draggable.svg -- 0.47kb -> 0.47kb (0.83%)
/app/client/src/assets/images/API.svg -- 4.92kb -> 4.88kb (0.81%)
/app/client/src/assets/icons/widget/radio.svg -- 0.50kb -> 0.49kb (0.79%)
/app/client/src/assets/icons/ads/share.svg -- 0.37kb -> 0.37kb (0.79%)
/app/client/src/assets/images/EditPen.svg -- 0.38kb -> 0.37kb (0.78%)
/app/client/src/assets/icons/widget/collapse.svg -- 0.50kb -> 0.50kb (0.78%)
/app/client/src/assets/icons/control/edit.svg -- 0.65kb -> 0.65kb (0.75%)
/app/client/src/assets/icons/ads/user.svg -- 0.54kb -> 0.53kb (0.73%)
/app/client/src/assets/icons/widget/checkbox.svg -- 0.54kb -> 0.53kb (0.73%)
/app/client/src/assets/icons/ads/edit.svg -- 0.40kb -> 0.40kb (0.73%)
/app/client/src/assets/icons/control/collapse.svg -- 0.55kb -> 0.54kb (0.71%)
/app/client/src/assets/icons/menu/queries.svg -- 0.41kb -> 0.41kb (0.71%)
/app/client/src/assets/icons/ads/close.svg -- 0.42kb -> 0.42kb (0.7%)
/app/client/src/assets/images/NoSearchResult.svg -- 8.61kb -> 8.55kb (0.69%)
/app/client/src/assets/icons/widget/chart.svg -- 0.43kb -> 0.43kb (0.68%)
/app/client/src/assets/icons/control/decrease.svg -- 0.45kb -> 0.45kb (0.65%)
/app/client/src/assets/icons/menu/api.svg -- 1.51kb -> 1.50kb (0.65%)
/app/client/src/assets/icons/widget/filepicker.svg -- 0.61kb -> 0.60kb (0.64%)
/app/client/src/assets/icons/ads/launch.svg -- 0.61kb -> 0.61kb (0.64%)
/app/client/src/assets/icons/menu/homepage.svg -- 0.92kb -> 0.92kb (0.64%)
/app/client/src/assets/icons/control/launch.svg -- 0.62kb -> 0.61kb (0.63%)
/app/client/src/assets/icons/control/pick-location-selected.svg -- 0.48kb -> 0.48kb (0.61%)
/app/client/src/assets/icons/widget/video.svg -- 0.49kb -> 0.49kb (0.6%)
/app/client/src/assets/icons/control/currency.svg -- 0.50kb -> 0.49kb (0.59%)
/app/client/src/assets/icons/control/filter-icon.svg -- 0.84kb -> 0.84kb (0.58%)
/app/client/src/assets/icons/control/search.svg -- 0.55kb -> 0.54kb (0.54%)
/app/client/src/assets/icons/control/zoomout.svg -- 0.55kb -> 0.55kb (0.53%)
/app/client/src/assets/icons/form/lock.svg -- 0.56kb -> 0.56kb (0.52%)
/app/client/src/assets/icons/control/multiline.svg -- 1.51kb -> 1.50kb (0.52%)
/app/client/src/assets/icons/ads/flight.svg -- 1.33kb -> 1.32kb (0.51%)
/app/client/src/assets/icons/control/pick-my-location.svg -- 1.16kb -> 1.16kb (0.5%)
/app/client/src/assets/icons/ads/chat.svg -- 1.36kb -> 1.35kb (0.5%)
/app/client/src/assets/icons/widget/table.svg -- 0.78kb -> 0.78kb (0.5%)
/app/client/src/assets/icons/control/delete.svg -- 0.59kb -> 0.59kb (0.5%)
/app/client/src/assets/icons/control/phone.svg -- 0.59kb -> 0.59kb (0.5%)
/app/client/src/assets/icons/control/password.svg -- 1.97kb -> 1.96kb (0.49%)
/app/client/src/assets/icons/widget/alert.svg -- 0.81kb -> 0.81kb (0.48%)
/app/client/src/assets/icons/control/right-align.svg -- 0.62kb -> 0.61kb (0.48%)
/app/client/src/assets/icons/ads/invite-users.svg -- 0.64kb -> 0.64kb (0.46%)
/app/client/src/assets/icons/widget/tabs.svg -- 0.86kb -> 0.85kb (0.46%)
/app/client/src/assets/icons/control/columns-visibility.svg -- 1.08kb -> 1.07kb (0.45%)
/app/client/src/assets/icons/control/zoomin.svg -- 0.65kb -> 0.65kb (0.45%)
/app/client/src/assets/icons/control/left-align.svg -- 0.67kb -> 0.67kb (0.44%)
/app/client/src/assets/icons/control/underline.svg -- 0.68kb -> 0.68kb (0.43%)
/app/client/src/assets/icons/ads/globe.svg -- 1.60kb -> 1.59kb (0.43%)
/app/client/src/assets/icons/menu/widgets.svg -- 0.97kb -> 0.97kb (0.4%)
/app/client/src/assets/icons/widget/text.svg -- 0.99kb -> 0.98kb (0.4%)
/app/client/src/assets/icons/control/center-align.svg -- 0.76kb -> 0.76kb (0.38%)
/app/client/src/assets/icons/widget/location-picker.svg -- 1.02kb -> 1.02kb (0.38%)
/app/client/src/assets/icons/menu/overflow-menu.svg -- 1.05kb -> 1.05kb (0.37%)
/app/client/src/assets/icons/header/deploy.svg -- 1.59kb -> 1.59kb (0.37%)
/app/client/src/assets/icons/control/italics.svg -- 0.80kb -> 0.80kb (0.36%)
/app/client/src/assets/icons/control/increase.svg -- 0.81kb -> 0.81kb (0.36%)
/app/client/src/assets/icons/help/discord.svg -- 1.08kb -> 1.08kb (0.36%)
/app/client/src/assets/icons/widget/map.svg -- 1.10kb -> 1.09kb (0.36%)
/app/client/src/assets/images/email-not-configured.svg -- 28.71kb -> 28.61kb (0.35%)
/app/client/src/assets/icons/help/help.svg -- 1.15kb -> 1.15kb (0.34%)
/app/client/src/assets/icons/control/copy.svg -- 0.87kb -> 0.86kb (0.34%)
/app/client/src/assets/icons/control/bold.svg -- 0.88kb -> 0.88kb (0.33%)
/app/client/src/assets/icons/widget/dropdown.svg -- 1.21kb -> 1.21kb (0.32%)
/app/client/src/assets/icons/ads/billing.svg -- 0.96kb -> 0.95kb (0.31%)
/app/client/src/assets/icons/control/decimal.svg -- 0.98kb -> 0.97kb (0.3%)
/app/client/src/assets/icons/control/settings.svg -- 1.33kb -> 1.32kb (0.29%)
/app/client/src/assets/icons/control/chevron-down.svg -- 1.02kb -> 1.02kb (0.29%)
/app/client/src/assets/icons/widget/switch.svg -- 1.38kb -> 1.37kb (0.28%)
/app/client/src/assets/images/secure.svg -- 1.07kb -> 1.07kb (0.27%)
/app/client/src/assets/icons/menu/datasource-colored.svg -- 1.12kb -> 1.12kb (0.26%)
/app/client/src/assets/icons/menu/api-colored.svg -- 1.13kb -> 1.12kb (0.26%)
/app/client/src/assets/icons/menu/foreign-key.svg -- 1.15kb -> 1.15kb (0.26%)
/app/client/src/assets/icons/menu/org.svg -- 1.15kb -> 1.15kb (0.25%)
/app/client/src/assets/icons/control/redo.svg -- 1.17kb -> 1.16kb (0.25%)
/app/client/src/assets/icons/menu/primary-key.svg -- 1.17kb -> 1.17kb (0.25%)
/app/client/src/assets/icons/control/undo.svg -- 1.17kb -> 1.17kb (0.25%)
/app/client/src/assets/icons/form/trash.svg -- 2.75kb -> 2.74kb (0.25%)
/app/client/src/assets/icons/control/integer.svg -- 1.25kb -> 1.25kb (0.23%)
/app/client/src/assets/icons/widget/form.svg -- 1.32kb -> 1.32kb (0.22%)
/app/client/src/assets/icons/control/drag.svg -- 1.33kb -> 1.33kb (0.22%)
/app/client/src/assets/icons/header/save-failure.svg -- 1.45kb -> 1.44kb (0.2%)
/app/client/src/assets/icons/control/js-toggle.svg -- 1.97kb -> 1.96kb (0.2%)
/app/client/src/assets/images/Curl-logo.svg -- 5.33kb -> 5.32kb (0.18%)
/app/client/src/assets/icons/alert/info.svg -- 1.60kb -> 1.60kb (0.18%)
/app/client/src/assets/icons/alert/warning.svg -- 1.63kb -> 1.63kb (0.18%)
/app/client/src/assets/icons/header/save-success.svg -- 1.67kb -> 1.66kb (0.18%)
/app/client/src/assets/icons/alert/success.svg -- 1.67kb -> 1.67kb (0.18%)
/app/client/src/assets/icons/menu/data-sources.svg -- 1.74kb -> 1.73kb (0.17%)
/app/client/src/assets/icons/alert/error.svg -- 1.95kb -> 1.95kb (0.15%)
/app/client/src/assets/icons/widget/datepicker.svg -- 3.23kb -> 3.22kb (0.12%)
/app/client/src/assets/icons/widget/button.svg -- 3.75kb -> 3.75kb (0.1%)
/app/client/src/assets/icons/control/address.svg -- 3.37kb -> 3.37kb (0.09%)
/app/client/src/assets/icons/control/datepicker.svg -- 3.75kb -> 3.75kb (0.08%)
/app/client/src/assets/images/appsmith-datasource.svg -- 505.60kb -> 505.43kb (0.03%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>

Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>
2020-11-02 19:44:01 +05:30
Arpit Mohan
470f2fafcd
Adding support for https endpoints for ES plugin (#1445)
* Adding host:port validation checks to ES plugin & Redis plugin

Also correcting the assertions in the RedisPluginTest so that the error message on test failure is accurate.

* Removing the endpoint validation from datasourceServiceImpl

Moving the endpoint validation to the plugin implementation classes because there are databases that require complete HTTP URL in their configuration. Checking for http/https at the platform level affects the UX for the user & plugin developer when using a new integration. Hence, all plugins must implement their own client/server validations in their own implementations

* Adding tests to assert hostname validation in mysql & postgres plugins
2020-10-28 19:06:10 +05:30
Trisha Anand
5197b17d8c
Bug Fix : Reading the datasource configuration incorrectly from actionDTO instead of datasource object. (#1415)
* Bug Fix : Reading the datasource configuration incorrectly from actionDTO instead of datasource object.

* Added test case to assert that datasource configuration and action configurations are not null when action execute is called.
2020-10-27 15:23:25 +05:30
Trisha Anand
fc9ea45e3b
[API breaking change : Automated Tests Will Fail] Page And Action Refactor (#549)
* Introduced new page which stores the published and unpublished pages as separate.

* Mid level commit to save the state.

* Parity of new page repository with old page repository (custom functions)

* WIP : Delete a page. This requires changes across application structure as well.

* Added publishedPages construct inside application to store the pages in the deployed view as well as isDefault so that the same changes (delete or isDefault) in unpublished view doesn't alter these fields for the published application

* Parity reached with PageService.

* Minor ActionService refactor to remove unnecessary code.
ApplicationPageService, LayoutActionService, LayoutService use the new page service to fetch the pages
Minor corrections in fetching the page from new page service in tests

* New save function which sets the PageDTO for unpublished page and then saves the new page into repository.

* Migration of page service functions to new page service functions across other services/tests/controller

* Finished migrating all the page service functions to the new page service functions

* Application Service Tests have been fixed.

* All the existing test cases are working now.

* Publish application implemented to store published pages as well. Added a basic test case to check that published pages is being set and that page's publishedPageDTO is being set accordingly.

* Minor TODOs added to add test cases for published application.

* A few tests to ascertain that published application page fields (deleted, isDefault) does not get changed when these statuses are changed for a page in edit mode.

* Added a new controller end point to fetch application in view mode.

* Added new endpoint for fetching an application in view mode on the client.

* Bug fix where get application in view mode API was not getting called.

* Fixed the get page names by application & archive pages which have been deleted in edit mode during publishing of application.

* During delete page, if a page was never published and it was deleted during edit, delete the entire page instead of just deleting the unpublished PageDTO

* Minor formatting.

* Non working client side code to fetch page list using view mode.

* revert unnecassary changes and streamlined view and edit actions

* Fix missed import

* Fixed a bug where if a page is not published, it should not be returned in view mode in list of page names api.

* Fixed update for a page which was not working in integration test.

* ActionDTO added.

* Solidified the new action structure.

* Migration added for NewAction index creation and NewAction per Action insertion in the database.

* Basic file structure added the new repository, custom repository, service, etc.

* Delete OldPage.java

* Repo functions added - TODO : Haven;t handled the published/edited views

* Helper functions added to convert Action to NewAction and vice-versa. Removed unused currentUserMono usage.

* Create & update action functionality added.

* Execute Action refactored. Removed dry run specific code.

* Repository migrated to handle new data structure. Execute action refactored to no longer support dry runs of actions.

* TODO added for special handling of change view of application to handle edge cases of pages/actions which either exist in published mode but don't exist in unpublished mode or vice versa.

* Migrated finding on load actions from spring repository to custom repository.

* In view mode, now actions are being fetched by application id directly instead of first fetching application and then using the page ids, fetching the actions. This reduces the db calls from 2 to 1 per fetch actions in view mode api call.

* Delete action and get all actions (used in edit mode on the client side) implemented.

* Updated CollectionService and ActionCollectionService to use the new action service instead of the old one.

* LayoutActionService refactored to now use the new service functions.

* ActionController now no longer used ActionService. The remaining service functions have been migrated to the new action service.

* Refactor across ACL code for addition/removal of policies during addition/removal of users to organization, making app public, refactor for services like policy utils, item service, etc.

* Removed the last of action repository and action service and replaced with new action repo and new action service.

* Compile and run time issues fixed. The server is coming up without any spring dependency errors.

* WIP in fixing fetching actions by page id.

* Finally!!! Fixed the fetch actions (both published and unpublished actions) by page id repository function.

* Fixed create action bug where null datasource in published actiondto (inside newly created action) leads to error.

* Fixed the execute action issues :
1. Removed the dry runs from the tests
2. Fixed the null pointer error in variable substituted action and datasource configurations.

* 1. Fixed the custom action repository field names.
2. Fixed the data structures used in ExamplesOrganizationClonerTests

* Fixed countByDatasourceId repository function which was querying the actions incorrectly.

* Fixed the clone example organization error where the id of the action was not getting updated in the page correctly. Yay!

* Fixed post merge compilation failure.

* Fixed more compilation time failures in ActionServiceTest

* Fixed failing test case for fetching actions in view mode.

* Minor changes to resolve merge changes and incorporate in the new refactored code.

* 1. Fixed compile time errors on Client code.
2. Fixed fetching of actions in view mode by application id. The repository function did not need name parameter. Removed the same.

* [Integration Testing Error Fix] : Added a new test case for refactor action name.

* Instead of fetching actions in the page, mistakenly used the base service which was fetching all the actions in the repository, barring none which led to the name refactor being blocked even though no action in the current page exists with the new proposed name,

* Added delete functionality to action service.

* Minor code cleanup

* Adding viewMode to action execution

* Replacing action with actionId.

* 1. Bug fix for deletion of unpublished action. In case of never published action, the entire action should be deleted. In case an action was published, only the unpublished action should be deleted.
2. In case of DB actions (external datasources), only the bare minimum fields should be stored inside the action (datasource id and datasource plugin id). The other fields should not be duplicated across code.

* Fixed yarn build compilation issues.

* Update app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/ActionController.java

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

* Changed the API path for GET applications in view mode. Some minor code formatting.

* Incorporated review comments.

* Some more unnecessary code removed.

* Instead of returning Page, now the interface object between client and server for Pages is PageDTO

* Migrated Page and Action to PageDTO and ActionDTO
Fixed the compilation issues.
TODO : Fix the test compilation issues.

* Fixed compilation time issues with all the tests by migrating Page and Action to PageDTO and ActionDTO respectively

* Action Controller and Page Controller no longer extend Base Controller. All the required functions have now been implemented and no base line API end points are being re-used from the base.

* Test case fixes.

* Bug Fix : Updating an action was not updating execute on load. Fixed the data flow leading to the error.

* Deprecating Page and Action domain objects. This is to ensure no new code is written with these till we remove this old code.

* Cloned example applications are now published before returning. This is to ensure that the applications are in ready to view mode when the new user signs up.

* Added a function comment to expand on the usage of new param introduced.

* When cloning a page, new actions were not being stored. Added that. Also updated the clonePage test to assert that the actions are also cloned when the pages are cloned.

* Updated a Api call

* removed extra slash

Co-authored-by: Hetu Nandu <hetunandu@gmail.com>
Co-authored-by: Satbir Singh <satbir121@gmail.com>
Co-authored-by: Arpit Mohan <mohanarpit@users.noreply.github.com>
Co-authored-by: nandan.anantharamu <nandan@thinkify.io>
2020-10-26 18:04:23 +05:30
Shinn Lok
4768fd3848
Fix organization ordering by name on the homepage (#1177) 2020-10-22 17:53:51 +05:30
Shinn Lok
014ff80548
Parameter missing for email template replace (#1323)
Co-authored-by: Trisha Anand <trisha1990@gmail.com>
2020-10-21 11:40:32 +05:30
Trisha Anand
37aedcba24
User emails should be changed to lower case before creating/inviting user. (#1281) 2020-10-19 16:39:04 +05:30
Daniel Shuy
a93bd52684
Don't append " Copy" suffix to cloned pages in cloned application (#1172)
* Add test to verify that Pages are cloned
2020-10-15 23:27:32 +05:30
Prashant Chaubey
05380a9c43
Added email verification while creating user and sending email (#1208) 2020-10-15 12:19:20 +05:30
Prashant Chaubey
67ef538409
Returning validation failures while creating organization (#1084)
* Returning validation failures while creating organization

* Added unit tests

* Changing the name of test security config

Co-authored-by: nitesh261193 <nitesh261193@gmail.com>
2020-10-15 09:07:57 +05:30
Trisha Anand
421b624cc4
Only mark applications as example applications if the application id exists in the template configuration. (#1093) 2020-10-09 15:21:28 +05:30
Trisha Anand
423b7eb176
Added confirmBeforeExecute field in action view dto which is returned only during view mode. (#547)
* Added `confirmBeforeExecute` field in action view dto which is returned only during view mode.

* Added test for fetch actions in view mode.
2020-09-15 15:22:35 +05:30
Shrikant Sharat Kandula
f5f66229ec
Get list of application IDs to be cloned as examples from template config (#442)
* 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
2020-09-07 11:40:28 +05:30
Trisha Anand
3648a2b804
Returning an error in case the user tries to get all users. (#472) 2020-09-02 17:18:22 +05:30
Shrikant Sharat Kandula
91ad617904
Add validation for host values in DB datasources (#444)
* Add validation for host values in DB datasources

* Mild refactoring, for a dummy commit

* Add test for host name validation in datasources
2020-09-02 11:28:41 +05:30
Shrikant Sharat Kandula
223a735b87
Add API for uploading logo images for organizations (#376)
* 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
2020-09-02 11:28:15 +05:30
Trisha Anand
11eac73013
Clone application within the same organization (#414)
* 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.
2020-08-25 14:08:52 +05:30
Trisha Anand
c253b7430b
1. Fixed the bug where policies are being set to empty during organization update (#415)
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.
2020-08-25 08:13:37 +05:30
Shrikant Sharat Kandula
e97ceab412
Fix default page not being set for cloned applications (#383)
* Fix default page not being set for cloned applications

* Add test for setting default page in clone applications
2020-08-21 10:38:23 +05:30
Shrikant Sharat Kandula
27511c90d4
Users created won't have any orgs if a template is configured (#374) 2020-08-20 18:24:31 +05:30
Trisha Anand
efab105e19
Clone Page feature inside an application (#357)
* 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.
2020-08-19 15:20:00 +05:30
Trisha Anand
82018547f5
Added tests to test invite user permissions for administrators and developers and make public app permissions for only administrators. Also added test to ensure that roles for an organization are being returned depending on the current user's roles. (#326) 2020-08-18 10:53:46 +05:30
Shrikant Sharat Kandula
a79951bae9
Don't always automatically create a blank personal org (#306)
* 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
2020-08-14 15:30:52 +05:30
Arpit Mohan
10f462b229
Adding a test for the valid scenario when returning the plugin form details (#295)
We use @SpyBean annotation to partially mock the PluginService class.
2020-08-12 20:09:56 +05:30
Trisha Anand
7ee21456d5
Share Changes : Adding users to organization permission updates (#262)
* 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.
2020-08-12 13:23:44 +05:30
Trisha Anand
a6496bd5af
Correcting the Docker image for Appsmith server for Github actions test (#260)
* 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>
2020-08-11 16:53:47 +05:30
Shrikant Sharat Kandula
0c344115c3
Add transient field on applications to indicate whether it's an example application (#256)
* Add transient field on application to indicate whether it's an example

* Add test for marking of example applications

* Remove unused constant
2020-08-11 14:00:41 +05:30
Shrikant Sharat Kandula
dc10f09906
Fix organization cloning gets stale action IDs inside onLoad actions (#245)
* Fix organization cloning gets stale action ids for onload

* Fix test for onload action's organization after cloning
2020-08-11 13:58:50 +05:30
Trisha Anand
d2442eb815
DO NOT MERGE: Bulk invite user to organization (#182)
* 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.
2020-08-11 09:24:21 +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
43304ca146
Fix form data not showing up in the right place when importing from curl (#198) 2020-07-30 16:30:39 +05:30
Trisha Anand
c6a9fc2bb4
Organization getById should use custom repository get function (#195)
* 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.
2020-07-29 16:57:46 +05:30
Shrikant Sharat Kandula
60efdb998b
Fix: Datasource password gets double encrypted on cloning (#191)
* Decrypt sensitive fields before cloning a datasource

* Fix NPE in cloning datasource when configuration is missing
2020-07-29 11:12:04 +05:30
Shrikant Sharat Kandula
66bf23106d
Fix cloning fails in some cases for organizations (#159)
* 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
2020-07-28 17:54:06 +05:30
Shrikant Sharat Kandula
74da0f117e
Reuse layout that's automatically created with page (#163)
* 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>
2020-07-25 18:13:29 +05:30
Shrikant Sharat Kandula
10ad639b28
Bug/layouts not updated on action change (#161)
* 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
2020-07-25 16:45:42 +05:30
Shrikant Sharat Kandula
5ee1c24224
Fix layouts not be updated when an action is updated (#160)
* Fix layouts not be updated when an action is updated

* Add test for updating onLoadActions when action updated
2020-07-25 15:43:22 +05:30
Shrikant Sharat Kandula
23dd84d9c8
Clear application pages list before cloning (#154) 2020-07-24 14:35:16 +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
3c30b38937
Bug fix : External datasources do not execute for public application (#143)
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
2020-07-23 20:31:36 +05:30
Shrikant Sharat Kandula
1fc582af08
When cloning examples organization, clone only public applications (#125)
* 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>
2020-07-21 13:39:07 +05:30
Trisha Anand
d1dd74018f
Bug fix : Update of datasource object leads to authentication field getting encrypted again. (#124)
* 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
2020-07-21 10:53:03 +05:30
Shrikant Sharat Kandula
55a6cc6614
Clone examples organization for every new user (#78)
* 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
2020-07-20 13:07:31 +05:30
Shrikant Sharat Kandula
f9e1d4f1ad
Chore/remove implicit permissions (#90)
* 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>
2020-07-20 13:06:47 +05:30
Shrikant Sharat Kandula
140bfed24f
Disable the direct create methods for pages and applications (#109)
* 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
2020-07-16 15:13:03 +05:30
Trisha Anand
20ae5fa546
Adding timeout in ActionViewDTO for the client to use to programmatically timeout on the execution request (#103)
* Adding timeout in ActionViewDTO for the client to use to programmatically timeout on the execution request.
2020-07-15 18:44:55 +05:30
Trisha Anand
6bfed87e40
Added pageId to action view dto (#101)
* 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.
2020-07-15 17:53:38 +05:30
Trisha Anand
212e98c4ba
Fixing test cases failing due to non unique names. (#100) 2020-07-15 16:42:53 +05:30
Arpit Mohan
6c16cba4b9
Adding null checks before encrypting or decrypting the password in AuthenticationDTO object (#99)
This ensures that we don't run in NPE
2020-07-15 16:29:05 +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
56acb5c9fd
New endpoint added to get actions by applicationId in view mode. (#88)
* New endpoint added to get actions by applicationId in view mode. Only id, name and jsonPathKeys are returned in view mode.
2020-07-13 23:27:49 +05:30
trishaanand
9eedb15620
Updating anonymous user permissions for application and associated pages & actions when public access is modified (#57)
* 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.
2020-07-09 11:21:39 +05:30
trishaanand
a5a3a5f4a2
Bug fix - In case of invited user signing up on Appsmith, the password is getting doubly hashed leading to sign in breaking for this user. (#51)
* 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.
2020-07-08 13:16:13 +05:30
trishaanand
c9703ea3b1
Special 404 handling and adding a few paths to the unauthenticated list to allow for public applications (#45)
* 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.
2020-07-06 20:21:07 +05:30
Shrikant Sharat Kandula
56547ec02f
Move application configuration to be loaded from environment variables (#23)
* 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
2020-07-06 14:35:56 +05:30
trishaanand
4a05ba6ac5
An invited user on signup should be set to enabled and should not lead to duplicate key exception. (#36) 2020-07-06 12:46:46 +05:30
Arpit Mohan
3035ec9bef
Adding the Github action workflow for the server code (#24)
* 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
2020-07-03 14:40:57 +05:30
Arpit Mohan
fdeed757ff
Fixing the move action API by removing invocations to subscribe (#17)
* 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>
2020-07-02 15:41:45 +05:30
Shrikant Sharat Kandula
95b9860bf9
Give appropriate error when method is invalid in cURL command (#1) 2020-07-01 12:37:59 +05:30
Trisha Anand
930e577f98 Bug Fix : When page name is updated, the policies should not get overwrritten. Changed the base service function to reset the empty policies to null in case the update is not used to update the policies. 2020-06-27 19:45:24 +00:00
Trisha Anand
76e3db497c Bug fix : Google SSO for sign up led to the organization id for personal organization not getting set up. 2020-06-26 11:59:33 +00:00
Arpit Mohan
bbf0aef450 Merge branch 'bug/embedded-datasource-without-organization-id' into 'release'
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
2020-06-26 11:43:16 +00:00
Shrikant Kandula
d5921ea52d When organizationId is null in a datasource, fail with the right error message 2020-06-26 11:43:16 +00:00
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
Shrikant Kandula
70c312ca40 Merge branch 'bug/disallow-delete-datasource-with-actions' into 'release'
Fail deleting datasource if there's actions against it

See merge request theappsmith/internal-tools-server!388
2020-06-18 10:41:49 +00:00
Shrikant Kandula
9f6a4f6ea5 Fail deleting datasource if there's actions against it 2020-06-18 10:41:48 +00:00
Shrikant Kandula
45961ddcde Merge branch 'bug/fail-on-invalid-page-id-when-creating-action' into 'release'
Fail with an error if can't find page when creating an action

See merge request theappsmith/internal-tools-server!394
2020-06-18 10:25:13 +00:00
Shrikant Kandula
f19764ab99 Merge branch 'bug/space-not-needed-in-header-in-curl' into 'release'
Fix parse error when there's a space in header in curl command

See merge request theappsmith/internal-tools-server!390
2020-06-18 10:11:39 +00:00
Shrikant Kandula
1d5fa960db Fail with an error if can't find page when creating an action 2020-06-18 15:05:55 +05:30
Trisha Anand
893698f09e Merge branch 'release' into feature/acl-spring-object
# Conflicts:
#	appsmith-server/src/main/java/com/appsmith/server/constants/FieldName.java
2020-06-17 15:10:23 +05:30
Shrikant Kandula
8e40240f25 Fix parse error when there's a space in header in curl command 2020-06-17 12:32:08 +05:30
Arpit Mohan
c6af229a97 Merge branch 'bug/default-page-action-refactor' into 'release'
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
2020-06-16 05:25:54 +00:00
Arpit Mohan
a4132d5845 Adding the widget names set to the default layout for a page 2020-06-16 10:50:07 +05:30
Shrikant Kandula
dd0ba857c2 Fix cURL import when using --url argument
Also fixes cases where there's a space between `-X` and `POST` and
similar cases.
2020-06-16 09:59:43 +05:30
Trisha Anand
9dfb72720e Fixed the broken test cases. 2020-06-12 19:35:01 +05:30
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
Trisha Anand
7a658ce5ea App viewer user in an organization should have read:organizations permission. 2020-06-10 15:55:29 +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
87aafd6cf4 Adding test case for testDatasource
Refactoring the testDatasource code by moving the business logic to the service layer.
2020-06-05 10:05:23 +00:00
Arpit Mohan
1ac69bab50 Modifying the default page name to Page1
Also creating a default empty layout when a new page is created. This ensures that the client can show the default message on new page creations.
2020-06-04 13:05:34 +05:30
Trisha Anand
f8cf87e3c8 Invite existing user to an organization works. Updated the test case for adding user to an organization as well to use the new API. 2020-06-01 17:39:27 +00:00
Trisha Anand
f1e1e6959a Bug : New users aren't able to read their own user object and hence homepage doesnt load.
Fix : Added lateral permissions for user on create.
2020-05-29 05:28:30 +00:00
Trisha Anand
d6670c70cc Bug Root Cause : New users have no applications inside the organizations(s). In this case, get all applications does not return back organizationApplications object.
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.
2020-05-28 13:31:24 +05:30
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
9f82bde92c Adding statusCode from AppsmithPluginErrors when plugins error out
This ensures that we can always display a status code on the client.
2020-05-26 11:50:09 +00:00
Trisha Anand
d98fce3d09 WIP: adding helper functions for adding/removing roles from an organization. Adding role updates the organization right now. Removing role -> added a helper.
TODO : finish the above code flows + cascade these to the children objects of the organization -> Applications/Pages/Actions.
2020-05-21 15:05:43 +00:00
Shrikant Kandula
7037d99cfa Use sequences for numbering new datasources. 2020-05-20 11:21:32 +00:00
Trisha Anand
e95b680169 create application now expects organization id. Fixed the test cases which broke because of this basic change in the way applications are created. 2020-05-19 17:09:51 +00:00
Shrikant Kandula
db0532941d Automatically add protocol to URL provided to cURL command. 2020-05-19 04:23:58 +00:00
Shrikant Kandula
c4d3d535a1 Rename isExecuteOnLoad to executeOnLoad.
The `is` prefix apparently makes Spring unhappy.
2020-05-18 12:13:54 +00:00
Arpit Mohan
a9580effa7 Using the last value of duplicate headers as that is the behaviour displayed by webclient and other clients as well. 2020-05-14 08:49:06 +05:30
Arpit Mohan
71d8812feb Fixing bug where duplicate headers were being set in the action execution result
Also removing empty headers from being sent to the action
2020-05-14 08:11:24 +05:30
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
Trisha Anand
9a8bf9dc89 In case the user is not signed in, return a 401 so that the user can be redirected to login by the frontend. 2020-05-13 18:00:03 +00:00
Shrikant Kandula
b65690ec74 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.
2020-05-12 16:05:29 +05:30
Shrikant Kandula
7f4d32e7d4 Report error when cURL command is invalid. 2020-05-12 04:12:55 +00:00
Trisha Anand
6cdab92bbe Merge branch 'feature/acl-action-inheritance' into 'feature/acl-spring-object'
Action Permission Inheritance during create.

See merge request theappsmith/internal-tools-server!329
2020-05-08 15:39:36 +00:00
Trisha Anand
b7435e546f Added action inheritance for permissions during create. No update permissions for action added. Fixed the existing test cases to run with the new code.
TODO : Add test cases for action permissions.
2020-05-08 15:39:36 +00:00
Trisha Anand
f7bb87824c Merge branch 'release' into feature/acl-spring-object
# Conflicts:
#	appsmith-server/src/main/java/com/appsmith/server/domains/User.java
2020-05-08 20:57:51 +05:30
Trisha Anand
d7637355fe Create Page always sets the inherited policies from the application. Update Application policy remains to be done. Leaving it as a TODO for now. 2020-05-08 16:32:46 +05:30
Shrikant Kandula
2e9a94341b Guard against NPE when action is null due to cURL command being invalid. 2020-05-08 01:22:02 +00:00
Trisha Anand
44ce0bbf01 Added baseservice function add and remove policies to an object. This would be used for updating permissions for an object. 2020-05-07 19:39:36 +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
1dbb98e1e8 Fix cURL import bugs with new cURL command parser 2020-04-28 09:09:03 +00:00
Trisha Anand
82eb02b88c Invite user to application as viewer or admin works now works in setting the correct permissions for the application. Next step is to set the correct permissions for the pages. 2020-04-27 18:19: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
6d5a1b9dd1 Fix mustache key parsing failing due to escaping in JSON serialization. 2020-04-15 10:24:12 +00:00
Shrikant Kandula
2dbf9d1c6b Test API for data sources 2020-04-15 10:02:09 +00:00
Trisha Anand
a82070648a Slug should be set by the application instead of insisting on the slug being present in the organization object. Added to the create valid organization test case to assert that the slug must exist. 2020-04-11 17:18:02 +05:30
Shrikant Kandula
abd9235360 Richer plugin validations 2020-04-10 09:59:50 +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
6d24b996e1 Don't nest into Enum properties when copying bean properties. 2020-04-06 07:27:24 +00:00
Shrikant Kandula
e5fd048205 New parser for extracting interpolations from Mustache templates 2020-04-02 13:24:55 +00:00
Arpit Mohan
b7b7328c3f Merge branch 'release' into feature/acl-spring-object 2020-04-02 13:53:31 +05:30
Arpit Mohan
1b18c4d6b3 Writing the initial test and implementation for the application user invite flow.
The permissions are being translated to the application domain. Need to also be translated to the page & action domain.
2020-04-02 13:21:01 +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
4927e7b8d8 Adding a custom SecurityContextFactory to instantiate Mock anonymous user in the test cases.
Now we have a lot of flexibility around the SecurityContext during testing. We can instantiate any type of mock users bearing different roles & permissions.
2020-04-01 10:20:04 +05:30
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
9f9098268b Fixing the user service test cases 2020-03-29 17:06:20 +05:30
Arpit Mohan
036bd3a392 Fixing the test cases and SeedMongoData
Only userServiceTest is failing now.
2020-03-28 23:07:31 +05:30
Arpit Mohan
381f2f6b4f Resolving merge conflicts from release branch 2020-03-28 21:52:35 +05:30
Arpit Mohan
9ce82bdcb6 Fixing json serialization issue for new line and JSON bodies.
Now we escape all the bindings once on the server to ensure that the unescaping that Spring did is reversed.
2020-03-28 13:48:41 +00:00
Shrikant Kandula
31fa5a66f1 Use mongock for migrations.
Mongock is a fork of Mongobee with a better integration with
Spring. It also does not suffer from trying to access the
`system.indexes` collection.
See https://github.com/mongobee/mongobee/pull/87.
2020-03-28 10:08:11 +05:30
Shrikant Kandula
0947ddcd0f Remove findByName method for Organization domain.
Organization names are no longer unique, so this method
doesn't make as much sense. The `findBySlug` should serve
in it's place.
2020-03-27 14:52:25 +00:00
Arpit Mohan
d384dac7ec Minor code clean up 2020-03-19 00:54:04 +05:30
Arpit Mohan
c5ac557961 Fixing the test cases for pageService and LayoutService
Also adding a helper query function in BaseAppsmithRepository that will make the code much cleaner for custom repository functions.
2020-03-19 00:24:30 +05:30
Arpit Mohan
9bf7bab85b Moving organization repository functions to the custom class.
Also fixing the SeedMongoData file with the seed data to correspond to the changes made in the OrganizationRepository. We will default to using the mongoTemplate in the SeedMongoData file in the future so that we don't have to deal with ACL when we are simply populating the DB.
2020-03-18 22:56:32 +05:30
Arpit Mohan
fc6f225935 Adding user policy to manage organization and fixing the organization create flow to ensure the right permissions are set
Also adding test case for get applications. Now we will fetch all applications that the user has read permissions to by default. It's not dependent on the organization that they are a part of.
2020-03-18 16:09:47 +05:30
Arpit Mohan
c06e16db83 Making changes to get the page tests to pass. Also minor improvements to LayoutServiceTest 2020-03-18 14:47:00 +05:30
Arpit Mohan
19b0d53c22 Fixing the tests for page creation. Also adding policies when a new page is created. 2020-03-17 18:47:45 +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
40964c3dfe WIP commit of trying to create an inheritance structure with permissions.
Also, moving all permissions to READ & MANAGE. Not maintaining separate permissions to create, update & delete.
2020-03-06 09:29:45 +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
c9a885d605 Modifying the create application flow in ApplicationPageService. All the tests in ApplicationService are passing
In order to create an application with valid permissions, we copy the relevant permissions from the organization of the user. This involves changes to the organizationService and OrganizationRepository as well.
2020-03-05 18:53:40 +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
125982dabf Adding the ARN object and parsing it for user login and while checking permissions in PreAuthorize & custom repo implementations 2020-03-04 18:57:46 +05:30
Arpit Mohan
d239f25697 Fixing the curl parser test. Required setting a MockBean for pluginExecutor bean and adding RestTemplateExecutor to the SeedMongoData file.
Also moving the plugin search in CurlImporterService to packageName instead of just name.
2020-02-29 10:05:10 +05:30
Arpit Mohan
2ad6d3f11b Adding test cases in ActionService for some create Action workflows 2020-02-26 12:46:10 +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
Arpit Mohan
786aca059e Revert "Merge branch 'feature/embedded-datasource' into 'release'"
This reverts commit 35b49833615d88bc484207670b8ddf645f70d1ad, reversing
changes made to 29bee80c426b4c469bf8e774b7febf4f63b196b4.
2020-02-24 11:31:58 +05:30
Trisha Anand
a7881935da This fixes the bug during refactor of name of a widget/action. This bug is recreatable if in the page there is an action with no jsonPathKeys. Handled the null pointer exception by first checking for the null pointer. 2020-02-21 07:19:46 +00:00
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
670ca4cb7e Added log for execute action 2020-01-15 09:13:27 +00:00
Trisha Anand
28e20ed3bd Move action also works successfully in removing the action from the previous page's onLoadActions while moving to another page. 2020-01-13 12:07:10 +00:00
Trisha Anand
30b094c7a5 Curl Parsing for http. Extracts : Method, Headers, Query Params, URL (without query params). Yet to finish Body 2020-01-02 13:38:55 +00:00
Trisha Anand
cef09282eb 1. For creating the dependency graph, only APIs with HTTP method GET is used. The other actions used in the DSL are ignored.
2. Only dependencies of actions over other actions are counted. If the action is dependent on widgets, thats is not counted as a dependency and is left for the frontend to handle.
2020-01-02 13:38:40 +00:00
Arpit Mohan
f75331b116 Adding a flag to determine if we should send emails for that particular environment 2019-12-19 13:02:48 +05:30
Arpit Mohan
fdba2f62ef Adding email sending capability when the user resets their password 2019-12-08 15:46:17 +00:00
Trisha Anand
046751b1ba Working version where the top feeding nodes have been discovered in the tree. These would be page load actions. 2019-12-08 13:41:15 +00:00
Trisha Anand
23dbd4c78a Create/Update user used password encoder to encode the user password before storing it in the database 2019-12-06 12:15:28 +00:00