diff --git a/services/web/app/src/Features/Errors/ErrorController.js b/services/web/app/src/Features/Errors/ErrorController.js index c2ca8e40bf..f481bd17b4 100644 --- a/services/web/app/src/Features/Errors/ErrorController.js +++ b/services/web/app/src/Features/Errors/ErrorController.js @@ -44,6 +44,13 @@ module.exports = ErrorController = { logger.warn({ err: error, url: req.url }, 'invalid name error') res.status(400) res.send(error.message) + } else if (error instanceof Errors.SAMLSessionDataMissing) { + logger.warn( + { err: error, url: req.url }, + 'missing SAML session data error' + ) + res.status(400) + res.send({ accountLinkingError: error.message }) } else { logger.error( { err: error, url: req.url, method: req.method, user }, diff --git a/services/web/app/src/Features/Errors/Errors.js b/services/web/app/src/Features/Errors/Errors.js index c958432b83..a380cfe12f 100644 --- a/services/web/app/src/Features/Errors/Errors.js +++ b/services/web/app/src/Features/Errors/Errors.js @@ -64,6 +64,16 @@ class SAMLIdentityExistsError extends BackwardCompatibleError { } } +class SAMLSessionDataMissing extends BackwardCompatibleError { + constructor(arg) { + super(arg) + if (!this.message) { + this.message = + 'Please resubmit your institutional email.
institutional login' + } + } +} + class SAMLUserNotFoundError extends BackwardCompatibleError { constructor(arg) { super(arg) @@ -119,6 +129,7 @@ module.exports = { InvalidError, NotInV2Error, SAMLIdentityExistsError, + SAMLSessionDataMissing, SAMLUserNotFoundError, SLInV2Error, ThirdPartyIdentityExistsError, diff --git a/services/web/public/src/directives/asyncForm.js b/services/web/public/src/directives/asyncForm.js index 4fcabca628..3f0e1ac41d 100644 --- a/services/web/public/src/directives/asyncForm.js +++ b/services/web/public/src/directives/asyncForm.js @@ -108,7 +108,13 @@ define(['base', 'libs/passfield'], function(App) { return } - if (status === 400) { + if (status === 400 && data.accountLinkingError) { + // Bad Request for account linking + response.message = { + text: data.accountLinkingError, + type: 'error' + } + } else if (status === 400) { // Bad Request response.message = { text: 'Invalid Request. Please correct the data and try again.',