Git Product home page Git Product logo

docusealco / docuseal Goto Github PK

View Code? Open in Web Editor NEW
5.2K 25.0 322.0 1.87 MB

Open source DocuSign alternative. Create, fill, and sign digital documents ✍️

Home Page: https://www.docuseal.co

License: GNU Affero General Public License v3.0

Dockerfile 0.29% Ruby 38.00% Procfile 0.01% JavaScript 6.35% SCSS 0.34% Vue 27.92% HTML 27.10%
documents pdf self-hosted daisyui document-signing e-signature legaltech open-source ruby-on-rails tailwindcss

docuseal's People

Contributors

alexandrtoorchyn avatar imchairmanm avatar jbenguira avatar omohokcoj avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

docuseal's Issues

Non-docker installation option

This is a really good software however is it possible to install it without docker ? Could you provide manual installation instructions like other Rails apps like Openproject ?

Download signed file > Error 500

Hi,
Very great tool, congratulation.
Installed with Docker (with the PG database).
Signing is working well, but I can't download the document :
Error from Chrome
image
Log from DocuSeal :
image
Thanks

[Feature] Docusign feature parity

Hello,

My organization recently evaluated DocuSeal for potential use in our operations. We really appreciate this free and open source tool and think it has great potential. However, after careful consideration, we decided not to adopt it at this time due to some missing features that are critical for our use case.

We wanted to provide feedback on the key features we need that would make DocuSeal a viable option for us in the future, with the hope that some day it may be a full-fledged alternative to Docusign:


  • Signing workflows

Currently, DocuSeal sends out notifications to all signers simultaneously. At least for us this is a problem since many documents require counter-signatures or witnesses, and it either does not make sense or is legally impermissible, for later signers to have access to a document before earlier signers are done with it. It would be useful if it was possible to withhold notifications/access to later signers until earlier ones have completed.

  • Completion notifications

Only the creator of the template and its signers receive email notifications, and these are sent only when invited and when signing has been completed by each party. It would be useful to:

  • Have a separate, configurable address aside from the template owner to be notified when the entire document is finished.

  • Have the ability to configure when the email notifications are sent (when done, for some parties only, etc.)

  • Forgery protection

