Commit Graph
100 Commits
Author SHA1 Message Date
Mythie ecc9dc63ea feat: the rest of the owl 2024-02-29 13:22:21 +11:00
Mythie e3e2cfbcfd fix: refactor and implement design 2024-02-28 14:43:09 +11:00
Lucas Smith 15ebe6dbaf fix: add cascade delete to recipient fields 2024-02-26 03:51:28 +00:00
Lucas Smith f7c6b53258 feat: public api start (#674)
This PR adds the public-facing API.

![API high-level
workings](https://github.com/documenso/documenso/assets/25515812/9f866889-164f-401f-bf4e-d3e69b6382f1)

The public API will allow users to interact with Documenso
programmatically. At the moment, there are 5 available endpoints:
1. `GET /documents`
    - get all documents of the user making the API call
- it accepts 2 URL query parameters - `page` and `perPage`, but they are
not mandatory
2. `GET /documents/:id`
    - get a specific document of the user making the API call
- it requires 1 URL parameter, which represents the ID of the document
that needs to be retrieved
3. `DELETE /documents/:id`
    - delete a specific document of the user making the API call
- it requires 1 URL parameter, which represents the ID of the document
that needs to be deleted
4. `POST /documents`
- making a POST request to this endpoint will return an S3 pre-signed
URL where you can upload the document
    - it requires you to pass the file name and the file content type
5. `PATCH /documents/:id/send-for-signing`
    - send a document for signing
    - it allows you to pass the following:
        - signer email *(required)*
        - signer name *(optional)*
        - field type (signature, email, name, etc.) *(required)*
        - page number where to insert the field *(required)*
        - page X *(required)*
        - page Y *(required)*
        - page width *(required)*
        - page height *(required)*
        - email subject *(optional)*
        - email body *(optional)*

The users are authenticated through API tokens. The users can create one
or more tokens in their account settings, and each token will be
available for 1 year _(duration open to suggestions/changes)_.

Each time the user makes a request, the app checks if the token exists
and if it's valid. The app will return `401` *(unauthorized)* and the
appropriate error message if either is false. If both are true AND the
user uses the correct HTTP verb and passes the required URL parameters
and body, the API call will be successful.

Code overview:
- `@documenso/packages/lib/trpc/api-contract` - this folder contains the
`contract` and `schema` files. The `contract.ts` file describes the
structure of the API, the format of the requests and responses, and how
to authenticate your API calls, among others. The `schema.ts` file
contains the Zod schemas used in the API contract.
- `@documenso/packages/trpc/server/api-token-router` - this folder
contains the `router.rs` and `schema.ts` files. Here are the tRPC
procedures used on the frontend. That is, the user's settings page,
where the user can list/create/delete API tokens.
- `@documenso/packages/trpc/tsconfig.json` - I added `"strict": true`
because that's what's suggested in the `ts-rest` documentation.
*([source](https://ts-rest.com/docs/quickstart#create-a-contract))*
- `[...ts-rest].tsx` - This file contains the implementation of the API.
You can see the logic behind each route.
- the rest of the code represents the code for the API tokens page in
the user's settings.
2024-02-26 12:41:16 +11:00
Mythie 4778270d3c fix: use template dialog to pass teamId 2024-02-26 12:20:50 +11:00
Lucas Smith 3c51a1bc3d Merge branch 'main' into feat/public-api 2024-02-26 12:15:33 +11:00
Lucas Smith fcfb741363 feat: edit recipients when creating document from template (#953)
https://github.com/documenso/documenso/assets/55143799/85a840e3-4fb4-4c02-ba63-b9626f4cea58
2024-02-26 12:00:23 +11:00
Mythie a54159a9ec fix: add missing teamId references 2024-02-26 11:59:32 +11:00
Mythie 6b8e11b535 fix: template router update 2024-02-26 10:31:24 +11:00
Mythie c7dac2f4de fix: update delete endpoint and add limits 2024-02-26 10:01:13 +11:00
Mythie 4cb0d6999d fix: build errors from merge 2024-02-26 09:13:46 +11:00
Lucas Smith 2a74ce06ef Merge branch 'main' into feat/public-api 2024-02-26 00:21:25 +11:00
Lucas Smith 6ea6dda99d feat: add transparent background to fields (#899) 2024-02-26 00:10:35 +11:00
Lucas Smith 187a988f9c Merge branch 'main' into transparent-fields 2024-02-26 00:02:56 +11:00
Lucas Smith 5bef2fba91 fix: follow figma design 2024-02-25 13:02:09 +00:00
Lucas Smith df3ba11655 feat: account deletion (#846)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **New Features**
	- Added two-factor authentication form handling in profile settings.
- Introduced account deletion functionality, including Stripe customer
data removal.
- Updated UI components and styles for improved user interaction, such
as enhanced visual feedback for destructive actions.
- **Refactor**
- Improved code quality by updating import statements for type-only
imports.
- **Chores**
- Restructured the `forwardPorts` array in dev container configuration
for clarity.
- Removed a trailing comma in the `vscode` extensions list to adhere to
JSON format rules.
- **Documentation**
- Added comments to clarify the handling of undefined values in
two-factor authentication verification.
- **Database**
- Implemented a SQL migration script for creating a default deleted user
in the system.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2024-02-25 22:49:55 +11:00
Lucas Smith 9cf72e1442 chore: tidy code and extract alert-dialog 2024-02-25 11:12:18 +00:00
Lucas Smith 7226d5ac53 Merge branch 'main' into feat/account-deletion 2024-02-24 23:18:14 +11:00
Lucas Smith dbd63498e0 feat: custom text field (#945)
https://github.com/documenso/documenso/assets/55143799/c0f296ce-1e91-4b49-9c19-1bdffbd3163f
2024-02-24 22:55:16 +11:00
Lucas Smith 4ca154d88a fix: update e2e test? 2024-02-24 11:54:13 +00:00
Lucas Smith d34c862688 fix: switch custom text to input rather than textarea 2024-02-24 11:25:12 +00:00
Lucas Smith a5e51e63a1 Merge branch 'main' into custom-text-field 2024-02-24 22:23:17 +11:00
Lucas Smith 14c77d7c92 fix: update e2e test 2024-02-24 11:19:07 +00:00
Lucas Smith a5a0fd9187 fix: update e2e test 2024-02-24 10:55:48 +00:00
Lucas Smith 77193b93c4 fix: resolve build error and update dialog width 2024-02-24 10:36:27 +00:00
Lucas Smith a10957d909 Merge branch 'main' into feat/improve-create-document-from-template 2024-02-24 21:26:11 +11:00
Lucas Smith 688e32dfc2 feat: add roles to templates recipients (#935) 2024-02-24 21:24:26 +11:00
Lucas Smith b1b3b84d82 Merge branch 'main' into feat/template-recipient-roles 2024-02-24 21:01:45 +11:00
Lucas Smith b09acaf94e feat: custom banner (#956) 2024-02-24 20:40:41 +11:00
Lucas Smith d103c68a73 fix: remove console logs 2024-02-24 08:08:14 +00:00
Lucas Smith 8165a090d1 feat: migrate to site-settings 2024-02-23 10:47:01 +00:00
Lucas Smith 15e191f62d fix: e2e tests (#955) 2024-02-22 23:58:51 +11:00
Lucas Smith f973dfd09c feat: add document page view (#926)
## Description

This feature allows us to have a dedicated page to view details for a
document.

The current `/documents/[id]` page has been moved to
`/documents/[id]/edit`.

The new `/documents/[id]` page will now display general information on
the document itself.

This will allow us to provide more details relating to a document in the
future, such as version history.

## Examples

These may be outdated as deployment failed

Login via example@documenso.com

Draft document no recipients:

https://stg-7hpkvyc5i-documenso.vercel.app/documents/446

Draft document with recipients:

https://stg-7hpkvyc5i-documenso.vercel.app/documents/440

Pending document:

https://stg-7hpkvyc5i-documenso.vercel.app/documents/447

Completed document:

https://stg-7hpkvyc5i-documenso.vercel.app/documents/448

Pending teams document:

https://stg-7hpkvyc5i-documenso.vercel.app/t/hello/documents/449/

## Checklist

<!--- Please check the boxes that apply to this pull request. -->
<!--- You can add or remove items as needed. -->

- [ ] I have tested these changes locally and they work as expected.
- [ ] I have added/updated tests that prove the effectiveness of these
changes.
- [X] I have followed the project's coding style guidelines.

## Additional Notes

When a user "sends" a document (DRAFT -> PENDING), should we redirect
them to the document/id page, or keep it how it currently is and have it
redirect to `/documents` page?
2024-02-22 23:25:22 +11:00
Lucas Smith 1232f54a23 Merge branch 'main' into feat/separate-document-page 2024-02-22 22:54:15 +11:00
Lucas Smith 306e5ff31f fix: add timeouts to longer transactions 2024-02-22 11:05:49 +00:00
Mythie 2abcdd7533 feat: team api tokens 2024-02-22 13:39:34 +11:00
Lucas Smith df132a51ab feat: ability to download all the 2FA recovery codes (#944)
fixes #938 



https://github.com/documenso/documenso/assets/81948346/8bf807ae-41b0-417b-9f55-d96584e71acb
2024-02-21 13:39:08 +11:00
Lucas Smith 8287722f59 fix: update view dialog to use new download api 2024-02-21 02:29:19 +00:00
Lucas Smith aba6b58c14 fix: simplify download api 2024-02-21 02:19:35 +00:00
Lucas Smith b6c9213b66 fix: disable static generation of marketing site pages
Disables the generation of the blog and content pages using
generateStaticPaths to deal with a regression with routing
introduced with next-runtime-env.
2024-02-21 00:58:57 +00:00
Lucas Smith 22e3a79a72 Merge branch 'main' into feat/public-api 2024-02-21 11:29:36 +11:00
Mythie 4d286e01d1 feat: allow recipients when creating document from template 2024-02-20 17:20:03 +00:00
Mythie b9e5905469 feat: create from template 2024-02-20 19:46:18 +11:00
Lucas Smith 960914aeb5 fix: undo operation on signature pad (#868)
fixes: #864
2024-02-16 22:57:14 +11:00
Lucas Smith d83769b410 chore: use unsafe effect 2024-02-16 11:56:02 +00:00
Lucas Smith a0cf2a2c75 fix: improved document-dropzone ui for small vertical screens (#857)
improved document-dropzone ui for small vertical screens (screens less
than 800px vertically)
Although it can still become congested on really small vertical screens,
but possibility is really low.

fixes: #840
2024-02-16 22:03:24 +11:00
Lucas Smith a30b73ce86 fix: update css 2024-02-16 11:02:04 +00:00
Lucas Smith 46d163d9d6 fix: highlighting issue in recipient selection (#937)
fixes: #920 

<img width="391" alt="image"
src="https://github.com/documenso/documenso/assets/75713174/08b2f5ab-4a6f-423a-a2fa-8f7b04789bb8">
2024-02-16 21:50:53 +11:00
Lucas Smith 681a89cfe1 chore: minor lint fixes (#934) 2024-02-16 21:48:45 +11:00
Lucas Smith e5f4edc120 chore: create security.txt (#878)
Adding a security.txt file enables security researchers to quickly and
easily see where they can submit security issues and know that they are
being taken serious. From the proposal website:

> "When security risks in web services are discovered by independent
security researchers who understand the severity of the risk, they often
lack the channels to disclose them properly. As a result, security
issues may be left unreported. security.txt defines a standard to help
organizations define the process for security researchers to disclose
security vulnerabilities securely.”

See also https://securitytxt.org
2024-02-16 12:34:41 +11:00
Lucas Smith fe2093fe7c feat: add next-runtime-env (#869)
This PR adds the package
[next-runtime-env](https://github.com/expatfile/next-runtime-env/) to
populate the public environment variables at runtime.
2024-02-15 22:10:21 +11:00
Mythie 4c5b910a59 chore: add examples 2024-02-14 13:15:35 +11:00
Lucas Smith f72b669f67 feat: restrict app access for unverified users (#835) 2024-02-13 20:22:43 +11:00
Lucas Smith 536cafde31 Merge branch 'main' into feat/disable-access-unverified-users 2024-02-13 20:19:16 +11:00
Lucas Smith d052f02013 chore: refactor code 2024-02-13 06:01:25 +00:00
Mythie 1a82740d0f feat: support recipient roles 2024-02-12 15:16:09 +11:00
Lucas Smith 51608ed390 fix: lint issue 2024-02-12 02:02:43 +00:00
Lucas Smith 8ebef831ac Merge branch 'main' into feat/add-runtime-env 2024-02-12 12:30:35 +11:00
Lucas Smith 20e2976731 fix: build issues 2024-02-12 01:29:22 +00:00
Lucas Smith e91bb78f2d Merge branch 'main' into feat/public-api 2024-02-09 16:00:40 +11:00
Lucas Smith 748bf6de6b fix: add dropped constants from merge 2024-02-08 22:12:04 +11:00
Lucas Smith d13cf743bf Merge branch 'main' into feat/add-runtime-env 2024-02-08 22:06:59 +11:00
Mythie 98df273ebc feat: add field and recipient endpoints 2024-02-08 16:58:44 +11:00
Lucas Smith 47b8cc598c fix: add validation and error message display 2024-02-08 04:28:16 +00:00
Lucas Smith 70c58470c1 fix: update field remove logic (#916)
## Description

Fixed issue where you are prevented from removing fields for a recipient
that has multiple fields.

Example:

Recipient has 3 fields, you remove 1 and proceed to next step. In the
next step the field reappears as it was not deleted.

## Checklist

- [X] I have tested these changes locally and they work as expected.
- [X] I have added/updated tests that prove the effectiveness of these
changes.
- [X] I have followed the project's coding style guidelines.
2024-02-07 16:39:54 +11:00
Lucas Smith 8ac2209493 Merge branch 'main' into chore-security-text 2024-02-02 16:16:25 +11:00
Lucas Smith 8f3a52e1fd fix: update e2e test 2024-02-02 04:49:42 +00:00
Lucas Smith 7210d48b64 fix: update dockerfile to support encryption keys 2024-02-02 04:37:29 +00:00
Lucas Smith 5cf2f0a30e fix: only throw crypto key errors on server 2024-02-02 04:24:49 +00:00
Lucas Smith 9c4ec34a3c fix: add precommit step for .well-known 2024-02-02 04:00:28 +00:00
Lucas Smith e42088a5bf feat: add user security audit logs (#884)
## Description

Adds the ability to see the events relating to the account.

Event data includes:
- Device
- IP Address
- Time
- Action

Actions are:

- Profile update
- Account linked to SSO (Example user signs in with Google after
creating a email/password account)
- Enable 2FA
- Disable 2FA
- Reset password
- Update password
- Sign out
- Sign in
- Sign in fail
- Sign in 2FA fail

## Changes

- Added audit logs
- Updated 2FA dialogs to have consistent footers
- Update `/settings/security/page` layout

## Testing Performed

Tested events:


![image](https://github.com/documenso/documenso/assets/20962767/8ab9e055-aa58-4621-86fe-24681cce6418)

More tested events:


![image](https://github.com/documenso/documenso/assets/20962767/b6b42e13-626e-4fed-8e1a-097e5324aa6d)

## Checklist

- [X] I have tested these changes locally and they work as expected.
- [X] I have followed the project's coding style guidelines.

## Additional Notes

- Not sure if we really want to record the sign out event or not
- Might want to design breadcrumbs for nested setting pages
2024-02-02 09:42:25 +11:00
Lucas Smith 39be53ace8 fix: show fields on every step while editing documents (#881)
![CleanShot 2024-01-29 at 00 51
31@2x](https://github.com/documenso/documenso/assets/55143799/d577e027-92d1-48fa-940b-1359386367c5)

![CleanShot 2024-01-29 at 00 51
39@2x](https://github.com/documenso/documenso/assets/55143799/ce2df10e-e254-4854-89a1-ba86d7b05a42)
2024-02-01 12:55:31 +11:00
Lucas Smith 7fbf124b89 fix: use div instead of rnd for preview fields 2024-02-01 01:10:50 +00:00
Mythie 08f82b23dc fix: update env entries to evaluate at runtime 2024-01-31 22:32:42 +11:00
Lucas Smith f3df0d9c13 fix: add env example crypto defaults back 2024-01-29 16:24:13 +11:00
Lucas Smith caec2895cc chore: first small step to tracking growth mechanics (#859) 2024-01-24 14:03:16 +11:00
Lucas Smith bc1d5cea0a fix: docker compose variable (#845)
Actually:

![Uz9ioXw](https://github.com/documenso/documenso/assets/26726263/553bb75a-a7fd-4707-9817-14a053ed75f4)
2024-01-23 19:50:49 +11:00
Mythie 4909eee401 feat: add viewing on completed page for pending documents 2024-01-22 21:36:46 +11:00
Mythie 5a28eaa4ff feat: add recipient creation 2024-01-22 17:38:02 +11:00
Mythie e8c2ca8890 fix: mask documents in search 2024-01-22 12:32:19 +11:00
Lucas Smith 1191e1d9c3 feat: linear-gh blogpost (#827) 2024-01-20 12:18:23 +11:00
Lucas Smith 9c1e1f50a8 fix: mask recipient tokens for non-owners 2024-01-20 01:14:34 +00:00
Lucas Smith 0d977e783e refactor: download function to be reusable (#740) 2024-01-18 15:24:36 +11:00
Lucas Smith 0d15b80c2d fix: simplify code 2024-01-18 04:23:22 +00:00
Lucas Smith 4e9cce0df0 chore: improve request template (#833)
Ref #622 
Consolidated the template(removed redundant fields), added appropriate
validation.
2024-01-18 12:13:20 +11:00
Mythie 9ff44f10a6 chore: add incident blog post 2024-01-17 21:41:00 +11:00
Lucas Smith 16d97783f2 feat: improve the UX for password protected documents (#780) 2024-01-17 19:32:42 +11:00
Mythie 91dd10ec9b fix: add symmetric encryption to document passwords 2024-01-17 17:28:28 +11:00
Mythie a94b829ee0 fix: tidy code 2024-01-17 17:17:08 +11:00
Lucas Smith 560352492d fix: keyboard shortcut ctrl+k fixed (#830) 2024-01-16 13:07:42 +11:00
Lucas Smith 84b0c2756b fix: fixed the deleting signature block issue on touchscreens (#809)
Fixed the deleting signature block issue on touchscreens, for some
reason the `onClick` event isn't working on the touchscreens that's why
I've added `onTouchEnd` event to delete the signature block when the
user clicks on it.
2024-01-15 19:33:40 +11:00
Lucas Smith b09071ebc7 feat: jump to next field (#805)
When the fields are not filled, the button will say "Next field". Clicking on the button takes you to
the unfilled field.
2024-01-10 15:27:18 +11:00
Lucas Smith 5d56b152d6 fix: fixed padding in footer (#794)
fixes: #793
2024-01-03 13:29:13 +11:00
Lucas Smith 5c16b10dc2 fix: update footer to be responsive 2024-01-03 13:16:27 +11:00
Lucas Smith 9bcd6e39e7 docs: change url for cloning (#784) 2024-01-03 12:59:33 +11:00
Lucas Smith 2202fa3d04 chore: update the stale to prevent automatic closure of issues (#799)
Issues that have an open pull request and are currently in the review
period have been closed due to inactivity before.
2024-01-03 12:55:27 +11:00
Lucas Smith c1a6a327af chore: update stale workflows 2024-01-03 12:54:32 +11:00
Lucas Smith 837c17f1f3 chore: hide empty accordion for documents without date field (#800) 2024-01-03 12:44:57 +11:00
Mythie a1215df91a refactor: extract api implementation to package
Extracts the API implementation to a package so we can
potentially reuse it across different applications in the
event that we move off using a Next.js API route.

Additionally tidies up the tokens page and form to be more simplified.
2023-12-31 13:58:15 +11:00
Lucas Smith 8f5634268d feat: add templates to command menu (#786) 2023-12-29 15:16:26 +11:00