* fix: content-type is empty when it's not specified.
* feat: try to guess the content type json or form-urlencoded
* fix: broken test for curl with `--data-urlencode` parameter
* fix: fix guessing urlEncodedPattern
* fix: fix broken tests
* fix: Fixed and improved the code formatting
This PR adds API to save a customized theme so that it can be used again for that application. It also adds permission to themes. Each customized theme will have permissions set just like other domain objects.
The GET /application/new API is used to show list of organizations, applications in home page. The list of pages under each application contains only page id. As we're introducing page slugs in URLs, we need the slug of the default page inside the response of this API. This PR adds default page's slug to the response of GET /application/new API.
* Delete the pages post merge operation from application if they are removed from file system
* Changes per review
* Add tests
* changes per review
* Use string utils for null check
* Change per review
* Fix tests
* Fix tcs
* Added API to generate deploy keys and store them in a collection for import flow
* Add tests for the key generation flow
* Move the key generation to helper class
* changes per review
* Fix bad merge
* add api to import application
* handle timeout for git import
* Update the comments
* Add API for git import
* handle duplicate application name error & add profiles while importing
* Add tests for import api
* Hydrate from file system after cloning the repo
* Fix test failures
* Test cases
* changes per review
* throw error when the datasource with same name of different type exists
* Fix test failures
* Fis error messages
* Fix test failures
* Fix issue with checking the datasource types
* Add datasource name check while importing the application
* Refactor SSH key gen code for import
* Resolve issues around defaultResourceIds, don't commit app name
* Resolve the issue related to duplicate name for app during import
* Minor fixes
* WIP
* Add logic to get unconfigured datasources for the application
* Fix tests
* WIP
* revert datasource related changes
* Add a boolean flag to Datasource entity
* Add a boolean flag to Datasource entity
* Add flag to identify import status
* Set application name before importing from json files in git-import
* update the variable name
* changes per review
Co-authored-by: Abhijeet <abhijeet@appsmith.com>
* Add logic to sync the repo if the path is not updated in env file
* changes per review
* checkout branch locally when the branch is not present in remote
* Add the local checked out branch to list
When an user signs up, we store the email in lower case. When user logins with oauth2, we fetch user by email ignoring case. This creates a problem if email from oauth is in upper case. As users are registered with lowercase and we're trying to fetch with upper, users are not found.
This PR fetches user by case insensitive emails during oauth login.
* fixes js object cloning issue
* fix10463- JSObject returning new name of cloned object
Co-authored-by: Irongade <adeoluayangade@yahoo.com>
Co-authored-by: Leo Thomas <leoweb2010@gmail.com>
* Fix clone JSObject issue where cloned JSObject gets attached to both parent and cloned page
* Race condition for delete action when trying to delete page with JSObject
* Set published collection to null during fork application
We've added slug for pages. Each page has a slug which is generated from name automatically. In our get pages API /api/v1/pages/application/<app_id>, the slug names were not included in the Page DTO. This PR adds slug name in this API response.
* move away from RSA-SHA1 to ECDSA-SHA2 protocol for key generation
* Add migration to regenerate SSH keys via new protocol
* use 256 bit signature for the keys
* remove unused imports
* Fix error message for key generation
* This PR fixes the page load action execution order when the actions have been set to run on page load explicitly via the settings tab by the user and its data has not been referenced in any other widget or action. e.g.
- create action1 and action2.
- make action2 dependent on action1 by adding {{action1.data}} in action2's body.
- set both action1 and action2 to run on page load via settings tab. Do not reference action1 and action2 data in any other widget or action.
* This PR adds a limit field which sets the batchSize for aggregate command. This way the user can set the number of documents they want in their Mongo query result.
* limit is set to 10 initially. However, for pre-existing Mongo actions, migration has been added to set this field to 101 - which is the default value that has been used by Mongodb in the absence of any user set value. Ref: https://docs.mongodb.com/manual/tutorial/iterate-a-cursor/
* Added Mono sink calls for git and import application APIs
* TC for import-export
* Update TCs for gitService
* Added git commit and create branch test
* Test added for midway cancellation flow
* Added API to generate deploy keys and store them in a collection for import flow
* Add tests for the key generation flow
* Move the key generation to helper class
* changes per review
* changes per review
* Error handling for git limit
* clear cahe of git limit on connect api
* update per review
* check the repo is public before checking for the limit
* changes per review
* check if the repo is public or private during connect flow
* fix issues with sync branches
* Add sucess error handler
* changes per review
* add missing return statement
* remove unused import statements
* add another migration for those Firestore actions that could not be migrated.
* handle ClassCastException via try catch and assigning default empty value.
* Error handling for git limit
* clear cahe of git limit on connect api
* update per review
* check the repo is public before checking for the limit
* changes per review
* check if the repo is public or private during connect flow
We should last updated date of an application in the home page. If an application was updated internally e.g. a new user was added to the application, the updated date was set and it was displayed in the home page. This PR fixes that problem.
* Added check for private repos
* WIP limit repos
* Get the git connected apps from git
* Call CS to get the limit for the git connected apps
* Update comment
* Changes per review
* Add check for limiting the repo
* Cache the results from cloud service
Co-authored-by: Abhijeet <abhijeet@appsmith.com>
* Added appsmith profile as a fallback value
* Modified TC for userData to include git profile TCs
* Added check for null value when user want to use repo level profile and provide empty author name or email
* Refactor method names
* Port Firestore plugin to UQI schema
* This PR implements a non-functional requirement i.e. from an end user perspective there is no change in the features that the plugin provides. However, the underlying DSL to render and interpret the query interface has been updated.
* It also involves a migration change to port existing Firestore plugin actions to the new UQI schema.
* Server comes up
* Instead of extracting ee, we extract the ce to get the mongo repo to work
* ActionRepo migrated
* ApiTemplateRepo migrated
* Application repo migrated
* Asset Repo migrated
* Collection repo migrated
* Comment repo migrated
* Comment thread repo migrated
* Config repo migrated
* datasource repo migrated
* group repo migrated
* Invite user repo migrated
* layout repo migrated
* New action repo migratd
* .
* Migrated rest of the repos.
* Migrated the repo impl as well between ce and common
* acl package partially migrated
* Authentication migration done!
* Controllers migrated
* AppsmithPermission enum migrated to class and split
* Unnecessary change removed
* Appsmith role enum converted to class
* Revert
* Reverting enum to class conversion after failing at implementing
* All services migrated
* server.solutions package completed
* Fixed solutions failing test cases
* Code compiling! Woohoo!
* refactor api's to include branchName for git
* Check for updating Ids for move action
* Added check for global profile
* Fix bad merge
Co-authored-by: Abhijeet <abhijeet@appsmith.com>
When user duplicates an application, the source application is also being marked as recently accessed application. As a result both the duplicated application and the source application are shown in the beginning of the list of applications.
* fix: PageLoad - action.data implicitly depends on action.actionConfiguration. Added this relationship to dag
* Random walkthrough comments
* Logic does not work!
* Ignore pagination configuration from dynamic binding path list to avoid creating cyclic dependency
* The most complicated test case ever passed! Woohoo!
* Code cleanup
* Incorporated review comments
Sending the test email was using existing email configuration, this commit fixes this to use the configuration provided by the user on the admin settings UI.
* fix: Added client side execution logic and on page load logic for js
* Revert dev env
* Revert dev env
* Updated tests expectation partly to break PR
* fix: Reverted test breakage for this PR
* Untested trigger framework added
* Entity selector is working!
* Moved to query params instead of request body for the trigger api (since the trigger api is of type GET)
* Adding minor comments
* Added test case for trigger functionality
* Add API to checkout remote branch
* Create a new application on fetch
* Create a new application on checking out remote branch
* Add tests
* Change per review comments
* Changes per review comments
* Migrations for updating dynamic trigger paths for list widget in the existing pages to remove incorrect trigger paths.
* Removed an unnecessary line
* Review comment
* If widgetType is null, then this would ensure that NPE is not thrown.
* Remove Region field from S3 datasource editor page for AWS S3, Upcloud, Digital Ocean Spaces, Dream Objects, Wasabi.
* Use SDK provided property for AWS S3 to delegate region selection to the SDK.
* Extract region info from endpoint URL for Upcloud, Digital Ocean Spaces, Dream Objects and Wasabi, since the SDK property does not work for these service providers.
* Removed some redundant checks from datasourceCreate that were already part of validateDatasource
* Fix show clause in list.json
Generates and stores a slug from application name and page names when they are created or updated. Also adds a migration to set slug to existing applications and pages.
When a page is deleted, the comment threads in that page should also be deleted and should not appear to user.
The Edit mode comments should not be visible to app viewers.
* WIP
* Add relevant error messages for push action
* fix tests
* changes per review comments
* Add error message for the file system related error
* Fix test failures
* Fix test failures
When deciding whether to redirect to default application or the redirect url provided during signup, it'll compare with url path now. Earlier it was considering any query params added to the redirect url.
* core workflows of git - branch, clone, commit, pull, merge, status, log
* Rehydrate file system before merge operation
* Add logic to handle merge conflict for merge and pull flow
* Add defaultBranch to listBranch API
* Add Unit tests for git commands
* Upgrade JGit dependencies to fix the security issue
* Git command tests
* Revert unwanted changes and update delete application flow
* Disable git feature until the FE changes are merged
Co-authored-by: Abhijeet <ABHI.NAGARNAIK@GMAIL.COM>
* Recently a change was introduced to modify the default value of s3 plugin's permanent URL toggle from NO to YES. This created an issue with the older actions where the toggle didn't exist and hence no value was saved against its property. Hence, since the default is now ON and the older actions don't have any value saved, the action editor shows the toggle value as ON but behaves like the value is OFF. To fix this issue, this method adds URL toggle as NO where no toggle value exists.
Solves for two things:
1. From the welcome page signup, depending on telemetry being enabled or disabled, we report.
2. When telemetry is changed from welcome page (which, it obviously will), we make the change persistent by writing to the env file.
* Update asset urls
* fix: use successImageUrl for CRUD success popup
* Increase delay to switch between GIF and image
* Use ASSETS_CDN_URL instead of S3_BUCKET_URL
Co-authored-by: Rishabh-Rathod <rishabh.rathod@appsmith.com>
* Delete CRUD-DB-Table-Template-Application.json
* Updated Template
* Update TC to replace selectedRow with triggeredRow as per the updated template
Co-authored-by: Abhijeet <ABHI.NAGARNAIK@GMAIL.COM>
* -set user photo id when adding a new comment thread
* -update user data when users remove their profile photo
* -updated photo id in comments when user changes or set a profile photo
* -remove photoid from thread, kept it in comment only
* -resized uploaded profile image
* -added test for delete profile photo
* -add test for the comment set user photo
* -check user change event handler is called in delete user photo
* -add test for checking user photo change event is triggered after upload photo
* -fixed tests due to changes
* -make profile pictures thumbnail only
* - used get photo by asset id API to show user photo in comment card
- set cache control header in get asset by id API
* - stop using email address to show user photo
The env config API currently only changes values that are already defined in the env file. It is not capable of adding anything to the file.
This commit adds the capability to do so. However, since we don't want to let the client add just any variable, we've switched from a black list to a white list of env variables that can be managed by this API. If the requested variable is present in the whitelist, we add it, if its missing in the env file.
This commit adds the following API:
`/api/v1/admin/env` — Responds with the names and values of all environment variables currently configured, that are allowed for configuration from the UI. Some variables will be missing from this, ones that are not allowed to be edited from the configuration UI.
Doesn't take any query params. Only usable by the superuser.
Also added a `isSuperUser` boolean field to the response of `api/v1/users/me`, that will indicate whether the current user is a superuser or not.
* Currently, the list of actions to be run on page load is not updated when an action object gets deleted. Hence, sometimes, a previously deleted action may be set to run on page load which throws an error when the application tries to run it on page load.
* This PR updates the list of actions to be run on page load whenever any action gets deleted.
* Same templates for mongo fetch
* WIP
* Working version
* Minor refactoring and addition of comments for understanding the code flow
* Minor fileName change
* Extra check added to only try to read options for command
With latest update, the following fields are unavailable on the `appsmith.user` object:
- `accountNonExpired`
- `accountNonLocked`
- `credentialsNonExpired`
- `isAnonymous`
- `isEnabled`
These fields are necessary for building applications and many apps were relying on these, despite them not being listed in the documentation at <https://docs.appsmith.com/framework-reference/appsmith#user>.
* Changes to add js plugin
* routes+reducer+create template
* added debugger to js editor page
* entity explorer changes
* create js function
* added copy, move and delete action
* added js plugin
* added existing js functions to data tree
* removed actionconfig for js collection
* new js function added to data tree and entity as well
* parsing flow added
* changes to data tree
* parse and update js functions
* small changes for def creator for js action
* create delete modified
* small changes for update
* update flow change
* entity properties added
* removed linting errors
* small changes in entity explorer
* changes for update
* move, copy implementation
* conflict resolved
* changes for dependecy map creation
* Only make the variables the binding paths
* Basic eval sync working
* Minor fixes
* removed unwanted code
* entity props and autocomplete
* saving in progress show
* redirection fix after delete js action
* removed unnecessary line
* Fixing merge conflict
* added sample body
* removed dummy data and added plugin Type
* few PR comments fixed
* automplete fix
* few more PR comments fix
* PR commnets fix
* move and copy api change
* js colleciton name refactor & 'move to page' changes & search
* view changes
* autocomplete added for js collections
* removing till async is implemented
* small changes
* separate js pane response view
* Executing functions
* js collection to js objects
* entity explorer issue and resolve action on page switch
* removed unused line
* small color fix
* js file icon added
* added js action to property pane
* Property pane changes for actions
* property pane changes for js functions
* showing syntax error for now
* actions sorted in response tab
* added js objects to slash and recent entitties
* enabling this to be used inside of function
* eval fix
* feature flag changes for entity explorer and property pane
* debugger changes
* copy bug fix
* small changes for eval
* debugger bug fix
* chnaged any to specific types
* error in console fix
* icons update
* fixed test case
* test case fix
* non empty check for functions
* evaluate test case fix
* added new icons
* text change
* updated time for debounce for trial
* after release mereg
* changed icon
* after merge
* PR comments simple
* fixed PR comments - redux form, settings remove
* js object interface changes
* name refactor
* export default change
* delete resolve actions chnage
* after merge
* adding execute fn as 3rd option and removed create new js function
* issue 7054 fixed - app crash
* execute function on response tab changes
* refactor function name part 1
* refactor of js function name
* try catch added refactor
* test fix
* not used line removed
* test cases locator fixed
Co-authored-by: Nidhi <nidhi.nair93@gmail.com>
Co-authored-by: hetunandu <hetu@appsmith.com>
- Added new API that generates a new ssh key pair and stores that inside the git meta data of an application. The key is generated in open ssh format. The private key is stored as encrypted in DB.
* Insert git application metadata to application object, for git sync/version control feature there is a need to save the application in the structured format
* Added changelog to index application collection with git branch and remoteurl
* Rehydrate and dehydrate applications among different instances
* Added serailisation purpose while exporting the application to make distinction between version control and regular import-export flow
* Git file operations moved to appsmith-git module
* Delete json reference from directory for deleted resource in DB
* Added git authentication in application metadata
* Replace String with Path to handle file path in git file structure
We're not going to be collecting the company name for the self-hosted installation, but instead we'll be collecting the use-case that is being solved with Appsmith.
* Adding `APPSMITH_PLUGIN_MAX_RESPONSE_SIZE` which can be configured as an environment variable to increase plugin response size (currently only supported for Postgres Plugin)
* Updated error message + added the environment variable to the template docker env files for new installations
* WIP
* -redirect to newly created application after signup
* feat: create default application if no redirect url exists. also add a param to indicate first time user experience
* -updated function comment as per PR review
* -updated the create application using existing function
* -added check whether application is null when creating application page url
* -removed unnecessary refactoring
* -removed unused parameter from method
CRUD Info modal which pops up on successful CRUD generation, will now have dynamic data for each CRUD template.
Modal success `message` and `Image` to explain the working of the CRUD template is fetched from the backend.
Co-authored-by: Abhijeet <ABHI.NAGARNAIK@GMAIL.COM>
The superuser signup api available at /users/super currently only supports JSON payload. This PR adds support for form-data payload at the same endpoint, and makes it consistent with the normal user's signup API endpoint.
* Add errorType to response
* Fix Test Failures
* group the errors
* Add errorType to categorise the issue/error
* remove the helper class
* update changes as per review
* Update the logical groupings of errors
* Fix formatting issues
* Updated the error types
* Update error classification
* Change the name of the mock datasource
* Remove the hardcoded value for Cloud services
* Handle index out of exception
* Add check if the response contains necessary credentials for mockdb
* Change as per review comments
* Fix cypress test failures
* minor changes to fix cypress test for mock data according to new changes
* updated mock data locator
* Update the mockdata source name
Co-authored-by: Pranav Kanade <pranav@appsmith.com>
* -limit the rate for sending password reset requests
* -used encrypted token in password reset
* -add unit tests for the password reset issue
* -improved formatting
* -updated PR as per review comments
* -hanled IllegalStateException instead of Exception when parsing the encrypted token
* Added version check
* Added error message for version check while importing the file
* Added TC to check version in exported file
* Added version in FE assets for cypruss test
* Add API for env management and super user
* Add missing files
* Add API for signing up for super user
* Fix types in client code
* Add docs for env manager API
* Minor refactoring
* Remove unused updates to app startup
* Better error logging when unable to write file
Co-authored-by: Nidhi <nidhi@appsmith.com>
* Don't cache the user count (duh!)
Co-authored-by: Nidhi <nidhi@appsmith.com>
* bugfix: notification not created if user is mentioned in the first comment of a thread
* -add notification event type in comment notifications
-show different message for create thread and create comment in UI
* -send notification when comment is deleted
* -send notification when comment thread is deleted
This PR adds the email based rollout strategy to features. We can now define a list of domain names in the init-flags.yml file and define the domains for which the feature will be active.
Also added tests to assert the functionality for this flag flipping strategy.