From a52aed907089cb30ab9e6714c0d8b96499fd367a Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Wed, 7 Feb 2018 14:15:13 +0000 Subject: [PATCH 1/4] improved recaptcha error message - works on register and share project - decided not to go down i18n for register, would be scope creep on async form --- .../app/coffee/Features/Captcha/CaptchaMiddleware.coffee | 2 +- services/web/app/views/project/editor/share.pug | 2 ++ .../share/controllers/ShareProjectModalController.coffee | 8 ++++++-- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/services/web/app/coffee/Features/Captcha/CaptchaMiddleware.coffee b/services/web/app/coffee/Features/Captcha/CaptchaMiddleware.coffee index 4a3ce18b5e..c4bd055b0c 100644 --- a/services/web/app/coffee/Features/Captcha/CaptchaMiddleware.coffee +++ b/services/web/app/coffee/Features/Captcha/CaptchaMiddleware.coffee @@ -16,6 +16,6 @@ module.exports = CaptchaMiddleware = return next(error) if error? if !body?.success logger.warn {statusCode: response.statusCode, body: body}, 'failed recaptcha siteverify request' - return res.sendStatus 400 + return res.status(400).send({errorReason:"cannot_verify_user_not_robot", message:{text:"We could not verifiy you are not a robot. Please check Google is not blocked by firewall or adblocker."}}) else return next() diff --git a/services/web/app/views/project/editor/share.pug b/services/web/app/views/project/editor/share.pug index 98568df122..a5430d710a 100644 --- a/services/web/app/views/project/editor/share.pug +++ b/services/web/app/views/project/editor/share.pug @@ -185,6 +185,8 @@ script(type='text/ng-template', id='shareProjectModalTemplate') span(ng-switch="state.errorReason") span(ng-switch-when="cannot_invite_non_user") | #{translate("cannot_invite_non_user")} + span(ng-switch-when="cannot_verify_user_not_robot") + | #{translate("cannot_verify_user_not_robot")} span(ng-switch-when="cannot_invite_self") | #{translate("cannot_invite_self")} span(ng-switch-when="invalid_email") diff --git a/services/web/public/coffee/ide/share/controllers/ShareProjectModalController.coffee b/services/web/public/coffee/ide/share/controllers/ShareProjectModalController.coffee index 0c16dcbb39..0a091dae0b 100644 --- a/services/web/public/coffee/ide/share/controllers/ShareProjectModalController.coffee +++ b/services/web/public/coffee/ide/share/controllers/ShareProjectModalController.coffee @@ -127,10 +127,14 @@ define [ # with new collaborator information. addNextMember() , 0 - .catch (err) -> + .catch (httpResponse) -> + {data, status, headers, config } = httpResponse $scope.state.inflight = false $scope.state.error = true - if err.status? and err.status == 400 + + if data?.errorReason? + $scope.state.errorReason = data?.errorReason + else if status? and status == 400 $scope.state.errorReason = 'invalid_email' else $scope.state.errorReason = null From b387ca3b2aab971dc97138fc16067c7e425b04a6 Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Wed, 7 Feb 2018 14:19:33 +0000 Subject: [PATCH 2/4] change wording on recaptcha to JLM's option --- .../web/app/coffee/Features/Captcha/CaptchaMiddleware.coffee | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/services/web/app/coffee/Features/Captcha/CaptchaMiddleware.coffee b/services/web/app/coffee/Features/Captcha/CaptchaMiddleware.coffee index c4bd055b0c..59ad14b979 100644 --- a/services/web/app/coffee/Features/Captcha/CaptchaMiddleware.coffee +++ b/services/web/app/coffee/Features/Captcha/CaptchaMiddleware.coffee @@ -16,6 +16,8 @@ module.exports = CaptchaMiddleware = return next(error) if error? if !body?.success logger.warn {statusCode: response.statusCode, body: body}, 'failed recaptcha siteverify request' - return res.status(400).send({errorReason:"cannot_verify_user_not_robot", message:{text:"We could not verifiy you are not a robot. Please check Google is not blocked by firewall or adblocker."}}) + return res.status(400).send({errorReason:"cannot_verify_user_not_robot", message: + {text:"Sorry, we could not verify that you are not a robot. Please check that Google reCAPTCHA is not being blocked by an ad or script blocker or firewall."} + }) else return next() From df9b866bee570c15101c90eafe01dac62cadab30 Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Wed, 7 Feb 2018 14:24:15 +0000 Subject: [PATCH 3/4] remove 'script blocker' from recaptcha message --- .../web/app/coffee/Features/Captcha/CaptchaMiddleware.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/web/app/coffee/Features/Captcha/CaptchaMiddleware.coffee b/services/web/app/coffee/Features/Captcha/CaptchaMiddleware.coffee index 59ad14b979..5a846ff839 100644 --- a/services/web/app/coffee/Features/Captcha/CaptchaMiddleware.coffee +++ b/services/web/app/coffee/Features/Captcha/CaptchaMiddleware.coffee @@ -17,7 +17,7 @@ module.exports = CaptchaMiddleware = if !body?.success logger.warn {statusCode: response.statusCode, body: body}, 'failed recaptcha siteverify request' return res.status(400).send({errorReason:"cannot_verify_user_not_robot", message: - {text:"Sorry, we could not verify that you are not a robot. Please check that Google reCAPTCHA is not being blocked by an ad or script blocker or firewall."} + {text:"Sorry, we could not verify that you are not a robot. Please check that Google reCAPTCHA is not being blocked by an ad blocker or firewall."} }) else return next() From 696e9d27d68849cdb2cc98bb9395fe7ca48e9e09 Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Wed, 7 Feb 2018 14:28:49 +0000 Subject: [PATCH 4/4] send invalid_email error type down when sharing project --- .../Features/Collaborators/CollaboratorsInviteController.coffee | 2 +- .../ide/share/controllers/ShareProjectModalController.coffee | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteController.coffee b/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteController.coffee index 28f0cbb5ee..898abe52bb 100644 --- a/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteController.coffee +++ b/services/web/app/coffee/Features/Collaborators/CollaboratorsInviteController.coffee @@ -65,7 +65,7 @@ module.exports = CollaboratorsInviteController = email = EmailHelper.parseEmail(email) if !email? or email == "" logger.log {projectId, email, sendingUserId}, "invalid email address" - return res.sendStatus(400) + return res.status(400).send({errorReason:"invalid_email"}) CollaboratorsInviteController._checkRateLimit sendingUserId, (error, underRateLimit) -> return next(error) if error? if !underRateLimit diff --git a/services/web/public/coffee/ide/share/controllers/ShareProjectModalController.coffee b/services/web/public/coffee/ide/share/controllers/ShareProjectModalController.coffee index 0a091dae0b..b26bef3c06 100644 --- a/services/web/public/coffee/ide/share/controllers/ShareProjectModalController.coffee +++ b/services/web/public/coffee/ide/share/controllers/ShareProjectModalController.coffee @@ -134,8 +134,6 @@ define [ if data?.errorReason? $scope.state.errorReason = data?.errorReason - else if status? and status == 400 - $scope.state.errorReason = 'invalid_email' else $scope.state.errorReason = null