One of our compliance people raised this: it is far too easy, accidentally or otherwise, to forge a signature on the behalf of someone else since the share links for any given document are presented upfront in the UI. Some miscellaneous ideas along these lines might be:

  • A configurable mode that requires all interaction to go through email (that is, form creators do not have access to sign documents they create)
  • Capture more metadata in the digital signature, including the IP address, browser, geolocation, etc. of the signer
  • Require separate email confirmation before committing the signature (that is, if I use [email protected]'s signing link, it is impossible to sign the document without him knowing about it)
  • Attach a summary of signatures and their metadata directly to the document as another page

I understand that none of these are foolproof: and that this is an inherent risk of self-hosting a document signing platform, but right now it is far too easy to casually do the wrong thing.

  • Better UI for busy templates

One set of documents our organization uses has the potential to be signed hundreds of times per month. At this volume, the submissions view would quickly become cluttered and hard to use. A more traditional and denser table view and some kind of search functionality would increase usability under heavy load.

  • Expiry dates

Some documents' signatures are only good for a limited time. After this time, there is currently no way for the same person to sign the same document again without manually finding and deleting their submission from the template page. It would be useful to set an optional expiry date for any submission after which the same person could sign again.

  • Reminders

Docusign has the ability to send reminder/nag messages to people who have been invited to sign a document but have not done so in a configurable amount of time, or on demand.. This feature gets a surprising amount of use!


Please let us know if any clarification would be helpful. We're happy to provide additional context on our use case and requirements. Thank you for your efforts on this valuable project!

[Feature Request] Signing Log

I highly recommend providing a separate pdf file containing finished information (basically a receipt?), which all parties involved can download for proof of document signing and information.

This separate receipt document should include:

  • The IP addresses of who signed the document
  • A timeline of events (Date / Time)
    • Of when the document created
    • When the document was emailed to each party member.
    • When the document was viewed by a party member
    • When the document was signed by a party member.
    • When the document was finished and processed.
  • User agents
  • fields that were filled
  • Original documents SHA256 hash
  • Finalized document SHA256 hash

A good example is SignRequest and their separate PDF which is both emailed and available for download on the confirmation page.

Example screenshot shown (Information redacted for privacy)
example1

Originally posted by @Gigaion in #21 (comment)

HTTP 422 nginx reverse proxy

Hi,

I just setup DocuSeal using docker. It is behind a NGinx reverse proxy, doing SSL. But I get a HTTP 422 on signing in or doing the setup. The setup works using the url+port on the local network. Any word of advise? (If you need more info, please let me know):

image

Support old kernel (or how about using ruby 3.0.*)

This error only happens on synology DS716 and for the same OS version on DS918 works the image, for me is something related to limitations of hardware and incompat with muslc but I can't confirm because only alpine image is provided.

/usr/local/lib/ruby/3.2.0/securerandom.rb:55:in `urandom': failed to get urandom (RuntimeError)
	from /usr/local/lib/ruby/3.2.0/securerandom.rb:55:in `gen_random_openssl'
	from /usr/local/lib/ruby/3.2.0/random/formatter.rb:74:in `random_bytes'
	from /usr/local/lib/ruby/3.2.0/random/formatter.rb:94:in `hex'
	from /app/config/boot.rb:14:in `<top (required)>'
	from /app/bin/rails:3:in `require_relative'
	from /app/bin/rails:3:in `<main>'
version: "3.9"

services:
  docuseal:
    image: docuseal/docuseal
    container_name: app-sign
    expose:
      - 3000
    networks:
      docuseal:

networks:
  docuseal:
    name: docuseal

Create an open ended link

I would like to be able to add a link to my website to a medical waiver, which could be signed by a visitor, and would with each signature be saved as a different document.

Unit tests

I'm not very familiar with Ruby, but I don't see any unit tests. Are they planned/am I missing them?

[Bug] Heroku - multi-tenant set up with S3 storage - Server Error on Document Download

Hi Docuseal,

We found that in our set up, when any user (internal or document recipient) attempts to download the completed file, the following error is returned:

"no implicit conversion of nil into String"

This seems to be coming from the submissions_download_controller.rb class.

Any help would be great.

Trace
2023-07-29T20:04:49.885137+00:00 app[web.1]: E, [2023-07-29T20:04:49.884845 #2] ERROR -- : [462dfa36-cffc-4525-a428-14566281d072] ["/app/lib/accounts.rb:54:in initialize'", "/app/lib/accounts.rb:54:in new'", "/app/lib/accounts.rb:54:in load_signing_certs'", "/app/lib/submissions/generate_result_attachments.rb:26:in call'", "/app/lib/submissions/ensure_result_generated.rb:26:in call'", "/app/app/controllers/submissions_download_controller.rb:10:in index'", "/usr/local/bundle/gems/actionpack-7.0.5/lib/action_controller/metal/basic_implicit_render.rb:6:in send_action'", "/usr/local/bundle/gems/actionpack-7.0.5/lib/abstract_controller/base.rb:215:in process_action'", "/usr/local/bundle/gems/actionpack-7.0.5/lib/action_controller/metal/rendering.rb:165:in process_action'", "/usr/local/bundle/gems/actionpack-7.0.5/lib/abstract_controller/callbacks.rb:234:in block in process_action'", "/usr/local/bundle/gems/activesupport-7.0.5/lib/active_support/callbacks.rb:107:in run_callbacks'", "/usr/local/bundle/gems/actionpack-7.0.5/lib/abstract_controller/callbacks.rb:233:in process_action'", "/usr/local/bundle/gems/actionpack-7.0.5/lib/action_controller/metal/rescue.rb:22:in process_action'", "/usr/local/bundle/gems/actionpack-7.0.5/lib/action_controller/metal/instrumentation.rb:67:in block in process_action'", "/usr/local/bundle/gems/activesupport-7.0.5/lib/active_support/notifications.rb:206:in block in instrument'", "/usr/local/bundle/gems/activesupport-7.0.5/lib/active_support/notifications/instrumenter.rb:24:in instrument'", "/usr/local/bundle/gems/activesupport-7.0.5/lib/active_support/notifications.rb:206:in instrument'", "/usr/local/bundle/gems/actionpack-7.0.5/lib/action_controller/metal/instrumentation.rb:66:in process_action'", "/usr/local/bundle/gems/actionpack-7.0.5/lib/action_controller/metal/params_wrapper.rb:259:in process_action'", "/usr/local/bundle/gems/activerecord-7.0.5/lib/active_record/railties/controller_runtime.rb:27:in process_action'", "/usr/local/bundle/gems/actionpack-7.0.5/lib/abstract_controller/base.rb:151:in process'", "/usr/local/bundle/gems/actionview-7.0.5/lib/action_view/rendering.rb:39:in process'", "/usr/local/bundle/gems/actionpack-7.0.5/lib/action_controller/metal.rb:188:in dispatch'", "/usr/local/bundle/gems/actionpack-7.0.5/lib/action_controller/metal.rb:251:in dispatch'", "/usr/local/bundle/gems/actionpack-7.0.5/lib/action_dispatch/routing/route_set.rb:49:in dispatch'", "/usr/local/bundle/gems/actionpack-7.0.5/lib/action_dispatch/routing/route_set.rb:32:in serve'", "/usr/local/bundle/gems/actionpack-7.0.5/lib/action_dispatch/journey/router.rb:50:in block in serve'", "/usr/local/bundle/gems/actionpack-7.0.5/lib/action_dispatch/journey/router.rb:32:in each'", "/usr/local/bundle/gems/actionpack-7.0.5/lib/action_dispatch/journey/router.rb:32:in serve'", "/usr/local/bundle/gems/actionpack-7.0.5/lib/action_dispatch/routing/route_set.rb:852:in call'", "/usr/local/bundle/gems/omniauth-2.1.1/lib/omniauth/strategy.rb:202:in call!'", "/usr/local/bundle/gems/omniauth-2.1.1/lib/omniauth/strategy.rb:169:in call'", "/usr/local/bundle/gems/warden-1.2.9/lib/warden/manager.rb:36:in block in call'", "/usr/local/bundle/gems/warden-1.2.9/lib/warden/manager.rb:34:in catch'", "/usr/local/bundle/gems/warden-1.2.9/lib/warden/manager.rb:34:in call'", "/usr/local/bundle/gems/rack-2.2.7/lib/rack/tempfile_reaper.rb:15:in call'", "/usr/local/bundle/gems/rack-2.2.7/lib/rack/etag.rb:27:in call'", "/usr/local/bundle/gems/rack-2.2.7/lib/rack/conditional_get.rb:27:in call'", "/usr/local/bundle/gems/rack-2.2.7/lib/rack/head.rb:12:in call'", "/usr/local/bundle/gems/actionpack-7.0.5/lib/action_dispatch/http/permissions_policy.rb:38:in call'", "/usr/local/bundle/gems/actionpack-7.0.5/lib/action_dispatch/http/content_security_policy.rb:36:in call'", "/usr/local/bundle/gems/rack-2.2.7/lib/rack/session/abstract/id.rb:266:in context'", "/usr/local/bundle/gems/rack-2.2.7/lib/rack/session/abstract/id.rb:260:in call'", "/usr/local/bundle/gems/actionpack-7.0.5/lib/action_dispatch/middleware/cookies.rb:704:in call'", "/usr/local/bundle/gems/actionpack-7.0.5/lib/action_dispatch/middleware/callbacks.rb:27:in block in call'", "/usr/local/bundle/gems/activesupport-7.0.5/lib/active_support/callbacks.rb:99:in run_callbacks'", "/usr/local/bundle/gems/actionpack-7.0.5/lib/action_dispatch/middleware/callbacks.rb:26:in call'", "/usr/local/bundle/gems/actionpack-7.0.5/lib/action_dispatch/middleware/debug_exceptions.rb:28:in call'", "/usr/local/bundle/gems/actionpack-7.0.5/lib/action_dispatch/middleware/show_exceptions.rb:26:in call'", "/usr/local/bundle/gems/lograge-0.12.0/lib/lograge/rails_ext/rack/logger.rb:18:in call_app'", "/usr/local/bundle/gems/railties-7.0.5/lib/rails/rack/logger.rb:25:in block in call'", "/usr/local/bundle/gems/activesupport-7.0.5/lib/active_support/tagged_logging.rb:99:in block in tagged'", "/usr/local/bundle/gems/activesupport-7.0.5/lib/active_support/tagged_logging.rb:37:in tagged'", "/usr/local/bundle/gems/activesupport-7.0.5/lib/active_support/tagged_logging.rb:99:in tagged'", "/usr/local/bundle/gems/railties-7.0.5/lib/rails/rack/logger.rb:25:in call'", "/usr/local/bundle/gems/actionpack-7.0.5/lib/action_dispatch/middleware/remote_ip.rb:93:in call'", "/usr/local/bundle/gems/request_store-1.5.1/lib/request_store/middleware.rb:19:in call'", "/usr/local/bundle/gems/actionpack-7.0.5/lib/action_dispatch/middleware/request_id.rb:26:in call'", "/usr/local/bundle/gems/rack-2.2.7/lib/rack/method_override.rb:24:in call'", "/usr/local/bundle/gems/rack-2.2.7/lib/rack/runtime.rb:22:in call'", "/usr/local/bundle/gems/actionpack-7.0.5/lib/action_dispatch/middleware/executor.rb:14:in call'", "/usr/local/bundle/gems/actionpack-7.0.5/lib/action_dispatch/middleware/static.rb:23:in call'", "/usr/local/bundle/gems/rack-2.2.7/lib/rack/deflater.rb:44:in call'", "/usr/local/bundle/gems/rack-2.2.7/lib/rack/sendfile.rb:110:in call'", "/usr/local/bundle/gems/actionpack-7.0.5/lib/action_dispatch/middleware/ssl.rb:77:in call'", "/usr/local/bundle/gems/actionpack-7.0.5/lib/action_dispatch/middleware/host_authorization.rb:131:in call'", "/usr/local/bundle/gems/railties-7.0.5/lib/rails/engine.rb:530:in call'", "/usr/local/bundle/gems/puma-6.3.0/lib/puma/configuration.rb:270:in call'", "/usr/local/bundle/gems/puma-6.3.0/lib/puma/request.rb:100:in block in handle_request'", "/usr/local/bundle/gems/puma-6.3.0/lib/puma/thread_pool.rb:344:in with_force_shutdown'", "/usr/local/bundle/gems/puma-6.3.0/lib/puma/request.rb:99:in handle_request'", "/usr/local/bundle/gems/puma-6.3.0/lib/puma/server.rb:443:in process_client'", "/usr/local/bundle/gems/puma-6.3.0/lib/puma/server.rb:245:in block in run'", "/usr/local/bundle/gems/puma-6.3.0/lib/puma/thread_pool.rb:151:in block in spawn_thread'"]

Exchange Online SMTP Auth

Hi there!

Looks really promising but I just can't seem to get mails running via Exchange Online SMTP Auth.

Has there been tested and verified?

Can you share a working setup? Or where to find some helpful logging as "docker logs" does not seem to catch it.

Much appreciated!

Thanks :)

User lost after sending signing request

We're using Docuseal in a self-hosted (Docker) configuration.

Last week I created a team and invited Jack. Today Jack logged in uploaded a document and marked it for signatures.

Despite having SMTP configured via PostmarkApp an email was not sent. When we went to investigate Jack wondered aloud whether the email setting I configured were only set up for me? When we went to verify that Jack tried to login and it took him through the account sign-up workflow. Despite having created and account last week, logging in this morning and creating a submission.

When I as the Team Owner log-in I still see Jack as part of the team. Jack finished the account sign-up and now appears to have an account divorced from my team.

Happy to provide more details and try to work through this but it was hit to our confidence.

P.s. When I signed in and saw the submission I was able to create old Jack's form and received an email stating it was complete.

SSL Encrption

I am hosting docueal using docker. However, I am unable to see the GUI because of unsecure connection error.
I have installed SSL encrytion for nginx but after the following command "HOST=your-domain-name.com docker-compose up" Caddy won´t start the service. Caddy only runs if I stop the nginx (same goes for Apache).

Can't configure SMTP sending (GMail)

Dear all,
I have an instance of DOCUSEAL running on my Synology NAS in one docker container.
It seems to work properly, but I'm not able to send any email.
I have the two-factor authentication method on my Gmail account. I properly configure and obtain an app password.

Then I configured Docuseal as follow:

  • Host: smtp.gmail.com
  • Port: 465
  • Username: my Google account
  • Password: my generated APP Password (copy-pasting it)
  • Send from mail: same than username

The issue is that im not able to send any mail, but I also not receiving any error message, so it's not possible for me to investigate deeply what can be wrong.

Thanks in advance.
I used those guides for the installation:
https://mariushosting.com/how-to-install-docuseal-on-your-synology-nas/
https://mariushosting.com/synology-set-up-email-notifications-on-docuseal/

docker install, error 500 when viewing submitted docs

I, [2023-07-14T07:07:30.639634 #1]  INFO -- : [a093398a-c05e-4a4e-8fdc-ddecd00f02d4] {"method":"GET","path":"/submissions/3","format":"html","controller":"SubmissionsController","action":"show","status":500,"duration":38.02,"view":0.0,"db":19.4,"fwd":"172.17.0.1"}
F, [2023-07-14T07:07:30.640198 #1] FATAL -- : [a093398a-c05e-4a4e-8fdc-ddecd00f02d4]
[a093398a-c05e-4a4e-8fdc-ddecd00f02d4] ActionView::Template::Error (undefined method `/' for nil:NilClass):
[a093398a-c05e-4a4e-8fdc-ddecd00f02d4]     15:       <%= svg_icon('check', class: "aspect-square #{area['w'] > area['h'] ? '!w-auto !h-full' : '!w-full !h-auto'}") %>
[a093398a-c05e-4a4e-8fdc-ddecd00f02d4]     16:     </div>
[a093398a-c05e-4a4e-8fdc-ddecd00f02d4]     17:   <% elsif field['type'] == 'cells' %>
[a093398a-c05e-4a4e-8fdc-ddecd00f02d4]     18:     <% cell_width = area['cell_w'] / area['w'] * 100 %>
[a093398a-c05e-4a4e-8fdc-ddecd00f02d4]     19:     <div class="w-full flex items-center">
[a093398a-c05e-4a4e-8fdc-ddecd00f02d4]     20:       <% (0..(area['w'] / area['cell_w']).ceil).each do |index| %>
[a093398a-c05e-4a4e-8fdc-ddecd00f02d4]     21:         <% if value[index] %>
[a093398a-c05e-4a4e-8fdc-ddecd00f02d4]
[a093398a-c05e-4a4e-8fdc-ddecd00f02d4] app/views/submissions/_value.html.erb:18
[a093398a-c05e-4a4e-8fdc-ddecd00f02d4] app/views/submissions/show.html.erb:50
[a093398a-c05e-4a4e-8fdc-ddecd00f02d4] app/views/submissions/show.html.erb:47:in `each'
[a093398a-c05e-4a4e-8fdc-ddecd00f02d4] app/views/submissions/show.html.erb:47
[a093398a-c05e-4a4e-8fdc-ddecd00f02d4] app/views/submissions/show.html.erb:43:in `each'
[a093398a-c05e-4a4e-8fdc-ddecd00f02d4] app/views/submissions/show.html.erb:43:in `each_with_index'
[a093398a-c05e-4a4e-8fdc-ddecd00f02d4] app/views/submissions/show.html.erb:43
[a093398a-c05e-4a4e-8fdc-ddecd00f02d4] app/views/submissions/show.html.erb:41:in `each'
[a093398a-c05e-4a4e-8fdc-ddecd00f02d4] app/views/submissions/show.html.erb:41
[a093398a-c05e-4a4e-8fdc-ddecd00f02d4] app/controllers/submissions_controller.rb:12:in `show'
I, [2023-07-14T07:07:32.875681 #1]  INFO -- : [869106c2-008f-4c71-98cc-c79f75821db3] {"method":"GET","path":"/","format":"html","controller":"DashboardController","action":"index","status":200,"duration":28.71,"view":4.12,"db":15.78,"fwd":"172.17.0.1"}
I, [2023-07-14T07:07:34.416608 #1]  INFO -- : [204c9651-ac3a-4f52-ab38-26f7a86b6f2a] {"method":"GET","path":"/","format":"html","controller":"DashboardController","action":"index","status":200,"duration":22.88,"view":3.33,"db":14.93,"fwd":"172.17.0.1"}
image

other info, was file inside

Grouping for checkboxes.

The scenario is we have setup a form with about 120 check boxes with no other field types in-between. The way docuseal tries to display this is all check boxes between any other type of field are grouped together and in my situation are overflowing the screen to the top. There are natural breaks in my form but nothing to fill out. I can force it to group properly by adding another field type like text box in between groups but there is no data needed for these and have to be skipped by the user. If there is a separator object that could trigger this or an option on the checkbox.
DocuSeal__Open_Source_Document_Filling_and_Signing-20230727-220436

Health check endpoint is missing

Issue

  • The health check endpoint should be there in order to verify the health checks of the application. It is helpful to detect unhealthy applications and prevent traffic redirect to unhealthy endpoints.

Add Documentation for non-caddy configuration

If the user is deploying docuseal behind an existing reverse proxy (nginx) there are certain headers that need to be set in order for the application to correctly function.

If the headers are not present the user will receive a 422 error page, and will see the following in the logs
ActionController::InvalidAuthenticityToken (HTTP Origin header (https://docuseal.mydomain.com) didn't match request.base_url (http://docuseal.mydomain.com)):

For nginx the following configuration is required in order for CORs to function properly.

location /{
    proxy_pass http://yourdocuseal.internal.hostname:3000/;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Host $host;
}

PDF Download missing pages on download

I have an instance of DocuSign running on Docker.
I have created a document based on two different pages (two different PDF). Both PDF are set together for filling and sign from one single link.
All is working ok except when I tried to download the signed documents from iOS or iPadOS. In that case the system is giving me only one page and can’t download the second one.

Perhaps that can be solved in some manner.

Thanks in advance.

Can you make fields mandatory?

Discussed in #73

Originally posted by ovizii August 8, 2023
I'm just going through my first tests with a self-hosted docuseal and I added a date and a signature field to a PDF and I was simply able to ignore the signature, fill in the date field and submit.

Unless I am making a mistake somewhere, this does not seem to make sense to me.

feature request ideas

first allow me to thank you for the amazing app you have created

some ideas of things we would like to see and potentially even help realize

  • use a single sign on solution like threefold connect (see www.threefold.io) on top of signature field
  • every user can see the docs they created/signed so its easier tot track what happens
  • API to allow to read the filled in properties like checkbox, text field, ... so another can know what was filled in

must have before we can use it

  • an API so its easy to integrate in other stacks (not for the creation of the docs, thats ok, but invitations, follow up...)
  • verification of email addr

we would love to collaborate and host it on threefold as well

regards

Kristof

Inputted date does not match displayed date

Inputting May 9th on the online demo displays May 8th as shown below, I tested and it always displays the day before. Using 01 as the day will even wrap the month backward.

image

[Feature] Team Permission

Can I set permissions for each user so that the team permission is divided into:

  • Admin
  • manager
  • Stuff

Docuseal SSL issue behind HAPROXY

Hi, I'm running Docuseal docker container behind an HAPROXY only with these environmental variables:

the container is running fine and I can load the setup webpage.
When I insert my data to setup Docuseal I receive this error:

image

In the log file I can see this error:

%I, [2023-08-10T10:45:06.784774 #1]  INFO -- : [eb048852-938c-4483-a19f-f64891a8aab0] {"method":"GET","path":"/","format":"html","controller":"DashboardController","action":"index","status":302,"duration":2.67,"view":0.0,"db":0.25,"location":"https://docuseal.mysite.com/setup","fwd":"192.168.2.1"}

I, [2023-08-10T10:45:06.903578 #1]  INFO -- : [e7dd72ab-9db1-41a2-b723-0458f928e1d8] {"method":"GET","path":"/setup","format":"html","controller":"SetupController","action":"index","status":200,"duration":11.78,"view":8.35,"db":0.24,"fwd":"192.168.2.1"}

W, [2023-08-10T10:45:13.738260 #1]  WARN -- : [da284d1f-9337-4910-a9b7-d1e23bf4f2d1] HTTP Origin header (https://docuseal.mysite.com) didn't match request.base_url (http://docuseal.mysite.com)

I, [2023-08-10T10:45:13.739229 #1]  INFO -- : [da284d1f-9337-4910-a9b7-d1e23bf4f2d1] {"method":"POST","path":"/setup","format":"turbo_stream","controller":"SetupController","action":"create","status":422,"duration":1.08,"view":0.0,"db":0.0,"fwd":"192.168.2.1"}

F, [2023-08-10T10:45:13.741258 #1] FATAL -- : [da284d1f-9337-4910-a9b7-d1e23bf4f2d1]                                                                                                                        [da284d1f-9337-4910-a9b7-d1e23bf4f2d1] ActionController::InvalidAuthenticityToken (HTTP Origin header (https://docuseal.mysite.com) didn't match request.base_url (http://docuseal.mysite.com)):

Do you have any suggestion to fix this issue that probably is related to the proxy setting to work with Docuseal ?

React to email sending errors

Hi and thanks for a great and useful app! I just encountered the following problem.

If an email cannot be sent because of faulty SMTP settings, the application reacts as if it was sent and no error is shown. Only the log contains an error like:

E, [2023-08-08T17:14:46.427469 #1] ERROR -- : [ActiveJob] [ActionMailer::MailDeliveryJob] [2757984d-9d45-4fa2-9da0-d971a8a33716] Error performing ActionMailer::MailDeliveryJob (Job ID: 2757984d-9d45-4fa2-9da0-d971a8a33716) from Async(default) in 53.07ms: Net::SMTPUnknownError (* OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS LOGINDISABLED] Dovecot ready.

If such an error is encountered, at least the application should not lie to the user by saying, the mail was sent. Instead, an error message should promt the user to double-check the SMTP settings.

Also, on the SMTP settings screen, there should be a way to test the settings. This would attempt to establish a connection to the server using the given variables and report the results.

Allow smtp configure without requiring smtp user

Please allow an SMTP configuration to be saved without forcing a smtp user to be defined

Related code

  • if ENV['SMTP_USERNAME']
    config.action_mailer.delivery_method = :smtp
    config.action_mailer.smtp_settings = {
    address: ENV.fetch('SMTP_ADDRESS', nil),
    port: ENV.fetch('SMTP_PORT', 587),
    domain: ENV.fetch('SMTP_DOMAIN', nil),
    user_name: ENV.fetch('SMTP_USERNAME', nil),
    password: ENV.fetch('SMTP_PASSWORD', nil),
    authentication: ENV.fetch('SMTP_AUTHENTICATION', 'plain'),
    enable_starttls_auto: ENV['SMTP_ENABLE_STARTTLS_AUTO'] == 'true'
    }
    end

Signature not stamped on PDF

Latest release seems to not stamp the signature on the pdf.

image

Getting the following error when I click on the signature area above (after signing):
Uncaught (in promise) TypeError: Cannot read properties of null (reading 'querySelector'):

Code: this.$refs.form.querySelector('input[type="date"], input[type="text"], select')?.focus()

Looks like the $refs.form var is lost

Profile get set up wrong and Password reset doesn't work

Hi
I have just signed up on https://docuseal.co/ and it seemed to work.
However, after logging out I cannot log back in. My password is not accepted.
The profile seems to have been generated because when trying to sign up again it tells me that the email address has been taken.
However, a password reset doesn't work either.

[Feature Request] Add Webhooks

Hi Docuseal,

What would make this application extremely powerful would be adding webhooks to certain actions, such as when a document is created, sent and signed.

Docuseal Requirements

Its not clear where the best place to ask this question is,

Has there been any independent verification of the elements needed for Docuseal to meet legal requirements in various municipalities for submitting e-documents to courts? Usually you have to meet specific requirements such as non-repudiation, and verification, though I am not a lawyer so I don't know all of the specifics.

If this has been done, this would look very promising considering Docusign often won't allow you to export documents for retention, nor keep documents that may need to be retained between regions (i.e. they only let you reset the account's region potentially losing important documents when an employee relocates geographically). You generally don't have that kind of non-sense when you self-host.

Share link document displays empty page

Viewing the share link of a populated document results with the following screen:

image

Steps to reproduce:

  • Self-host docuseal with docker-compose
  • Upload and populate PDF
  • Copy share link
  • View share link

Tried in multiple browsers with --safe-mode (no plugins and empty cache)

Console shows an error on form.vue:392:

TypeError: this.currentStepFields is undefined
    currentField form.vue:392

support pkcs#11 signatures

jsignpdf and others use pkcs#11 certificiates in either the browser or in smart cards to digitally sign documents.

Few improvments

Hi,
It is great, but I think you need to add few stuff to make it useable :

  1. Sending an email must be mandatory. The creator of a document should not be able to sign without using an email, even if he is the only one signing. By copying the link, I am able to sign even if it is not me who should sign
  2. We must be able to add the name and the email of the persons who will sign (and show it below the signature)
  3. When signing, below or above the signature, you should add the date and time of the signature, not modifiable by the user
  4. with the signature you should also add an image saying something like : signed with CompanyName, or a logo of the company
  5. You should add an audit trail (date & time, signatory, email, IP address).

Can Not Replace PDF Documents or Images After Initial Upload

After the initial upload, I realized that you can't replace the PDF with a different PDF.

The form I'm uploading would be the same (the template), but the content would change occasionally. It's a fairly large document and small things are changed every now and then.

It would be great if I could just upload a different document and keep the input fields right where I left them instead of having to create a new template...

Even if there was a small "Replace" button, that would be great!

Thank you,
Corbin Meier.

[Feature Request] Template Folders

Similar to how templates have submissions within them. Templates should be able to be placed inside folders (Maybe even folders nested within another folder also?).
This would allow organizing of content based on category:

Example:

  • HR (Folder)
    • Onboarding (Template)
    • Payments (Template)
  • NDA (Folder)
    • Top Secret Spaghetti (Template)
    • Spinning Penguin Patrol (Template)
    • Example Nested Folder (Folder)
      • Puppies (Template)

This would probably tie into/compliment issue #26 , as each template would need the ability to replace PDF documents within a template based on who the document is going out to.

Send the same document twice from the link [feature tequest]

We are a sports club, and this upcoming season, we are going to use Docuseal so that members can submit the necessary forms to obtain the federation license for their children. Initially, we will share the link on our internal Telegram channel for them to access the form.

The problem we have noticed is that if a member has two children, they can only submit the form once. When they try to submit it again after identifying themselves for the second child, the system doesn't offer the option to fill it out again; it simply indicates that it has already been submitted.

Are you planning to enable this feature in an upcoming release?

In the meantime, we have noticed that if we send them a request to fill out the form via email, it allows them to access it (even with the same email). So, for now, we will use that method, although the previous one would be more convenient and logical for us. 😅

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.