Commit Graph

56 Commits

Author SHA1 Message Date
Julien Nahum 5f0f873fb2 Add configuration option to hide official templates
Introduce a new environment variable and configuration option to allow users to hide official templates in the template gallery. This provides more flexibility for self-hosted instances of OpnForm.
2025-02-01 21:14:28 +01:00
Julien Nahum f7df6bc0d7 Refactor Docker configuration and development setup
- Update .dockerignore with comprehensive ignore patterns for API and client
- Modify docker-compose files to improve service configurations
- Enhance Nginx configuration for development and production environments
- Refactor Dockerfile.api with improved build process
- Add docker-setup.sh script for simplified Docker deployment
- Update update-credentials.vue page with improved UI
- Remove hCaptcha dependency from package-lock.json
- Update PHP configuration and entrypoint scripts
2025-01-29 17:19:36 +01:00
Chirag Chhatrala 4fae4e6328
Enhance email settings functionality by adding sender address support (#668)
Co-authored-by: Julien Nahum <julien@nahum.net>
2025-01-27 16:07:01 +01:00
Julien Nahum a67dff14a4 Fixed linting 2025-01-16 10:09:54 +01:00
Julien Nahum 9bf83d5f89 Enhance Tax Export Command Date Handling
- Improved date validation logic in the GenerateTaxExport command.
- Added default start date as the first day of the previous month if not specified, with user confirmation.
- Set default end date to the end of the month based on the start date if not provided.
- Refactored date formatting for better readability and consistency in log messages.
- Enhanced the clarity of the progress bar query options by formatting the expand array.

These changes improve user experience by providing sensible defaults for date inputs and ensuring clear communication of the command's actions.
2025-01-14 14:40:26 +01:00
Julien Nahum 747b41d0a6 Add error logging for integration failures in AbstractIntegrationHandler
- Introduced logging of integration failures to capture detailed error information.
- Enhanced error handling by logging the form ID and integration ID along with the exception data.

These changes improve the observability of integration processes, aiding in debugging and monitoring.
2025-01-14 14:34:03 +01:00
Julien Nahum e3fd709326 Refactor Email Integration Handling
- Removed the AbstractEmailIntegrationHandler class to streamline email integration logic.
- Updated EmailIntegration class to extend AbstractIntegrationHandler instead of the removed class.
- Modified FormEmailNotification to handle mailer configuration internally, eliminating the need to pass the mailer as a parameter.

These changes enhance the clarity and maintainability of the email integration process by consolidating configuration logic and reducing class dependencies.
2025-01-14 13:29:09 +01:00
Chirag Chhatrala cc62f614e4
Enhance Form Submission Export Functionality (#657)
* Enhance Form Submission Export Functionality

* Validate new param 'columns'

* Form submission export request as seprate class with validation

* Test case for export

---------

Co-authored-by: Julien Nahum <julien@nahum.net>
2025-01-07 15:04:02 +01:00
Chirag Chhatrala b0311257ac
improve s3key exception (#661) 2025-01-06 12:52:20 +01:00
Chirag Chhatrala 2366f9515d
Readonly User (#637)
* Readonly User

* Refactor FormPolicy and TemplatePolicy to centralize write operation logic

- Introduced a private method `canPerformWriteOperation` in both FormPolicy and TemplatePolicy to encapsulate the logic for determining if a user can perform write operations on the respective models.
- Updated the `update`, `delete`, `restore`, and `forceDelete` methods in FormPolicy to use the new method for improved readability and maintainability.
- Simplified the `update` and `delete` methods in TemplatePolicy to leverage the centralized write operation logic.

This refactoring enhances code clarity and reduces duplication across policy classes.

* Refactor user and workspace permissions handling

- Updated FormController to authorize form creation based on workspace context.
- Removed the `is_readonly` attribute from UserResource and integrated it into WorkspaceResource for better encapsulation.
- Refactored User model to eliminate the `getIsReadonlyAttribute` method, shifting readonly logic to the Workspace model.
- Adjusted FormPolicy and TemplatePolicy to utilize workspace readonly checks for user permissions.
- Updated various frontend components to reference workspace readonly status instead of user readonly status, enhancing clarity and consistency in permission handling.

These changes improve the management of user permissions in relation to workspaces, ensuring a more robust and maintainable authorization system.

* Fix isReadonlyUser

* fix pint

---------

Co-authored-by: Julien Nahum <julien@nahum.net>
2024-12-30 14:35:23 +01:00
Chirag Chhatrala 9a2d7b9d8d
On slack,discord add support for Include hidden fields (#654) 2024-12-30 11:11:17 +01:00
Chirag Chhatrala 3d9bc60ca1
Evaluate custom validation rules first (#655) 2024-12-30 11:00:10 +01:00
Chirag Chhatrala d18c4cc9bf
ESC-417-date-input-is-not-showing-in-google-sheet (#653) 2024-12-19 13:34:41 +01:00
Chirag Chhatrala d7ce8536c8
Add reCAPTCHA support and update captcha provider handling (#647)
* Add reCAPTCHA support and update captcha provider handling

- Introduced reCAPTCHA as an additional captcha provider alongside hCaptcha.
- Updated form request validation to handle different captcha providers based on user selection.
- Added a new validation rule for reCAPTCHA.
- Modified the forms model to include a 'captcha_provider' field.
- Created a migration to add the 'captcha_provider' column to the forms table.
- Updated frontend components to support dynamic rendering of captcha based on the selected provider.
- Enhanced tests to cover scenarios for both hCaptcha and reCAPTCHA.

These changes improve the flexibility of captcha options available to users, enhancing form security and user experience.

* fix pint

* change comment text

* Refactor captcha implementation and integrate new captcha components

- Removed the old RecaptchaV2 component and replaced it with a new implementation that supports both reCAPTCHA and hCaptcha through a unified CaptchaInput component.
- Updated the OpenForm component to utilize the new CaptchaInput for dynamic captcha rendering based on user-selected provider.
- Cleaned up the package.json by removing the deprecated @hcaptcha/vue3-hcaptcha dependency.
- Enhanced form initialization to set a default captcha provider.
- Improved error handling and cleanup for both reCAPTCHA and hCaptcha scripts.

These changes streamline captcha integration, improve maintainability, and enhance user experience by providing a more flexible captcha solution.

* Refactor captcha error messages and localization support

* Refactor registration process to integrate reCAPTCHA

- Replaced hCaptcha implementation with reCAPTCHA in RegisterController and related test cases.
- Updated validation rules to utilize g-recaptcha-response instead of h-captcha-response.
- Modified RegisterForm component to support reCAPTCHA, including changes to the form data structure and component references.
- Enhanced test cases to reflect the new reCAPTCHA integration, ensuring proper validation and response handling.

These changes improve security and user experience during the registration process by adopting a more widely used captcha solution.

* Fix reCAPTCHA configuration and update RegisterForm styling

- Corrected the configuration key for reCAPTCHA in RegisterController from 'services.recaptcha.secret_key' to 'services.re_captcha.secret_key'.
- Updated the styling of the Captcha input section in RegisterForm.vue to improve layout consistency.

These changes ensure proper reCAPTCHA functionality and enhance the user interface during the registration process.

* Fix reCAPTCHA configuration in RegisterTest to use the correct key format

- Updated the configuration key for reCAPTCHA in RegisterTest from 'services.recaptcha.secret_key' to 'services.re_captcha.secret_key' to ensure proper functionality during tests.

This change aligns the test setup with the recent updates in the reCAPTCHA integration, improving the accuracy of the registration process tests.

---------

Co-authored-by: Julien Nahum <julien@nahum.net>
2024-12-18 16:35:09 +01:00
Chirag Chhatrala 7365479c83
Email spam security (#641)
* Add hCaptcha on register page

* register page captcha test cases

* Refactor integration validation rules to include form context

- Updated the `getValidationRules` method in various integration handlers (Discord, Email, Google Sheets, Slack, Webhook, Zapier) to accept an optional `Form` parameter, allowing for context-aware validation.
- Enhanced the `EmailIntegration` handler to enforce restrictions based on user plans, ensuring free users can only create one email integration per form and can only send to a single email address.
- Added a new test suite for `EmailIntegration` to validate the new restrictions and ensure proper functionality for both free and pro users.
- Introduced loading state management in the `IntegrationModal` component to improve user experience during save operations.

These changes improve the flexibility and user experience of form integrations, particularly for email handling.

* for self-hosted ignore emil validation for spam

* fix pint

* ignore register throttle for testing env

* support new migration for mysql also

* Register page captcha enable if captcha key set

* fix test case

* fix test case

* fix test case

* fix pint

* Refactor RegisterController middleware and update TestCase setup

- Removed environment check for throttling middleware in RegisterController, ensuring consistent rate limiting for the registration endpoint.
- Updated TestCase to disable throttle middleware during tests, allowing for more flexible testing scenarios without rate limiting interference.

* Enhance hCaptcha integration in tests and configuration

- Added hCaptcha site and secret keys to phpunit.xml for testing purposes.
- Updated RegisterTest to configure hCaptcha secret key dynamically, ensuring proper token validation in production environment.

These changes improve the testing setup for hCaptcha, facilitating more accurate simulation of production conditions.

---------

Co-authored-by: Julien Nahum <julien@nahum.net>
2024-12-18 13:16:27 +01:00
Chirag Chhatrala c1ee072b71
Improve Integration Cards (#643)
* Add integration action components and update integration JSON files

- Introduced new action components for Email, Slack, Discord, Webhook, and Google Sheets integrations, enhancing the user interface for managing these integrations.
- Updated the `integrations.json` files to include `actions_file_name` for each integration, linking them to their respective action components.
- Improved the `GoogleSheetsIntegrationActions.vue` component by replacing direct provider information display with a badge for better UI consistency.

These changes aim to streamline integration management and improve the overall user experience.

* Minor UI fixes

---------

Co-authored-by: Julien Nahum <julien@nahum.net>
2024-12-18 13:07:19 +01:00
Chirag Chhatrala 28019fc7a0
Implement regex validation conditions in form logic (#645)
* Implement regex validation conditions in form logic

- Added support for 'matches_regex' and 'does_not_match_regex' conditions in FormPropertyLogicRule and FormLogicConditionChecker.
- Updated validation logic to handle regex patterns, including error handling for invalid patterns.
- Enhanced tests to cover scenarios for successful and failed regex validation, ensuring proper feedback for form submissions.
- Updated JSON schema to include new regex condition types.

These changes improve the flexibility of form validation by allowing regex-based conditions, enhancing user experience through more robust validation mechanisms.

* update resource filters

* Remove ray

---------

Co-authored-by: Julien Nahum <julien@nahum.net>
2024-12-16 17:17:29 +01:00
Chirag Chhatrala 20405ee606
Send mobile editor email (#634)
Co-authored-by: Julien Nahum <julien@nahum.net>
2024-12-12 11:19:09 +01:00
Chirag Chhatrala ea4cd85eae
Enhance redirect URL handling and MentionParser functionality (#639)
- Updated the `redirect_url` validation in `UserFormRequest` to accept strings instead of just max length.
- Modified `MentionParser` to include a `urlFriendlyOutput` method, allowing for URL encoding of special characters in parsed values.
- Adjusted the `PublicFormController` to utilize the new `urlFriendlyOutput` method for redirect URLs.
- Created a migration to change the `redirect_url` field type in the database from string to text, accommodating longer URLs.
- Added tests to ensure proper handling of long redirect URLs and the functionality of the new URL-friendly output feature in `MentionParser`.

This update improves the flexibility and robustness of form handling and URL processing.
2024-12-10 12:26:01 +01:00
Julien Nahum d09b5c45a5 Update validation messages for clarity in English and Spanish
- Revised the 'invalid_json' validation message in both English and Spanish to enhance clarity and user understanding. The new messages are more concise and direct, improving the overall user experience when inputting data.
2024-12-09 20:28:34 +01:00
Julien Nahum 705c84dae4 Enhance language support and fix validation messages
- Added support for additional languages (Bengali, Portuguese, Russian, Urdu, Punjabi, German, Javanese, Korean, Vietnamese, Telugu, Marathi, Tamil, Turkish) in the application.
- Updated validation messages across multiple languages to correct formatting issues and improve clarity, including Arabic, English, Spanish, French, Hindi, Japanese, Norwegian, and Chinese.
- Removed obsolete Norwegian language files to streamline localization efforts.
- Improved the language selection interface in the form customization component.

These changes aim to enhance user experience by providing better language support and clearer validation feedback.
2024-12-09 12:47:01 +01:00
Chirag Chhatrala daca69267b
Form Translation (#616)
* Form Translation

* Support for other languages

* Support locale for datepicker

* Apply translation on select input

* Apply translation on select input

* Improve translation

---------

Co-authored-by: Julien Nahum <julien@nahum.net>
2024-12-04 18:32:14 +01:00
Julien Nahum 6cf1cd663a Refactor AnswerFormRequest to enhance option matching logic
- Improved the option matching logic in AnswerFormRequest by ensuring both 'id' and 'name' are checked for validity before comparison.
- Simplified the handling of selection fields and single select values to return the original value if no match is found.

This change aims to increase the robustness of data handling in form requests.
2024-11-29 15:17:49 +01:00
Chirag Chhatrala 13c40f6e54
Support for Rich Text Input (#630)
* Support for Rich Text Input

* rich text support for prefilled

* apply Purify for rich_text

---------

Co-authored-by: Julien Nahum <julien@nahum.net>
2024-11-28 16:12:24 +01:00
Julien Nahum e2c6af69e6 [ESC-389]form-requires-to-answer 2024-11-28 10:22:33 +01:00
Chirag Chhatrala ab83aa166c
Matrix Improvements (#606)
* Support disable on matrix

* fix checkbox and radio icon

* Use Nuxt UI toggle

* Can set max_char_limit null

* fix action icon design

* Support for URL prefill for Matrix

* Apply theme color on toggle

* Set --form-color as style variable and use it

* Set default value for form-color

* fix formatting

---------

Co-authored-by: Julien Nahum <julien@nahum.net>
2024-11-20 17:06:11 +01:00
Chirag Chhatrala 62e980abae
Right to left mode (#611)
* Right to left mode

* Fix label

---------

Co-authored-by: Julien Nahum <julien@nahum.net>
2024-11-20 15:29:08 +01:00
Chirag Chhatrala 2c8f7d5d54
on fetch submission data display error if there (#608)
Co-authored-by: Julien Nahum <julien@nahum.net>
2024-11-13 09:48:28 +01:00
Julien Nahum ef12c82fe5 Added parseAsText to mention parser. Fix multiple email recipients 2024-11-06 17:48:10 +01:00
Chirag Chhatrala 08837e6a29
Fix email notification reply to (#603) 2024-10-28 09:17:01 +00:00
Chirag Chhatrala 6bdce23967
improve email notfication migration (#602)
* improve email notfication migration

* Fix lint

* Added dry run

---------

Co-authored-by: Julien Nahum <julien@nahum.net>
2024-10-24 15:48:04 +02:00
Chirag Chhatrala 46359fb127
fix undefined error on integrations (#601) 2024-10-24 12:02:23 +02:00
Julien Nahum 97c4b9db5b Fix mentions in front-end + email spam 2024-10-22 11:04:49 +02:00
Chirag Chhatrala dad5c825b1
Apply Mentions everywhere (#595)
* variables and mentions

* fix lint

* add missing changes

* fix tests

* update quilly, fix bugs

* fix lint

* apply fixes

* apply fixes

* Fix MentionParser

* Apply Mentions everywhere

* Fix MentionParserTest

* Small refactoring

* Fixing quill import issues

* Polished email integration, added customer sender mail

* Add missing changes

* improve migration command

---------

Co-authored-by: Frank <csskfaves@gmail.com>
Co-authored-by: Julien Nahum <julien@nahum.net>
2024-10-22 10:34:29 +02:00
Favour Olayinka ef404e1d1e
apply first submission modal changes (#584)
* apply first submission modal changes

* Apply changes

* fix submiussions url

* fix lint

* Fix nuxt versions issues

* Add fixed version of nitropack

* Attempt to fix build

---------

Co-authored-by: Julien Nahum <julien@nahum.net>
2024-10-21 17:41:20 +02:00
Chirag Chhatrala 469031c9ec
[ESC-340] Fix Underline on text block (#598)
Co-authored-by: Julien Nahum <julien@nahum.net>
2024-10-21 17:24:04 +02:00
Favour Olayinka dea8fe5741
106a6 integration performance issues (#581)
* apply performance fixes

* fix integration

* Update client/components/open/forms/components/FirstSubmissionModal.vue

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* fix unique cache for forms

---------

Co-authored-by: Julien Nahum <julien@nahum.net>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2024-10-01 12:42:03 +02:00
Julien Nahum 5346054584 Fix tests 2024-09-30 16:47:10 +02:00
Julien Nahum 85098c2d34 Fix form stats 2024-09-30 15:13:40 +02:00
Chirag Chhatrala 504c7a0f2f
Custom SMTP Settings (#561)
* Custom SMTP Settings

* Fix lint

* Custom SMTP add in Pricing plan

* Allow reset email settings

* improve custom SMTP using seprate abstract class

* test case for custom SMTP

* fix test case

* UI improvement

* add CASHIER_KEY in phpunit for testcase

* Attempt to fix tests

* Run pint and attempt to fix cache tests

* Fix user management tests

* Fix code linters

* Merged main & fix linting

---------

Co-authored-by: Julien Nahum <julien@nahum.net>
2024-09-24 12:16:20 +02:00
Chirag Chhatrala d6181cd249
Form editor v2 (#579)
* Form editor v2

* fix template test

* setFormDefaults when save

* fix form cleaning dark mode

* improvements on open sidebar

* UI polish

* Fix change type button

---------

Co-authored-by: Julien Nahum <julien@nahum.net>
2024-09-23 20:02:38 +02:00
Favour Olayinka 5ab3477e0a
104a6 utm tracking in db (#578)
* utm tracking in db

* fix array key bug

* fix utm form

* fix import
2024-09-20 11:47:12 +02:00
Chirag Chhatrala ceb0648262
Better Form Stats (#567)
* Better Form Stats

* fix lint

* submission timer store in localstorage

* Update test case for stats

* remove extra code

* fix form stats

* on restart remove timer

* fix resetTimer function name

* Improve form timer

* Fix timer after form validation error + polish UI

---------

Co-authored-by: Julien Nahum <julien@nahum.net>
2024-09-18 19:20:52 +02:00
Favour Olayinka a057045ef6
utm tracking in db (#574)
* utm tracking in db

* fix array key bug
2024-09-18 18:50:04 +02:00
Favour Olayinka 7f6c21408c
fix email from address in self hosted mode (#573)
* fix email from address in self hosted mode

* fix linting
2024-09-17 15:41:50 +02:00
Favour Olayinka 2c70ed090e
fix matrix input email format issue (#562) 2024-09-12 10:02:11 +02:00
Chirag Chhatrala 6769da6e10
fix signature url issue (#560) 2024-09-05 17:59:19 +02:00
Julien Nahum 7aafc5cab3 GH issue template, docker cache fix, remove docker client entrypoint 2024-09-04 11:19:03 +02:00
Julien Nahum 39d6627dcf Clean useless debug log 2024-08-29 15:17:26 +02:00
Chirag Chhatrala da0ea04475
Dynamic OauthDriver scope (#544)
* Dynamic OauthDriver scope

* support migration for mysql

* Refactor default scopes for integrations

* Small UI changes

* fix flet select tooltip

* fix linter

* Fix google token size in DB

---------

Co-authored-by: Julien Nahum <julien@nahum.net>
2024-08-29 13:28:02 +02:00