From a4c4b07df9dfe261f757f93b983c460b8afb9cec Mon Sep 17 00:00:00 2001 From: addshore Date: Sat, 26 Sep 2026 15:27:03 +0100 Subject: [PATCH 1/2] dev: skip reCAPTCHA in local Compose Make reCAPTCHA opt-in for local Compose while retaining it by default in other builds. See also https://github.com/wbstack/api/pull/1278 --- README.md | 4 ++++ docker-compose.yml | 2 ++ src/backend/index.js | 2 ++ src/backend/recaptcha.js | 9 +++++++++ src/components/Cards/CreateAccount.vue | 4 ++-- src/components/Pages/Complaint.vue | 4 +++- src/components/Pages/Contact.vue | 4 +++- src/config.js | 1 + src/config.template.js | 1 + src/main.js | 10 ++++++---- tests/unit/recaptcha.spec.js | 26 ++++++++++++++++++++++++++ 11 files changed, 59 insertions(+), 8 deletions(-) create mode 100644 src/backend/recaptcha.js create mode 100644 tests/unit/recaptcha.spec.js diff --git a/README.md b/README.md index 4e28865c..5c676461 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,10 @@ docker compose run ui npm install docker compose up -d ``` +reCAPTCHA is disabled in the UI's Docker Compose development server by default; +set `VUE_APP_RECAPTCHA_ENABLED=1` and configure the API's +`RECAPTCHA_ENABLED=true` to test with real reCAPTCHA keys. + #### Running scripts ``` diff --git a/docker-compose.yml b/docker-compose.yml index c1ade265..ec274496 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,6 +3,8 @@ services: ui: env_file: - .env + environment: + VUE_APP_RECAPTCHA_ENABLED: ${VUE_APP_RECAPTCHA_ENABLED:-0} image: node:22 user: "node" working_dir: /home/node/app diff --git a/src/backend/index.js b/src/backend/index.js index dca47ecb..2a7aff1e 100644 --- a/src/backend/index.js +++ b/src/backend/index.js @@ -1,7 +1,9 @@ import * as api from './api' import axios from './axios' +import { getRecaptchaToken } from './recaptcha' export { api, axios, + getRecaptchaToken, } diff --git a/src/backend/recaptcha.js b/src/backend/recaptcha.js new file mode 100644 index 00000000..c3530b7d --- /dev/null +++ b/src/backend/recaptcha.js @@ -0,0 +1,9 @@ +import config from '../config' + +export const getRecaptchaToken = (app, action) => { + if (!config.RECAPTCHA_ENABLED) { + return Promise.resolve('local-development') + } + + return app.$recaptcha(action) +} diff --git a/src/components/Cards/CreateAccount.vue b/src/components/Cards/CreateAccount.vue index 0af48906..2853125f 100644 --- a/src/components/Cards/CreateAccount.vue +++ b/src/components/Cards/CreateAccount.vue @@ -98,6 +98,7 @@