Commit Graph
15 Commits
Author SHA1 Message Date
dc576d0818 GH-3546 Recaptcha on login form (#4626)
## Description

This PR adds recaptcha on login form. One can add any one of three
recaptcha vendor -
1. Google Recaptcha -
https://developers.google.com/recaptcha/docs/v3#programmatically_invoke_the_challenge
2. HCaptcha -
https://docs.hcaptcha.com/invisible#programmatically-invoke-the-challenge
3. Turnstile -
https://developers.cloudflare.com/turnstile/get-started/client-side-rendering/#execution-modes

### Issue
- #3546 

### Environment variables - 
1. `CAPTCHA_DRIVER` - `google-recaptcha` | `hcaptcha` | `turnstile`
2. `CAPTCHA_SITE_KEY` - site key
3. `CAPTCHA_SECRET_KEY` - secret key

### Engineering choices
1. If some of the above env variable provided, then, backend generates
an error -
<img width="990" alt="image"
src="https://github.com/twentyhq/twenty/assets/60139930/9fb00fab-9261-4ff3-b23e-2c2e06f1bf89">
    Please note that login/signup form will keep working as expected.
2. I'm using a Captcha guard that intercepts the request. If
"captchaToken" is present in the body and all env is set, then, the
captcha token is verified by backend through the service.
3. One can use this guard on any resolver to protect it by the captcha.
4. On frontend, two hooks `useGenerateCaptchaToken` and
`useInsertCaptchaScript` is created. `useInsertCaptchaScript` adds the
respective captcha JS script on frontend. `useGenerateCaptchaToken`
returns a function that one can use to trigger captcha token generation
programatically. This allows one to generate token keeping recaptcha
invisible.

### Note
This PR contains some changes in unrelated files like indentation,
spacing, inverted comma etc. I ran "yarn nx fmt:fix twenty-front" and
"yarn nx lint twenty-front -- --fix".

### Screenshots

<img width="869" alt="image"
src="https://github.com/twentyhq/twenty/assets/60139930/a75f5677-9b66-47f7-9730-4ec916073f8c">

---------

Co-authored-by: Félix Malfait <felix.malfait@gmail.com>
Co-authored-by: Charles Bochet <charles@twenty.com>
2024-04-25 23:52:28 +02:00
Deepak KumarandFélix Malfait 5c30509d21 GH-4362 Add syncing status (#4950)
This PR adds a `syncing` status on frontend.

Issue
- #4362

---------

Co-authored-by: Félix Malfait <felix.malfait@gmail.com>
2024-04-17 22:06:52 +02:00
Deepak Kumarandmartmull 3cbf958a1c GH-3652 Add forgot password on sign-in page (#3789)
* Remove auth guard from password reset email endpoint

* Add arg for GQL mutation and update its usage

* Add forgot password button on sign-in page

* Generate automated graphql queries

* Move utils to dedicated hook

* Remove useless hook function

* Split simple hook methods

* Split workspace hook

* Split signInWithGoogle hook

* Split useSignInUpForm

* Fix error in logs

* Add Link Button UI Component

* Add storybook doc

---------

Co-authored-by: martmull <martmull@hotmail.fr>
2024-02-09 17:37:44 +01:00
Deepak KumarandFélix Malfait 8dda4b0b8f GH 3365 Add contributors page on twenty-website (#3745)
* add transition in mobile navbar

* add contributors listing page

* Add breadcrumb component

* Add profilecard component

* Make profile info dynamic

* Style activity log component

* Make title a re-usable component

* Make card container re-usable

* add rank and active days logic

* complete single contributor page

* add styles for mobile

* Add github link

* Reset header desktop

* update calendar height

* remove conditional header

* add GH PR link

* display 10 prs

* Remove employees and fix rank

* Unrelated CSS adjustment

---------

Co-authored-by: Félix Malfait <felix.malfait@gmail.com>
2024-02-05 13:56:12 +01:00
Deepak Kumar 03f89f483c GH-3734 Display password reset in auth modal for signed in user as well (#3764)
Add function to check if component should have modal in layout
2024-02-02 11:24:11 +01:00
Deepak Kumarandmartmull 46f0eb522f GH-3245 Change password from settings page (#3538)
* GH-3245 add passwordResetToken and passwordResetTokenExpiresAt column on user entity

* Add password reset token expiry delay env variable

* Add generatePasswordResetToken mutation resolver

* Update .env.sample file on server

* Add password reset token and expiry migration script

* Add validate password reset token query and a dummy password update (WIP) resolver

* Fix bug in password reset token generate

* add update password mutation

* Update name and add email password reset link

* Add change password UI on settings page

* Add reset password route on frontend

* Add reset password form UI

* sign in user on password reset

* format code

* make PASSWORD_RESET_TOKEN_EXPIRES_IN optional

* add email template for password reset

* Improve error message

* Rename methods and DTO to improve naming

* fix formatting of backend code

* Update change password component

* Update password reset via token component

* update graphql files

* spelling fix

* Make password-reset route authless on frontend

* show token generation wait time

* remove constant from .env.example

* Add PASSWORD_RESET_TOKEN_EXPIRES_IN in docs

* refactor emails module in reset password

* update Graphql generated file

* update email template of password reset

* add space between date and text

* update method name

* fix lint issues

* remove unused code, fix indentation, and email link color

* update test file for auth and token service

* Fix ci: build twenty-emails when running tests

---------

Co-authored-by: martmull <martmull@hotmail.fr>
2024-01-25 10:28:48 +01:00
Deepak KumarandCharles Bochet c8aec95325 GH-3183 Add sub actions to quick actions in ActionBar (#3339)
* convert quick action into a dropdown

* GH-3183 import icons

* GH-3183 display dummy sub-actions in dropdown

* Migrate to new Dropdown API

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
2024-01-11 13:49:36 +01:00
Deepak Kumar 58a62e8d17 GH-3090 Add ability to paste image in activity body editor (#3119) 2023-12-26 17:52:59 +01:00
Deepak Kumar 00ab07ea62 GH-3153 Enrich Sentry logs with user data on frontend (#3158)
GH-3153 identify user in Sentry logs on frontend
2023-12-26 17:48:33 +01:00
Deepak KumarandLucas Bordeau b650b1dca3 GH-3106 Ability to multi-note/task with action bar (#3137)
* GH-3106 fix activity drawer opener for selected rows hook

* GH-3106 ability to multi note/task with action bar

* GH-3106 use snapshot to get selected row IDs

* GH-3106 format code & fix linting issues

---------

Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com>
2023-12-26 17:44:23 +01:00
Deepak KumarandCharles Bochet 46ab88cb9c GH-2829 Add Sentry on frontend (#3111)
* GH-2829 pass sentry dsn key from backend in ClientConfig

* GH-2829 add Sentry library on frontend

* GH-2829 fetch dsnKey in GQL and add a state

* GH-2829 initialize Sentry on frontend

* GH-2829 fix linting issues

* Update yarn.lock

* GH-2829 update graphql schema for clientConfig

* GH-2829 remove Sentry comments

* GH-2829 rename sentry state

* GH-2829 rename dsnKey to dsn

* GH-2829 refactor to use componentEffect for sentry initialization

* GH-2829 fix linting issues

* GH-2829 update Graphql types

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
2023-12-21 23:50:24 +01:00
Deepak Kumar 41f45c953b GH-3105 Fix Object name icon weight is too light (#3116)
GH-3105 make preview object name icon to have regular stroke
2023-12-21 21:44:35 +01:00
Deepak Kumar de3d955040 GH-3110 Update relation icon on data model settings (#3114)
GH-3110 update relation icon on data model settings with IconLayersLinked
2023-12-21 20:14:04 +01:00
Deepak Kumar 2507da1b25 feat: Add feature flags to Select & Rating custom fields (#3037)
* Add feature flag key for select and rating

* Use feature flag boolean to decide if select & rating are enabled

* Enable select and rating in demo & core
2023-12-18 08:38:25 +01:00
Deepak Kumar 3609c0939d GH-3028 Update filter key and JSON parse assignee selected filter on tasks page (#3045)
GH-3028 update key and JSON parse assignee selected filter on tasks page
2023-12-18 08:16:38 +01:00