diff --git a/services/web/app/views/_mixins/recaptcha.pug b/services/web/app/views/_mixins/recaptcha.pug
new file mode 100644
index 0000000000..24e0c501ea
--- /dev/null
+++ b/services/web/app/views/_mixins/recaptcha.pug
@@ -0,0 +1,2 @@
+mixin recaptchaConditions()
+ .recaptcha-branding !{translate("recaptcha_conditions", {}, [{}, {name: 'a', attrs: {href: 'https://policies.google.com/privacy', rel: 'noopener noreferrer', target: '_blank'}}, {name: 'a', attrs: {href: 'https://policies.google.com/terms', rel: 'noopener noreferrer', target: '_blank'}}])}
diff --git a/services/web/app/views/user/passwordReset.pug b/services/web/app/views/user/passwordReset.pug
index 12c09f1cc7..ce1522202a 100644
--- a/services/web/app/views/user/passwordReset.pug
+++ b/services/web/app/views/user/passwordReset.pug
@@ -1,4 +1,5 @@
extends ../layout
+include ../_mixins/recaptcha
block vars
- metadata = { viewport: true }
@@ -56,3 +57,8 @@ block content
)
span(ng-hide="passwordResetForm.inflight") #{translate("request_password_reset")}
span(ng-show="passwordResetForm.inflight") #{translate("requesting_password_reset")}…
+
+ .row
+ .col-md-6.col-md-offset-3.col-lg-4.col-lg-offset-4
+ if showCaptcha
+ +recaptchaConditions
diff --git a/services/web/app/views/user/reconfirm.pug b/services/web/app/views/user/reconfirm.pug
index 551ef09dfc..b2ff842598 100644
--- a/services/web/app/views/user/reconfirm.pug
+++ b/services/web/app/views/user/reconfirm.pug
@@ -1,4 +1,5 @@
extends ../layout
+include ../_mixins/recaptcha
block content
- var email = reconfirm_email ? reconfirm_email : ""
@@ -56,3 +57,7 @@ block content
ng-disabled="reconfirmAccountForm.$invalid"
aria-label=translate('request_password_reset_to_reconfirm')
) #{translate('request_password_reset_to_reconfirm')}
+ .row
+ .col-sm-12.col-md-6.col-md-offset-3
+ if showCaptcha
+ +recaptchaConditions
diff --git a/services/web/frontend/extracted-translations.json b/services/web/frontend/extracted-translations.json
index 21f5993997..b68ef99f1b 100644
--- a/services/web/frontend/extracted-translations.json
+++ b/services/web/frontend/extracted-translations.json
@@ -213,7 +213,6 @@
"no_preview_available": "",
"no_search_results": "",
"no_symbols_found": "",
- "showing_symbol_search_results": "",
"normal": "",
"off": "",
"ok": "",
@@ -256,6 +255,7 @@
"raw_logs_description": "",
"read_only": "",
"reauthorize_github_account": "",
+ "recaptcha_conditions": "",
"recent_commits_in_github": "",
"recompile": "",
"recompile_from_scratch": "",
@@ -290,6 +290,7 @@
"share_project": "",
"share_with_your_collabs": "",
"show_outline": "",
+ "showing_symbol_search_results": "",
"something_went_wrong_rendering_pdf": "",
"something_went_wrong_server": "",
"somthing_went_wrong_compiling": "",
diff --git a/services/web/frontend/js/features/share-project-modal/components/share-modal-body.js b/services/web/frontend/js/features/share-project-modal/components/share-modal-body.js
index 8944ef2ea4..4d0624c647 100644
--- a/services/web/frontend/js/features/share-project-modal/components/share-modal-body.js
+++ b/services/web/frontend/js/features/share-project-modal/components/share-modal-body.js
@@ -7,6 +7,7 @@ import ViewMember from './view-member'
import OwnerInfo from './owner-info'
import SendInvitesNotice from './send-invites-notice'
import { useProjectContext } from '../../../shared/context/project-context'
+import RecaptchaConditions from '../../../shared/components/recaptcha-conditions'
export default function ShareModalBody() {
const { isAdmin } = useShareProjectContext()
@@ -32,6 +33,9 @@ export default function ShareModalBody() {
))}
{isAdmin ?