-
Notifications
You must be signed in to change notification settings - Fork 2.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
GH-3546 Recaptcha on login form #4626
GH-3546 Recaptcha on login form #4626
Conversation
Wow big one! Thanks!!! Fyi server tests not passing because of missing import probably:
|
@FelixMalfait, added CaptchaGuard in authresolver test file. Now, server test is passing. |
@FelixMalfait Please have a re-review. |
@i-am-chitti sorry about the docker-compose, we got rid of it yes - we thought it'd be simpler to focus on 1 recommended setup only. I'll update the makefile you're right. And review your PR again! Thanks 🙏 |
7cec662
to
8bc7e30
Compare
@i-am-chitti this is great work! I have refactored the frontend to write in a simpler manner and to use effects in a way to avoid re-renders I could not make Hcaptcha work easily so I have removed it to merge this PR before it gets conflicts with other PRs but we would be very happy if you want to re-apply your hcaptcha implementation (the driver on backend + update the new hooks on frontend) |
@charlesBochet Sure, I'll integrate the HCaptcha in another PR 🚧 . |
@i-am-chitti thanks again for your really great work! |
## 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 - twentyhq#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 <[email protected]> Co-authored-by: Charles Bochet <[email protected]>
Description
This PR adds recaptcha on login form. One can add any one of three recaptcha vendor -
Issue
Environment variables -
CAPTCHA_DRIVER
-google-recaptcha
|hcaptcha
|turnstile
CAPTCHA_SITE_KEY
- site keyCAPTCHA_SECRET_KEY
- secret keyEngineering choices
Please note that login/signup form will keep working as expected.
useGenerateCaptchaToken
anduseInsertCaptchaScript
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